From f48fdac08505c083c943d2a2c71d95c492e58661 Mon Sep 17 00:00:00 2001 From: Fysac Date: Mon, 1 Dec 2014 12:18:43 -0500 Subject: [PATCH 001/253] Add support for CB 1.8 R1 --- .gitignore | 4 + .settings/org.eclipse.jdt.core.prefs | 11 + .../internal/v1_7_R4/AnySilentChest.java | 1 + .../internal/v1_7_R4/InventoryAccess.java | 1 + .../internal/v1_8_R1/AnySilentChest.java | 126 +++++++++ .../internal/v1_8_R1/InventoryAccess.java | 73 +++++ .../internal/v1_8_R1/PlayerDataManager.java | 105 ++++++++ .../v1_8_R1/SilentContainerChest.java | 37 +++ .../internal/v1_8_R1/SpecialEnderChest.java | 127 +++++++++ .../v1_8_R1/SpecialPlayerInventory.java | 253 ++++++++++++++++++ 10 files changed, 738 insertions(+) create mode 100644 .gitignore create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 src/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java create mode 100644 src/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java create mode 100644 src/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java create mode 100644 src/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java create mode 100644 src/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java create mode 100644 src/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b88e87b --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.classpath +.project +bin/ +lib/ \ No newline at end of file diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..7341ab1 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/src/com/lishid/openinv/internal/v1_7_R4/AnySilentChest.java b/src/com/lishid/openinv/internal/v1_7_R4/AnySilentChest.java index 76efb80..f51f819 100644 --- a/src/com/lishid/openinv/internal/v1_7_R4/AnySilentChest.java +++ b/src/com/lishid/openinv/internal/v1_7_R4/AnySilentChest.java @@ -34,6 +34,7 @@ public class AnySilentChest implements IAnySilentChest { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest EntityPlayer player = ((CraftPlayer) p).getHandle(); World world = player.world; + // If block on top if (world.getType(x, y + 1, z).c()) return true; diff --git a/src/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java b/src/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java index 8a3977d..3aae59c 100644 --- a/src/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java +++ b/src/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java @@ -18,6 +18,7 @@ package com.lishid.openinv.internal.v1_7_R4; import java.lang.reflect.Field; + import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.Inventory; diff --git a/src/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java b/src/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java new file mode 100644 index 0000000..8a08868 --- /dev/null +++ b/src/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java @@ -0,0 +1,126 @@ +/* + * 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_8_R1; + +import java.lang.reflect.Field; + +import org.bukkit.ChatColor; +import org.bukkit.entity.Player; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.internal.IAnySilentChest; + + +//Volatile +import net.minecraft.server.v1_8_R1.*; + +import org.bukkit.craftbukkit.v1_8_R1.entity.*; + +public class AnySilentChest implements IAnySilentChest { + 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; + + // If block on top + if (world.getType(new BlockPosition(x, y + 1, z)).getBlock().c()){ + return true; + } + + int id = Block.getId(world.getType(new BlockPosition(x, y, z)).getBlock()); + + // If block next to chest is chest and has a block on top + if ((Block.getId(world.getType(new BlockPosition(x - 1, y, z)).getBlock()) == id) && (world.getType(new BlockPosition(x - 1, y + 1, z)).getBlock().c())) + return true; + if ((Block.getId(world.getType(new BlockPosition(x + 1, y, z)).getBlock()) == id) && (world.getType(new BlockPosition(x + 1, y + 1, z)).getBlock().c())) + return true; + if ((Block.getId(world.getType(new BlockPosition(x, y, z - 1)).getBlock()) == id) && (world.getType(new BlockPosition(x, y + 1, z - 1)).getBlock().c())) + return true; + if ((Block.getId(world.getType(new BlockPosition(x, y, z + 1)).getBlock()) == id) && (world.getType(new BlockPosition(x, y + 1, z + 1)).getBlock().c())) + return true; + + return false; + } + + public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + Object chest = (TileEntityChest) world.getTileEntity(new BlockPosition(x, y, z)); + if (chest == null) + return true; + + int id = Block.getId(world.getType(new BlockPosition(x, y, z)).getBlock()); + + if (!anychest) { + if (world.getType(new BlockPosition(x, y + 1, z)).getBlock().c()) + return true; + if ((Block.getId(world.getType(new BlockPosition(x - 1, y, z)).getBlock()) == id) && (world.getType(new BlockPosition(x - 1, y + 1, z)).getBlock().c())) + return true; + if ((Block.getId(world.getType(new BlockPosition(x + 1, y, z)).getBlock()) == id) && (world.getType(new BlockPosition(x + 1, y + 1, z)).getBlock().c())) + return true; + if ((Block.getId(world.getType(new BlockPosition(x, y, z - 1)).getBlock()) == id) && (world.getType(new BlockPosition(x, y + 1, z - 1)).getBlock().c())) + return true; + if ((Block.getId(world.getType(new BlockPosition(x, y, z + 1)).getBlock()) == id) && (world.getType(new BlockPosition(x, y + 1, z + 1)).getBlock().c())) + return true; + } + + if (Block.getId(world.getType(new BlockPosition(x - 1, y, z)).getBlock()) == id) + chest = new InventoryLargeChest("Large chest", (ITileInventory) world.getTileEntity(new BlockPosition(x - 1, y, z)), (ITileInventory) chest); + if (Block.getId(world.getType(new BlockPosition(x + 1, y, z)).getBlock()) == id) + chest = new InventoryLargeChest("Large chest", (ITileInventory) chest, (ITileInventory) world.getTileEntity(new BlockPosition(x + 1, y, z))); + if (Block.getId(world.getType(new BlockPosition(x, y, z - 1)).getBlock()) == id) + chest = new InventoryLargeChest("Large chest", (ITileInventory) world.getTileEntity(new BlockPosition(x, y, z - 1)), (ITileInventory) chest); + if (Block.getId(world.getType(new BlockPosition(x, y, z + 1)).getBlock()) == id) + chest = new InventoryLargeChest("Large chest", (ITileInventory) chest, (ITileInventory) world.getTileEntity(new BlockPosition(x, y, z + 1))); + + boolean returnValue = true; + if (!silentchest) { + player.openContainer((IInventory) chest); + } + else { + try { + int windowId = 0; + try { + Field windowID = player.getClass().getDeclaredField("containerCounter"); + windowID.setAccessible(true); + windowId = windowID.getInt(player); + windowId = windowId % 100 + 1; + windowID.setInt(player, windowId); + } + catch (NoSuchFieldException e) {} + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, "minecraft:chest", new ChatComponentText(((IInventory) chest).getName()), ((IInventory) chest).getSize())); + player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest), player); + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + if (OpenInv.NotifySilentChest()) { + p.sendMessage("You are opening a chest silently."); + } + returnValue = false; + } + catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + if (anychest && OpenInv.NotifyAnyChest()) { + p.sendMessage("You are opening a blocked chest."); + } + + return returnValue; + } +} diff --git a/src/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java b/src/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java new file mode 100644 index 0000000..c32a40a --- /dev/null +++ b/src/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java @@ -0,0 +1,73 @@ +/* + * 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_8_R1; + +import java.lang.reflect.Field; + + +import org.bukkit.entity.HumanEntity; +import org.bukkit.inventory.Inventory; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.Permissions; +import com.lishid.openinv.internal.IInventoryAccess; + +//Volatile +import net.minecraft.server.v1_8_R1.*; +import org.bukkit.craftbukkit.v1_8_R1.inventory.*; + +public class InventoryAccess implements IInventoryAccess { + public boolean check(Inventory inventory, HumanEntity player) { + IInventory inv = grabInventory(inventory); + + if (inv instanceof SpecialPlayerInventory) { + if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { + return false; + } + } + + else if (inv instanceof SpecialEnderChest) { + if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { + return false; + } + } + + return true; + } + + private IInventory grabInventory(Inventory inventory) { + if(inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory(); + } + + //Use reflection to find the iiventory + Class clazz = inventory.getClass(); + IInventory result = null; + for(Field f : clazz.getDeclaredFields()) { + f.setAccessible(true); + if(IInventory.class.isAssignableFrom(f.getDeclaringClass())) { + try { + result = (IInventory) f.get(inventory); + } + catch (Exception e) { + OpenInv.log(e); + } + } + } + return result; + } +} diff --git a/src/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java b/src/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java new file mode 100644 index 0000000..ae3a6ad --- /dev/null +++ b/src/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java @@ -0,0 +1,105 @@ +/* + * 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_8_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 net.minecraft.server.v1_8_R1.*; + +import org.bukkit.craftbukkit.v1_8_R1.*; + +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) { + 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; + } +} diff --git a/src/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java b/src/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java new file mode 100644 index 0000000..c0f55df --- /dev/null +++ b/src/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java @@ -0,0 +1,37 @@ +/* + * 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_8_R1; + +//Volatile +import net.minecraft.server.v1_8_R1.*; + + +public class SilentContainerChest extends ContainerChest { + public IInventory inv; + + public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman human) { + super(i1, i2, human); + inv = i2; + // close signal + inv.closeContainer(human); + } + + @Override + public void b(EntityHuman paramEntityHuman) { + // Don't send close signal twice, might screw up + } +} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java b/src/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java new file mode 100644 index 0000000..b1a84e0 --- /dev/null +++ b/src/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java @@ -0,0 +1,127 @@ +/* + * 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_8_R1; + +import java.lang.reflect.Field; + +import java.util.ArrayList; +import java.util.List; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +//Volatile +import net.minecraft.server.v1_8_R1.*; +import org.bukkit.craftbukkit.v1_8_R1.entity.*; +import org.bukkit.craftbukkit.v1_8_R1.inventory.*; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + public List transaction = new ArrayList(); + public boolean playerOnline = false; + private CraftPlayer owner; + private InventoryEnderChest enderChest; + private int maxStack = MAX_STACK; + private CraftInventory inventory = new CraftInventory(this); + + public SpecialEnderChest(Player p, Boolean online) { + super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().hasCustomName(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); + CraftPlayer player = (CraftPlayer) p; + this.enderChest = player.getHandle().getEnderChest(); + this.owner = player; + this.items = enderChest.getContents(); + OpenInv.enderChests.put(owner.getName().toLowerCase(), this); + } + + public Inventory getBukkitInventory() { + return inventory; + } + + public void InventoryRemovalCheck() { + owner.saveData(); + if (transaction.isEmpty() && !playerOnline) { + OpenInv.enderChests.remove(owner.getName().toLowerCase()); + } + } + + public void PlayerGoOnline(Player p) { + if (!playerOnline) { + try { + InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } + catch (Exception e) {} + p.saveData(); + playerOnline = true; + } + } + + public void PlayerGoOffline() { + playerOnline = false; + } + + public ItemStack[] getContents() { + return this.items; + } + + public void onOpen(CraftHumanEntity who) { + transaction.add(who); + } + + public void onClose(CraftHumanEntity who) { + transaction.remove(who); + this.InventoryRemovalCheck(); + } + + public List getViewers() { + return transaction; + } + + public InventoryHolder getOwner() { + return this.owner; + } + + public void setMaxStackSize(int size) { + maxStack = size; + } + + public int getMaxStackSize() { + return maxStack; + } + + public boolean a(EntityHuman entityhuman) { + return true; + } + + public void startOpen() { + + } + + public void f() { + + } + + public void update() { + enderChest.update(); + } +} diff --git a/src/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java b/src/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java new file mode 100644 index 0000000..c97b719 --- /dev/null +++ b/src/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java @@ -0,0 +1,253 @@ +/* + * 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_8_R1; + +import org.bukkit.entity.Player; + +import org.bukkit.inventory.Inventory; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +//Volatile +import net.minecraft.server.v1_8_R1.*; +import org.bukkit.craftbukkit.v1_8_R1.entity.*; +import org.bukkit.craftbukkit.v1_8_R1.inventory.*; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + CraftPlayer owner; + public boolean playerOnline = false; + private ItemStack[] extra = new ItemStack[5]; + private CraftInventory inventory = new CraftInventory(this); + + public SpecialPlayerInventory(Player p, Boolean online) { + super(((CraftPlayer) p).getHandle()); + this.owner = ((CraftPlayer) p); + this.playerOnline = online; + this.items = player.inventory.items; + this.armor = player.inventory.armor; + OpenInv.inventories.put(owner.getName().toLowerCase(), this); + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void InventoryRemovalCheck() { + owner.saveData(); + if (transaction.isEmpty() && !playerOnline) { + OpenInv.inventories.remove(owner.getName().toLowerCase()); + } + } + + @Override + public void PlayerGoOnline(Player player) { + if (!playerOnline) { + CraftPlayer p = (CraftPlayer) player; + p.getHandle().inventory.items = this.items; + p.getHandle().inventory.armor = this.armor; + p.saveData(); + playerOnline = true; + } + } + + @Override + public void PlayerGoOffline() { + playerOnline = false; + this.InventoryRemovalCheck(); + } + + @Override + public void onClose(CraftHumanEntity who) { + super.onClose(who); + this.InventoryRemovalCheck(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] C = new ItemStack[getSize()]; + System.arraycopy(items, 0, C, 0, items.length); + System.arraycopy(items, 0, C, items.length, armor.length); + return C; + } + + @Override + public int getSize() { + return super.getSize() + 5; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } + else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } + else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } + else { + itemstack = is[i].a(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + else { + return null; + } + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } + else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + else { + return null; + } + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } + else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + // Effects + if (is == this.extra) { + owner.getHandle().drop(itemstack, true); + itemstack = null; + } + + is[i] = itemstack; + + owner.getHandle().defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) + return i - 27; + else + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) + return 3; + if (i == 1) + return 2; + if (i == 2) + return 1; + if (i == 3) + return 0; + else + return i; + } + + public String getInventoryName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + + @Override + public boolean a(EntityHuman entityhuman) { + return true; + } +} \ No newline at end of file -- 2.49.1 From 2a66b2e81b13b4a4a0480a095850c0e2d9bdd74f Mon Sep 17 00:00:00 2001 From: Jikoo Date: Mon, 1 Dec 2014 14:10:14 -0500 Subject: [PATCH 002/253] Updated to Spigot 1.8 --- .../internal/craftbukkit/AnySilentChest.java | 120 --------- .../internal/craftbukkit/InventoryAccess.java | 48 ---- .../craftbukkit/PlayerDataManager.java | 97 ------- .../craftbukkit/SilentContainerChest.java | 36 --- .../craftbukkit/SpecialPlayerInventory.java | 253 ------------------ .../internal/v1_4_5/AnySilentChest.java | 120 --------- .../internal/v1_4_5/InventoryAccess.java | 48 ---- .../internal/v1_4_5/PlayerDataManager.java | 97 ------- .../internal/v1_4_5/SilentContainerChest.java | 36 --- .../internal/v1_4_5/SpecialEnderChest.java | 126 --------- .../v1_4_5/SpecialPlayerInventory.java | 253 ------------------ .../internal/v1_4_6/AnySilentChest.java | 120 --------- .../internal/v1_4_6/InventoryAccess.java | 48 ---- .../internal/v1_4_6/PlayerDataManager.java | 97 ------- .../internal/v1_4_6/SpecialEnderChest.java | 126 --------- .../v1_4_6/SpecialPlayerInventory.java | 253 ------------------ .../internal/v1_4_R1/AnySilentChest.java | 120 --------- .../internal/v1_4_R1/InventoryAccess.java | 48 ---- .../internal/v1_4_R1/PlayerDataManager.java | 97 ------- .../v1_4_R1/SilentContainerChest.java | 36 --- .../internal/v1_4_R1/SpecialEnderChest.java | 126 --------- .../v1_4_R1/SpecialPlayerInventory.java | 253 ------------------ .../internal/v1_5_R2/AnySilentChest.java | 124 --------- .../internal/v1_5_R2/InventoryAccess.java | 48 ---- .../internal/v1_5_R2/PlayerDataManager.java | 97 ------- .../v1_5_R2/SilentContainerChest.java | 36 --- .../internal/v1_5_R2/SpecialEnderChest.java | 126 --------- .../v1_5_R2/SpecialPlayerInventory.java | 253 ------------------ .../internal/v1_5_R3/AnySilentChest.java | 126 --------- .../internal/v1_5_R3/InventoryAccess.java | 48 ---- .../internal/v1_5_R3/PlayerDataManager.java | 97 ------- .../v1_5_R3/SilentContainerChest.java | 36 --- .../internal/v1_5_R3/SpecialEnderChest.java | 126 --------- .../v1_5_R3/SpecialPlayerInventory.java | 253 ------------------ .../internal/v1_6_R1/AnySilentChest.java | 124 --------- .../internal/v1_6_R1/InventoryAccess.java | 48 ---- .../internal/v1_6_R1/PlayerDataManager.java | 97 ------- .../v1_6_R1/SilentContainerChest.java | 36 --- .../internal/v1_6_R1/SpecialEnderChest.java | 126 --------- .../v1_6_R1/SpecialPlayerInventory.java | 253 ------------------ .../internal/v1_6_R2/AnySilentChest.java | 124 --------- .../internal/v1_6_R2/InventoryAccess.java | 48 ---- .../internal/v1_6_R2/PlayerDataManager.java | 97 ------- .../v1_6_R2/SilentContainerChest.java | 36 --- .../internal/v1_6_R2/SpecialEnderChest.java | 126 --------- .../v1_6_R2/SpecialPlayerInventory.java | 253 ------------------ .../internal/v1_6_R3/AnySilentChest.java | 124 --------- .../internal/v1_6_R3/InventoryAccess.java | 48 ---- .../internal/v1_6_R3/PlayerDataManager.java | 97 ------- .../v1_6_R3/SilentContainerChest.java | 36 --- .../internal/v1_6_R3/SpecialEnderChest.java | 126 --------- .../v1_6_R3/SpecialPlayerInventory.java | 253 ------------------ .../internal/v1_7_R1/AnySilentChest.java | 124 --------- .../internal/v1_7_R1/InventoryAccess.java | 48 ---- .../internal/v1_7_R1/PlayerDataManager.java | 99 ------- .../v1_7_R1/SilentContainerChest.java | 36 --- .../internal/v1_7_R1/SpecialEnderChest.java | 126 --------- .../v1_7_R1/SpecialPlayerInventory.java | 253 ------------------ .../internal/v1_7_R2/AnySilentChest.java | 124 --------- .../internal/v1_7_R2/InventoryAccess.java | 48 ---- .../internal/v1_7_R2/PlayerDataManager.java | 99 ------- .../v1_7_R2/SilentContainerChest.java | 36 --- .../internal/v1_7_R2/SpecialEnderChest.java | 126 --------- .../v1_7_R2/SpecialPlayerInventory.java | 253 ------------------ .../internal/v1_7_R3/AnySilentChest.java | 124 --------- .../internal/v1_7_R3/InventoryAccess.java | 48 ---- .../internal/v1_7_R3/PlayerDataManager.java | 101 ------- .../v1_7_R3/SilentContainerChest.java | 36 --- .../internal/v1_7_R3/SpecialEnderChest.java | 126 --------- .../internal/v1_7_R4/AnySilentChest.java | 124 --------- .../v1_7_R4/SilentContainerChest.java | 36 --- .../internal/v1_7_R4/SpecialEnderChest.java | 126 --------- .../v1_7_R4/SpecialPlayerInventory.java | 253 ------------------ .../internal/v1_8_R1/AnySilentChest.java | 119 ++++++++ .../{v1_7_R4 => v1_8_R1}/InventoryAccess.java | 6 +- .../PlayerDataManager.java | 8 +- .../SilentContainerChest.java | 70 ++--- .../SpecialEnderChest.java | 252 ++++++++--------- .../SpecialPlayerInventory.java | 10 +- src/plugin.yml | 2 +- 80 files changed, 293 insertions(+), 8500 deletions(-) delete mode 100644 src/com/lishid/openinv/internal/craftbukkit/AnySilentChest.java delete mode 100644 src/com/lishid/openinv/internal/craftbukkit/InventoryAccess.java delete mode 100644 src/com/lishid/openinv/internal/craftbukkit/PlayerDataManager.java delete mode 100644 src/com/lishid/openinv/internal/craftbukkit/SilentContainerChest.java delete mode 100644 src/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java delete mode 100644 src/com/lishid/openinv/internal/v1_4_5/AnySilentChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java delete mode 100644 src/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java delete mode 100644 src/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java delete mode 100644 src/com/lishid/openinv/internal/v1_4_6/AnySilentChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java delete mode 100644 src/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java delete mode 100644 src/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java delete mode 100644 src/com/lishid/openinv/internal/v1_4_R1/AnySilentChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java delete mode 100644 src/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java delete mode 100644 src/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java delete mode 100644 src/com/lishid/openinv/internal/v1_5_R2/AnySilentChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java delete mode 100644 src/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java delete mode 100644 src/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java delete mode 100644 src/com/lishid/openinv/internal/v1_5_R3/AnySilentChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java delete mode 100644 src/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java delete mode 100644 src/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java delete mode 100644 src/com/lishid/openinv/internal/v1_6_R1/AnySilentChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java delete mode 100644 src/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java delete mode 100644 src/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java delete mode 100644 src/com/lishid/openinv/internal/v1_6_R2/AnySilentChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java delete mode 100644 src/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java delete mode 100644 src/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java delete mode 100644 src/com/lishid/openinv/internal/v1_6_R3/AnySilentChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java delete mode 100644 src/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java delete mode 100644 src/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R1/AnySilentChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R2/AnySilentChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R3/AnySilentChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R4/AnySilentChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java delete mode 100644 src/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java create mode 100644 src/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java rename src/com/lishid/openinv/internal/{v1_7_R4 => v1_8_R1}/InventoryAccess.java (94%) rename src/com/lishid/openinv/internal/{v1_7_R4 => v1_8_R1}/PlayerDataManager.java (94%) rename src/com/lishid/openinv/internal/{v1_4_6 => v1_8_R1}/SilentContainerChest.java (80%) rename src/com/lishid/openinv/internal/{craftbukkit => v1_8_R1}/SpecialEnderChest.java (90%) rename src/com/lishid/openinv/internal/{v1_7_R3 => v1_8_R1}/SpecialPlayerInventory.java (96%) diff --git a/src/com/lishid/openinv/internal/craftbukkit/AnySilentChest.java b/src/com/lishid/openinv/internal/craftbukkit/AnySilentChest.java deleted file mode 100644 index df0b089..0000000 --- a/src/com/lishid/openinv/internal/craftbukkit/AnySilentChest.java +++ /dev/null @@ -1,120 +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.craftbukkit; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.*; - -import org.bukkit.craftbukkit.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.s(x, y + 1, z)) - return true; - - // If block next to chest is chest and has a block on top - if ((world.getTypeId(x - 1, y, z) == Block.CHEST.id) && (world.s(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == Block.CHEST.id) && (world.s(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == Block.CHEST.id) && (world.s(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == Block.CHEST.id) && (world.s(x, y + 1, z + 1))) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - if (!anychest) { - if (world.s(x, y + 1, z)) - return true; - if ((world.getTypeId(x - 1, y, z) == Block.CHEST.id) && (world.s(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == Block.CHEST.id) && (world.s(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == Block.CHEST.id) && (world.s(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == Block.CHEST.id) && (world.s(x, y + 1, z + 1))) - return true; - } - - if (world.getTypeId(x - 1, y, z) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (world.getTypeId(x + 1, y, z) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (world.getTypeId(x, y, z - 1) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (world.getTypeId(x, y, z + 1) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int id = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - id = windowID.getInt(player); - id = id % 100 + 1; - windowID.setInt(player, id); - } - catch (NoSuchFieldException e) {} - - player.netServerHandler.sendPacket(new Packet100OpenWindow(id, 0, ((IInventory) chest).getName(), ((IInventory) chest).getSize())); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = id; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/com/lishid/openinv/internal/craftbukkit/InventoryAccess.java b/src/com/lishid/openinv/internal/craftbukkit/InventoryAccess.java deleted file mode 100644 index 3ac3352..0000000 --- a/src/com/lishid/openinv/internal/craftbukkit/InventoryAccess.java +++ /dev/null @@ -1,48 +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.craftbukkit; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.*; -import org.bukkit.craftbukkit.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/com/lishid/openinv/internal/craftbukkit/PlayerDataManager.java b/src/com/lishid/openinv/internal/craftbukkit/PlayerDataManager.java deleted file mode 100644 index 6a67c37..0000000 --- a/src/com/lishid/openinv/internal/craftbukkit/PlayerDataManager.java +++ /dev/null @@ -1,97 +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.craftbukkit; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; - -//Volatile -import net.minecraft.server.*; -import org.bukkit.craftbukkit.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), playername, new ItemInWorldManager(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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/com/lishid/openinv/internal/craftbukkit/SilentContainerChest.java b/src/com/lishid/openinv/internal/craftbukkit/SilentContainerChest.java deleted file mode 100644 index a5128f0..0000000 --- a/src/com/lishid/openinv/internal/craftbukkit/SilentContainerChest.java +++ /dev/null @@ -1,36 +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.craftbukkit; - -//Volatile -import net.minecraft.server.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.f(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java b/src/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java deleted file mode 100644 index 280cce2..0000000 --- a/src/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java +++ /dev/null @@ -1,253 +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.craftbukkit; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.*; -import org.bukkit.craftbukkit.entity.*; -import org.bukkit.craftbukkit.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void PlayerGoOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void PlayerGoOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.name.length() > 16) { - return player.name.substring(0, 16); - } - return player.name; - } - - @Override - public boolean a_(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_4_5/AnySilentChest.java b/src/com/lishid/openinv/internal/v1_4_5/AnySilentChest.java deleted file mode 100644 index 50d6921..0000000 --- a/src/com/lishid/openinv/internal/v1_4_5/AnySilentChest.java +++ /dev/null @@ -1,120 +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_4_5; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_4_5.*; - -import org.bukkit.craftbukkit.v1_4_5.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.s(x, y + 1, z)) - return true; - - // If block next to chest is chest and has a block on top - if ((world.getTypeId(x - 1, y, z) == Block.CHEST.id) && (world.s(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == Block.CHEST.id) && (world.s(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == Block.CHEST.id) && (world.s(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == Block.CHEST.id) && (world.s(x, y + 1, z + 1))) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - if (!anychest) { - if (world.s(x, y + 1, z)) - return true; - if ((world.getTypeId(x - 1, y, z) == Block.CHEST.id) && (world.s(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == Block.CHEST.id) && (world.s(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == Block.CHEST.id) && (world.s(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == Block.CHEST.id) && (world.s(x, y + 1, z + 1))) - return true; - } - - if (world.getTypeId(x - 1, y, z) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (world.getTypeId(x + 1, y, z) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (world.getTypeId(x, y, z - 1) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (world.getTypeId(x, y, z + 1) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int id = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - id = windowID.getInt(player); - id = id % 100 + 1; - windowID.setInt(player, id); - } - catch (NoSuchFieldException e) {} - - player.netServerHandler.sendPacket(new Packet100OpenWindow(id, 0, ((IInventory) chest).getName(), ((IInventory) chest).getSize())); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = id; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java b/src/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java deleted file mode 100644 index b4f6d7e..0000000 --- a/src/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java +++ /dev/null @@ -1,48 +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_4_5; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_4_5.*; -import org.bukkit.craftbukkit.v1_4_5.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java b/src/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java deleted file mode 100644 index 9138717..0000000 --- a/src/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java +++ /dev/null @@ -1,97 +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_4_5; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; - -//Volatile -import net.minecraft.server.v1_4_5.*; -import org.bukkit.craftbukkit.v1_4_5.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), playername, new ItemInWorldManager(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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java b/src/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java deleted file mode 100644 index 9663096..0000000 --- a/src/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_4_5; - -//Volatile -import net.minecraft.server.v1_4_5.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.f(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java b/src/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java deleted file mode 100644 index 81637bb..0000000 --- a/src/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_4_5; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_4_5.*; -import org.bukkit.craftbukkit.v1_4_5.entity.*; -import org.bukkit.craftbukkit.v1_4_5.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void PlayerGoOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void PlayerGoOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java b/src/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java deleted file mode 100644 index 912f8dc..0000000 --- a/src/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java +++ /dev/null @@ -1,253 +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_4_5; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_4_5.*; -import org.bukkit.craftbukkit.v1_4_5.entity.*; -import org.bukkit.craftbukkit.v1_4_5.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void PlayerGoOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void PlayerGoOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.name.length() > 16) { - return player.name.substring(0, 16); - } - return player.name; - } - - @Override - public boolean a_(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_4_6/AnySilentChest.java b/src/com/lishid/openinv/internal/v1_4_6/AnySilentChest.java deleted file mode 100644 index ea08779..0000000 --- a/src/com/lishid/openinv/internal/v1_4_6/AnySilentChest.java +++ /dev/null @@ -1,120 +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_4_6; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_4_6.*; - -import org.bukkit.craftbukkit.v1_4_6.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.s(x, y + 1, z)) - return true; - - // If block next to chest is chest and has a block on top - if ((world.getTypeId(x - 1, y, z) == Block.CHEST.id) && (world.s(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == Block.CHEST.id) && (world.s(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == Block.CHEST.id) && (world.s(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == Block.CHEST.id) && (world.s(x, y + 1, z + 1))) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - if (!anychest) { - if (world.s(x, y + 1, z)) - return true; - if ((world.getTypeId(x - 1, y, z) == Block.CHEST.id) && (world.s(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == Block.CHEST.id) && (world.s(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == Block.CHEST.id) && (world.s(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == Block.CHEST.id) && (world.s(x, y + 1, z + 1))) - return true; - } - - if (world.getTypeId(x - 1, y, z) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (world.getTypeId(x + 1, y, z) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (world.getTypeId(x, y, z - 1) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (world.getTypeId(x, y, z + 1) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int id = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - id = windowID.getInt(player); - id = id % 100 + 1; - windowID.setInt(player, id); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new Packet100OpenWindow(id, 0, ((IInventory) chest).getName(), ((IInventory) chest).getSize())); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = id; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java b/src/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java deleted file mode 100644 index b71024c..0000000 --- a/src/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java +++ /dev/null @@ -1,48 +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_4_6; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_4_6.*; -import org.bukkit.craftbukkit.v1_4_6.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java b/src/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java deleted file mode 100644 index 84b37ad..0000000 --- a/src/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java +++ /dev/null @@ -1,97 +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_4_6; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; - -//Volatile -import net.minecraft.server.v1_4_6.*; -import org.bukkit.craftbukkit.v1_4_6.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), playername, 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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java b/src/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java deleted file mode 100644 index 953e8d6..0000000 --- a/src/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_4_6; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_4_6.*; -import org.bukkit.craftbukkit.v1_4_6.entity.*; -import org.bukkit.craftbukkit.v1_4_6.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void PlayerGoOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void PlayerGoOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java b/src/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java deleted file mode 100644 index e5299f1..0000000 --- a/src/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java +++ /dev/null @@ -1,253 +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_4_6; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_4_6.*; -import org.bukkit.craftbukkit.v1_4_6.entity.*; -import org.bukkit.craftbukkit.v1_4_6.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void PlayerGoOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void PlayerGoOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.name.length() > 16) { - return player.name.substring(0, 16); - } - return player.name; - } - - @Override - public boolean a_(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_4_R1/AnySilentChest.java b/src/com/lishid/openinv/internal/v1_4_R1/AnySilentChest.java deleted file mode 100644 index aa21018..0000000 --- a/src/com/lishid/openinv/internal/v1_4_R1/AnySilentChest.java +++ /dev/null @@ -1,120 +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_4_R1; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_4_R1.*; - -import org.bukkit.craftbukkit.v1_4_R1.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.s(x, y + 1, z)) - return true; - - // If block next to chest is chest and has a block on top - if ((world.getTypeId(x - 1, y, z) == Block.CHEST.id) && (world.s(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == Block.CHEST.id) && (world.s(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == Block.CHEST.id) && (world.s(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == Block.CHEST.id) && (world.s(x, y + 1, z + 1))) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - if (!anychest) { - if (world.s(x, y + 1, z)) - return true; - if ((world.getTypeId(x - 1, y, z) == Block.CHEST.id) && (world.s(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == Block.CHEST.id) && (world.s(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == Block.CHEST.id) && (world.s(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == Block.CHEST.id) && (world.s(x, y + 1, z + 1))) - return true; - } - - if (world.getTypeId(x - 1, y, z) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (world.getTypeId(x + 1, y, z) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (world.getTypeId(x, y, z - 1) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (world.getTypeId(x, y, z + 1) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int id = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - id = windowID.getInt(player); - id = id % 100 + 1; - windowID.setInt(player, id); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new Packet100OpenWindow(id, 0, ((IInventory) chest).getName(), ((IInventory) chest).getSize())); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = id; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java b/src/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java deleted file mode 100644 index 6ac96fe..0000000 --- a/src/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java +++ /dev/null @@ -1,48 +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_4_R1; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_4_R1.*; -import org.bukkit.craftbukkit.v1_4_R1.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java b/src/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java deleted file mode 100644 index 0f69936..0000000 --- a/src/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java +++ /dev/null @@ -1,97 +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_4_R1; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; - -//Volatile -import net.minecraft.server.v1_4_R1.*; -import org.bukkit.craftbukkit.v1_4_R1.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), playername, 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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java b/src/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java deleted file mode 100644 index 7364a38..0000000 --- a/src/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_4_R1; - -//Volatile -import net.minecraft.server.v1_4_R1.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.f(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java b/src/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java deleted file mode 100644 index 93e02c2..0000000 --- a/src/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_4_R1; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_4_R1.*; -import org.bukkit.craftbukkit.v1_4_R1.entity.*; -import org.bukkit.craftbukkit.v1_4_R1.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void PlayerGoOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void PlayerGoOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java b/src/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java deleted file mode 100644 index fd6126a..0000000 --- a/src/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java +++ /dev/null @@ -1,253 +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_4_R1; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_4_R1.*; -import org.bukkit.craftbukkit.v1_4_R1.entity.*; -import org.bukkit.craftbukkit.v1_4_R1.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void PlayerGoOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void PlayerGoOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.name.length() > 16) { - return player.name.substring(0, 16); - } - return player.name; - } - - @Override - public boolean a_(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_5_R2/AnySilentChest.java b/src/com/lishid/openinv/internal/v1_5_R2/AnySilentChest.java deleted file mode 100644 index f91b90e..0000000 --- a/src/com/lishid/openinv/internal/v1_5_R2/AnySilentChest.java +++ /dev/null @@ -1,124 +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_5_R2; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_5_R2.*; - -import org.bukkit.craftbukkit.v1_5_R2.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.t(x, y + 1, z)) - return true; - - int id = world.getTypeId(x, y, z); - - // If block next to chest is chest and has a block on top - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - int id = world.getTypeId(x, y, z); - - if (!anychest) { - if (world.t(x, y + 1, z)) - return true; - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - } - - if (world.getTypeId(x - 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (world.getTypeId(x + 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (world.getTypeId(x, y, z - 1) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (world.getTypeId(x, y, z + 1) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) chest).getName(), ((IInventory) chest).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java b/src/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java deleted file mode 100644 index 56bc450..0000000 --- a/src/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java +++ /dev/null @@ -1,48 +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_5_R2; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_5_R2.*; -import org.bukkit.craftbukkit.v1_5_R2.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java b/src/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java deleted file mode 100644 index 6768a97..0000000 --- a/src/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java +++ /dev/null @@ -1,97 +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_5_R2; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; - -//Volatile -import net.minecraft.server.v1_5_R2.*; -import org.bukkit.craftbukkit.v1_5_R2.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), playername, new PlayerInteractManager((World) 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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java b/src/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java deleted file mode 100644 index 4eb0ecb..0000000 --- a/src/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_5_R2; - -//Volatile -import net.minecraft.server.v1_5_R2.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.g(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java b/src/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java deleted file mode 100644 index add6767..0000000 --- a/src/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_5_R2; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_5_R2.*; -import org.bukkit.craftbukkit.v1_5_R2.entity.*; -import org.bukkit.craftbukkit.v1_5_R2.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().c(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void PlayerGoOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void PlayerGoOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java b/src/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java deleted file mode 100644 index e4cee51..0000000 --- a/src/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java +++ /dev/null @@ -1,253 +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_5_R2; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_5_R2.*; -import org.bukkit.craftbukkit.v1_5_R2.entity.*; -import org.bukkit.craftbukkit.v1_5_R2.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void PlayerGoOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void PlayerGoOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.name.length() > 16) { - return player.name.substring(0, 16); - } - return player.name; - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_5_R3/AnySilentChest.java b/src/com/lishid/openinv/internal/v1_5_R3/AnySilentChest.java deleted file mode 100644 index 0f3805c..0000000 --- a/src/com/lishid/openinv/internal/v1_5_R3/AnySilentChest.java +++ /dev/null @@ -1,126 +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_5_R3; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -import com.lishid.openinv.internal.v1_5_R3.SilentContainerChest; - -//Volatile -import net.minecraft.server.v1_5_R3.*; - -import org.bukkit.craftbukkit.v1_5_R3.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.t(x, y + 1, z)) - return true; - - int id = world.getTypeId(x, y, z); - - // If block next to chest is chest and has a block on top - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - int id = world.getTypeId(x, y, z); - - if (!anychest) { - if (world.t(x, y + 1, z)) - return true; - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - } - - if (world.getTypeId(x - 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (world.getTypeId(x + 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (world.getTypeId(x, y, z - 1) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (world.getTypeId(x, y, z + 1) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) chest).getName(), ((IInventory) chest).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java b/src/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java deleted file mode 100644 index 192619c..0000000 --- a/src/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java +++ /dev/null @@ -1,48 +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_5_R3; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_5_R3.*; -import org.bukkit.craftbukkit.v1_5_R3.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java b/src/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java deleted file mode 100644 index 82e03fc..0000000 --- a/src/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java +++ /dev/null @@ -1,97 +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_5_R3; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; - -//Volatile -import net.minecraft.server.v1_5_R3.*; -import org.bukkit.craftbukkit.v1_5_R3.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), playername, new PlayerInteractManager((World) 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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java b/src/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java deleted file mode 100644 index 66615b1..0000000 --- a/src/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_5_R3; - -//Volatile -import net.minecraft.server.v1_5_R3.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.g(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java b/src/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java deleted file mode 100644 index f3010ec..0000000 --- a/src/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_5_R3; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_5_R3.*; -import org.bukkit.craftbukkit.v1_5_R3.entity.*; -import org.bukkit.craftbukkit.v1_5_R3.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().c(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void PlayerGoOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void PlayerGoOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java b/src/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java deleted file mode 100644 index 3afdec8..0000000 --- a/src/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java +++ /dev/null @@ -1,253 +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_5_R3; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_5_R3.*; -import org.bukkit.craftbukkit.v1_5_R3.entity.*; -import org.bukkit.craftbukkit.v1_5_R3.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void PlayerGoOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void PlayerGoOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.name.length() > 16) { - return player.name.substring(0, 16); - } - return player.name; - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_6_R1/AnySilentChest.java b/src/com/lishid/openinv/internal/v1_6_R1/AnySilentChest.java deleted file mode 100644 index b081942..0000000 --- a/src/com/lishid/openinv/internal/v1_6_R1/AnySilentChest.java +++ /dev/null @@ -1,124 +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_6_R1; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_6_R1.*; - -import org.bukkit.craftbukkit.v1_6_R1.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.t(x, y + 1, z)) - return true; - - int id = world.getTypeId(x, y, z); - - // If block next to chest is chest and has a block on top - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - int id = world.getTypeId(x, y, z); - - if (!anychest) { - if (world.t(x, y + 1, z)) - return true; - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - } - - if (world.getTypeId(x - 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (world.getTypeId(x + 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (world.getTypeId(x, y, z - 1) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (world.getTypeId(x, y, z + 1) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) chest).getName(), ((IInventory) chest).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java b/src/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java deleted file mode 100644 index 15acaa7..0000000 --- a/src/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java +++ /dev/null @@ -1,48 +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_6_R1; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_6_R1.*; -import org.bukkit.craftbukkit.v1_6_R1.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java b/src/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java deleted file mode 100644 index 393eedf..0000000 --- a/src/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java +++ /dev/null @@ -1,97 +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_6_R1; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; - -//Volatile -import net.minecraft.server.v1_6_R1.*; -import org.bukkit.craftbukkit.v1_6_R1.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), playername, new PlayerInteractManager((World) 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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java b/src/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java deleted file mode 100644 index 1e63378..0000000 --- a/src/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_6_R1; - -//Volatile -import net.minecraft.server.v1_6_R1.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.g(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java b/src/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java deleted file mode 100644 index 1a30c97..0000000 --- a/src/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_6_R1; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_6_R1.*; -import org.bukkit.craftbukkit.v1_6_R1.entity.*; -import org.bukkit.craftbukkit.v1_6_R1.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().c(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void PlayerGoOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void PlayerGoOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java b/src/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java deleted file mode 100644 index 8aaa85f..0000000 --- a/src/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java +++ /dev/null @@ -1,253 +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_6_R1; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_6_R1.*; -import org.bukkit.craftbukkit.v1_6_R1.entity.*; -import org.bukkit.craftbukkit.v1_6_R1.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void PlayerGoOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void PlayerGoOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_6_R2/AnySilentChest.java b/src/com/lishid/openinv/internal/v1_6_R2/AnySilentChest.java deleted file mode 100644 index e516a71..0000000 --- a/src/com/lishid/openinv/internal/v1_6_R2/AnySilentChest.java +++ /dev/null @@ -1,124 +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_6_R2; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_6_R2.*; - -import org.bukkit.craftbukkit.v1_6_R2.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.t(x, y + 1, z)) - return true; - - int id = world.getTypeId(x, y, z); - - // If block next to chest is chest and has a block on top - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - int id = world.getTypeId(x, y, z); - - if (!anychest) { - if (world.t(x, y + 1, z)) - return true; - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - } - - if (world.getTypeId(x - 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (world.getTypeId(x + 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (world.getTypeId(x, y, z - 1) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (world.getTypeId(x, y, z + 1) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) chest).getName(), ((IInventory) chest).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java b/src/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java deleted file mode 100644 index 6325e80..0000000 --- a/src/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java +++ /dev/null @@ -1,48 +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_6_R2; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_6_R2.*; -import org.bukkit.craftbukkit.v1_6_R2.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java b/src/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java deleted file mode 100644 index 3143ab3..0000000 --- a/src/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java +++ /dev/null @@ -1,97 +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_6_R2; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; - -//Volatile -import net.minecraft.server.v1_6_R2.*; -import org.bukkit.craftbukkit.v1_6_R2.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), playername, new PlayerInteractManager((World) 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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java b/src/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java deleted file mode 100644 index d014f35..0000000 --- a/src/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_6_R2; - -//Volatile -import net.minecraft.server.v1_6_R2.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.g(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java b/src/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java deleted file mode 100644 index 9d25cbb..0000000 --- a/src/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_6_R2; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_6_R2.*; -import org.bukkit.craftbukkit.v1_6_R2.entity.*; -import org.bukkit.craftbukkit.v1_6_R2.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().c(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void PlayerGoOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void PlayerGoOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java b/src/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java deleted file mode 100644 index 3f59a7c..0000000 --- a/src/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java +++ /dev/null @@ -1,253 +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_6_R2; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_6_R2.*; -import org.bukkit.craftbukkit.v1_6_R2.entity.*; -import org.bukkit.craftbukkit.v1_6_R2.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void PlayerGoOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void PlayerGoOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_6_R3/AnySilentChest.java b/src/com/lishid/openinv/internal/v1_6_R3/AnySilentChest.java deleted file mode 100644 index e2a93e7..0000000 --- a/src/com/lishid/openinv/internal/v1_6_R3/AnySilentChest.java +++ /dev/null @@ -1,124 +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_6_R3; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_6_R3.*; - -import org.bukkit.craftbukkit.v1_6_R3.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.t(x, y + 1, z)) - return true; - - int id = world.getTypeId(x, y, z); - - // If block next to chest is chest and has a block on top - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - int id = world.getTypeId(x, y, z); - - if (!anychest) { - if (world.t(x, y + 1, z)) - return true; - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - } - - if (world.getTypeId(x - 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (world.getTypeId(x + 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (world.getTypeId(x, y, z - 1) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (world.getTypeId(x, y, z + 1) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) chest).getName(), ((IInventory) chest).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java b/src/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java deleted file mode 100644 index ecf5740..0000000 --- a/src/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java +++ /dev/null @@ -1,48 +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_6_R3; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_6_R3.*; -import org.bukkit.craftbukkit.v1_6_R3.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java b/src/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java deleted file mode 100644 index e87eb7a..0000000 --- a/src/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java +++ /dev/null @@ -1,97 +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_6_R3; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; - -//Volatile -import net.minecraft.server.v1_6_R3.*; -import org.bukkit.craftbukkit.v1_6_R3.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), playername, new PlayerInteractManager((World) 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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java b/src/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java deleted file mode 100644 index 3a37b25..0000000 --- a/src/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_6_R3; - -//Volatile -import net.minecraft.server.v1_6_R3.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.g(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java b/src/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java deleted file mode 100644 index f04726d..0000000 --- a/src/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_6_R3; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_6_R3.*; -import org.bukkit.craftbukkit.v1_6_R3.entity.*; -import org.bukkit.craftbukkit.v1_6_R3.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().c(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void PlayerGoOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void PlayerGoOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java b/src/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java deleted file mode 100644 index 485e98f..0000000 --- a/src/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java +++ /dev/null @@ -1,253 +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_6_R3; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_6_R3.*; -import org.bukkit.craftbukkit.v1_6_R3.entity.*; -import org.bukkit.craftbukkit.v1_6_R3.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void PlayerGoOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void PlayerGoOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_7_R1/AnySilentChest.java b/src/com/lishid/openinv/internal/v1_7_R1/AnySilentChest.java deleted file mode 100644 index 92aa7ec..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R1/AnySilentChest.java +++ /dev/null @@ -1,124 +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_7_R1; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_7_R1.*; - -import org.bukkit.craftbukkit.v1_7_R1.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.getType(x, y + 1, z).c()) - return true; - - int id = Block.b(world.getType(x, y, z)); - - // If block next to chest is chest and has a block on top - if ((Block.b(world.getType(x - 1, y, z)) == id) && (world.getType(x - 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x + 1, y, z)) == id) && (world.getType(x + 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x, y, z - 1)) == id) && (world.getType(x, y + 1, z - 1).c())) - return true; - if ((Block.b(world.getType(x, y, z + 1)) == id) && (world.getType(x, y + 1, z + 1).c())) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - int id = Block.b(world.getType(x, y, z)); - - if (!anychest) { - if (world.getType(x, y + 1, z).c()) - return true; - if ((Block.b(world.getType(x - 1, y, z)) == id) && (world.getType(x - 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x + 1, y, z)) == id) && (world.getType(x + 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x, y, z - 1)) == id) && (world.getType(x, y + 1, z - 1).c())) - return true; - if ((Block.b(world.getType(x, y, z + 1)) == id) && (world.getType(x, y + 1, z + 1).c())) - return true; - } - - if (Block.b(world.getType(x - 1, y, z)) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (Block.b(world.getType(x + 1, y, z)) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (Block.b(world.getType(x, y, z - 1)) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (Block.b(world.getType(x, y, z + 1)) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) chest).getInventoryName(), ((IInventory) chest).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java b/src/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java deleted file mode 100644 index 6121bcb..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java +++ /dev/null @@ -1,48 +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_7_R1; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_7_R1.*; -import org.bukkit.craftbukkit.v1_7_R1.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java b/src/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java deleted file mode 100644 index 96423ce..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java +++ /dev/null @@ -1,99 +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_7_R1; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; -import net.minecraft.util.com.mojang.authlib.GameProfile; - -//Volatile -import net.minecraft.server.v1_7_R1.*; -import org.bukkit.craftbukkit.v1_7_R1.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - GameProfile profile = new GameProfile(null, playername); - // 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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java b/src/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java deleted file mode 100644 index eaf44e3..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_7_R1; - -//Volatile -import net.minecraft.server.v1_7_R1.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.l_(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java b/src/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java deleted file mode 100644 index 24d3dc8..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_7_R1; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_7_R1.*; -import org.bukkit.craftbukkit.v1_7_R1.entity.*; -import org.bukkit.craftbukkit.v1_7_R1.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getInventoryName(), ((CraftPlayer) p).getHandle().getEnderChest().k_(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void PlayerGoOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void PlayerGoOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java b/src/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java deleted file mode 100644 index 7229487..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java +++ /dev/null @@ -1,253 +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_7_R1; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_7_R1.*; -import org.bukkit.craftbukkit.v1_7_R1.entity.*; -import org.bukkit.craftbukkit.v1_7_R1.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void PlayerGoOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void PlayerGoOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getInventoryName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_7_R2/AnySilentChest.java b/src/com/lishid/openinv/internal/v1_7_R2/AnySilentChest.java deleted file mode 100644 index ef4e932..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R2/AnySilentChest.java +++ /dev/null @@ -1,124 +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_7_R2; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_7_R2.*; - -import org.bukkit.craftbukkit.v1_7_R2.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.getType(x, y + 1, z).c()) - return true; - - int id = Block.b(world.getType(x, y, z)); - - // If block next to chest is chest and has a block on top - if ((Block.b(world.getType(x - 1, y, z)) == id) && (world.getType(x - 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x + 1, y, z)) == id) && (world.getType(x + 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x, y, z - 1)) == id) && (world.getType(x, y + 1, z - 1).c())) - return true; - if ((Block.b(world.getType(x, y, z + 1)) == id) && (world.getType(x, y + 1, z + 1).c())) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - int id = Block.b(world.getType(x, y, z)); - - if (!anychest) { - if (world.getType(x, y + 1, z).c()) - return true; - if ((Block.b(world.getType(x - 1, y, z)) == id) && (world.getType(x - 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x + 1, y, z)) == id) && (world.getType(x + 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x, y, z - 1)) == id) && (world.getType(x, y + 1, z - 1).c())) - return true; - if ((Block.b(world.getType(x, y, z + 1)) == id) && (world.getType(x, y + 1, z + 1).c())) - return true; - } - - if (Block.b(world.getType(x - 1, y, z)) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (Block.b(world.getType(x + 1, y, z)) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (Block.b(world.getType(x, y, z - 1)) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (Block.b(world.getType(x, y, z + 1)) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) chest).getInventoryName(), ((IInventory) chest).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java b/src/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java deleted file mode 100644 index 5d04cd3..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java +++ /dev/null @@ -1,48 +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_7_R2; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_7_R2.*; -import org.bukkit.craftbukkit.v1_7_R2.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java b/src/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java deleted file mode 100644 index 35ce584..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java +++ /dev/null @@ -1,99 +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_7_R2; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; -import net.minecraft.util.com.mojang.authlib.GameProfile; - -//Volatile -import net.minecraft.server.v1_7_R2.*; -import org.bukkit.craftbukkit.v1_7_R2.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - GameProfile profile = new GameProfile(null, playername); - // 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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java b/src/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java deleted file mode 100644 index ef092cb..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_7_R2; - -//Volatile -import net.minecraft.server.v1_7_R2.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.l_(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java b/src/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java deleted file mode 100644 index a24f7b5..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_7_R2; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_7_R2.*; -import org.bukkit.craftbukkit.v1_7_R2.entity.*; -import org.bukkit.craftbukkit.v1_7_R2.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getInventoryName(), ((CraftPlayer) p).getHandle().getEnderChest().k_(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void PlayerGoOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void PlayerGoOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java b/src/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java deleted file mode 100644 index d3e0160..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java +++ /dev/null @@ -1,253 +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_7_R2; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_7_R2.*; -import org.bukkit.craftbukkit.v1_7_R2.entity.*; -import org.bukkit.craftbukkit.v1_7_R2.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void PlayerGoOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void PlayerGoOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getInventoryName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_7_R3/AnySilentChest.java b/src/com/lishid/openinv/internal/v1_7_R3/AnySilentChest.java deleted file mode 100644 index 7eb95a5..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R3/AnySilentChest.java +++ /dev/null @@ -1,124 +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_7_R3; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_7_R3.*; - -import org.bukkit.craftbukkit.v1_7_R3.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.getType(x, y + 1, z).c()) - return true; - - int id = Block.b(world.getType(x, y, z)); - - // If block next to chest is chest and has a block on top - if ((Block.b(world.getType(x - 1, y, z)) == id) && (world.getType(x - 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x + 1, y, z)) == id) && (world.getType(x + 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x, y, z - 1)) == id) && (world.getType(x, y + 1, z - 1).c())) - return true; - if ((Block.b(world.getType(x, y, z + 1)) == id) && (world.getType(x, y + 1, z + 1).c())) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - int id = Block.b(world.getType(x, y, z)); - - if (!anychest) { - if (world.getType(x, y + 1, z).c()) - return true; - if ((Block.b(world.getType(x - 1, y, z)) == id) && (world.getType(x - 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x + 1, y, z)) == id) && (world.getType(x + 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x, y, z - 1)) == id) && (world.getType(x, y + 1, z - 1).c())) - return true; - if ((Block.b(world.getType(x, y, z + 1)) == id) && (world.getType(x, y + 1, z + 1).c())) - return true; - } - - if (Block.b(world.getType(x - 1, y, z)) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (Block.b(world.getType(x + 1, y, z)) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (Block.b(world.getType(x, y, z - 1)) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (Block.b(world.getType(x, y, z + 1)) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) chest).getInventoryName(), ((IInventory) chest).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java b/src/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java deleted file mode 100644 index 234fd2b..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java +++ /dev/null @@ -1,48 +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_7_R3; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_7_R3.*; -import org.bukkit.craftbukkit.v1_7_R3.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java b/src/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java deleted file mode 100644 index 2976b83..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java +++ /dev/null @@ -1,101 +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_7_R3; - -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 net.minecraft.util.com.mojang.authlib.GameProfile; - -//Volatile -import net.minecraft.server.v1_7_R3.*; - -import org.bukkit.craftbukkit.v1_7_R3.*; - -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) { - 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.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; - } -} diff --git a/src/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java b/src/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java deleted file mode 100644 index 867e714..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_7_R3; - -//Volatile -import net.minecraft.server.v1_7_R3.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.l_(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java b/src/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java deleted file mode 100644 index 47a2235..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_7_R3; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_7_R3.*; -import org.bukkit.craftbukkit.v1_7_R3.entity.*; -import org.bukkit.craftbukkit.v1_7_R3.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getInventoryName(), ((CraftPlayer) p).getHandle().getEnderChest().k_(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void PlayerGoOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void PlayerGoOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/com/lishid/openinv/internal/v1_7_R4/AnySilentChest.java b/src/com/lishid/openinv/internal/v1_7_R4/AnySilentChest.java deleted file mode 100644 index 76efb80..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R4/AnySilentChest.java +++ /dev/null @@ -1,124 +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_7_R4; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_7_R4.*; - -import org.bukkit.craftbukkit.v1_7_R4.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.getType(x, y + 1, z).c()) - return true; - - int id = Block.getId(world.getType(x, y, z)); - - // If block next to chest is chest and has a block on top - if ((Block.getId(world.getType(x - 1, y, z)) == id) && (world.getType(x - 1, y + 1, z).c())) - return true; - if ((Block.getId(world.getType(x + 1, y, z)) == id) && (world.getType(x + 1, y + 1, z).c())) - return true; - if ((Block.getId(world.getType(x, y, z - 1)) == id) && (world.getType(x, y + 1, z - 1).c())) - return true; - if ((Block.getId(world.getType(x, y, z + 1)) == id) && (world.getType(x, y + 1, z + 1).c())) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - int id = Block.getId(world.getType(x, y, z)); - - if (!anychest) { - if (world.getType(x, y + 1, z).c()) - return true; - if ((Block.getId(world.getType(x - 1, y, z)) == id) && (world.getType(x - 1, y + 1, z).c())) - return true; - if ((Block.getId(world.getType(x + 1, y, z)) == id) && (world.getType(x + 1, y + 1, z).c())) - return true; - if ((Block.getId(world.getType(x, y, z - 1)) == id) && (world.getType(x, y + 1, z - 1).c())) - return true; - if ((Block.getId(world.getType(x, y, z + 1)) == id) && (world.getType(x, y + 1, z + 1).c())) - return true; - } - - if (Block.getId(world.getType(x - 1, y, z)) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (Block.getId(world.getType(x + 1, y, z)) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (Block.getId(world.getType(x, y, z - 1)) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (Block.getId(world.getType(x, y, z + 1)) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) chest).getInventoryName(), ((IInventory) chest).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java b/src/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java deleted file mode 100644 index 0cbf298..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_7_R4; - -//Volatile -import net.minecraft.server.v1_7_R4.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.closeContainer(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java b/src/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java deleted file mode 100644 index 8135307..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_7_R4; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_7_R4.*; -import org.bukkit.craftbukkit.v1_7_R4.entity.*; -import org.bukkit.craftbukkit.v1_7_R4.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getInventoryName(), ((CraftPlayer) p).getHandle().getEnderChest().k_(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void PlayerGoOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void PlayerGoOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java b/src/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java deleted file mode 100644 index b36388b..0000000 --- a/src/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java +++ /dev/null @@ -1,253 +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_7_R4; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_7_R4.*; -import org.bukkit.craftbukkit.v1_7_R4.entity.*; -import org.bukkit.craftbukkit.v1_7_R4.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void PlayerGoOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void PlayerGoOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getInventoryName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java b/src/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java new file mode 100644 index 0000000..9ec6815 --- /dev/null +++ b/src/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java @@ -0,0 +1,119 @@ +/* + * 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_8_R1; + +import org.bukkit.ChatColor; +import org.bukkit.entity.Player; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.internal.IAnySilentChest; + + + + + + +//Volatile +import net.minecraft.server.v1_8_R1.*; + +import org.bukkit.craftbukkit.v1_8_R1.entity.*; + +public class AnySilentChest implements IAnySilentChest { + 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; + // If block on top + if (world.getType(new BlockPosition(x, y + 1, z)).getBlock().c()) + return true; + + int id = Block.getId(world.getType(new BlockPosition(x, y, z)).getBlock()); + + // If block next to chest is chest and has a block on top + if ((Block.getId(world.getType(new BlockPosition(x - 1, y, z)).getBlock()) == id) && (world.getType(new BlockPosition(x - 1, y + 1, z)).getBlock().c())) + return true; + if ((Block.getId(world.getType(new BlockPosition(x + 1, y, z)).getBlock()) == id) && (world.getType(new BlockPosition(x + 1, y + 1, z)).getBlock().c())) + return true; + if ((Block.getId(world.getType(new BlockPosition(x, y, z - 1)).getBlock()) == id) && (world.getType(new BlockPosition(x, y + 1, z - 1)).getBlock().c())) + return true; + if ((Block.getId(world.getType(new BlockPosition(x, y, z + 1)).getBlock()) == id) && (world.getType(new BlockPosition(x, y + 1, z + 1)).getBlock().c())) + return true; + + return false; + } + + public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + Object chest = (TileEntityChest) world.getTileEntity(new BlockPosition(x, y, z)); + if (chest == null) + return true; + + int id = Block.getId(world.getType(new BlockPosition(x, y, z)).getBlock()); + + if (!anychest) { + if (world.getType(new BlockPosition(x, y + 1, z)).getBlock().c()) + return true; + if ((Block.getId(world.getType(new BlockPosition(x - 1, y, z)).getBlock()) == id) && (world.getType(new BlockPosition(x - 1, y + 1, z)).getBlock().c())) + return true; + if ((Block.getId(world.getType(new BlockPosition(x + 1, y, z)).getBlock()) == id) && (world.getType(new BlockPosition(x + 1, y + 1, z)).getBlock().c())) + return true; + if ((Block.getId(world.getType(new BlockPosition(x, y, z - 1)).getBlock()) == id) && (world.getType(new BlockPosition(x, y + 1, z - 1)).getBlock().c())) + return true; + if ((Block.getId(world.getType(new BlockPosition(x, y, z + 1)).getBlock()) == id) && (world.getType(new BlockPosition(x, y + 1, z + 1)).getBlock().c())) + return true; + } + + if (Block.getId(world.getType(new BlockPosition(x - 1, y, z)).getBlock()) == id) + chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(new BlockPosition(x - 1, y, z)), (ITileInventory) chest); + if (Block.getId(world.getType(new BlockPosition(x + 1, y, z)).getBlock()) == id) + chest = new InventoryLargeChest("Large chest", (ITileInventory) chest, (TileEntityChest) world.getTileEntity(new BlockPosition(x + 1, y, z))); + if (Block.getId(world.getType(new BlockPosition(x, y, z - 1)).getBlock()) == id) + chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(new BlockPosition(x, y, z - 1)), (ITileInventory) chest); + if (Block.getId(world.getType(new BlockPosition(x, y, z + 1)).getBlock()) == id) + chest = new InventoryLargeChest("Large chest", (ITileInventory) chest, (TileEntityChest) world.getTileEntity(new BlockPosition(x, y, z + 1))); + + boolean returnValue = true; + if (!silentchest) { + player.openContainer((IInventory) chest); + } + else { + try { + SilentContainerChest silentContainerChest = new SilentContainerChest(player.inventory, ((IInventory) chest), player); + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, "minecraft:chest", ((IInventory) chest).getScoreboardDisplayName(), ((IInventory) chest).getSize())); + 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) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + if (anychest && OpenInv.NotifyAnyChest()) { + p.sendMessage("You are opening a blocked chest."); + } + + return returnValue; + } +} diff --git a/src/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java b/src/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java similarity index 94% rename from src/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java rename to src/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java index 8a3977d..47238af 100644 --- a/src/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java +++ b/src/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java @@ -14,7 +14,7 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_7_R4; +package com.lishid.openinv.internal.v1_8_R1; import java.lang.reflect.Field; @@ -26,8 +26,8 @@ import com.lishid.openinv.Permissions; import com.lishid.openinv.internal.IInventoryAccess; //Volatile -import net.minecraft.server.v1_7_R4.*; -import org.bukkit.craftbukkit.v1_7_R4.inventory.*; +import net.minecraft.server.v1_8_R1.*; +import org.bukkit.craftbukkit.v1_8_R1.inventory.*; public class InventoryAccess implements IInventoryAccess { public boolean check(Inventory inventory, HumanEntity player) { diff --git a/src/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java b/src/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java similarity index 94% rename from src/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java rename to src/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java index 8cadf56..589af46 100644 --- a/src/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java +++ b/src/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java @@ -14,7 +14,7 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_7_R4; +package com.lishid.openinv.internal.v1_8_R1; import java.io.File; import java.util.UUID; @@ -25,12 +25,12 @@ import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.IPlayerDataManager; -import net.minecraft.util.com.mojang.authlib.GameProfile; +import com.mojang.authlib.GameProfile; //Volatile -import net.minecraft.server.v1_7_R4.*; +import net.minecraft.server.v1_8_R1.*; -import org.bukkit.craftbukkit.v1_7_R4.*; +import org.bukkit.craftbukkit.v1_8_R1.*; public class PlayerDataManager implements IPlayerDataManager { public Player loadPlayer(String name) { diff --git a/src/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java b/src/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java similarity index 80% rename from src/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java rename to src/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java index e245206..1cbf895 100644 --- a/src/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java +++ b/src/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java @@ -1,36 +1,36 @@ -/* - * 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_4_6; - -//Volatile -import net.minecraft.server.v1_4_6.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.f(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } +/* + * 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_8_R1; + +//Volatile +import net.minecraft.server.v1_8_R1.*; + +public class SilentContainerChest extends ContainerChest { + public IInventory inv; + + public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman e1) { + super(i1, i2, e1); + inv = i2; + // close signal + inv.closeContainer(e1); + } + + @Override + public void b(EntityHuman paramEntityHuman) { + // Don't send close signal twice, might screw up + } } \ No newline at end of file diff --git a/src/com/lishid/openinv/internal/craftbukkit/SpecialEnderChest.java b/src/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java similarity index 90% rename from src/com/lishid/openinv/internal/craftbukkit/SpecialEnderChest.java rename to src/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java index 5b10faa..a580f15 100644 --- a/src/com/lishid/openinv/internal/craftbukkit/SpecialEnderChest.java +++ b/src/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java @@ -1,126 +1,126 @@ -/* - * 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.craftbukkit; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.*; -import org.bukkit.craftbukkit.entity.*; -import org.bukkit.craftbukkit.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void PlayerGoOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void PlayerGoOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} +/* + * 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_8_R1; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +//Volatile +import net.minecraft.server.v1_8_R1.*; +import org.bukkit.craftbukkit.v1_8_R1.entity.*; +import org.bukkit.craftbukkit.v1_8_R1.inventory.*; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + public List transaction = new ArrayList(); + public boolean playerOnline = false; + private CraftPlayer owner; + private InventoryEnderChest enderChest; + private int maxStack = MAX_STACK; + private CraftInventory inventory = new CraftInventory(this); + + public SpecialEnderChest(Player p, Boolean online) { + super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().hasCustomName(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); + CraftPlayer player = (CraftPlayer) p; + this.enderChest = player.getHandle().getEnderChest(); + this.owner = player; + this.items = enderChest.getContents(); + OpenInv.enderChests.put(owner.getName().toLowerCase(), this); + } + + public Inventory getBukkitInventory() { + return inventory; + } + + public void InventoryRemovalCheck() { + owner.saveData(); + if (transaction.isEmpty() && !playerOnline) { + OpenInv.enderChests.remove(owner.getName().toLowerCase()); + } + } + + public void PlayerGoOnline(Player p) { + if (!playerOnline) { + try { + InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } + catch (Exception e) {} + p.saveData(); + playerOnline = true; + } + } + + public void PlayerGoOffline() { + playerOnline = false; + } + + public ItemStack[] getContents() { + return this.items; + } + + public void onOpen(CraftHumanEntity who) { + transaction.add(who); + } + + public void onClose(CraftHumanEntity who) { + transaction.remove(who); + this.InventoryRemovalCheck(); + } + + public List getViewers() { + return transaction; + } + + public InventoryHolder getOwner() { + return this.owner; + } + + public void setMaxStackSize(int size) { + maxStack = size; + } + + public int getMaxStackSize() { + return maxStack; + } + + public boolean a(EntityHuman entityhuman) { + return true; + } + + public void startOpen() { + + } + + public void f() { + + } + + public void update() { + enderChest.update(); + } +} diff --git a/src/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java b/src/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java similarity index 96% rename from src/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java rename to src/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java index 98a8cf1..c162c93 100644 --- a/src/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java +++ b/src/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java @@ -14,7 +14,7 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_7_R3; +package com.lishid.openinv.internal.v1_8_R1; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; @@ -23,9 +23,9 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.ISpecialPlayerInventory; //Volatile -import net.minecraft.server.v1_7_R3.*; -import org.bukkit.craftbukkit.v1_7_R3.entity.*; -import org.bukkit.craftbukkit.v1_7_R3.inventory.*; +import net.minecraft.server.v1_8_R1.*; +import org.bukkit.craftbukkit.v1_8_R1.entity.*; +import org.bukkit.craftbukkit.v1_8_R1.inventory.*; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { CraftPlayer owner; @@ -239,7 +239,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public String getInventoryName() { + public String getName() { if (player.getName().length() > 16) { return player.getName().substring(0, 16); } diff --git a/src/plugin.yml b/src/plugin.yml index bf8edfc..17f97a2 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.2.4 +version: 2.2.5 author: lishid description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. -- 2.49.1 From 21cd1926aea100ecf891bb5d8722d4ad8752d438 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Mon, 1 Dec 2014 16:11:20 -0500 Subject: [PATCH 003/253] Don't find username on the main thread. Not friendly with partial names. --- .../commands/OpenEnderPluginCommand.java | 72 +++++++++++------- .../commands/OpenInvPluginCommand.java | 75 ++++++++++++------- .../openinv/internal/IPlayerDataManager.java | 3 + .../internal/v1_8_R1/PlayerDataManager.java | 25 +++++++ .../v1_8_R1/SpecialPlayerInventory.java | 2 +- src/plugin.yml | 2 +- 6 files changed, 127 insertions(+), 52 deletions(-) diff --git a/src/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/src/com/lishid/openinv/commands/OpenEnderPluginCommand.java index 364c3dd..92a29c4 100644 --- a/src/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/src/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -17,12 +17,16 @@ package com.lishid.openinv.commands; import java.util.HashMap; +import java.util.UUID; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; @@ -53,8 +57,7 @@ public class OpenEnderPluginCommand implements CommandExecutor { return true; } - Player player = (Player) sender; - boolean offline = false; + final Player player = (Player) sender; // History management String history = openEnderHistory.get(player); @@ -64,55 +67,74 @@ public class OpenEnderPluginCommand implements CommandExecutor { openEnderHistory.put(player, history); } - // Target selecting - Player target; - - String name = ""; + final String name; // Read from history if target is not named if (args.length < 1) { - if (history != null && history != "") { - name = history; - } - else { - sender.sendMessage(ChatColor.RED + "OpenEnder history is empty!"); - return true; - } + name = history; } else { name = args[0]; } - target = this.plugin.getServer().getPlayer(name); + sender.sendMessage(ChatColor.GREEN + "Starting inventory lookup."); + final UUID senderID = player.getUniqueId(); + new BukkitRunnable() { + @Override + public void run() { + final OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name); + if (Bukkit.getPlayer(senderID) == null) { + return; + } + if (offlinePlayer == null || !offlinePlayer.hasPlayedBefore()) { + player.sendMessage(ChatColor.RED + "Player not found!"); + return; + } + new BukkitRunnable() { + @Override + public void run() { + if (Bukkit.getPlayer(senderID) == null) { + return; + } + openInventory(player, offlinePlayer.getUniqueId()); + } + }.runTask(plugin); + } + }.runTaskAsynchronously(plugin); + + return true; + } + + private void openInventory(Player player, UUID uuid) { + + Player target = this.plugin.getServer().getPlayer(uuid); if (target == null) { // Try loading the player's data - target = OpenInv.playerLoader.loadPlayer(name); + target = OpenInv.playerLoader.loadPlayer(uuid); if (target == null) { - sender.sendMessage(ChatColor.RED + "Player " + name + " not found!"); - return true; + player.sendMessage(ChatColor.RED + "Player not found!"); + return; } } - if (target != sender && !OpenInv.hasPermission(sender, Permissions.PERM_ENDERCHEST_ALL)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to access other player's enderchest"); - return true; + + if (target != 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 - history = target.getName(); - openEnderHistory.put(player, history); + openEnderHistory.put(player, target.getName()); // Create the inventory ISpecialEnderChest chest = OpenInv.enderChests.get(target.getName().toLowerCase()); if (chest == null) { - chest = InternalAccessor.Instance.newSpecialEnderChest(target, !offline); + chest = InternalAccessor.Instance.newSpecialEnderChest(target, !target.isOnline()); } // Open the inventory player.openInventory(chest.getBukkitInventory()); - - return true; } } diff --git a/src/com/lishid/openinv/commands/OpenInvPluginCommand.java b/src/com/lishid/openinv/commands/OpenInvPluginCommand.java index 4457cde..71e7527 100644 --- a/src/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/src/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -17,12 +17,16 @@ package com.lishid.openinv.commands; import java.util.HashMap; +import java.util.UUID; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; @@ -52,8 +56,7 @@ public class OpenInvPluginCommand implements CommandExecutor { return true; } - Player player = (Player) sender; - boolean offline = false; + final Player player = (Player) sender; // History management String history = openInvHistory.get(player); @@ -63,10 +66,7 @@ public class OpenInvPluginCommand implements CommandExecutor { openInvHistory.put(player, history); } - // Target selecting - Player target; - - String name = ""; + final String name; // Read from history if target is not named if (args.length < 1) { @@ -76,51 +76,76 @@ public class OpenInvPluginCommand implements CommandExecutor { name = args[0]; } - target = this.plugin.getServer().getPlayer(name); + sender.sendMessage(ChatColor.GREEN + "Starting inventory lookup."); + final UUID senderID = player.getUniqueId(); + new BukkitRunnable() { + @Override + public void run() { + final OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name); + if (Bukkit.getPlayer(senderID) == null) { + return; + } + if (offlinePlayer == null || !offlinePlayer.hasPlayedBefore()) { + player.sendMessage(ChatColor.RED + "Player not found!"); + return; + } + new BukkitRunnable() { + @Override + public void run() { + if (Bukkit.getPlayer(senderID) == null) { + return; + } + openInventory(player, offlinePlayer.getUniqueId()); + } + }.runTask(plugin); + } + }.runTaskAsynchronously(plugin); + + return true; + } + + private void openInventory(Player player, UUID uuid) { + + Player target = this.plugin.getServer().getPlayer(uuid); if (target == null) { - if (target == null) { - // Try loading the player's data - target = OpenInv.playerLoader.loadPlayer(name); + // Try loading the player's data + target = OpenInv.playerLoader.loadPlayer(uuid); - if (target == null) { - sender.sendMessage(ChatColor.RED + "Player " + name + " not found!"); - return true; - } + if (target == null) { + player.sendMessage(ChatColor.RED + "Player not found!"); + return; } } // Permissions checks if (!OpenInv.hasPermission(player, Permissions.PERM_OVERRIDE) && OpenInv.hasPermission(target, Permissions.PERM_EXEMPT)) { - sender.sendMessage(ChatColor.RED + target.getDisplayName() + "'s inventory is protected!"); - return true; + player.sendMessage(ChatColor.RED + target.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()) { - sender.sendMessage(ChatColor.RED + target.getDisplayName() + " is not in your world!"); - return true; + player.sendMessage(ChatColor.RED + target.getDisplayName() + " is not in your world!"); + return; } // Self-open check if (!OpenInv.hasPermission(player, Permissions.PERM_OPENSELF) && target.equals(player)) { - sender.sendMessage(ChatColor.RED + "You're not allowed to openinv yourself."); - return true; + player.sendMessage(ChatColor.RED + "You're not allowed to openinv yourself."); + return; } // Record the target - history = target.getName(); - openInvHistory.put(player, history); + openInvHistory.put(player, target.getName()); // Create the inventory ISpecialPlayerInventory inv = OpenInv.inventories.get(target.getName().toLowerCase()); if (inv == null) { - inv = InternalAccessor.Instance.newSpecialPlayerInventory(target, !offline); + inv = InternalAccessor.Instance.newSpecialPlayerInventory(target, !target.isOnline()); } // Open the inventory player.openInventory(inv.getBukkitInventory()); - - return true; } } diff --git a/src/com/lishid/openinv/internal/IPlayerDataManager.java b/src/com/lishid/openinv/internal/IPlayerDataManager.java index ce0ed2f..ec2af50 100644 --- a/src/com/lishid/openinv/internal/IPlayerDataManager.java +++ b/src/com/lishid/openinv/internal/IPlayerDataManager.java @@ -16,8 +16,11 @@ package com.lishid.openinv.internal; +import java.util.UUID; + import org.bukkit.entity.Player; public interface IPlayerDataManager { public Player loadPlayer(String name); + public Player loadPlayer(UUID uuid); } diff --git a/src/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java b/src/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java index 589af46..beb0fb9 100644 --- a/src/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java +++ b/src/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java @@ -101,4 +101,29 @@ public class PlayerDataManager implements IPlayerDataManager { 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/internal/v1_8_R1/SpecialPlayerInventory.java b/src/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java index c162c93..42ae052 100644 --- a/src/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java +++ b/src/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java @@ -82,7 +82,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public ItemStack[] getContents() { ItemStack[] C = new ItemStack[getSize()]; System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); + System.arraycopy(armor, 0, C, items.length, armor.length); return C; } diff --git a/src/plugin.yml b/src/plugin.yml index 17f97a2..c6a2147 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.2.5 +version: 2.2.6 author: lishid description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. -- 2.49.1 From b05279ed4bfcb8c524d5025daff73feab53410f4 Mon Sep 17 00:00:00 2001 From: lishid Date: Tue, 30 Dec 2014 22:09:33 -0500 Subject: [PATCH 004/253] Moved to proper directories --- .gitignore | 5 ++- .settings/org.eclipse.jdt.core.prefs | 11 ------ .../org.eclipse.ltk.core.refactoring.prefs | 3 -- .../java}/com/lishid/openinv/OpenInv.java | 0 .../lishid/openinv/OpenInvEntityListener.java | 0 .../openinv/OpenInvInventoryListener.java | 0 .../lishid/openinv/OpenInvPlayerListener.java | 0 .../java}/com/lishid/openinv/Permissions.java | 0 .../commands/AnyChestPluginCommand.java | 0 .../commands/OpenEnderPluginCommand.java | 0 .../commands/OpenInvPluginCommand.java | 0 .../commands/SearchInvPluginCommand.java | 0 .../commands/SilentChestPluginCommand.java | 0 .../commands/ToggleOpenInvPluginCommand.java | 0 .../openinv/internal/IAnySilentChest.java | 0 .../openinv/internal/IInventoryAccess.java | 0 .../openinv/internal/IPlayerDataManager.java | 0 .../openinv/internal/ISpecialEnderChest.java | 0 .../internal/ISpecialPlayerInventory.java | 0 .../openinv/internal/InternalAccessor.java | 0 .../internal/craftbukkit/AnySilentChest.java | 0 .../internal/craftbukkit/InventoryAccess.java | 0 .../craftbukkit/PlayerDataManager.java | 0 .../craftbukkit/SilentContainerChest.java | 0 .../craftbukkit/SpecialEnderChest.java | 0 .../craftbukkit/SpecialPlayerInventory.java | 0 .../internal/v1_4_5/AnySilentChest.java | 0 .../internal/v1_4_5/InventoryAccess.java | 0 .../internal/v1_4_5/PlayerDataManager.java | 0 .../internal/v1_4_5/SilentContainerChest.java | 0 .../internal/v1_4_5/SpecialEnderChest.java | 0 .../v1_4_5/SpecialPlayerInventory.java | 0 .../internal/v1_4_6/AnySilentChest.java | 0 .../internal/v1_4_6/InventoryAccess.java | 0 .../internal/v1_4_6/PlayerDataManager.java | 0 .../internal/v1_4_6/SilentContainerChest.java | 0 .../internal/v1_4_6/SpecialEnderChest.java | 0 .../v1_4_6/SpecialPlayerInventory.java | 0 .../internal/v1_4_R1/AnySilentChest.java | 0 .../internal/v1_4_R1/InventoryAccess.java | 0 .../internal/v1_4_R1/PlayerDataManager.java | 0 .../v1_4_R1/SilentContainerChest.java | 0 .../internal/v1_4_R1/SpecialEnderChest.java | 0 .../v1_4_R1/SpecialPlayerInventory.java | 0 .../internal/v1_5_R2/AnySilentChest.java | 0 .../internal/v1_5_R2/InventoryAccess.java | 0 .../internal/v1_5_R2/PlayerDataManager.java | 0 .../v1_5_R2/SilentContainerChest.java | 0 .../internal/v1_5_R2/SpecialEnderChest.java | 0 .../v1_5_R2/SpecialPlayerInventory.java | 0 .../internal/v1_5_R3/AnySilentChest.java | 0 .../internal/v1_5_R3/InventoryAccess.java | 0 .../internal/v1_5_R3/PlayerDataManager.java | 0 .../v1_5_R3/SilentContainerChest.java | 0 .../internal/v1_5_R3/SpecialEnderChest.java | 0 .../v1_5_R3/SpecialPlayerInventory.java | 0 .../internal/v1_6_R1/AnySilentChest.java | 0 .../internal/v1_6_R1/InventoryAccess.java | 0 .../internal/v1_6_R1/PlayerDataManager.java | 0 .../v1_6_R1/SilentContainerChest.java | 0 .../internal/v1_6_R1/SpecialEnderChest.java | 0 .../v1_6_R1/SpecialPlayerInventory.java | 0 .../internal/v1_6_R2/AnySilentChest.java | 0 .../internal/v1_6_R2/InventoryAccess.java | 0 .../internal/v1_6_R2/PlayerDataManager.java | 0 .../v1_6_R2/SilentContainerChest.java | 0 .../internal/v1_6_R2/SpecialEnderChest.java | 0 .../v1_6_R2/SpecialPlayerInventory.java | 0 .../internal/v1_6_R3/AnySilentChest.java | 0 .../internal/v1_6_R3/InventoryAccess.java | 0 .../internal/v1_6_R3/PlayerDataManager.java | 0 .../v1_6_R3/SilentContainerChest.java | 0 .../internal/v1_6_R3/SpecialEnderChest.java | 0 .../v1_6_R3/SpecialPlayerInventory.java | 0 .../internal/v1_7_R1/AnySilentChest.java | 0 .../internal/v1_7_R1/InventoryAccess.java | 0 .../internal/v1_7_R1/PlayerDataManager.java | 0 .../v1_7_R1/SilentContainerChest.java | 0 .../internal/v1_7_R1/SpecialEnderChest.java | 0 .../v1_7_R1/SpecialPlayerInventory.java | 0 .../internal/v1_7_R2/AnySilentChest.java | 0 .../internal/v1_7_R2/InventoryAccess.java | 0 .../internal/v1_7_R2/PlayerDataManager.java | 0 .../v1_7_R2/SilentContainerChest.java | 0 .../internal/v1_7_R2/SpecialEnderChest.java | 0 .../v1_7_R2/SpecialPlayerInventory.java | 0 .../internal/v1_7_R3/AnySilentChest.java | 0 .../internal/v1_7_R3/InventoryAccess.java | 0 .../internal/v1_7_R3/PlayerDataManager.java | 0 .../v1_7_R3/SilentContainerChest.java | 0 .../internal/v1_7_R3/SpecialEnderChest.java | 0 .../v1_7_R3/SpecialPlayerInventory.java | 0 .../internal/v1_7_R4/AnySilentChest.java | 0 .../internal/v1_7_R4/InventoryAccess.java | 0 .../internal/v1_7_R4/PlayerDataManager.java | 0 .../v1_7_R4/SilentContainerChest.java | 0 .../internal/v1_7_R4/SpecialEnderChest.java | 0 .../v1_7_R4/SpecialPlayerInventory.java | 0 .../internal/v1_8_R1/AnySilentChest.java | 0 .../internal/v1_8_R1/InventoryAccess.java | 0 .../internal/v1_8_R1/PlayerDataManager.java | 0 .../v1_8_R1/SilentContainerChest.java | 0 .../internal/v1_8_R1/SpecialEnderChest.java | 0 .../v1_8_R1/SpecialPlayerInventory.java | 0 .../lishid/openinv/utils/ReflectionUtil.java | 0 .../lishid/openinv/utils/UpdateManager.java | 0 .../com/lishid/openinv/utils/Updater.java | 0 src/main/java/plugin.yml | 38 +++++++++++++++++++ src/{ => main/resources}/plugin.yml | 0 109 files changed, 42 insertions(+), 15 deletions(-) delete mode 100644 .settings/org.eclipse.jdt.core.prefs delete mode 100644 .settings/org.eclipse.ltk.core.refactoring.prefs rename src/{ => main/java}/com/lishid/openinv/OpenInv.java (100%) rename src/{ => main/java}/com/lishid/openinv/OpenInvEntityListener.java (100%) rename src/{ => main/java}/com/lishid/openinv/OpenInvInventoryListener.java (100%) rename src/{ => main/java}/com/lishid/openinv/OpenInvPlayerListener.java (100%) rename src/{ => main/java}/com/lishid/openinv/Permissions.java (100%) rename src/{ => main/java}/com/lishid/openinv/commands/AnyChestPluginCommand.java (100%) rename src/{ => main/java}/com/lishid/openinv/commands/OpenEnderPluginCommand.java (100%) rename src/{ => main/java}/com/lishid/openinv/commands/OpenInvPluginCommand.java (100%) rename src/{ => main/java}/com/lishid/openinv/commands/SearchInvPluginCommand.java (100%) rename src/{ => main/java}/com/lishid/openinv/commands/SilentChestPluginCommand.java (100%) rename src/{ => main/java}/com/lishid/openinv/commands/ToggleOpenInvPluginCommand.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/IAnySilentChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/IInventoryAccess.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/IPlayerDataManager.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/ISpecialEnderChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/ISpecialPlayerInventory.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/InternalAccessor.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/craftbukkit/AnySilentChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/craftbukkit/InventoryAccess.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/craftbukkit/PlayerDataManager.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/craftbukkit/SilentContainerChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/craftbukkit/SpecialEnderChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_4_5/AnySilentChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_4_6/AnySilentChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_4_R1/AnySilentChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_5_R2/AnySilentChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_5_R3/AnySilentChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_6_R1/AnySilentChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_6_R2/AnySilentChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_6_R3/AnySilentChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R1/AnySilentChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R2/AnySilentChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R3/AnySilentChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R4/AnySilentChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java (100%) rename src/{ => main/java}/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java (100%) rename src/{ => main/java}/com/lishid/openinv/utils/ReflectionUtil.java (100%) rename src/{ => main/java}/com/lishid/openinv/utils/UpdateManager.java (100%) rename src/{ => main/java}/com/lishid/openinv/utils/Updater.java (100%) create mode 100644 src/main/java/plugin.yml rename src/{ => main/resources}/plugin.yml (100%) diff --git a/.gitignore b/.gitignore index b88e87b..2a32706 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ .classpath .project +.idea +*.iml bin/ -lib/ \ No newline at end of file +lib/ +out/ \ No newline at end of file diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 7341ab1..0000000 --- a/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,11 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/.settings/org.eclipse.ltk.core.refactoring.prefs b/.settings/org.eclipse.ltk.core.refactoring.prefs deleted file mode 100644 index 5634a95..0000000 --- a/.settings/org.eclipse.ltk.core.refactoring.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Wed Jun 01 17:38:54 EDT 2011 -eclipse.preferences.version=1 -org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/src/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java similarity index 100% rename from src/com/lishid/openinv/OpenInv.java rename to src/main/java/com/lishid/openinv/OpenInv.java diff --git a/src/com/lishid/openinv/OpenInvEntityListener.java b/src/main/java/com/lishid/openinv/OpenInvEntityListener.java similarity index 100% rename from src/com/lishid/openinv/OpenInvEntityListener.java rename to src/main/java/com/lishid/openinv/OpenInvEntityListener.java diff --git a/src/com/lishid/openinv/OpenInvInventoryListener.java b/src/main/java/com/lishid/openinv/OpenInvInventoryListener.java similarity index 100% rename from src/com/lishid/openinv/OpenInvInventoryListener.java rename to src/main/java/com/lishid/openinv/OpenInvInventoryListener.java diff --git a/src/com/lishid/openinv/OpenInvPlayerListener.java b/src/main/java/com/lishid/openinv/OpenInvPlayerListener.java similarity index 100% rename from src/com/lishid/openinv/OpenInvPlayerListener.java rename to src/main/java/com/lishid/openinv/OpenInvPlayerListener.java 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 100% rename from src/com/lishid/openinv/commands/AnyChestPluginCommand.java rename to src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java diff --git a/src/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java similarity index 100% rename from src/com/lishid/openinv/commands/OpenEnderPluginCommand.java rename to src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java diff --git a/src/com/lishid/openinv/commands/OpenInvPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java similarity index 100% rename from src/com/lishid/openinv/commands/OpenInvPluginCommand.java rename to src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java diff --git a/src/com/lishid/openinv/commands/SearchInvPluginCommand.java b/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java similarity index 100% rename from src/com/lishid/openinv/commands/SearchInvPluginCommand.java rename to src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java diff --git a/src/com/lishid/openinv/commands/SilentChestPluginCommand.java b/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java similarity index 100% rename from src/com/lishid/openinv/commands/SilentChestPluginCommand.java rename to src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java diff --git a/src/com/lishid/openinv/commands/ToggleOpenInvPluginCommand.java b/src/main/java/com/lishid/openinv/commands/ToggleOpenInvPluginCommand.java similarity index 100% rename from src/com/lishid/openinv/commands/ToggleOpenInvPluginCommand.java rename to src/main/java/com/lishid/openinv/commands/ToggleOpenInvPluginCommand.java diff --git a/src/com/lishid/openinv/internal/IAnySilentChest.java b/src/main/java/com/lishid/openinv/internal/IAnySilentChest.java similarity index 100% rename from src/com/lishid/openinv/internal/IAnySilentChest.java rename to src/main/java/com/lishid/openinv/internal/IAnySilentChest.java 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 100% rename from src/com/lishid/openinv/internal/IPlayerDataManager.java rename to src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java diff --git a/src/com/lishid/openinv/internal/ISpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java similarity index 100% rename from src/com/lishid/openinv/internal/ISpecialEnderChest.java rename to src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java diff --git a/src/com/lishid/openinv/internal/ISpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java similarity index 100% rename from src/com/lishid/openinv/internal/ISpecialPlayerInventory.java rename to src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java diff --git a/src/com/lishid/openinv/internal/InternalAccessor.java b/src/main/java/com/lishid/openinv/internal/InternalAccessor.java similarity index 100% rename from src/com/lishid/openinv/internal/InternalAccessor.java rename to src/main/java/com/lishid/openinv/internal/InternalAccessor.java diff --git a/src/com/lishid/openinv/internal/craftbukkit/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/craftbukkit/AnySilentChest.java similarity index 100% rename from src/com/lishid/openinv/internal/craftbukkit/AnySilentChest.java rename to src/main/java/com/lishid/openinv/internal/craftbukkit/AnySilentChest.java diff --git a/src/com/lishid/openinv/internal/craftbukkit/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/craftbukkit/InventoryAccess.java similarity index 100% rename from src/com/lishid/openinv/internal/craftbukkit/InventoryAccess.java rename to src/main/java/com/lishid/openinv/internal/craftbukkit/InventoryAccess.java diff --git a/src/com/lishid/openinv/internal/craftbukkit/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/craftbukkit/PlayerDataManager.java similarity index 100% rename from src/com/lishid/openinv/internal/craftbukkit/PlayerDataManager.java rename to src/main/java/com/lishid/openinv/internal/craftbukkit/PlayerDataManager.java diff --git a/src/com/lishid/openinv/internal/craftbukkit/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/craftbukkit/SilentContainerChest.java similarity index 100% rename from src/com/lishid/openinv/internal/craftbukkit/SilentContainerChest.java rename to src/main/java/com/lishid/openinv/internal/craftbukkit/SilentContainerChest.java diff --git a/src/com/lishid/openinv/internal/craftbukkit/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialEnderChest.java similarity index 100% rename from src/com/lishid/openinv/internal/craftbukkit/SpecialEnderChest.java rename to src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialEnderChest.java diff --git a/src/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java similarity index 100% rename from src/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java rename to src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java diff --git a/src/com/lishid/openinv/internal/v1_4_5/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_4_5/AnySilentChest.java rename to src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentChest.java diff --git a/src/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java rename to src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java diff --git a/src/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java rename to src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java diff --git a/src/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java rename to src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java diff --git a/src/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java rename to src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java diff --git a/src/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java rename to src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java diff --git a/src/com/lishid/openinv/internal/v1_4_6/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_4_6/AnySilentChest.java rename to src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentChest.java diff --git a/src/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java rename to src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java diff --git a/src/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java rename to src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java diff --git a/src/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java rename to src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java diff --git a/src/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java rename to src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java diff --git a/src/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java rename to src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java diff --git a/src/com/lishid/openinv/internal/v1_4_R1/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_4_R1/AnySilentChest.java rename to src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentChest.java diff --git a/src/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java rename to src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java diff --git a/src/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java rename to src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java diff --git a/src/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java rename to src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java diff --git a/src/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java rename to src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java diff --git a/src/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java rename to src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java diff --git a/src/com/lishid/openinv/internal/v1_5_R2/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_5_R2/AnySilentChest.java rename to src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentChest.java diff --git a/src/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java rename to src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java diff --git a/src/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java rename to src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java diff --git a/src/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java rename to src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java diff --git a/src/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java rename to src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java diff --git a/src/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java rename to src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java diff --git a/src/com/lishid/openinv/internal/v1_5_R3/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_5_R3/AnySilentChest.java rename to src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentChest.java diff --git a/src/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java rename to src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java diff --git a/src/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java rename to src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java diff --git a/src/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java rename to src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java diff --git a/src/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java rename to src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java diff --git a/src/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java rename to src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java diff --git a/src/com/lishid/openinv/internal/v1_6_R1/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_6_R1/AnySilentChest.java rename to src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentChest.java diff --git a/src/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java rename to src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java diff --git a/src/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java rename to src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java diff --git a/src/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java rename to src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java diff --git a/src/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java rename to src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java diff --git a/src/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java rename to src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java diff --git a/src/com/lishid/openinv/internal/v1_6_R2/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_6_R2/AnySilentChest.java rename to src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentChest.java diff --git a/src/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java rename to src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java diff --git a/src/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java rename to src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java diff --git a/src/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java rename to src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java diff --git a/src/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java rename to src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java diff --git a/src/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java rename to src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java diff --git a/src/com/lishid/openinv/internal/v1_6_R3/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_6_R3/AnySilentChest.java rename to src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentChest.java diff --git a/src/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java rename to src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java diff --git a/src/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java rename to src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java diff --git a/src/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java rename to src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java diff --git a/src/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java rename to src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java diff --git a/src/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java rename to src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java diff --git a/src/com/lishid/openinv/internal/v1_7_R1/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R1/AnySilentChest.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentChest.java diff --git a/src/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java diff --git a/src/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java diff --git a/src/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java diff --git a/src/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java diff --git a/src/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java diff --git a/src/com/lishid/openinv/internal/v1_7_R2/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R2/AnySilentChest.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentChest.java diff --git a/src/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java diff --git a/src/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java diff --git a/src/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java diff --git a/src/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java diff --git a/src/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java diff --git a/src/com/lishid/openinv/internal/v1_7_R3/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R3/AnySilentChest.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentChest.java diff --git a/src/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java diff --git a/src/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java diff --git a/src/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java diff --git a/src/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java diff --git a/src/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java diff --git a/src/com/lishid/openinv/internal/v1_7_R4/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R4/AnySilentChest.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentChest.java diff --git a/src/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java diff --git a/src/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java diff --git a/src/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java diff --git a/src/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java diff --git a/src/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java rename to src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java diff --git a/src/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java rename to src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java diff --git a/src/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java rename to src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java diff --git a/src/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java rename to src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java diff --git a/src/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java rename to src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java diff --git a/src/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java rename to src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java diff --git a/src/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java similarity index 100% rename from src/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java rename to src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java diff --git a/src/com/lishid/openinv/utils/ReflectionUtil.java b/src/main/java/com/lishid/openinv/utils/ReflectionUtil.java similarity index 100% rename from src/com/lishid/openinv/utils/ReflectionUtil.java rename to src/main/java/com/lishid/openinv/utils/ReflectionUtil.java diff --git a/src/com/lishid/openinv/utils/UpdateManager.java b/src/main/java/com/lishid/openinv/utils/UpdateManager.java similarity index 100% rename from src/com/lishid/openinv/utils/UpdateManager.java rename to src/main/java/com/lishid/openinv/utils/UpdateManager.java diff --git a/src/com/lishid/openinv/utils/Updater.java b/src/main/java/com/lishid/openinv/utils/Updater.java similarity index 100% rename from src/com/lishid/openinv/utils/Updater.java rename to src/main/java/com/lishid/openinv/utils/Updater.java diff --git a/src/main/java/plugin.yml b/src/main/java/plugin.yml new file mode 100644 index 0000000..17f97a2 --- /dev/null +++ b/src/main/java/plugin.yml @@ -0,0 +1,38 @@ +name: OpenInv +main: com.lishid.openinv.OpenInv +version: 2.2.5 +author: lishid +description: > + This plugin allows you to open a player's inventory as a chest and interact with it in real time. +commands: + openinv: + aliases: [oi, inv, open] + description: Open a player's inventory + usage: | + / - Open last person's inventory + / - Open a player's inventory + openender: + aliases: [oe] + description: Opens the enderchest of a player + usage: | + / - Opens a player's enderchest + searchinv: + aliases: [si] + description: Search and list players having a specific item + usage: | + / [MinAmount] - Item can be the Item ID or the CraftBukkit Item Name, MinAmount is the minimum amount to be considered. + toggleopeninv: + aliases: [toi, toggleoi, toggleinv] + description: Toggle item openinv function + usage: | + / [Check] - Checks whether item openinv is enabled + silentchest: + aliases: [sc, silent] + description: Toggle silent chest function, which hides the animation of a chest when opened or closed, and suppresses the sound. + usage: | + / [Check] - Checks whether silent chest is enabled + anychest: + aliases: [ac] + description: Toggle anychest function, which allows opening of blocked chests. + usage: | + / [Check] - Checks whether anychest is enabled 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 -- 2.49.1 From 29b0bc980f08bdb6c5042255fba5542b4b8f6b50 Mon Sep 17 00:00:00 2001 From: lishid Date: Tue, 30 Dec 2014 22:28:52 -0500 Subject: [PATCH 005/253] minor refactor + update internal chest logic --- src/main/java/com/lishid/openinv/OpenInv.java | 16 +- .../lishid/openinv/OpenInvPlayerListener.java | 8 +- .../openinv/internal/ISpecialEnderChest.java | 6 +- .../internal/ISpecialPlayerInventory.java | 6 +- .../craftbukkit/SpecialEnderChest.java | 4 +- .../craftbukkit/SpecialPlayerInventory.java | 5 +- .../internal/v1_4_5/SpecialEnderChest.java | 4 +- .../v1_4_5/SpecialPlayerInventory.java | 5 +- .../internal/v1_4_6/SpecialEnderChest.java | 4 +- .../v1_4_6/SpecialPlayerInventory.java | 5 +- .../internal/v1_4_R1/SpecialEnderChest.java | 4 +- .../v1_4_R1/SpecialPlayerInventory.java | 5 +- .../internal/v1_5_R2/SpecialEnderChest.java | 4 +- .../v1_5_R2/SpecialPlayerInventory.java | 5 +- .../internal/v1_5_R3/SpecialEnderChest.java | 4 +- .../v1_5_R3/SpecialPlayerInventory.java | 5 +- .../internal/v1_6_R1/SpecialEnderChest.java | 4 +- .../v1_6_R1/SpecialPlayerInventory.java | 5 +- .../internal/v1_6_R2/SpecialEnderChest.java | 4 +- .../v1_6_R2/SpecialPlayerInventory.java | 5 +- .../internal/v1_6_R3/SpecialEnderChest.java | 4 +- .../v1_6_R3/SpecialPlayerInventory.java | 5 +- .../internal/v1_7_R1/SpecialEnderChest.java | 4 +- .../v1_7_R1/SpecialPlayerInventory.java | 5 +- .../internal/v1_7_R2/SpecialEnderChest.java | 4 +- .../v1_7_R2/SpecialPlayerInventory.java | 5 +- .../internal/v1_7_R3/SpecialEnderChest.java | 4 +- .../v1_7_R3/SpecialPlayerInventory.java | 5 +- .../internal/v1_7_R4/SpecialEnderChest.java | 4 +- .../v1_7_R4/SpecialPlayerInventory.java | 5 +- .../internal/v1_8_R1/AnySilentChest.java | 141 ++--- .../internal/v1_8_R1/EnumDirectionList.java | 23 + .../internal/v1_8_R1/SilentInventory.java | 161 ++++++ .../internal/v1_8_R1/SpecialEnderChest.java | 97 ++-- .../v1_8_R1/SpecialPlayerInventory.java | 88 +-- .../lishid/openinv/utils/ReflectionUtil.java | 510 ------------------ .../lishid/openinv/utils/UpdateManager.java | 34 -- .../com/lishid/openinv/utils/Updater.java | 412 -------------- 38 files changed, 406 insertions(+), 1213 deletions(-) create mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R1/EnumDirectionList.java create mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentInventory.java delete mode 100644 src/main/java/com/lishid/openinv/utils/ReflectionUtil.java delete mode 100644 src/main/java/com/lishid/openinv/utils/UpdateManager.java delete mode 100644 src/main/java/com/lishid/openinv/utils/Updater.java diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index 59d9d6d..3c76149 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -17,6 +17,7 @@ package com.lishid.openinv; import java.util.HashMap; +import java.util.Map; import java.util.logging.Logger; import org.bukkit.ChatColor; @@ -33,20 +34,17 @@ import com.lishid.openinv.internal.IPlayerDataManager; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.internal.InternalAccessor; -import com.lishid.openinv.utils.UpdateManager; /** * 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(); - - private UpdateManager updater = new UpdateManager(); + public static Map inventories = new HashMap(); + public static Map enderChests = new HashMap(); public static OpenInv mainPlugin; @@ -95,8 +93,6 @@ public class OpenInv extends JavaPlugin { getCommand("silentchest").setExecutor(new SilentChestPluginCommand(this)); getCommand("anychest").setExecutor(new AnyChestPluginCommand(this)); getCommand("openender").setExecutor(new OpenEnderPluginCommand(this)); - - updater.Initialize(this, getFile()); } public static boolean NotifySilentChest() { @@ -107,10 +103,6 @@ public class OpenInv extends JavaPlugin { 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); } diff --git a/src/main/java/com/lishid/openinv/OpenInvPlayerListener.java b/src/main/java/com/lishid/openinv/OpenInvPlayerListener.java index 89c3815..8141116 100644 --- a/src/main/java/com/lishid/openinv/OpenInvPlayerListener.java +++ b/src/main/java/com/lishid/openinv/OpenInvPlayerListener.java @@ -38,13 +38,13 @@ public class OpenInvPlayerListener implements Listener { ISpecialPlayerInventory inventory = OpenInv.inventories.get(event.getPlayer().getName().toLowerCase()); if (inventory != null) { - inventory.PlayerGoOnline(event.getPlayer()); + inventory.playerOnline(event.getPlayer()); } ISpecialEnderChest chest = OpenInv.enderChests.get(event.getPlayer().getName().toLowerCase()); if (chest != null) { - chest.PlayerGoOnline(event.getPlayer()); + chest.playerOnline(event.getPlayer()); } } @@ -52,11 +52,11 @@ public class OpenInvPlayerListener implements Listener { public void onPlayerQuit(PlayerQuitEvent event) { ISpecialPlayerInventory inventory = OpenInv.inventories.get(event.getPlayer().getName().toLowerCase()); if (inventory != null) { - inventory.PlayerGoOffline(); + inventory.playerOffline(); } ISpecialEnderChest chest = OpenInv.enderChests.get(event.getPlayer().getName().toLowerCase()); if (chest != null) { - chest.PlayerGoOffline(); + chest.playerOffline(); } } diff --git a/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java index 3ff8218..5c2d03c 100644 --- a/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java @@ -22,10 +22,8 @@ import org.bukkit.inventory.Inventory; public interface ISpecialEnderChest { public Inventory getBukkitInventory(); - public void InventoryRemovalCheck(); + public void playerOnline(Player p); - public void PlayerGoOnline(Player p); - - public void PlayerGoOffline(); + public void playerOffline(); } diff --git a/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java index da4fc7b..a613721 100644 --- a/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java @@ -22,9 +22,7 @@ import org.bukkit.inventory.Inventory; public interface ISpecialPlayerInventory { public Inventory getBukkitInventory(); - public void InventoryRemovalCheck(); + public void playerOnline(Player p); - public void PlayerGoOnline(Player p); - - public void PlayerGoOffline(); + public void playerOffline(); } diff --git a/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialEnderChest.java index 5b10faa..2d45c2e 100644 --- a/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialEnderChest.java @@ -61,7 +61,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOnline(Player p) { + public void playerOnline(Player p) { if (!playerOnline) { try { InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); @@ -75,7 +75,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; } diff --git a/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java index 280cce2..9576c42 100644 --- a/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java @@ -47,7 +47,6 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return inventory; } - @Override public void InventoryRemovalCheck() { owner.saveData(); if (transaction.isEmpty() && !playerOnline) { @@ -56,7 +55,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOnline(Player player) { + public void playerOnline(Player player) { if (!playerOnline) { CraftPlayer p = (CraftPlayer) player; p.getHandle().inventory.items = this.items; @@ -67,7 +66,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; this.InventoryRemovalCheck(); } diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java index 81637bb..74a51f9 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java @@ -61,7 +61,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOnline(Player p) { + public void playerOnline(Player p) { if (!playerOnline) { try { InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); @@ -75,7 +75,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java index 912f8dc..855c28c 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java @@ -47,7 +47,6 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return inventory; } - @Override public void InventoryRemovalCheck() { owner.saveData(); if (transaction.isEmpty() && !playerOnline) { @@ -56,7 +55,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOnline(Player player) { + public void playerOnline(Player player) { if (!playerOnline) { CraftPlayer p = (CraftPlayer) player; p.getHandle().inventory.items = this.items; @@ -67,7 +66,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; this.InventoryRemovalCheck(); } diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java index 953e8d6..fbbb96f 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java @@ -61,7 +61,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOnline(Player p) { + public void playerOnline(Player p) { if (!playerOnline) { try { InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); @@ -75,7 +75,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java index e5299f1..6cba634 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java @@ -47,7 +47,6 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return inventory; } - @Override public void InventoryRemovalCheck() { owner.saveData(); if (transaction.isEmpty() && !playerOnline) { @@ -56,7 +55,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOnline(Player player) { + public void playerOnline(Player player) { if (!playerOnline) { CraftPlayer p = (CraftPlayer) player; p.getHandle().inventory.items = this.items; @@ -67,7 +66,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; this.InventoryRemovalCheck(); } diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java index 93e02c2..00a0c5e 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java @@ -61,7 +61,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOnline(Player p) { + public void playerOnline(Player p) { if (!playerOnline) { try { InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); @@ -75,7 +75,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java index fd6126a..c2501cc 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java @@ -47,7 +47,6 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return inventory; } - @Override public void InventoryRemovalCheck() { owner.saveData(); if (transaction.isEmpty() && !playerOnline) { @@ -56,7 +55,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOnline(Player player) { + public void playerOnline(Player player) { if (!playerOnline) { CraftPlayer p = (CraftPlayer) player; p.getHandle().inventory.items = this.items; @@ -67,7 +66,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; this.InventoryRemovalCheck(); } diff --git a/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java index add6767..0ee7079 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java @@ -61,7 +61,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOnline(Player p) { + public void playerOnline(Player p) { if (!playerOnline) { try { InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); @@ -75,7 +75,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java index e4cee51..3993794 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java @@ -47,7 +47,6 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return inventory; } - @Override public void InventoryRemovalCheck() { owner.saveData(); if (transaction.isEmpty() && !playerOnline) { @@ -56,7 +55,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOnline(Player player) { + public void playerOnline(Player player) { if (!playerOnline) { CraftPlayer p = (CraftPlayer) player; p.getHandle().inventory.items = this.items; @@ -67,7 +66,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; this.InventoryRemovalCheck(); } diff --git a/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java index f3010ec..cf98df4 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java @@ -61,7 +61,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOnline(Player p) { + public void playerOnline(Player p) { if (!playerOnline) { try { InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); @@ -75,7 +75,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java index 3afdec8..b579dd6 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java @@ -47,7 +47,6 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return inventory; } - @Override public void InventoryRemovalCheck() { owner.saveData(); if (transaction.isEmpty() && !playerOnline) { @@ -56,7 +55,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOnline(Player player) { + public void playerOnline(Player player) { if (!playerOnline) { CraftPlayer p = (CraftPlayer) player; p.getHandle().inventory.items = this.items; @@ -67,7 +66,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; this.InventoryRemovalCheck(); } diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java index 1a30c97..0513edc 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java @@ -61,7 +61,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOnline(Player p) { + public void playerOnline(Player p) { if (!playerOnline) { try { InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); @@ -75,7 +75,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java index 8aaa85f..e721dcb 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java @@ -47,7 +47,6 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return inventory; } - @Override public void InventoryRemovalCheck() { owner.saveData(); if (transaction.isEmpty() && !playerOnline) { @@ -56,7 +55,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOnline(Player player) { + public void playerOnline(Player player) { if (!playerOnline) { CraftPlayer p = (CraftPlayer) player; p.getHandle().inventory.items = this.items; @@ -67,7 +66,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; this.InventoryRemovalCheck(); } diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java index 9d25cbb..624d07a 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java @@ -61,7 +61,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOnline(Player p) { + public void playerOnline(Player p) { if (!playerOnline) { try { InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); @@ -75,7 +75,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java index 3f59a7c..c9c2b94 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java @@ -47,7 +47,6 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return inventory; } - @Override public void InventoryRemovalCheck() { owner.saveData(); if (transaction.isEmpty() && !playerOnline) { @@ -56,7 +55,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOnline(Player player) { + public void playerOnline(Player player) { if (!playerOnline) { CraftPlayer p = (CraftPlayer) player; p.getHandle().inventory.items = this.items; @@ -67,7 +66,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; this.InventoryRemovalCheck(); } diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java index f04726d..4fc3e5e 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java @@ -61,7 +61,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOnline(Player p) { + public void playerOnline(Player p) { if (!playerOnline) { try { InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); @@ -75,7 +75,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java index 485e98f..26314c3 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java @@ -47,7 +47,6 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return inventory; } - @Override public void InventoryRemovalCheck() { owner.saveData(); if (transaction.isEmpty() && !playerOnline) { @@ -56,7 +55,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOnline(Player player) { + public void playerOnline(Player player) { if (!playerOnline) { CraftPlayer p = (CraftPlayer) player; p.getHandle().inventory.items = this.items; @@ -67,7 +66,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; this.InventoryRemovalCheck(); } diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java index 24d3dc8..c203684 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java @@ -61,7 +61,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOnline(Player p) { + public void playerOnline(Player p) { if (!playerOnline) { try { InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); @@ -75,7 +75,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java index 7229487..bf93550 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java @@ -47,7 +47,6 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return inventory; } - @Override public void InventoryRemovalCheck() { owner.saveData(); if (transaction.isEmpty() && !playerOnline) { @@ -56,7 +55,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOnline(Player player) { + public void playerOnline(Player player) { if (!playerOnline) { CraftPlayer p = (CraftPlayer) player; p.getHandle().inventory.items = this.items; @@ -67,7 +66,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; this.InventoryRemovalCheck(); } diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java index a24f7b5..fc1f6bb 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java @@ -61,7 +61,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOnline(Player p) { + public void playerOnline(Player p) { if (!playerOnline) { try { InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); @@ -75,7 +75,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java index d3e0160..d6f2c75 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java @@ -47,7 +47,6 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return inventory; } - @Override public void InventoryRemovalCheck() { owner.saveData(); if (transaction.isEmpty() && !playerOnline) { @@ -56,7 +55,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOnline(Player player) { + public void playerOnline(Player player) { if (!playerOnline) { CraftPlayer p = (CraftPlayer) player; p.getHandle().inventory.items = this.items; @@ -67,7 +66,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; this.InventoryRemovalCheck(); } diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java index 47a2235..4e9f663 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java @@ -61,7 +61,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOnline(Player p) { + public void playerOnline(Player p) { if (!playerOnline) { try { InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); @@ -75,7 +75,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java index 98a8cf1..2bf975e 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java @@ -47,7 +47,6 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return inventory; } - @Override public void InventoryRemovalCheck() { owner.saveData(); if (transaction.isEmpty() && !playerOnline) { @@ -56,7 +55,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOnline(Player player) { + public void playerOnline(Player player) { if (!playerOnline) { CraftPlayer p = (CraftPlayer) player; p.getHandle().inventory.items = this.items; @@ -67,7 +66,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; this.InventoryRemovalCheck(); } diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java index 8135307..776d1cf 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java @@ -61,7 +61,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOnline(Player p) { + public void playerOnline(Player p) { if (!playerOnline) { try { InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); @@ -75,7 +75,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java index b36388b..27ba2b0 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java @@ -47,7 +47,6 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return inventory; } - @Override public void InventoryRemovalCheck() { owner.saveData(); if (transaction.isEmpty() && !playerOnline) { @@ -56,7 +55,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOnline(Player player) { + public void playerOnline(Player player) { if (!playerOnline) { CraftPlayer p = (CraftPlayer) player; p.getHandle().inventory.items = this.items; @@ -67,7 +66,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; this.InventoryRemovalCheck(); } diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java index 8a08868..239bb01 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java @@ -16,9 +16,8 @@ package com.lishid.openinv.internal.v1_8_R1; -import java.lang.reflect.Field; +import java.util.Iterator; -import org.bukkit.ChatColor; import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; @@ -33,90 +32,106 @@ import org.bukkit.craftbukkit.v1_8_R1.entity.*; public class AnySilentChest implements IAnySilentChest { public boolean IsAnyChestNeeded(Player p, int x, int y, int z) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest + BlockPosition position = new BlockPosition(x, y, z); EntityPlayer player = ((CraftPlayer) p).getHandle(); World world = player.world; + BlockChest chest = (BlockChest) Block.getByName("chest"); // If block on top - if (world.getType(new BlockPosition(x, y + 1, z)).getBlock().c()){ + if (topBlocking(world, position)) { return true; } - int id = Block.getId(world.getType(new BlockPosition(x, y, z)).getBlock()); - // If block next to chest is chest and has a block on top - if ((Block.getId(world.getType(new BlockPosition(x - 1, y, z)).getBlock()) == id) && (world.getType(new BlockPosition(x - 1, y + 1, z)).getBlock().c())) - return true; - if ((Block.getId(world.getType(new BlockPosition(x + 1, y, z)).getBlock()) == id) && (world.getType(new BlockPosition(x + 1, y + 1, z)).getBlock().c())) - return true; - if ((Block.getId(world.getType(new BlockPosition(x, y, z - 1)).getBlock()) == id) && (world.getType(new BlockPosition(x, y + 1, z - 1)).getBlock().c())) - return true; - if ((Block.getId(world.getType(new BlockPosition(x, y, z + 1)).getBlock()) == id) && (world.getType(new BlockPosition(x, y + 1, z + 1)).getBlock().c())) - return true; + for (EnumDirection direction : EnumDirectionList.HORIZONTAL) { + BlockPosition sidePosition = position.shift(direction); + Block var8 = world.getType(sidePosition).getBlock(); + if (var8 == chest) { + if (this.topBlocking(world, sidePosition)) { + return true; + } + } + } return false; } + private boolean topBlocking(World world, BlockPosition position) { + return this.blockOnTop(world, position) || this.ocelotOnTop(world, position); + } + + private boolean blockOnTop(World world, BlockPosition position) { + return world.getType(position.up()).getBlock().isOccluding(); + } + + private boolean ocelotOnTop(World world, BlockPosition position) { + Iterator var3 = world.a(EntityOcelot.class, + new AxisAlignedBB((double) position.getX(), (double) (position.getY() + 1), + (double) position.getZ(), (double) (position.getX() + 1), + (double) (position.getY() + 2), (double) (position.getZ() + 1))).iterator(); + + EntityOcelot var5; + do { + if (!var3.hasNext()) { + return false; + } + + Entity var4 = (Entity) var3.next(); + var5 = (EntityOcelot) var4; + } while (!var5.isSitting()); + + return true; + } public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { + BlockPosition position = new BlockPosition(x, y, z); EntityPlayer player = ((CraftPlayer) p).getHandle(); World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(new BlockPosition(x, y, z)); - if (chest == null) + if (world.isStatic) { return true; - - int id = Block.getId(world.getType(new BlockPosition(x, y, z)).getBlock()); - - if (!anychest) { - if (world.getType(new BlockPosition(x, y + 1, z)).getBlock().c()) - return true; - if ((Block.getId(world.getType(new BlockPosition(x - 1, y, z)).getBlock()) == id) && (world.getType(new BlockPosition(x - 1, y + 1, z)).getBlock().c())) - return true; - if ((Block.getId(world.getType(new BlockPosition(x + 1, y, z)).getBlock()) == id) && (world.getType(new BlockPosition(x + 1, y + 1, z)).getBlock().c())) - return true; - if ((Block.getId(world.getType(new BlockPosition(x, y, z - 1)).getBlock()) == id) && (world.getType(new BlockPosition(x, y + 1, z - 1)).getBlock().c())) - return true; - if ((Block.getId(world.getType(new BlockPosition(x, y, z + 1)).getBlock()) == id) && (world.getType(new BlockPosition(x, y + 1, z + 1)).getBlock().c())) - return true; } - if (Block.getId(world.getType(new BlockPosition(x - 1, y, z)).getBlock()) == id) - chest = new InventoryLargeChest("Large chest", (ITileInventory) world.getTileEntity(new BlockPosition(x - 1, y, z)), (ITileInventory) chest); - if (Block.getId(world.getType(new BlockPosition(x + 1, y, z)).getBlock()) == id) - chest = new InventoryLargeChest("Large chest", (ITileInventory) chest, (ITileInventory) world.getTileEntity(new BlockPosition(x + 1, y, z))); - if (Block.getId(world.getType(new BlockPosition(x, y, z - 1)).getBlock()) == id) - chest = new InventoryLargeChest("Large chest", (ITileInventory) world.getTileEntity(new BlockPosition(x, y, z - 1)), (ITileInventory) chest); - if (Block.getId(world.getType(new BlockPosition(x, y, z + 1)).getBlock()) == id) - chest = new InventoryLargeChest("Large chest", (ITileInventory) chest, (ITileInventory) world.getTileEntity(new BlockPosition(x, y, z + 1))); + BlockChest chest = (BlockChest) Block.getByName("chest"); + + TileEntity tileEntity = world.getTileEntity(position); + if (!(tileEntity instanceof TileEntityChest)) { + return true; + } + + ITileInventory tileInventory = (ITileInventory) tileEntity; + if (!anychest && this.topBlocking(world, position)) { + return true; + } + + for (EnumDirection direction : EnumDirectionList.HORIZONTAL) { + BlockPosition side = position.shift(direction); + Block block = world.getType(side).getBlock(); + if (block == chest) { + if (!anychest && this.topBlocking(world, side)) { + return true; + } + + TileEntity sideTileEntity = world.getTileEntity(side); + if (sideTileEntity instanceof TileEntityChest) { + if (direction != EnumDirection.WEST && direction != EnumDirection.NORTH) { + tileInventory = new InventoryLargeChest("container.chestDouble", tileInventory, (TileEntityChest) sideTileEntity); + } else { + tileInventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) sideTileEntity, tileInventory); + } + } + } + } boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, "minecraft:chest", new ChatComponentText(((IInventory) chest).getName()), ((IInventory) chest).getSize())); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest), player); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + if (silentchest) { + tileInventory = new SilentInventory(tileInventory); + if (OpenInv.NotifySilentChest()) { + p.sendMessage("You are opening a chest silently."); } + returnValue = false; } + player.openContainer(tileInventory); + if (anychest && OpenInv.NotifyAnyChest()) { p.sendMessage("You are opening a blocked chest."); } diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/EnumDirectionList.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/EnumDirectionList.java new file mode 100644 index 0000000..8d7078c --- /dev/null +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R1/EnumDirectionList.java @@ -0,0 +1,23 @@ +package com.lishid.openinv.internal.v1_8_R1; + +import com.google.common.collect.Iterators; +import net.minecraft.server.v1_8_R1.*; + +import java.util.Iterator; + +public enum EnumDirectionList implements Iterable { + HORIZONTAL(EnumDirectionLimit.HORIZONTAL), + VERTICAL(EnumDirectionLimit.VERTICAL); + + private EnumDirectionLimit list; + + private EnumDirectionList(EnumDirectionLimit list) { + this.list = list; + } + + @Override + public Iterator iterator() { + return Iterators.forArray(list.a()); + } + +} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentInventory.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentInventory.java new file mode 100644 index 0000000..6ce2f8a --- /dev/null +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentInventory.java @@ -0,0 +1,161 @@ +package com.lishid.openinv.internal.v1_8_R1; + +import net.minecraft.server.v1_8_R1.*; +import org.bukkit.craftbukkit.v1_8_R1.entity.CraftHumanEntity; +import org.bukkit.entity.HumanEntity; +import org.bukkit.inventory.InventoryHolder; + +import java.util.List; + +public class SilentInventory implements ITileInventory { + public ITileInventory inv; + + public SilentInventory(ITileInventory inv) { + this.inv = inv; + } + + @Override + public boolean q_() { + return inv.q_(); + } + + @Override + public void a(ChestLock chestLock) { + inv.a(chestLock); + } + + @Override + public ChestLock i() { + return inv.i(); + } + + @Override + public int getSize() { + return inv.getSize(); + } + + @Override + public ItemStack getItem(int i) { + return inv.getItem(i); + } + + @Override + public ItemStack splitStack(int i, int i1) { + return inv.splitStack(i, i1); + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + return inv.splitWithoutUpdate(i); + } + + @Override + public void setItem(int i, ItemStack itemStack) { + inv.setItem(i, itemStack); + } + + @Override + public int getMaxStackSize() { + return inv.getMaxStackSize(); + } + + @Override + public void update() { + inv.update(); + } + + @Override + public boolean a(EntityHuman entityHuman) { + return inv.a(entityHuman); + } + + @Override + public void startOpen(EntityHuman entityHuman) { + inv.startOpen(entityHuman); + } + + @Override + public void closeContainer(EntityHuman entityHuman) { + inv.closeContainer(entityHuman); + } + + @Override + public boolean b(int i, ItemStack itemStack) { + return inv.b(i, itemStack); + } + + @Override + public int getProperty(int i) { + return inv.getProperty(i); + } + + @Override + public void b(int i, int i1) { + inv.b(i, i1); + } + + @Override + public int g() { + return inv.g(); + } + + @Override + public void l() { + inv.l(); + } + + @Override + public ItemStack[] getContents() { + return inv.getContents(); + } + + @Override + public void onOpen(CraftHumanEntity craftHumanEntity) { + inv.onOpen(craftHumanEntity); + } + + @Override + public void onClose(CraftHumanEntity craftHumanEntity) { + inv.onClose(craftHumanEntity); + } + + @Override + public List getViewers() { + return inv.getViewers(); + } + + @Override + public InventoryHolder getOwner() { + return inv.getOwner(); + } + + @Override + public void setMaxStackSize(int i) { + inv.setMaxStackSize(i); + } + + @Override + public String getName() { + return inv.getName(); + } + + @Override + public boolean hasCustomName() { + return inv.hasCustomName(); + } + + @Override + public IChatBaseComponent getScoreboardDisplayName() { + return inv.getScoreboardDisplayName(); + } + + @Override + public Container createContainer(PlayerInventory playerInventory, EntityHuman entityHuman) { + return inv.createContainer(playerInventory, entityHuman); + } + + @Override + public String getContainerName() { + return inv.getContainerName(); + } +} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java index b1a84e0..a0bdc5b 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java @@ -34,94 +34,69 @@ import net.minecraft.server.v1_8_R1.*; import org.bukkit.craftbukkit.v1_8_R1.entity.*; import org.bukkit.craftbukkit.v1_8_R1.inventory.*; -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; +public class SpecialEnderChest extends InventorySubcontainer implements ISpecialEnderChest { private CraftInventory inventory = new CraftInventory(this); + private InventoryEnderChest enderChest; + private CraftPlayer owner; + private boolean playerOnline = false; - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().hasCustomName(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; + public SpecialEnderChest(Player p, boolean online) { + this(p, ((CraftPlayer) p).getHandle().getEnderChest(), online); + } + + public SpecialEnderChest(Player p, InventoryEnderChest enderchest, boolean online) { + super(enderchest.getName(), enderchest.hasCustomName(), enderchest.getSize()); + this.owner = (CraftPlayer) p; + this.enderChest = enderchest; this.items = enderChest.getContents(); + this.playerOnline = online; OpenInv.enderChests.put(owner.getName().toLowerCase(), this); } + private void saveOnExit() { + if (transaction.isEmpty() && !playerOnline) { + owner.saveData(); + OpenInv.enderChests.remove(owner.getName().toLowerCase()); + } + } + + private void linkInventory(InventoryEnderChest inventory) { + inventory.items = this.items; + } + public Inventory getBukkitInventory() { return inventory; } - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void PlayerGoOnline(Player p) { + public void playerOnline(Player p) { if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} + linkInventory(((CraftPlayer) p).getHandle().getEnderChest()); p.saveData(); playerOnline = true; } } - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; + owner.loadData(); + linkInventory(owner.getHandle().getEnderChest()); + saveOnExit(); } - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - + @Override public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; + super.onClose(who); + saveOnExit(); } + @Override public InventoryHolder getOwner() { return this.owner; } - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - + @Override public void update() { + super.update(); enderChest.update(); } } diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java index c97b719..89e085b 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java @@ -29,54 +29,56 @@ import org.bukkit.craftbukkit.v1_8_R1.entity.*; import org.bukkit.craftbukkit.v1_8_R1.inventory.*; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; private CraftInventory inventory = new CraftInventory(this); + private ItemStack[] extra = new ItemStack[5]; + private CraftPlayer owner; + private boolean playerOnline = false; - public SpecialPlayerInventory(Player p, Boolean online) { + public SpecialPlayerInventory(Player p, boolean online) { super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; + this.owner = (CraftPlayer) p; this.items = player.inventory.items; this.armor = player.inventory.armor; + this.playerOnline = online; OpenInv.inventories.put(owner.getName().toLowerCase(), this); } - @Override public Inventory getBukkitInventory() { return inventory; } - @Override - public void InventoryRemovalCheck() { - owner.saveData(); + private void saveOnExit() { if (transaction.isEmpty() && !playerOnline) { + owner.saveData(); OpenInv.inventories.remove(owner.getName().toLowerCase()); } } - @Override - public void PlayerGoOnline(Player player) { + private void linkInventory(PlayerInventory inventory) { + inventory.items = this.items; + inventory.armor = this.armor; + } + + public void playerOnline(Player player) { if (!playerOnline) { CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; + linkInventory(p.getHandle().inventory); p.saveData(); playerOnline = true; } } - @Override - public void PlayerGoOffline() { + public void playerOffline() { playerOnline = false; - this.InventoryRemovalCheck(); + owner.loadData(); + linkInventory(owner.getHandle().inventory); + saveOnExit(); } @Override public void onClose(CraftHumanEntity who) { super.onClose(who); - this.InventoryRemovalCheck(); + this.saveOnExit(); } @Override @@ -99,16 +101,14 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP if (i >= is.length) { i -= is.length; is = this.armor; - } - else { + } else { i = getReversedItemSlotNum(i); } if (i >= is.length) { i -= is.length; is = this.extra; - } - else if (is == this.armor) { + } else if (is == this.armor) { i = getReversedArmorSlotNum(i); } @@ -122,16 +122,14 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP if (i >= is.length) { i -= is.length; is = this.armor; - } - else { + } else { i = getReversedItemSlotNum(i); } if (i >= is.length) { i -= is.length; is = this.extra; - } - else if (is == this.armor) { + } else if (is == this.armor) { i = getReversedArmorSlotNum(i); } @@ -142,8 +140,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP itemstack = is[i]; is[i] = null; return itemstack; - } - else { + } else { itemstack = is[i].a(j); if (is[i].count == 0) { is[i] = null; @@ -151,8 +148,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return itemstack; } - } - else { + } else { return null; } } @@ -164,16 +160,14 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP if (i >= is.length) { i -= is.length; is = this.armor; - } - else { + } else { i = getReversedItemSlotNum(i); } if (i >= is.length) { i -= is.length; is = this.extra; - } - else if (is == this.armor) { + } else if (is == this.armor) { i = getReversedArmorSlotNum(i); } @@ -182,8 +176,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP is[i] = null; return itemstack; - } - else { + } else { return null; } } @@ -195,16 +188,14 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP if (i >= is.length) { i -= is.length; is = this.armor; - } - else { + } else { i = getReversedItemSlotNum(i); } if (i >= is.length) { i -= is.length; is = this.extra; - } - else if (is == this.armor) { + } else if (is == this.armor) { i = getReversedArmorSlotNum(i); } @@ -239,10 +230,13 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return i; } - public String getInventoryName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } + @Override + public boolean hasCustomName() { + return true; + } + + @Override + public String getName() { return player.getName(); } @@ -250,4 +244,10 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public boolean a(EntityHuman entityhuman) { return true; } + + @Override + public void update() { + super.update(); + player.inventory.update(); + } } \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/utils/ReflectionUtil.java b/src/main/java/com/lishid/openinv/utils/ReflectionUtil.java deleted file mode 100644 index b701bd7..0000000 --- a/src/main/java/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/utils/UpdateManager.java b/src/main/java/com/lishid/openinv/utils/UpdateManager.java deleted file mode 100644 index 879bf8b..0000000 --- a/src/main/java/com/lishid/openinv/utils/UpdateManager.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.lishid.openinv.utils; - -import java.io.File; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.utils.Updater.UpdateResult; - -public class UpdateManager { - public Updater updater; - - public void Initialize(OpenInv plugin, File file) { - updater = new Updater(plugin, 31432, file); - - // Create task to update - plugin.getServer().getScheduler().runTaskTimerAsynchronously(plugin, new Runnable() { - @Override - public void run() { - // Check for updates - if (OpenInv.GetCheckForUpdates()) { - UpdateResult result = updater.update(); - if (result != UpdateResult.NO_UPDATE) { - if (result == UpdateResult.SUCCESS) { - OpenInv.log("Update found! Downloaded new version."); - OpenInv.log("This behaviour can be disabled in the config.yml"); - } - else { - OpenInv.log("Update failed, reason: " + result.toString()); - } - } - } - } - }, 0, 20 * 60 * 1000); // Update every once a while - } -} diff --git a/src/main/java/com/lishid/openinv/utils/Updater.java b/src/main/java/com/lishid/openinv/utils/Updater.java deleted file mode 100644 index 304bf76..0000000 --- a/src/main/java/com/lishid/openinv/utils/Updater.java +++ /dev/null @@ -1,412 +0,0 @@ -/* - * Updater for Bukkit. - * - * This class provides the means to safely and easily update a plugin, or check to see if it is updated using dev.bukkit.org - */ - -package com.lishid.openinv.utils; - -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLConnection; -import java.util.Enumeration; -import java.util.regex.Pattern; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; - -import org.bukkit.plugin.Plugin; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.JSONValue; - -/** - * Check dev.bukkit.org to find updates for a given plugin, and download the updates if needed. - *

- * VERY, VERY IMPORTANT: Because there are no standards for adding auto-update toggles in your plugin's config, this system provides NO CHECK WITH YOUR CONFIG to make sure the user has allowed - * auto-updating.
- * It is a BUKKIT POLICY that you include a boolean value in your config that prevents the auto-updater from running AT ALL.
- * If you fail to include this option in your config, your plugin will be REJECTED when you attempt to submit it to dev.bukkit.org. - *

- * An example of a good configuration option would be something similar to 'auto-update: true' - if this value is set to false you may NOT run the auto-updater.
- * If you are unsure about these rules, please read the plugin submission guidelines: http://goo.gl/8iU5l - * - * @author Gravity - * @version 2.0 - */ - -public class Updater { - - private Plugin plugin; - private String versionName; - private String versionLink; - @SuppressWarnings("unused") - private String versionType; - @SuppressWarnings("unused") - private String versionGameVersion; - - private boolean announce; // Whether to announce file downloads - - private URL url; // Connecting to RSS - private File file; // The plugin's file - - private int id = 31432; // Project's Curse ID - // SEE https://dev.bukkit.org/home/servermods-apikey/ - private String apiKey = null; // BukkitDev ServerMods API key - private static final String TITLE_VALUE = "name"; // Gets remote file's title - private static final String LINK_VALUE = "downloadUrl"; // Gets remote file's download link - private static final String TYPE_VALUE = "releaseType"; // Gets remote file's release type - private static final String VERSION_VALUE = "gameVersion"; // Gets remote file's build version - private static final String QUERY = "/servermods/files?projectIds="; // Path to GET - private static final String HOST = "https://api.curseforge.com"; // Slugs will be appended to this to get to the project's RSS feed - - private static final String[] NO_UPDATE_TAG = { "-DEV", "-PRE", "-SNAPSHOT" }; // If the version number contains one of these, don't update. - private static final int BYTE_SIZE = 1024; // Used for downloading files - private String updateFolder;// The folder that downloads will be placed in - private Updater.UpdateResult result = Updater.UpdateResult.SUCCESS; // Used for determining the outcome of the update process - - /** - * Gives the dev the result of the update process. Can be obtained by called getResult(). - */ - public enum UpdateResult { - /** - * The updater found an update, and has readied it to be loaded the next time the server restarts/reloads. - */ - SUCCESS, - /** - * The updater did not find an update, and nothing was downloaded. - */ - NO_UPDATE, - /** - * The server administrator has disabled the updating system - */ - DISABLED, - /** - * The updater found an update, but was unable to download it. - */ - FAIL_DOWNLOAD, - /** - * For some reason, the updater was unable to contact dev.bukkit.org to download the file. - */ - FAIL_DBO, - /** - * When running the version check, the file on DBO did not contain the a version in the format 'vVersion' such as 'v1.0'. - */ - FAIL_NOVERSION, - /** - * The id provided by the plugin running the updater was invalid and doesn't exist on DBO. - */ - FAIL_BADID, - /** - * The server administrator has improperly configured their API key in the configuration - */ - FAIL_APIKEY, - /** - * The updater found an update, but because of the UpdateType being set to NO_DOWNLOAD, it wasn't downloaded. - */ - UPDATE_AVAILABLE - } - - /** - * Initialize the updater - * - * @param plugin The plugin that is checking for an update. - * @param id The dev.bukkit.org id of the project - * @param file The file that the plugin is running from, get this by doing this.getFile() from within your main class. - */ - public Updater(Plugin plugin, int id, File file) { - this.plugin = plugin; - this.file = file; - this.id = id; - this.updateFolder = plugin.getServer().getUpdateFolder(); - - try { - this.url = new URL(Updater.HOST + Updater.QUERY + id); - } - catch (final MalformedURLException e) { - plugin.getLogger().severe("The project ID provided for updating, " + id + " is invalid."); - this.result = UpdateResult.FAIL_BADID; - e.printStackTrace(); - } - } - - /** - * Save an update from dev.bukkit.org into the server's update folder. - */ - private void saveFile(File folder, String file, String u) { - if (!folder.exists()) { - folder.mkdir(); - } - BufferedInputStream in = null; - FileOutputStream fout = null; - try { - // Download the file - final URL url = new URL(u); - final int fileLength = url.openConnection().getContentLength(); - in = new BufferedInputStream(url.openStream()); - fout = new FileOutputStream(folder.getAbsolutePath() + "/" + file); - - final byte[] data = new byte[Updater.BYTE_SIZE]; - int count; - if (this.announce) { - this.plugin.getLogger().info("About to download a new update: " + this.versionName); - } - long downloaded = 0; - while ((count = in.read(data, 0, Updater.BYTE_SIZE)) != -1) { - downloaded += count; - fout.write(data, 0, count); - final int percent = (int) ((downloaded * 100) / fileLength); - if (this.announce && ((percent % 10) == 0)) { - this.plugin.getLogger().info("Downloading update: " + percent + "% of " + fileLength + " bytes."); - } - } - // Just a quick check to make sure we didn't leave any files from last time... - for (final File xFile : new File(this.plugin.getDataFolder().getParent(), this.updateFolder).listFiles()) { - if (xFile.getName().endsWith(".zip")) { - xFile.delete(); - } - } - // Check to see if it's a zip file, if it is, unzip it. - final File dFile = new File(folder.getAbsolutePath() + "/" + file); - if (dFile.getName().endsWith(".zip")) { - // Unzip - this.unzip(dFile.getCanonicalPath()); - } - if (this.announce) { - this.plugin.getLogger().info("Finished updating."); - } - } - catch (final Exception ex) { - this.plugin.getLogger().warning("The auto-updater tried to download a new update, but was unsuccessful."); - this.result = Updater.UpdateResult.FAIL_DOWNLOAD; - } - finally { - try { - if (in != null) { - in.close(); - } - if (fout != null) { - fout.close(); - } - } - catch (final Exception ex) {} - } - } - - /** - * Part of Zip-File-Extractor, modified by Gravity for use with Bukkit - */ - private void unzip(String file) { - try { - final File fSourceZip = new File(file); - final String zipPath = file.substring(0, file.length() - 4); - ZipFile zipFile = new ZipFile(fSourceZip); - Enumeration e = zipFile.entries(); - while (e.hasMoreElements()) { - ZipEntry entry = e.nextElement(); - File destinationFilePath = new File(zipPath, entry.getName()); - destinationFilePath.getParentFile().mkdirs(); - if (entry.isDirectory()) { - continue; - } - else { - final BufferedInputStream bis = new BufferedInputStream(zipFile.getInputStream(entry)); - int b; - final byte buffer[] = new byte[Updater.BYTE_SIZE]; - final FileOutputStream fos = new FileOutputStream(destinationFilePath); - final BufferedOutputStream bos = new BufferedOutputStream(fos, Updater.BYTE_SIZE); - while ((b = bis.read(buffer, 0, Updater.BYTE_SIZE)) != -1) { - bos.write(buffer, 0, b); - } - bos.flush(); - bos.close(); - bis.close(); - final String name = destinationFilePath.getName(); - if (name.endsWith(".jar") && this.pluginFile(name)) { - destinationFilePath.renameTo(new File(this.plugin.getDataFolder().getParent(), this.updateFolder + "/" + name)); - } - } - entry = null; - destinationFilePath = null; - } - e = null; - zipFile.close(); - zipFile = null; - - // Move any plugin data folders that were included to the right place, Bukkit won't do this for us. - for (final File dFile : new File(zipPath).listFiles()) { - if (dFile.isDirectory()) { - if (this.pluginFile(dFile.getName())) { - final File oFile = new File(this.plugin.getDataFolder().getParent(), dFile.getName()); // Get current dir - final File[] contents = oFile.listFiles(); // List of existing files in the current dir - for (final File cFile : dFile.listFiles()) // Loop through all the files in the new dir - { - boolean found = false; - for (final File xFile : contents) // Loop through contents to see if it exists - { - if (xFile.getName().equals(cFile.getName())) { - found = true; - break; - } - } - if (!found) { - // Move the new file into the current dir - cFile.renameTo(new File(oFile.getCanonicalFile() + "/" + cFile.getName())); - } - else { - // This file already exists, so we don't need it anymore. - cFile.delete(); - } - } - } - } - dFile.delete(); - } - new File(zipPath).delete(); - fSourceZip.delete(); - } - catch (final IOException ex) { - this.plugin.getLogger().warning("The auto-updater tried to unzip a new update file, but was unsuccessful."); - this.result = Updater.UpdateResult.FAIL_DOWNLOAD; - ex.printStackTrace(); - } - new File(file).delete(); - } - - /** - * Check if the name of a jar is one of the plugins currently installed, used for extracting the correct files out of a zip. - */ - private boolean pluginFile(String name) { - for (final File file : new File("plugins").listFiles()) { - if (file.getName().equals(name)) { - return true; - } - } - return false; - } - - /** - * Check to see if the program should continue by evaluation whether the plugin is already updated, or shouldn't be updated - */ - private boolean versionCheck(String title) { - final String version = this.plugin.getDescription().getVersion(); - if (title.split(" ").length == 2) { - final String remoteVersion = title.split(" ")[1].split(" ")[0]; // Get the newest file's version number - - if (this.hasTag(version) || version.equalsIgnoreCase(remoteVersion) || !isNewer(version, remoteVersion)) { - // We already have the latest version, or this build is tagged for no-update - this.result = Updater.UpdateResult.NO_UPDATE; - return false; - } - } - else { - this.plugin.getLogger().warning("File versions should follow the format 'PluginName VERSION'"); - this.result = Updater.UpdateResult.FAIL_NOVERSION; - return false; - } - return true; - } - - /** - * Evaluate whether the version number is marked showing that it should not be updated by this program - */ - private boolean hasTag(String version) { - for (final String string : Updater.NO_UPDATE_TAG) { - if (version.contains(string)) { - return true; - } - } - return false; - } - - private boolean read() { - try { - final URLConnection conn = this.url.openConnection(); - conn.setConnectTimeout(5000); - - if (this.apiKey != null) { - conn.addRequestProperty("X-API-Key", this.apiKey); - } - conn.addRequestProperty("User-Agent", "Updater"); - - conn.setDoOutput(true); - - final BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); - final String response = reader.readLine(); - - final JSONArray array = (JSONArray) JSONValue.parse(response); - - if (array.size() == 0) { - this.plugin.getLogger().warning("The updater could not find any files for the project id " + this.id); - this.result = UpdateResult.FAIL_BADID; - return false; - } - - this.versionName = (String) ((JSONObject) array.get(array.size() - 1)).get(Updater.TITLE_VALUE); - this.versionLink = (String) ((JSONObject) array.get(array.size() - 1)).get(Updater.LINK_VALUE); - this.versionType = (String) ((JSONObject) array.get(array.size() - 1)).get(Updater.TYPE_VALUE); - this.versionGameVersion = (String) ((JSONObject) array.get(array.size() - 1)).get(Updater.VERSION_VALUE); - - return true; - } - catch (final IOException e) { - if (e.getMessage().contains("HTTP response code: 403")) { - this.plugin.getLogger().warning("dev.bukkit.org rejected the API key provided in plugins/Updater/config.yml"); - this.plugin.getLogger().warning("Please double-check your configuration to ensure it is correct."); - this.result = UpdateResult.FAIL_APIKEY; - } - else { - this.plugin.getLogger().warning("The updater could not contact curse for updating."); - this.result = UpdateResult.FAIL_DBO; - } - e.printStackTrace(); - return false; - } - } - - private static boolean isNewer(String oldVers, String newVers) { - String s1 = normalisedVersion(oldVers); - String s2 = normalisedVersion(newVers); - int cmp = s1.compareTo(s2); - return cmp < 0; - } - - public static String normalisedVersion(String version) { - return normalisedVersion(version, ".", 3); - } - - public static String normalisedVersion(String version, String sep, int maxWidth) { - String[] split = Pattern.compile(sep, Pattern.LITERAL).split(version); - StringBuilder sb = new StringBuilder(); - for (String s : split) { - sb.append(String.format("%" + maxWidth + 's', s)); - } - return sb.toString(); - } - - public UpdateResult update() { - if (Updater.this.url != null) { - // Obtain the results of the project's file feed - if (Updater.this.read()) { - if (Updater.this.versionCheck(Updater.this.versionName)) { - if (Updater.this.versionLink != null) { - String name = Updater.this.file.getName(); - // If it's a zip file, it shouldn't be downloaded as the plugin's name - if (Updater.this.versionLink.endsWith(".zip")) { - final String[] split = Updater.this.versionLink.split("/"); - name = split[split.length - 1]; - } - Updater.this.saveFile(new File(Updater.this.plugin.getDataFolder().getParent(), Updater.this.updateFolder), name, Updater.this.versionLink); - } - } - } - } - return this.result; - } -} \ No newline at end of file -- 2.49.1 From 30b5acc3b467a9cda0d07431ec1f37882385aa6b Mon Sep 17 00:00:00 2001 From: lishid Date: Tue, 30 Dec 2014 22:31:54 -0500 Subject: [PATCH 006/253] Removed duplicate file --- src/main/java/plugin.yml | 38 ----------------------------------- src/main/resources/plugin.yml | 2 +- 2 files changed, 1 insertion(+), 39 deletions(-) delete mode 100644 src/main/java/plugin.yml diff --git a/src/main/java/plugin.yml b/src/main/java/plugin.yml deleted file mode 100644 index 17f97a2..0000000 --- a/src/main/java/plugin.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: OpenInv -main: com.lishid.openinv.OpenInv -version: 2.2.5 -author: lishid -description: > - This plugin allows you to open a player's inventory as a chest and interact with it in real time. -commands: - openinv: - aliases: [oi, inv, open] - description: Open a player's inventory - usage: | - / - Open last person's inventory - / - Open a player's inventory - openender: - aliases: [oe] - description: Opens the enderchest of a player - usage: | - / - Opens a player's enderchest - searchinv: - aliases: [si] - description: Search and list players having a specific item - usage: | - / [MinAmount] - Item can be the Item ID or the CraftBukkit Item Name, MinAmount is the minimum amount to be considered. - toggleopeninv: - aliases: [toi, toggleoi, toggleinv] - description: Toggle item openinv function - usage: | - / [Check] - Checks whether item openinv is enabled - silentchest: - aliases: [sc, silent] - description: Toggle silent chest function, which hides the animation of a chest when opened or closed, and suppresses the sound. - usage: | - / [Check] - Checks whether silent chest is enabled - anychest: - aliases: [ac] - description: Toggle anychest function, which allows opening of blocked chests. - usage: | - / [Check] - Checks whether anychest is enabled diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index bf8edfc..17f97a2 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.2.4 +version: 2.2.5 author: lishid description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. -- 2.49.1 From 7851404d6907f8e65ef6368656f1cd81e1cc5c85 Mon Sep 17 00:00:00 2001 From: lishid Date: Wed, 31 Dec 2014 10:50:19 -0500 Subject: [PATCH 007/253] Fixed constructor not found issue. --- .../lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java | 2 +- src/main/resources/plugin.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java index 89e085b..5fbe359 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java @@ -34,7 +34,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private CraftPlayer owner; private boolean playerOnline = false; - public SpecialPlayerInventory(Player p, boolean online) { + public SpecialPlayerInventory(Player p, Boolean online) { super(((CraftPlayer) p).getHandle()); this.owner = (CraftPlayer) p; this.items = player.inventory.items; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 17f97a2..c6a2147 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.2.5 +version: 2.2.6 author: lishid description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. -- 2.49.1 From 7d56a04283d853e8713aa6c35b6b36c282e5bbde Mon Sep 17 00:00:00 2001 From: lishid Date: Wed, 31 Dec 2014 16:26:39 -0500 Subject: [PATCH 008/253] Derp... --- .../com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java | 2 +- src/main/resources/plugin.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java index a0bdc5b..fccee15 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java @@ -40,7 +40,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements ISpecial private CraftPlayer owner; private boolean playerOnline = false; - public SpecialEnderChest(Player p, boolean online) { + public SpecialEnderChest(Player p, Boolean online) { this(p, ((CraftPlayer) p).getHandle().getEnderChest(), online); } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index c6a2147..24d8479 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.2.6 +version: 2.2.7 author: lishid description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. -- 2.49.1 From bc709336e1190ae1cddc331186c456ecbca1bc8a Mon Sep 17 00:00:00 2001 From: lishid Date: Mon, 5 Jan 2015 21:15:35 -0500 Subject: [PATCH 009/253] Fixed silent chest issues --- .gitignore | 14 ++++++++------ .../openinv/commands/OpenInvPluginCommand.java | 12 +++++------- .../internal/v1_8_R1/PlayerDataManager.java | 12 ++---------- .../openinv/internal/v1_8_R1/SilentInventory.java | 7 ++++--- src/main/resources/plugin.yml | 2 +- 5 files changed, 20 insertions(+), 27 deletions(-) diff --git a/.gitignore b/.gitignore index 2a32706..37fa0ec 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,9 @@ -.classpath -.project -.idea +/.settings +/.gitignore +/.project +/.classpath +/.idea +/bin +/lib +/out *.iml -bin/ -lib/ -out/ \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java index 4457cde..678febc 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -79,14 +79,12 @@ public class OpenInvPluginCommand implements CommandExecutor { target = this.plugin.getServer().getPlayer(name); if (target == null) { - if (target == null) { - // Try loading the player's data - target = OpenInv.playerLoader.loadPlayer(name); + // Try loading the player's data + target = OpenInv.playerLoader.loadPlayer(name); - if (target == null) { - sender.sendMessage(ChatColor.RED + "Player " + name + " not found!"); - return true; - } + if (target == null) { + sender.sendMessage(ChatColor.RED + "Player " + name + " not found!"); + return true; } } diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java index ae3a6ad..90dca7f 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java @@ -16,8 +16,6 @@ package com.lishid.openinv.internal.v1_8_R1; -import java.io.File; - import java.util.UUID; import org.bukkit.Bukkit; @@ -41,12 +39,6 @@ public class PlayerDataManager implements IPlayerDataManager { 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; @@ -57,7 +49,7 @@ public class PlayerDataManager implements IPlayerDataManager { 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(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -81,7 +73,7 @@ public class PlayerDataManager implements IPlayerDataManager { OfflinePlayer[] offlinePlayers = Bukkit.getOfflinePlayers(); for (OfflinePlayer player : offlinePlayers) { String name = player.getName(); - + if (name == null){ continue; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentInventory.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentInventory.java index 6ce2f8a..df15bd8 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentInventory.java @@ -71,12 +71,12 @@ public class SilentInventory implements ITileInventory { @Override public void startOpen(EntityHuman entityHuman) { - inv.startOpen(entityHuman); + //Don't do anything } @Override public void closeContainer(EntityHuman entityHuman) { - inv.closeContainer(entityHuman); + //Don't do anything } @Override @@ -151,7 +151,8 @@ public class SilentInventory implements ITileInventory { @Override public Container createContainer(PlayerInventory playerInventory, EntityHuman entityHuman) { - return inv.createContainer(playerInventory, entityHuman); + //Don't let the chest itself create the container. + return new ContainerChest(playerInventory, this, entityHuman); } @Override diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 24d8479..88cfd0f 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.2.7 +version: 2.2.8 author: lishid description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. -- 2.49.1 From 6adcd491db309d36f2983471647cd62feb2e4f8b Mon Sep 17 00:00:00 2001 From: lishid Date: Mon, 5 Jan 2015 21:21:35 -0500 Subject: [PATCH 010/253] Added targets path to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 37fa0ec..02e7ddd 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ /.project /.classpath /.idea +/target /bin /lib /out -- 2.49.1 From d0494aa2e7b78c967b3623a5aace6d5e28ac5738 Mon Sep 17 00:00:00 2001 From: Hummer12007 Date: Tue, 13 Jan 2015 21:48:27 +0200 Subject: [PATCH 011/253] Fix trapped chests linking with ordinary chests, instead of trapped ones. --- .../com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java index 239bb01..46dfd81 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java @@ -90,7 +90,8 @@ public class AnySilentChest implements IAnySilentChest { return true; } - BlockChest chest = (BlockChest) Block.getByName("chest"); + BlockChest chest = (BlockChest) (((BlockChest) world.getType(position).getBlock()).b == 1 ? + Block.getByName("trapped_chest") : Block.getByName("chest")); TileEntity tileEntity = world.getTileEntity(position); if (!(tileEntity instanceof TileEntityChest)) { -- 2.49.1 From ec3426b8278ecc68814974350216804ab11ac4d9 Mon Sep 17 00:00:00 2001 From: Hummer12007 Date: Tue, 13 Jan 2015 21:55:03 +0200 Subject: [PATCH 012/253] Use the same method for getting BlockChest, when checking whether AnyChest is needed due to the side block as in d0494aa2 --- .../com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java index 46dfd81..30756a7 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java @@ -35,7 +35,8 @@ public class AnySilentChest implements IAnySilentChest { BlockPosition position = new BlockPosition(x, y, z); EntityPlayer player = ((CraftPlayer) p).getHandle(); World world = player.world; - BlockChest chest = (BlockChest) Block.getByName("chest"); + BlockChest chest = (BlockChest) (((BlockChest) world.getType(position).getBlock()).b == 1 ? + Block.getByName("trapped_chest") : Block.getByName("chest")); // If block on top if (topBlocking(world, position)) { -- 2.49.1 From 4058463f7fbcf5cd33630183d5a4029427d3850a Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 11 Mar 2015 16:37:13 -0400 Subject: [PATCH 013/253] 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 --- .../commands/OpenEnderPluginCommand.java | 9 ++- .../commands/OpenInvPluginCommand.java | 10 ++- .../{v1_8_R1 => v1_8_R2}/AnySilentChest.java | 27 ++++---- .../{v1_8_R1 => v1_8_R2}/InventoryAccess.java | 10 +-- .../PlayerDataManager.java | 13 ++-- .../SilentContainerChest.java | 6 +- .../SpecialEnderChest.java | 65 ++++++++++++------- .../SpecialPlayerInventory.java | 16 +++-- src/plugin.yml | 2 +- 9 files changed, 103 insertions(+), 55 deletions(-) rename src/com/lishid/openinv/internal/{v1_8_R1 => v1_8_R2}/AnySilentChest.java (86%) rename src/com/lishid/openinv/internal/{v1_8_R1 => v1_8_R2}/InventoryAccess.java (90%) rename src/com/lishid/openinv/internal/{v1_8_R1 => v1_8_R2}/PlayerDataManager.java (93%) rename src/com/lishid/openinv/internal/{v1_8_R1 => v1_8_R2}/SilentContainerChest.java (84%) rename src/com/lishid/openinv/internal/{v1_8_R1 => v1_8_R2}/SpecialEnderChest.java (68%) rename src/com/lishid/openinv/internal/{v1_8_R1 => v1_8_R2}/SpecialPlayerInventory.java (92%) diff --git a/src/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/src/com/lishid/openinv/commands/OpenEnderPluginCommand.java index 92a29c4..f2d9078 100644 --- a/src/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/src/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -17,6 +17,7 @@ package com.lishid.openinv.commands; import java.util.HashMap; +import java.util.List; import java.util.UUID; import org.bukkit.Bukkit; @@ -41,7 +42,8 @@ public class OpenEnderPluginCommand implements CommandExecutor { this.plugin = plugin; } - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (!(sender instanceof Player)) { sender.sendMessage(ChatColor.RED + "You can't use this from the console."); return true; @@ -82,6 +84,11 @@ public class OpenEnderPluginCommand implements CommandExecutor { new BukkitRunnable() { @Override public void run() { + List matches = Bukkit.matchPlayer(name); + if (!matches.isEmpty()) { + openInventory(player, matches.get(0).getUniqueId()); + return; + } final OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name); if (Bukkit.getPlayer(senderID) == null) { return; diff --git a/src/com/lishid/openinv/commands/OpenInvPluginCommand.java b/src/com/lishid/openinv/commands/OpenInvPluginCommand.java index 71e7527..6bb8815 100644 --- a/src/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/src/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -17,6 +17,7 @@ package com.lishid.openinv.commands; import java.util.HashMap; +import java.util.List; import java.util.UUID; import org.bukkit.Bukkit; @@ -41,7 +42,8 @@ public class OpenInvPluginCommand implements CommandExecutor { this.plugin = plugin; } - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (!(sender instanceof Player)) { sender.sendMessage(ChatColor.RED + "You can't use this from the console."); return true; @@ -76,11 +78,15 @@ public class OpenInvPluginCommand implements CommandExecutor { name = args[0]; } - sender.sendMessage(ChatColor.GREEN + "Starting inventory lookup."); final UUID senderID = player.getUniqueId(); new BukkitRunnable() { @Override public void run() { + List matches = Bukkit.matchPlayer(name); + if (!matches.isEmpty()) { + openInventory(player, matches.get(0).getUniqueId()); + return; + } final OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name); if (Bukkit.getPlayer(senderID) == null) { return; diff --git a/src/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java b/src/com/lishid/openinv/internal/v1_8_R2/AnySilentChest.java similarity index 86% rename from src/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java rename to src/com/lishid/openinv/internal/v1_8_R2/AnySilentChest.java index 9ec6815..a50a60e 100644 --- a/src/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java +++ b/src/com/lishid/openinv/internal/v1_8_R2/AnySilentChest.java @@ -14,7 +14,7 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_8_R1; +package com.lishid.openinv.internal.v1_8_R2; import org.bukkit.ChatColor; import org.bukkit.entity.Player; @@ -22,18 +22,22 @@ import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.IAnySilentChest; - - - - - //Volatile -import net.minecraft.server.v1_8_R1.*; +import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_8_R1.entity.*; +import net.minecraft.server.v1_8_R2.Block; +import net.minecraft.server.v1_8_R2.BlockPosition; +import net.minecraft.server.v1_8_R2.EntityPlayer; +import net.minecraft.server.v1_8_R2.IInventory; +import net.minecraft.server.v1_8_R2.ITileInventory; +import net.minecraft.server.v1_8_R2.InventoryLargeChest; +import net.minecraft.server.v1_8_R2.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_8_R2.TileEntityChest; +import net.minecraft.server.v1_8_R2.World; public class AnySilentChest implements IAnySilentChest { - public boolean IsAnyChestNeeded(Player p, int x, int y, int z) { + @Override + public boolean IsAnyChestNeeded(Player p, int x, int y, int z) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest EntityPlayer player = ((CraftPlayer) p).getHandle(); World world = player.world; @@ -56,10 +60,11 @@ public class AnySilentChest implements IAnySilentChest { return false; } - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { + @Override + public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { EntityPlayer player = ((CraftPlayer) p).getHandle(); World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(new BlockPosition(x, y, z)); + Object chest = world.getTileEntity(new BlockPosition(x, y, z)); if (chest == null) return true; diff --git a/src/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java b/src/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java similarity index 90% rename from src/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java rename to src/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java index 47238af..6edb813 100644 --- a/src/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java +++ b/src/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java @@ -14,7 +14,7 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_8_R1; +package com.lishid.openinv.internal.v1_8_R2; import java.lang.reflect.Field; @@ -25,12 +25,14 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; import com.lishid.openinv.internal.IInventoryAccess; +import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory; + //Volatile -import net.minecraft.server.v1_8_R1.*; -import org.bukkit.craftbukkit.v1_8_R1.inventory.*; +import net.minecraft.server.v1_8_R2.IInventory; public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { + @Override + public boolean check(Inventory inventory, HumanEntity player) { IInventory inv = grabInventory(inventory); if (inv instanceof SpecialPlayerInventory) { diff --git a/src/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java b/src/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java similarity index 93% rename from src/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java rename to src/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java index beb0fb9..d7ac3f9 100644 --- a/src/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java +++ b/src/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java @@ -14,7 +14,7 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_8_R1; +package com.lishid.openinv.internal.v1_8_R2; import java.io.File; import java.util.UUID; @@ -27,13 +27,16 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.IPlayerDataManager; import com.mojang.authlib.GameProfile; -//Volatile -import net.minecraft.server.v1_8_R1.*; +import org.bukkit.craftbukkit.v1_8_R2.CraftServer; -import org.bukkit.craftbukkit.v1_8_R1.*; +import net.minecraft.server.v1_8_R2.EntityPlayer; +//Volatile +import net.minecraft.server.v1_8_R2.MinecraftServer; +import net.minecraft.server.v1_8_R2.PlayerInteractManager; public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { + @Override + public Player loadPlayer(String name) { try { UUID uuid = matchUser(name); if (uuid == null) { diff --git a/src/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java b/src/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java similarity index 84% rename from src/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java rename to src/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java index 1cbf895..f2b0276 100644 --- a/src/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java +++ b/src/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java @@ -14,10 +14,12 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_8_R1; +package com.lishid.openinv.internal.v1_8_R2; //Volatile -import net.minecraft.server.v1_8_R1.*; +import net.minecraft.server.v1_8_R2.ContainerChest; +import net.minecraft.server.v1_8_R2.EntityHuman; +import net.minecraft.server.v1_8_R2.IInventory; public class SilentContainerChest extends ContainerChest { public IInventory inv; diff --git a/src/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java b/src/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java similarity index 68% rename from src/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java rename to src/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java index a580f15..6cda920 100644 --- a/src/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java +++ b/src/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java @@ -14,32 +14,38 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_8_R1; +package com.lishid.openinv.internal.v1_8_R2; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.craftbukkit.v1_8_R2.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory; + //Volatile -import net.minecraft.server.v1_8_R1.*; -import org.bukkit.craftbukkit.v1_8_R1.entity.*; -import org.bukkit.craftbukkit.v1_8_R1.inventory.*; +import net.minecraft.server.v1_8_R2.EntityHuman; +import net.minecraft.server.v1_8_R2.IInventory; +import net.minecraft.server.v1_8_R2.InventoryEnderChest; +import net.minecraft.server.v1_8_R2.InventorySubcontainer; +import net.minecraft.server.v1_8_R2.ItemStack; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { public List transaction = new ArrayList(); public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; + private final CraftPlayer owner; + private final InventoryEnderChest enderChest; private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); + private final CraftInventory inventory = new CraftInventory(this); public SpecialEnderChest(Player p, Boolean online) { super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().hasCustomName(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); @@ -50,18 +56,21 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento OpenInv.enderChests.put(owner.getName().toLowerCase(), this); } - public Inventory getBukkitInventory() { + @Override + public Inventory getBukkitInventory() { return inventory; } - public void InventoryRemovalCheck() { + @Override + public void InventoryRemovalCheck() { owner.saveData(); if (transaction.isEmpty() && !playerOnline) { OpenInv.enderChests.remove(owner.getName().toLowerCase()); } } - public void PlayerGoOnline(Player p) { + @Override + public void PlayerGoOnline(Player p) { if (!playerOnline) { try { InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); @@ -75,40 +84,49 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - public void PlayerGoOffline() { + @Override + public void PlayerGoOffline() { playerOnline = false; } - public ItemStack[] getContents() { + @Override + public ItemStack[] getContents() { return this.items; } - public void onOpen(CraftHumanEntity who) { + @Override + public void onOpen(CraftHumanEntity who) { transaction.add(who); } - public void onClose(CraftHumanEntity who) { + @Override + public void onClose(CraftHumanEntity who) { transaction.remove(who); this.InventoryRemovalCheck(); } - public List getViewers() { + @Override + public List getViewers() { return transaction; } - public InventoryHolder getOwner() { + @Override + public InventoryHolder getOwner() { return this.owner; } - public void setMaxStackSize(int size) { + @Override + public void setMaxStackSize(int size) { maxStack = size; } - public int getMaxStackSize() { + @Override + public int getMaxStackSize() { return maxStack; } - public boolean a(EntityHuman entityhuman) { + @Override + public boolean a(EntityHuman entityhuman) { return true; } @@ -120,7 +138,8 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } - public void update() { + @Override + public void update() { enderChest.update(); } } diff --git a/src/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java b/src/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java similarity index 92% rename from src/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java rename to src/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java index 42ae052..38fa2ca 100644 --- a/src/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java +++ b/src/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java @@ -14,7 +14,7 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_8_R1; +package com.lishid.openinv.internal.v1_8_R2; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; @@ -23,15 +23,19 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.ISpecialPlayerInventory; //Volatile -import net.minecraft.server.v1_8_R1.*; -import org.bukkit.craftbukkit.v1_8_R1.entity.*; -import org.bukkit.craftbukkit.v1_8_R1.inventory.*; +import org.bukkit.craftbukkit.v1_8_R2.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory; + +import net.minecraft.server.v1_8_R2.EntityHuman; +import net.minecraft.server.v1_8_R2.ItemStack; +import net.minecraft.server.v1_8_R2.PlayerInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { CraftPlayer owner; public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); + private final ItemStack[] extra = new ItemStack[5]; + private final CraftInventory inventory = new CraftInventory(this); public SpecialPlayerInventory(Player p, Boolean online) { super(((CraftPlayer) p).getHandle()); diff --git a/src/plugin.yml b/src/plugin.yml index c6a2147..24d8479 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.2.6 +version: 2.2.7 author: lishid description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. -- 2.49.1 From c7bab7d451cd2faf33b8b3fea2d21c2a2387173e Mon Sep 17 00:00:00 2001 From: Jikoo Date: Thu, 12 Mar 2015 16:42:00 -0400 Subject: [PATCH 014/253] Whoops, didn't make sure my autoformatter's settings matched the style. --- .../commands/OpenEnderPluginCommand.java | 2 +- .../commands/OpenInvPluginCommand.java | 2 +- .../internal/v1_8_R2/AnySilentChest.java | 4 +-- .../internal/v1_8_R2/InventoryAccess.java | 2 +- .../internal/v1_8_R2/PlayerDataManager.java | 4 +-- .../internal/v1_8_R2/SpecialEnderChest.java | 26 +++++++++---------- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/src/com/lishid/openinv/commands/OpenEnderPluginCommand.java index f2d9078..59624a9 100644 --- a/src/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/src/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -43,7 +43,7 @@ public class OpenEnderPluginCommand implements CommandExecutor { } @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)) { sender.sendMessage(ChatColor.RED + "You can't use this from the console."); return true; diff --git a/src/com/lishid/openinv/commands/OpenInvPluginCommand.java b/src/com/lishid/openinv/commands/OpenInvPluginCommand.java index 6bb8815..108e0dc 100644 --- a/src/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/src/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -43,7 +43,7 @@ public class OpenInvPluginCommand implements CommandExecutor { } @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)) { sender.sendMessage(ChatColor.RED + "You can't use this from the console."); return true; diff --git a/src/com/lishid/openinv/internal/v1_8_R2/AnySilentChest.java b/src/com/lishid/openinv/internal/v1_8_R2/AnySilentChest.java index a50a60e..e7dae90 100644 --- a/src/com/lishid/openinv/internal/v1_8_R2/AnySilentChest.java +++ b/src/com/lishid/openinv/internal/v1_8_R2/AnySilentChest.java @@ -37,7 +37,7 @@ import net.minecraft.server.v1_8_R2.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; @@ -61,7 +61,7 @@ public class AnySilentChest implements IAnySilentChest { } @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)); diff --git a/src/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java b/src/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java index 6edb813..f09d77a 100644 --- a/src/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java +++ b/src/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java @@ -32,7 +32,7 @@ import net.minecraft.server.v1_8_R2.IInventory; public class InventoryAccess implements IInventoryAccess { @Override - public boolean check(Inventory inventory, HumanEntity player) { + public boolean check(Inventory inventory, HumanEntity player) { IInventory inv = grabInventory(inventory); if (inv instanceof SpecialPlayerInventory) { diff --git a/src/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java b/src/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java index d7ac3f9..ebeece4 100644 --- a/src/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java +++ b/src/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java @@ -36,7 +36,7 @@ import net.minecraft.server.v1_8_R2.PlayerInteractManager; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(String name) { + public Player loadPlayer(String name) { try { UUID uuid = matchUser(name); if (uuid == null) { @@ -110,7 +110,7 @@ public class PlayerDataManager implements IPlayerDataManager { */ @Override public Player loadPlayer(UUID uuid) { - OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); + OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); if (player == null || !player.hasPlayedBefore()) { return null; } diff --git a/src/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java b/src/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java index 6cda920..bcf6895 100644 --- a/src/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java +++ b/src/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java @@ -57,12 +57,12 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public Inventory getBukkitInventory() { + public Inventory getBukkitInventory() { return inventory; } @Override - public void InventoryRemovalCheck() { + public void InventoryRemovalCheck() { owner.saveData(); if (transaction.isEmpty() && !playerOnline) { OpenInv.enderChests.remove(owner.getName().toLowerCase()); @@ -70,7 +70,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public void PlayerGoOnline(Player p) { + public void PlayerGoOnline(Player p) { if (!playerOnline) { try { InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); @@ -85,48 +85,48 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public void PlayerGoOffline() { + public void PlayerGoOffline() { playerOnline = false; } @Override - public ItemStack[] getContents() { + public ItemStack[] getContents() { return this.items; } @Override - public void onOpen(CraftHumanEntity who) { + public void onOpen(CraftHumanEntity who) { transaction.add(who); } @Override - public void onClose(CraftHumanEntity who) { + public void onClose(CraftHumanEntity who) { transaction.remove(who); this.InventoryRemovalCheck(); } @Override - public List getViewers() { + public List getViewers() { return transaction; } @Override - public InventoryHolder getOwner() { + public InventoryHolder getOwner() { return this.owner; } @Override - public void setMaxStackSize(int size) { + public void setMaxStackSize(int size) { maxStack = size; } @Override - public int getMaxStackSize() { + public int getMaxStackSize() { return maxStack; } @Override - public boolean a(EntityHuman entityhuman) { + public boolean a(EntityHuman entityhuman) { return true; } @@ -139,7 +139,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public void update() { + public void update() { enderChest.update(); } } -- 2.49.1 From a9d983ddc6444191c9945df4f08f517bdfd4c813 Mon Sep 17 00:00:00 2001 From: Hummer12007 Date: Sat, 14 Mar 2015 23:12:48 +0200 Subject: [PATCH 015/253] Added CraftBukkit v1_8_R2 support --- .../internal/v1_8_R2/AnySilentChest.java | 143 ++++++++++ .../internal/v1_8_R2/EnumDirectionList.java | 24 ++ .../internal/v1_8_R2/InventoryAccess.java | 73 +++++ .../internal/v1_8_R2/PlayerDataManager.java | 97 +++++++ .../v1_8_R2/SilentContainerChest.java | 37 +++ .../internal/v1_8_R2/SilentInventory.java | 162 +++++++++++ .../internal/v1_8_R2/SpecialEnderChest.java | 96 +++++++ .../v1_8_R2/SpecialPlayerInventory.java | 253 ++++++++++++++++++ 8 files changed, 885 insertions(+) create mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentChest.java create mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R2/EnumDirectionList.java create mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java create mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java create mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java create mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentInventory.java create mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java create mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentChest.java new file mode 100644 index 0000000..6eab905 --- /dev/null +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentChest.java @@ -0,0 +1,143 @@ +/* + * 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_8_R2; + +import java.util.Iterator; + +import org.bukkit.entity.Player; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.internal.IAnySilentChest; + + +//Volatile +import net.minecraft.server.v1_8_R2.*; + +import org.bukkit.craftbukkit.v1_8_R2.entity.*; + +public class AnySilentChest implements IAnySilentChest { + public boolean IsAnyChestNeeded(Player p, int x, int y, int z) { + // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest + BlockPosition position = new BlockPosition(x, y, z); + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + BlockChest chest = (BlockChest) (((BlockChest) world.getType(position).getBlock()).b == 1 ? + Block.getByName("trapped_chest") : Block.getByName("chest")); + + // If block on top + if (topBlocking(world, position)) { + return true; + } + + // If block next to chest is chest and has a block on top + for (EnumDirection direction : EnumDirectionList.HORIZONTAL) { + BlockPosition sidePosition = position.shift(direction); + Block var8 = world.getType(sidePosition).getBlock(); + if (var8 == chest) { + if (this.topBlocking(world, sidePosition)) { + return true; + } + } + } + + return false; + } + private boolean topBlocking(World world, BlockPosition position) { + return this.blockOnTop(world, position) || this.ocelotOnTop(world, position); + } + + private boolean blockOnTop(World world, BlockPosition position) { + return world.getType(position.up()).getBlock().isOccluding(); + } + + private boolean ocelotOnTop(World world, BlockPosition position) { + Iterator var3 = world.a(EntityOcelot.class, + new AxisAlignedBB((double) position.getX(), (double) (position.getY() + 1), + (double) position.getZ(), (double) (position.getX() + 1), + (double) (position.getY() + 2), (double) (position.getZ() + 1))).iterator(); + + EntityOcelot var5; + do { + if (!var3.hasNext()) { + return false; + } + + Entity var4 = (Entity) var3.next(); + var5 = (EntityOcelot) var4; + } while (!var5.isSitting()); + + return true; + } + + public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { + BlockPosition position = new BlockPosition(x, y, z); + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + if (world.isClientSide) { + return true; + } + + BlockChest chest = (BlockChest) (((BlockChest) world.getType(position).getBlock()).b == 1 ? + Block.getByName("trapped_chest") : Block.getByName("chest")); + + TileEntity tileEntity = world.getTileEntity(position); + if (!(tileEntity instanceof TileEntityChest)) { + return true; + } + + ITileInventory tileInventory = (ITileInventory) tileEntity; + if (!anychest && this.topBlocking(world, position)) { + return true; + } + + for (EnumDirection direction : EnumDirectionList.HORIZONTAL) { + BlockPosition side = position.shift(direction); + Block block = world.getType(side).getBlock(); + if (block == chest) { + if (!anychest && this.topBlocking(world, side)) { + return true; + } + + TileEntity sideTileEntity = world.getTileEntity(side); + if (sideTileEntity instanceof TileEntityChest) { + if (direction != EnumDirection.WEST && direction != EnumDirection.NORTH) { + tileInventory = new InventoryLargeChest("container.chestDouble", tileInventory, (TileEntityChest) sideTileEntity); + } else { + tileInventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) sideTileEntity, tileInventory); + } + } + } + } + + boolean returnValue = true; + if (silentchest) { + tileInventory = new SilentInventory(tileInventory); + if (OpenInv.NotifySilentChest()) { + p.sendMessage("You are opening a chest silently."); + } + returnValue = false; + } + + player.openContainer(tileInventory); + + if (anychest && OpenInv.NotifyAnyChest()) { + p.sendMessage("You are opening a blocked chest."); + } + + return returnValue; + } +} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R2/EnumDirectionList.java b/src/main/java/com/lishid/openinv/internal/v1_8_R2/EnumDirectionList.java new file mode 100644 index 0000000..eae6abf --- /dev/null +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R2/EnumDirectionList.java @@ -0,0 +1,24 @@ +package com.lishid.openinv.internal.v1_8_R2; + +import com.google.common.collect.Iterators; +import net.minecraft.server.v1_8_R2.EnumDirection; +import net.minecraft.server.v1_8_R2.EnumDirection.EnumDirectionLimit; + +import java.util.Iterator; + +public enum EnumDirectionList implements Iterable { + HORIZONTAL(EnumDirectionLimit.HORIZONTAL), + VERTICAL(EnumDirectionLimit.VERTICAL); + + private EnumDirectionLimit list; + + private EnumDirectionList(EnumDirectionLimit list) { + this.list = list; + } + + @Override + public Iterator iterator() { + return Iterators.forArray(list.a()); + } + +} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java new file mode 100644 index 0000000..0381d3b --- /dev/null +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java @@ -0,0 +1,73 @@ +/* + * 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_8_R2; + +import java.lang.reflect.Field; + + +import org.bukkit.entity.HumanEntity; +import org.bukkit.inventory.Inventory; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.Permissions; +import com.lishid.openinv.internal.IInventoryAccess; + +//Volatile +import net.minecraft.server.v1_8_R2.*; +import org.bukkit.craftbukkit.v1_8_R2.inventory.*; + +public class InventoryAccess implements IInventoryAccess { + public boolean check(Inventory inventory, HumanEntity player) { + IInventory inv = grabInventory(inventory); + + if (inv instanceof SpecialPlayerInventory) { + if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { + return false; + } + } + + else if (inv instanceof SpecialEnderChest) { + if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { + return false; + } + } + + return true; + } + + private IInventory grabInventory(Inventory inventory) { + if(inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory(); + } + + //Use reflection to find the inventory + Class clazz = inventory.getClass(); + IInventory result = null; + for(Field f : clazz.getDeclaredFields()) { + f.setAccessible(true); + if(IInventory.class.isAssignableFrom(f.getDeclaringClass())) { + try { + result = (IInventory) f.get(inventory); + } + catch (Exception e) { + OpenInv.log(e); + } + } + } + return result; + } +} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java new file mode 100644 index 0000000..c03ed13 --- /dev/null +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java @@ -0,0 +1,97 @@ +/* + * 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_8_R2; + +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 net.minecraft.server.v1_8_R2.*; + +import org.bukkit.craftbukkit.v1_8_R2.*; + +public class PlayerDataManager implements IPlayerDataManager { + public Player loadPlayer(String name) { + try { + UUID uuid = matchUser(name); + if (uuid == null) { + 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.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; + } +} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java new file mode 100644 index 0000000..aaed14c --- /dev/null +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java @@ -0,0 +1,37 @@ +/* + * 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_8_R2; + +//Volatile +import net.minecraft.server.v1_8_R2.*; + + +public class SilentContainerChest extends ContainerChest { + public IInventory inv; + + public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman human) { + super(i1, i2, human); + inv = i2; + // close signal + inv.closeContainer(human); + } + + @Override + public void b(EntityHuman paramEntityHuman) { + // Don't send close signal twice, might screw up + } +} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentInventory.java b/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentInventory.java new file mode 100644 index 0000000..fb6c881 --- /dev/null +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentInventory.java @@ -0,0 +1,162 @@ +package com.lishid.openinv.internal.v1_8_R2; + +import net.minecraft.server.v1_8_R2.*; +import org.bukkit.craftbukkit.v1_8_R2.entity.CraftHumanEntity; +import org.bukkit.entity.HumanEntity; +import org.bukkit.inventory.InventoryHolder; + +import java.util.List; + +public class SilentInventory implements ITileInventory { + public ITileInventory inv; + + public SilentInventory(ITileInventory inv) { + this.inv = inv; + } + + @Override + public boolean r_() { + return inv.r_(); + } + + @Override + public void a(ChestLock chestLock) { + inv.a(chestLock); + } + + @Override + public ChestLock i() { + return inv.i(); + } + + @Override + public int getSize() { + return inv.getSize(); + } + + @Override + public ItemStack getItem(int i) { + return inv.getItem(i); + } + + @Override + public ItemStack splitStack(int i, int i1) { + return inv.splitStack(i, i1); + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + return inv.splitWithoutUpdate(i); + } + + @Override + public void setItem(int i, ItemStack itemStack) { + inv.setItem(i, itemStack); + } + + @Override + public int getMaxStackSize() { + return inv.getMaxStackSize(); + } + + @Override + public void update() { + inv.update(); + } + + @Override + public boolean a(EntityHuman entityHuman) { + return inv.a(entityHuman); + } + + @Override + public void startOpen(EntityHuman entityHuman) { + //Don't do anything + } + + @Override + public void closeContainer(EntityHuman entityHuman) { + //Don't do anything + } + + @Override + public boolean b(int i, ItemStack itemStack) { + return inv.b(i, itemStack); + } + + @Override + public int getProperty(int i) { + return inv.getProperty(i); + } + + @Override + public void b(int i, int i1) { + inv.b(i, i1); + } + + @Override + public int g() { + return inv.g(); + } + + @Override + public void l() { + inv.l(); + } + + @Override + public ItemStack[] getContents() { + return inv.getContents(); + } + + @Override + public void onOpen(CraftHumanEntity craftHumanEntity) { + inv.onOpen(craftHumanEntity); + } + + @Override + public void onClose(CraftHumanEntity craftHumanEntity) { + inv.onClose(craftHumanEntity); + } + + @Override + public List getViewers() { + return inv.getViewers(); + } + + @Override + public InventoryHolder getOwner() { + return inv.getOwner(); + } + + @Override + public void setMaxStackSize(int i) { + inv.setMaxStackSize(i); + } + + @Override + public String getName() { + return inv.getName(); + } + + @Override + public boolean hasCustomName() { + return inv.hasCustomName(); + } + + @Override + public IChatBaseComponent getScoreboardDisplayName() { + return inv.getScoreboardDisplayName(); + } + + @Override + public Container createContainer(PlayerInventory playerInventory, EntityHuman entityHuman) { + //Don't let the chest itself create the container. + return new ContainerChest(playerInventory, this, entityHuman); + } + + @Override + public String getContainerName() { + return inv.getContainerName(); + } +} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java new file mode 100644 index 0000000..3e63216 --- /dev/null +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java @@ -0,0 +1,96 @@ +/* + * 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_8_R2; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +//Volatile +import net.minecraft.server.v1_8_R2.*; +import org.bukkit.craftbukkit.v1_8_R2.entity.*; +import org.bukkit.craftbukkit.v1_8_R2.inventory.*; + +public class SpecialEnderChest extends InventorySubcontainer implements ISpecialEnderChest { + private CraftInventory inventory = new CraftInventory(this); + private InventoryEnderChest enderChest; + private CraftPlayer owner; + private boolean playerOnline = false; + + public SpecialEnderChest(Player p, Boolean online) { + this(p, ((CraftPlayer) p).getHandle().getEnderChest(), online); + } + + public SpecialEnderChest(Player p, InventoryEnderChest enderchest, boolean online) { + super(enderchest.getName(), enderchest.hasCustomName(), enderchest.getSize()); + this.owner = (CraftPlayer) p; + this.enderChest = enderchest; + this.items = enderChest.getContents(); + this.playerOnline = online; + OpenInv.enderChests.put(owner.getName().toLowerCase(), this); + } + + private void saveOnExit() { + if (transaction.isEmpty() && !playerOnline) { + owner.saveData(); + OpenInv.enderChests.remove(owner.getName().toLowerCase()); + } + } + + private void linkInventory(InventoryEnderChest inventory) { + inventory.items = this.items; + } + + public Inventory getBukkitInventory() { + return inventory; + } + + public void playerOnline(Player p) { + if (!playerOnline) { + linkInventory(((CraftPlayer) p).getHandle().getEnderChest()); + p.saveData(); + playerOnline = true; + } + } + + public void playerOffline() { + playerOnline = false; + owner.loadData(); + linkInventory(owner.getHandle().getEnderChest()); + saveOnExit(); + } + + @Override + public void onClose(CraftHumanEntity who) { + super.onClose(who); + saveOnExit(); + } + + @Override + public InventoryHolder getOwner() { + return this.owner; + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } +} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java new file mode 100644 index 0000000..468c818 --- /dev/null +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java @@ -0,0 +1,253 @@ +/* + * 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_8_R2; + +import org.bukkit.entity.Player; + +import org.bukkit.inventory.Inventory; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +//Volatile +import net.minecraft.server.v1_8_R2.*; +import org.bukkit.craftbukkit.v1_8_R2.entity.*; +import org.bukkit.craftbukkit.v1_8_R2.inventory.*; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + private CraftInventory inventory = new CraftInventory(this); + private ItemStack[] extra = new ItemStack[5]; + private CraftPlayer owner; + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player p, Boolean online) { + super(((CraftPlayer) p).getHandle()); + this.owner = (CraftPlayer) p; + this.items = player.inventory.items; + this.armor = player.inventory.armor; + this.playerOnline = online; + OpenInv.inventories.put(owner.getName().toLowerCase(), this); + } + + public Inventory getBukkitInventory() { + return inventory; + } + + private void saveOnExit() { + if (transaction.isEmpty() && !playerOnline) { + owner.saveData(); + OpenInv.inventories.remove(owner.getName().toLowerCase()); + } + } + + private void linkInventory(PlayerInventory inventory) { + inventory.items = this.items; + inventory.armor = this.armor; + } + + public void playerOnline(Player player) { + if (!playerOnline) { + CraftPlayer p = (CraftPlayer) player; + linkInventory(p.getHandle().inventory); + p.saveData(); + playerOnline = true; + } + } + + public void playerOffline() { + playerOnline = false; + owner.loadData(); + linkInventory(owner.getHandle().inventory); + saveOnExit(); + } + + @Override + public void onClose(CraftHumanEntity who) { + super.onClose(who); + this.saveOnExit(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] C = new ItemStack[getSize()]; + System.arraycopy(items, 0, C, 0, items.length); + System.arraycopy(items, 0, C, items.length, armor.length); + return C; + } + + @Override + public int getSize() { + return super.getSize() + 5; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } else { + itemstack = is[i].a(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } else { + return null; + } + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } else { + return null; + } + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + // Effects + if (is == this.extra) { + owner.getHandle().drop(itemstack, true); + itemstack = null; + } + + is[i] = itemstack; + + owner.getHandle().defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) + return i - 27; + else + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) + return 3; + if (i == 1) + return 2; + if (i == 2) + return 1; + if (i == 3) + return 0; + else + return i; + } + + @Override + public boolean hasCustomName() { + return true; + } + + @Override + public String getName() { + return player.getName(); + } + + @Override + public boolean a(EntityHuman entityhuman) { + return true; + } + + @Override + public void update() { + super.update(); + player.inventory.update(); + } +} \ No newline at end of file -- 2.49.1 From c4fb5489fa7a7a2c8ce3f5579b63caca66656465 Mon Sep 17 00:00:00 2001 From: Max Lee Date: Fri, 3 Apr 2015 00:29:51 +0200 Subject: [PATCH 016/253] Try to get the offline player directly --- .../lishid/openinv/internal/v1_7_R3/PlayerDataManager.java | 4 ++++ .../lishid/openinv/internal/v1_7_R4/PlayerDataManager.java | 4 ++++ .../lishid/openinv/internal/v1_8_R1/PlayerDataManager.java | 4 ++++ .../lishid/openinv/internal/v1_8_R2/PlayerDataManager.java | 4 ++++ 4 files changed, 16 insertions(+) diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java index 2976b83..6326403 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java +++ b/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java @@ -72,6 +72,10 @@ public class PlayerDataManager implements IPlayerDataManager { } private static UUID matchUser(String search) { + OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(search); + if (offlinePlayer != null && offlinePlayer.hasPlayedBefore()) { + return offlinePlayer.getUniqueId(); + } UUID found = null; String lowerSearch = search.toLowerCase(); diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java index 8cadf56..9273d63 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java +++ b/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java @@ -72,6 +72,10 @@ public class PlayerDataManager implements IPlayerDataManager { } private static UUID matchUser(String search) { + OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(search); + if (offlinePlayer != null && offlinePlayer.hasPlayedBefore()) { + return offlinePlayer.getUniqueId(); + } UUID found = null; String lowerSearch = search.toLowerCase(); diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java index 90dca7f..6716cf1 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java @@ -65,6 +65,10 @@ public class PlayerDataManager implements IPlayerDataManager { } private static UUID matchUser(String search) { + OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(search); + if (offlinePlayer != null && offlinePlayer.hasPlayedBefore()) { + return offlinePlayer.getUniqueId(); + } UUID found = null; String lowerSearch = search.toLowerCase(); diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java index c03ed13..6e0eb5a 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java @@ -65,6 +65,10 @@ public class PlayerDataManager implements IPlayerDataManager { } private static UUID matchUser(String search) { + OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(search); + if (offlinePlayer != null && offlinePlayer.hasPlayedBefore()) { + return offlinePlayer.getUniqueId(); + } UUID found = null; String lowerSearch = search.toLowerCase(); -- 2.49.1 From ad0e55cf4c564d5ce00eb8c5a88054e31bf2b36b Mon Sep 17 00:00:00 2001 From: Max Lee Date: Fri, 3 Apr 2015 00:44:09 +0200 Subject: [PATCH 017/253] Fix armor --- .../openinv/internal/craftbukkit/SpecialPlayerInventory.java | 2 +- .../lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java | 2 +- .../lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java | 2 +- .../lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java | 2 +- .../lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java | 2 +- .../lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java | 2 +- .../lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java | 2 +- .../lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java | 2 +- .../lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java | 2 +- .../lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java | 2 +- .../lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java | 2 +- .../lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java | 2 +- .../lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java | 2 +- .../lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java | 2 +- .../lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java index 9576c42..680c695 100644 --- a/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java @@ -81,7 +81,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public ItemStack[] getContents() { ItemStack[] C = new ItemStack[getSize()]; System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); + System.arraycopy(armor, 0, C, items.length, armor.length); return C; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java index 855c28c..e1029fa 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java @@ -81,7 +81,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public ItemStack[] getContents() { ItemStack[] C = new ItemStack[getSize()]; System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); + System.arraycopy(armor, 0, C, items.length, armor.length); return C; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java index 6cba634..631e732 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java @@ -81,7 +81,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public ItemStack[] getContents() { ItemStack[] C = new ItemStack[getSize()]; System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); + System.arraycopy(armor, 0, C, items.length, armor.length); return C; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java index c2501cc..d39c6a7 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java @@ -81,7 +81,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public ItemStack[] getContents() { ItemStack[] C = new ItemStack[getSize()]; System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); + System.arraycopy(armor, 0, C, items.length, armor.length); return C; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java index 3993794..da08414 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java @@ -81,7 +81,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public ItemStack[] getContents() { ItemStack[] C = new ItemStack[getSize()]; System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); + System.arraycopy(armor, 0, C, items.length, armor.length); return C; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java index b579dd6..5f5aacd 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java @@ -81,7 +81,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public ItemStack[] getContents() { ItemStack[] C = new ItemStack[getSize()]; System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); + System.arraycopy(armor, 0, C, items.length, armor.length); return C; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java index e721dcb..8abfcfb 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java @@ -81,7 +81,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public ItemStack[] getContents() { ItemStack[] C = new ItemStack[getSize()]; System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); + System.arraycopy(armor, 0, C, items.length, armor.length); return C; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java index c9c2b94..6a3ee41 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java @@ -81,7 +81,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public ItemStack[] getContents() { ItemStack[] C = new ItemStack[getSize()]; System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); + System.arraycopy(armor, 0, C, items.length, armor.length); return C; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java index 26314c3..4d10281 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java @@ -81,7 +81,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public ItemStack[] getContents() { ItemStack[] C = new ItemStack[getSize()]; System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); + System.arraycopy(armor, 0, C, items.length, armor.length); return C; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java index bf93550..efaaa90 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java @@ -81,7 +81,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public ItemStack[] getContents() { ItemStack[] C = new ItemStack[getSize()]; System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); + System.arraycopy(armor, 0, C, items.length, armor.length); return C; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java index d6f2c75..436299a 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java @@ -81,7 +81,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public ItemStack[] getContents() { ItemStack[] C = new ItemStack[getSize()]; System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); + System.arraycopy(armor, 0, C, items.length, armor.length); return C; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java index 2bf975e..348f8c7 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java @@ -81,7 +81,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public ItemStack[] getContents() { ItemStack[] C = new ItemStack[getSize()]; System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); + System.arraycopy(armor, 0, C, items.length, armor.length); return C; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java index 27ba2b0..d480b59 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java @@ -81,7 +81,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public ItemStack[] getContents() { ItemStack[] C = new ItemStack[getSize()]; System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); + System.arraycopy(armor, 0, C, items.length, armor.length); return C; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java index 5fbe359..79a045a 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java @@ -85,7 +85,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public ItemStack[] getContents() { ItemStack[] C = new ItemStack[getSize()]; System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); + System.arraycopy(armor, 0, C, items.length, armor.length); return C; } diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java index 468c818..dea68ae 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java @@ -85,7 +85,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public ItemStack[] getContents() { ItemStack[] C = new ItemStack[getSize()]; System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(items, 0, C, items.length, armor.length); + System.arraycopy(armor, 0, C, items.length, armor.length); return C; } -- 2.49.1 From 6c1fb14cdabe1320aa4c98d4135747cca2ef2699 Mon Sep 17 00:00:00 2001 From: Max Lee Date: Fri, 3 Apr 2015 01:30:42 +0200 Subject: [PATCH 018/253] Make inventory lookup of offline players asynchron --- .../commands/OpenEnderPluginCommand.java | 63 +++++++++++------ .../commands/OpenInvPluginCommand.java | 69 ++++++++++++------- 2 files changed, 86 insertions(+), 46 deletions(-) diff --git a/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java index 364c3dd..c7cfdaf 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -18,6 +18,7 @@ package com.lishid.openinv.commands; import java.util.HashMap; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -54,7 +55,6 @@ public class OpenEnderPluginCommand implements CommandExecutor { } Player player = (Player) sender; - boolean offline = false; // History management String history = openEnderHistory.get(player); @@ -64,10 +64,7 @@ public class OpenEnderPluginCommand implements CommandExecutor { openEnderHistory.put(player, history); } - // Target selecting - Player target; - - String name = ""; + final String name; // Read from history if target is not named if (args.length < 1) { @@ -83,36 +80,60 @@ public class OpenEnderPluginCommand implements CommandExecutor { name = args[0]; } - target = this.plugin.getServer().getPlayer(name); - + final String playername = player.getName(); + Player target = plugin.getServer().getPlayer(name); + // Targeted player was not found online, start asynchron lookup in files if (target == null) { - // Try loading the player's data - target = OpenInv.playerLoader.loadPlayer(name); - - if (target == null) { - sender.sendMessage(ChatColor.RED + "Player " + name + " not found!"); - return true; - } + sender.sendMessage(ChatColor.GREEN + "Starting inventory lookup."); + plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() { + @Override + public void run() { + // Try loading the player's data asynchronly + final Player target = OpenInv.playerLoader.loadPlayer(name); + // Back to synchron to send messages and display inventory + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + Player player = Bukkit.getPlayer(playername); + // If sender is no longer online after loading the target. Abort! + if (player == null) { + return; + } + openInventory(player, target); + } + }); + } + }); + } else { + openInventory(player, target); } - if (target != sender && !OpenInv.hasPermission(sender, Permissions.PERM_ENDERCHEST_ALL)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to access other player's enderchest"); - return true; + return true; + } + + private void openInventory(Player player, Player target) { + if (target == null) { + player.sendMessage(ChatColor.RED + "Player not found!"); + return; + } + + if (target != 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 - history = target.getName(); - openEnderHistory.put(player, history); + openEnderHistory.put(player, target.getName()); // Create the inventory ISpecialEnderChest chest = OpenInv.enderChests.get(target.getName().toLowerCase()); if (chest == null) { - chest = InternalAccessor.Instance.newSpecialEnderChest(target, !offline); + chest = InternalAccessor.Instance.newSpecialEnderChest(target, target.isOnline()); } // Open the inventory player.openInventory(chest.getBukkitInventory()); - return true; + return; } } diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java index 678febc..8491b9a 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -18,6 +18,7 @@ package com.lishid.openinv.commands; import java.util.HashMap; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -53,7 +54,6 @@ public class OpenInvPluginCommand implements CommandExecutor { } Player player = (Player) sender; - boolean offline = false; // History management String history = openInvHistory.get(player); @@ -63,62 +63,81 @@ public class OpenInvPluginCommand implements CommandExecutor { openInvHistory.put(player, history); } - // Target selecting - Player target; - - String name = ""; + final String name; // Read from history if target is not named if (args.length < 1) { name = history; - } - else { + } else { name = args[0]; } - target = this.plugin.getServer().getPlayer(name); - + final String playername = player.getName(); + Player target = plugin.getServer().getPlayer(name); + // Targeted player was not found online, start asynchron lookup in files if (target == null) { - // Try loading the player's data - target = OpenInv.playerLoader.loadPlayer(name); + sender.sendMessage(ChatColor.GREEN + "Starting inventory lookup."); + plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() { + @Override + public void run() { + // Try loading the player's data asynchronly + final Player target = OpenInv.playerLoader.loadPlayer(name); + // Back to synchron to send messages and display inventory + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + Player player = Bukkit.getPlayer(playername); + // If sender is no longer online after loading the target. Abort! + if (player == null) { + return; + } + openInventory(player, target); + } + }); + } + }); + } else { + openInventory(player, target); + } + return true; + } - if (target == null) { - sender.sendMessage(ChatColor.RED + "Player " + name + " not found!"); - return true; - } + private void openInventory(Player player, Player target) { + if (target == null) { + player.sendMessage(ChatColor.RED + "Player not found!"); + return; } // Permissions checks if (!OpenInv.hasPermission(player, Permissions.PERM_OVERRIDE) && OpenInv.hasPermission(target, Permissions.PERM_EXEMPT)) { - sender.sendMessage(ChatColor.RED + target.getDisplayName() + "'s inventory is protected!"); - return true; + player.sendMessage(ChatColor.RED + target.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()) { - sender.sendMessage(ChatColor.RED + target.getDisplayName() + " is not in your world!"); - return true; + player.sendMessage(ChatColor.RED + target.getDisplayName() + " is not in your world!"); + return; } // Self-open check if (!OpenInv.hasPermission(player, Permissions.PERM_OPENSELF) && target.equals(player)) { - sender.sendMessage(ChatColor.RED + "You're not allowed to openinv yourself."); - return true; + player.sendMessage(ChatColor.RED + "You're not allowed to openinv yourself."); + return; } // Record the target - history = target.getName(); - openInvHistory.put(player, history); + openInvHistory.put(player, target.getName()); // Create the inventory ISpecialPlayerInventory inv = OpenInv.inventories.get(target.getName().toLowerCase()); if (inv == null) { - inv = InternalAccessor.Instance.newSpecialPlayerInventory(target, !offline); + inv = InternalAccessor.Instance.newSpecialPlayerInventory(target, target.isOnline()); } // Open the inventory player.openInventory(inv.getBukkitInventory()); - return true; + return; } } -- 2.49.1 From 56f633d58b83d514f116d2d727d7e7a865a91fe5 Mon Sep 17 00:00:00 2001 From: Max Lee Date: Fri, 3 Apr 2015 01:32:10 +0200 Subject: [PATCH 019/253] world not work --- .../java/com/lishid/openinv/commands/OpenInvPluginCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java index 8491b9a..45fc82f 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -114,7 +114,7 @@ public class OpenInvPluginCommand implements CommandExecutor { return; } - // Crosswork check + // Crossworld 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!"); return; -- 2.49.1 From 4013098201c71d7527a1e3c8d321394079a5cb58 Mon Sep 17 00:00:00 2001 From: Max Lee Date: Fri, 3 Apr 2015 01:32:38 +0200 Subject: [PATCH 020/253] Add crossworld check to enderchests --- .../com/lishid/openinv/commands/OpenEnderPluginCommand.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java index c7cfdaf..15620e2 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -122,6 +122,12 @@ public class OpenEnderPluginCommand implements CommandExecutor { return; } + // Crossworld 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!"); + return; + } + // Record the target openEnderHistory.put(player, target.getName()); -- 2.49.1 From dce86d9c69fb59dccdd4f73c42a6bb87e44849f0 Mon Sep 17 00:00:00 2001 From: Max Lee Date: Fri, 3 Apr 2015 01:34:32 +0200 Subject: [PATCH 021/253] Made enderchests equally protected as inventories --- .../com/lishid/openinv/commands/OpenEnderPluginCommand.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java index 15620e2..d35981e 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -122,6 +122,12 @@ public class OpenEnderPluginCommand implements CommandExecutor { return; } + // Permissions checks + if (!OpenInv.hasPermission(player, Permissions.PERM_OVERRIDE) && OpenInv.hasPermission(target, Permissions.PERM_EXEMPT)) { + player.sendMessage(ChatColor.RED + target.getDisplayName() + "'s enderchest is protected!"); + return; + } + // Crossworld 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!"); -- 2.49.1 From 3e9bb638945c95adcc199f32cf358ba2070d1347 Mon Sep 17 00:00:00 2001 From: Max Lee Date: Fri, 3 Apr 2015 01:39:08 +0200 Subject: [PATCH 022/253] We are working with tasks here. --- .../com/lishid/openinv/commands/OpenEnderPluginCommand.java | 5 +++-- .../com/lishid/openinv/commands/OpenInvPluginCommand.java | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java index d35981e..82c492a 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -16,7 +16,8 @@ package com.lishid.openinv.commands; -import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -32,7 +33,7 @@ import com.lishid.openinv.internal.InternalAccessor; public class OpenEnderPluginCommand implements CommandExecutor { private final OpenInv plugin; - public static HashMap openEnderHistory = new HashMap(); + public static Map openEnderHistory = new ConcurrentHashMap(); public OpenEnderPluginCommand(OpenInv plugin) { this.plugin = plugin; diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java index 45fc82f..b2bcd88 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -16,7 +16,8 @@ package com.lishid.openinv.commands; -import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -32,7 +33,7 @@ import com.lishid.openinv.internal.InternalAccessor; public class OpenInvPluginCommand implements CommandExecutor { private final OpenInv plugin; - public static HashMap openInvHistory = new HashMap(); + public static Map openInvHistory = new ConcurrentHashMap(); public OpenInvPluginCommand(OpenInv plugin) { this.plugin = plugin; -- 2.49.1 From 4ae47b09dc77fc63812634c8a2baa03f7aca9049 Mon Sep 17 00:00:00 2001 From: Max Lee Date: Wed, 27 May 2015 02:13:20 +0200 Subject: [PATCH 023/253] Update to v1_8_R3 NMS (1.8.4 to 1.8.6) --- .../internal/v1_8_R3/AnySilentChest.java | 143 ++++++++++ .../internal/v1_8_R3/EnumDirectionList.java | 24 ++ .../internal/v1_8_R3/InventoryAccess.java | 73 +++++ .../internal/v1_8_R3/PlayerDataManager.java | 101 +++++++ .../v1_8_R3/SilentContainerChest.java | 37 +++ .../internal/v1_8_R3/SilentInventory.java | 162 +++++++++++ .../internal/v1_8_R3/SpecialEnderChest.java | 96 +++++++ .../v1_8_R3/SpecialPlayerInventory.java | 253 ++++++++++++++++++ 8 files changed, 889 insertions(+) create mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentChest.java create mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R3/EnumDirectionList.java create mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java create mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java create mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java create mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentInventory.java create mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java create mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentChest.java new file mode 100644 index 0000000..56a2f33 --- /dev/null +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentChest.java @@ -0,0 +1,143 @@ +/* + * 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_8_R3; + +import java.util.Iterator; + +import org.bukkit.entity.Player; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.internal.IAnySilentChest; + + +//Volatile +import net.minecraft.server.v1_8_R3.*; + +import org.bukkit.craftbukkit.v1_8_R3.entity.*; + +public class AnySilentChest implements IAnySilentChest { + public boolean IsAnyChestNeeded(Player p, int x, int y, int z) { + // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest + BlockPosition position = new BlockPosition(x, y, z); + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + BlockChest chest = (BlockChest) (((BlockChest) world.getType(position).getBlock()).b == 1 ? + Block.getByName("trapped_chest") : Block.getByName("chest")); + + // If block on top + if (topBlocking(world, position)) { + return true; + } + + // If block next to chest is chest and has a block on top + for (EnumDirection direction : EnumDirectionList.HORIZONTAL) { + BlockPosition sidePosition = position.shift(direction); + Block var8 = world.getType(sidePosition).getBlock(); + if (var8 == chest) { + if (this.topBlocking(world, sidePosition)) { + return true; + } + } + } + + return false; + } + private boolean topBlocking(World world, BlockPosition position) { + return this.blockOnTop(world, position) || this.ocelotOnTop(world, position); + } + + private boolean blockOnTop(World world, BlockPosition position) { + return world.getType(position.up()).getBlock().isOccluding(); + } + + private boolean ocelotOnTop(World world, BlockPosition position) { + Iterator var3 = world.a(EntityOcelot.class, + new AxisAlignedBB((double) position.getX(), (double) (position.getY() + 1), + (double) position.getZ(), (double) (position.getX() + 1), + (double) (position.getY() + 2), (double) (position.getZ() + 1))).iterator(); + + EntityOcelot var5; + do { + if (!var3.hasNext()) { + return false; + } + + Entity var4 = (Entity) var3.next(); + var5 = (EntityOcelot) var4; + } while (!var5.isSitting()); + + return true; + } + + public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { + BlockPosition position = new BlockPosition(x, y, z); + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + if (world.isClientSide) { + return true; + } + + BlockChest chest = (BlockChest) (((BlockChest) world.getType(position).getBlock()).b == 1 ? + Block.getByName("trapped_chest") : Block.getByName("chest")); + + TileEntity tileEntity = world.getTileEntity(position); + if (!(tileEntity instanceof TileEntityChest)) { + return true; + } + + ITileInventory tileInventory = (ITileInventory) tileEntity; + if (!anychest && this.topBlocking(world, position)) { + return true; + } + + for (EnumDirection direction : EnumDirectionList.HORIZONTAL) { + BlockPosition side = position.shift(direction); + Block block = world.getType(side).getBlock(); + if (block == chest) { + if (!anychest && this.topBlocking(world, side)) { + return true; + } + + TileEntity sideTileEntity = world.getTileEntity(side); + if (sideTileEntity instanceof TileEntityChest) { + if (direction != EnumDirection.WEST && direction != EnumDirection.NORTH) { + tileInventory = new InventoryLargeChest("container.chestDouble", tileInventory, (TileEntityChest) sideTileEntity); + } else { + tileInventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) sideTileEntity, tileInventory); + } + } + } + } + + boolean returnValue = true; + if (silentchest) { + tileInventory = new SilentInventory(tileInventory); + if (OpenInv.NotifySilentChest()) { + p.sendMessage("You are opening a chest silently."); + } + returnValue = false; + } + + player.openContainer(tileInventory); + + if (anychest && OpenInv.NotifyAnyChest()) { + p.sendMessage("You are opening a blocked chest."); + } + + return returnValue; + } +} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R3/EnumDirectionList.java b/src/main/java/com/lishid/openinv/internal/v1_8_R3/EnumDirectionList.java new file mode 100644 index 0000000..3c18e98 --- /dev/null +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R3/EnumDirectionList.java @@ -0,0 +1,24 @@ +package com.lishid.openinv.internal.v1_8_R3; + +import com.google.common.collect.Iterators; +import net.minecraft.server.v1_8_R3.EnumDirection; +import net.minecraft.server.v1_8_R3.EnumDirection.EnumDirectionLimit; + +import java.util.Iterator; + +public enum EnumDirectionList implements Iterable { + HORIZONTAL(EnumDirectionLimit.HORIZONTAL), + VERTICAL(EnumDirectionLimit.VERTICAL); + + private EnumDirectionLimit list; + + private EnumDirectionList(EnumDirectionLimit list) { + this.list = list; + } + + @Override + public Iterator iterator() { + return Iterators.forArray(list.a()); + } + +} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java new file mode 100644 index 0000000..86a85d3 --- /dev/null +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java @@ -0,0 +1,73 @@ +/* + * 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_8_R3; + +import java.lang.reflect.Field; + + +import org.bukkit.entity.HumanEntity; +import org.bukkit.inventory.Inventory; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.Permissions; +import com.lishid.openinv.internal.IInventoryAccess; + +//Volatile +import net.minecraft.server.v1_8_R3.*; +import org.bukkit.craftbukkit.v1_8_R3.inventory.*; + +public class InventoryAccess implements IInventoryAccess { + public boolean check(Inventory inventory, HumanEntity player) { + IInventory inv = grabInventory(inventory); + + if (inv instanceof SpecialPlayerInventory) { + if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { + return false; + } + } + + else if (inv instanceof SpecialEnderChest) { + if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { + return false; + } + } + + return true; + } + + private IInventory grabInventory(Inventory inventory) { + if(inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory(); + } + + //Use reflection to find the inventory + Class clazz = inventory.getClass(); + IInventory result = null; + for(Field f : clazz.getDeclaredFields()) { + f.setAccessible(true); + if(IInventory.class.isAssignableFrom(f.getDeclaringClass())) { + try { + result = (IInventory) f.get(inventory); + } + catch (Exception e) { + OpenInv.log(e); + } + } + } + return result; + } +} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java new file mode 100644 index 0000000..2a0b2b2 --- /dev/null +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java @@ -0,0 +1,101 @@ +/* + * 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_8_R3; + +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 net.minecraft.server.v1_8_R3.*; + +import org.bukkit.craftbukkit.v1_8_R3.*; + +public class PlayerDataManager implements IPlayerDataManager { + public Player loadPlayer(String name) { + try { + UUID uuid = matchUser(name); + if (uuid == null) { + 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.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) { + OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(search); + if (offlinePlayer != null && offlinePlayer.hasPlayedBefore()) { + return offlinePlayer.getUniqueId(); + } + 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; + } +} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java new file mode 100644 index 0000000..4352ef1 --- /dev/null +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java @@ -0,0 +1,37 @@ +/* + * 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_8_R3; + +//Volatile +import net.minecraft.server.v1_8_R3.*; + + +public class SilentContainerChest extends ContainerChest { + public IInventory inv; + + public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman human) { + super(i1, i2, human); + inv = i2; + // close signal + inv.closeContainer(human); + } + + @Override + public void b(EntityHuman paramEntityHuman) { + // Don't send close signal twice, might screw up + } +} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentInventory.java b/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentInventory.java new file mode 100644 index 0000000..65f93fa --- /dev/null +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentInventory.java @@ -0,0 +1,162 @@ +package com.lishid.openinv.internal.v1_8_R3; + +import net.minecraft.server.v1_8_R3.*; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftHumanEntity; +import org.bukkit.entity.HumanEntity; +import org.bukkit.inventory.InventoryHolder; + +import java.util.List; + +public class SilentInventory implements ITileInventory { + public ITileInventory inv; + + public SilentInventory(ITileInventory inv) { + this.inv = inv; + } + + @Override + public boolean r_() { + return inv.r_(); + } + + @Override + public void a(ChestLock chestLock) { + inv.a(chestLock); + } + + @Override + public ChestLock i() { + return inv.i(); + } + + @Override + public int getSize() { + return inv.getSize(); + } + + @Override + public ItemStack getItem(int i) { + return inv.getItem(i); + } + + @Override + public ItemStack splitStack(int i, int i1) { + return inv.splitStack(i, i1); + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + return inv.splitWithoutUpdate(i); + } + + @Override + public void setItem(int i, ItemStack itemStack) { + inv.setItem(i, itemStack); + } + + @Override + public int getMaxStackSize() { + return inv.getMaxStackSize(); + } + + @Override + public void update() { + inv.update(); + } + + @Override + public boolean a(EntityHuman entityHuman) { + return inv.a(entityHuman); + } + + @Override + public void startOpen(EntityHuman entityHuman) { + //Don't do anything + } + + @Override + public void closeContainer(EntityHuman entityHuman) { + //Don't do anything + } + + @Override + public boolean b(int i, ItemStack itemStack) { + return inv.b(i, itemStack); + } + + @Override + public int getProperty(int i) { + return inv.getProperty(i); + } + + @Override + public void b(int i, int i1) { + inv.b(i, i1); + } + + @Override + public int g() { + return inv.g(); + } + + @Override + public void l() { + inv.l(); + } + + @Override + public ItemStack[] getContents() { + return inv.getContents(); + } + + @Override + public void onOpen(CraftHumanEntity craftHumanEntity) { + inv.onOpen(craftHumanEntity); + } + + @Override + public void onClose(CraftHumanEntity craftHumanEntity) { + inv.onClose(craftHumanEntity); + } + + @Override + public List getViewers() { + return inv.getViewers(); + } + + @Override + public InventoryHolder getOwner() { + return inv.getOwner(); + } + + @Override + public void setMaxStackSize(int i) { + inv.setMaxStackSize(i); + } + + @Override + public String getName() { + return inv.getName(); + } + + @Override + public boolean hasCustomName() { + return inv.hasCustomName(); + } + + @Override + public IChatBaseComponent getScoreboardDisplayName() { + return inv.getScoreboardDisplayName(); + } + + @Override + public Container createContainer(PlayerInventory playerInventory, EntityHuman entityHuman) { + //Don't let the chest itself create the container. + return new ContainerChest(playerInventory, this, entityHuman); + } + + @Override + public String getContainerName() { + return inv.getContainerName(); + } +} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java new file mode 100644 index 0000000..e5c9137 --- /dev/null +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java @@ -0,0 +1,96 @@ +/* + * 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_8_R3; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +//Volatile +import net.minecraft.server.v1_8_R3.*; +import org.bukkit.craftbukkit.v1_8_R3.entity.*; +import org.bukkit.craftbukkit.v1_8_R3.inventory.*; + +public class SpecialEnderChest extends InventorySubcontainer implements ISpecialEnderChest { + private CraftInventory inventory = new CraftInventory(this); + private InventoryEnderChest enderChest; + private CraftPlayer owner; + private boolean playerOnline = false; + + public SpecialEnderChest(Player p, Boolean online) { + this(p, ((CraftPlayer) p).getHandle().getEnderChest(), online); + } + + public SpecialEnderChest(Player p, InventoryEnderChest enderchest, boolean online) { + super(enderchest.getName(), enderchest.hasCustomName(), enderchest.getSize()); + this.owner = (CraftPlayer) p; + this.enderChest = enderchest; + this.items = enderChest.getContents(); + this.playerOnline = online; + OpenInv.enderChests.put(owner.getName().toLowerCase(), this); + } + + private void saveOnExit() { + if (transaction.isEmpty() && !playerOnline) { + owner.saveData(); + OpenInv.enderChests.remove(owner.getName().toLowerCase()); + } + } + + private void linkInventory(InventoryEnderChest inventory) { + inventory.items = this.items; + } + + public Inventory getBukkitInventory() { + return inventory; + } + + public void playerOnline(Player p) { + if (!playerOnline) { + linkInventory(((CraftPlayer) p).getHandle().getEnderChest()); + p.saveData(); + playerOnline = true; + } + } + + public void playerOffline() { + playerOnline = false; + owner.loadData(); + linkInventory(owner.getHandle().getEnderChest()); + saveOnExit(); + } + + @Override + public void onClose(CraftHumanEntity who) { + super.onClose(who); + saveOnExit(); + } + + @Override + public InventoryHolder getOwner() { + return this.owner; + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } +} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java new file mode 100644 index 0000000..09f4cba --- /dev/null +++ b/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java @@ -0,0 +1,253 @@ +/* + * 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_8_R3; + +import org.bukkit.entity.Player; + +import org.bukkit.inventory.Inventory; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +//Volatile +import net.minecraft.server.v1_8_R3.*; +import org.bukkit.craftbukkit.v1_8_R3.entity.*; +import org.bukkit.craftbukkit.v1_8_R3.inventory.*; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + private CraftInventory inventory = new CraftInventory(this); + private ItemStack[] extra = new ItemStack[5]; + private CraftPlayer owner; + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player p, Boolean online) { + super(((CraftPlayer) p).getHandle()); + this.owner = (CraftPlayer) p; + this.items = player.inventory.items; + this.armor = player.inventory.armor; + this.playerOnline = online; + OpenInv.inventories.put(owner.getName().toLowerCase(), this); + } + + public Inventory getBukkitInventory() { + return inventory; + } + + private void saveOnExit() { + if (transaction.isEmpty() && !playerOnline) { + owner.saveData(); + OpenInv.inventories.remove(owner.getName().toLowerCase()); + } + } + + private void linkInventory(PlayerInventory inventory) { + inventory.items = this.items; + inventory.armor = this.armor; + } + + public void playerOnline(Player player) { + if (!playerOnline) { + CraftPlayer p = (CraftPlayer) player; + linkInventory(p.getHandle().inventory); + p.saveData(); + playerOnline = true; + } + } + + public void playerOffline() { + playerOnline = false; + owner.loadData(); + linkInventory(owner.getHandle().inventory); + saveOnExit(); + } + + @Override + public void onClose(CraftHumanEntity who) { + super.onClose(who); + this.saveOnExit(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] C = new ItemStack[getSize()]; + System.arraycopy(items, 0, C, 0, items.length); + System.arraycopy(armor, 0, C, items.length, armor.length); + return C; + } + + @Override + public int getSize() { + return super.getSize() + 5; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } else { + itemstack = is[i].a(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } else { + return null; + } + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } else { + return null; + } + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + // Effects + if (is == this.extra) { + owner.getHandle().drop(itemstack, true); + itemstack = null; + } + + is[i] = itemstack; + + owner.getHandle().defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) + return i - 27; + else + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) + return 3; + if (i == 1) + return 2; + if (i == 2) + return 1; + if (i == 3) + return 0; + else + return i; + } + + @Override + public boolean hasCustomName() { + return true; + } + + @Override + public String getName() { + return player.getName(); + } + + @Override + public boolean a(EntityHuman entityhuman) { + return true; + } + + @Override + public void update() { + super.update(); + player.inventory.update(); + } +} \ No newline at end of file -- 2.49.1 From e8476d5b050abef2bf7aad0cfd73b1f7c46dd8ef Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Mon, 22 Jun 2015 12:03:03 +1000 Subject: [PATCH 024/253] Migrate to UUID usage --- pom.xml | 62 ++++ src/main/java/com/lishid/openinv/OpenInv.java | 48 ++-- .../commands/AnyChestPluginCommand.java | 47 +-- .../commands/OpenEnderPluginCommand.java | 148 +++++----- .../commands/OpenInvPluginCommand.java | 126 ++++---- .../commands/SearchInvPluginCommand.java | 68 ++--- .../commands/SilentChestPluginCommand.java | 47 +-- .../commands/ToggleOpenInvPluginCommand.java | 55 ++-- .../{v1_8_R3 => }/AnySilentChest.java | 6 +- .../{v1_8_R3 => }/EnumDirectionList.java | 14 +- .../openinv/internal/IAnySilentChest.java | 25 -- .../openinv/internal/IInventoryAccess.java | 24 -- .../openinv/internal/IPlayerDataManager.java | 23 -- .../openinv/internal/ISpecialEnderChest.java | 29 -- .../internal/ISpecialPlayerInventory.java | 28 -- .../openinv/internal/InternalAccessor.java | 105 ------- .../{v1_8_R3 => }/InventoryAccess.java | 7 +- .../{v1_8_R3 => }/PlayerDataManager.java | 47 +-- .../{v1_8_R3 => }/SilentContainerChest.java | 5 +- .../{v1_8_R3 => }/SilentInventory.java | 12 +- .../{v1_8_R3 => }/SpecialEnderChest.java | 13 +- .../{v1_8_R3 => }/SpecialPlayerInventory.java | 12 +- .../internal/craftbukkit/AnySilentChest.java | 120 -------- .../internal/craftbukkit/InventoryAccess.java | 48 ---- .../craftbukkit/PlayerDataManager.java | 97 ------- .../craftbukkit/SilentContainerChest.java | 36 --- .../craftbukkit/SpecialEnderChest.java | 126 -------- .../craftbukkit/SpecialPlayerInventory.java | 252 ---------------- .../internal/v1_4_5/AnySilentChest.java | 120 -------- .../internal/v1_4_5/InventoryAccess.java | 48 ---- .../internal/v1_4_5/PlayerDataManager.java | 97 ------- .../internal/v1_4_5/SilentContainerChest.java | 36 --- .../internal/v1_4_5/SpecialEnderChest.java | 126 -------- .../v1_4_5/SpecialPlayerInventory.java | 252 ---------------- .../internal/v1_4_6/AnySilentChest.java | 120 -------- .../internal/v1_4_6/InventoryAccess.java | 48 ---- .../internal/v1_4_6/PlayerDataManager.java | 97 ------- .../internal/v1_4_6/SilentContainerChest.java | 36 --- .../internal/v1_4_6/SpecialEnderChest.java | 126 -------- .../v1_4_6/SpecialPlayerInventory.java | 252 ---------------- .../internal/v1_4_R1/AnySilentChest.java | 120 -------- .../internal/v1_4_R1/InventoryAccess.java | 48 ---- .../internal/v1_4_R1/PlayerDataManager.java | 97 ------- .../v1_4_R1/SilentContainerChest.java | 36 --- .../internal/v1_4_R1/SpecialEnderChest.java | 126 -------- .../v1_4_R1/SpecialPlayerInventory.java | 252 ---------------- .../internal/v1_5_R2/AnySilentChest.java | 124 -------- .../internal/v1_5_R2/InventoryAccess.java | 48 ---- .../internal/v1_5_R2/PlayerDataManager.java | 97 ------- .../v1_5_R2/SilentContainerChest.java | 36 --- .../internal/v1_5_R2/SpecialEnderChest.java | 126 -------- .../v1_5_R2/SpecialPlayerInventory.java | 252 ---------------- .../internal/v1_5_R3/AnySilentChest.java | 126 -------- .../internal/v1_5_R3/InventoryAccess.java | 48 ---- .../internal/v1_5_R3/PlayerDataManager.java | 97 ------- .../v1_5_R3/SilentContainerChest.java | 36 --- .../internal/v1_5_R3/SpecialEnderChest.java | 126 -------- .../v1_5_R3/SpecialPlayerInventory.java | 252 ---------------- .../internal/v1_6_R1/AnySilentChest.java | 124 -------- .../internal/v1_6_R1/InventoryAccess.java | 48 ---- .../internal/v1_6_R1/PlayerDataManager.java | 97 ------- .../v1_6_R1/SilentContainerChest.java | 36 --- .../internal/v1_6_R1/SpecialEnderChest.java | 126 -------- .../v1_6_R1/SpecialPlayerInventory.java | 252 ---------------- .../internal/v1_6_R2/AnySilentChest.java | 124 -------- .../internal/v1_6_R2/InventoryAccess.java | 48 ---- .../internal/v1_6_R2/PlayerDataManager.java | 97 ------- .../v1_6_R2/SilentContainerChest.java | 36 --- .../internal/v1_6_R2/SpecialEnderChest.java | 126 -------- .../v1_6_R2/SpecialPlayerInventory.java | 252 ---------------- .../internal/v1_6_R3/AnySilentChest.java | 124 -------- .../internal/v1_6_R3/InventoryAccess.java | 48 ---- .../internal/v1_6_R3/PlayerDataManager.java | 97 ------- .../v1_6_R3/SilentContainerChest.java | 36 --- .../internal/v1_6_R3/SpecialEnderChest.java | 126 -------- .../v1_6_R3/SpecialPlayerInventory.java | 252 ---------------- .../internal/v1_7_R1/AnySilentChest.java | 124 -------- .../internal/v1_7_R1/InventoryAccess.java | 48 ---- .../internal/v1_7_R1/PlayerDataManager.java | 99 ------- .../v1_7_R1/SilentContainerChest.java | 36 --- .../internal/v1_7_R1/SpecialEnderChest.java | 126 -------- .../v1_7_R1/SpecialPlayerInventory.java | 252 ---------------- .../internal/v1_7_R2/AnySilentChest.java | 124 -------- .../internal/v1_7_R2/InventoryAccess.java | 48 ---- .../internal/v1_7_R2/PlayerDataManager.java | 99 ------- .../v1_7_R2/SilentContainerChest.java | 36 --- .../internal/v1_7_R2/SpecialEnderChest.java | 126 -------- .../v1_7_R2/SpecialPlayerInventory.java | 252 ---------------- .../internal/v1_7_R3/AnySilentChest.java | 124 -------- .../internal/v1_7_R3/InventoryAccess.java | 48 ---- .../internal/v1_7_R3/PlayerDataManager.java | 105 ------- .../v1_7_R3/SilentContainerChest.java | 36 --- .../internal/v1_7_R3/SpecialEnderChest.java | 126 -------- .../v1_7_R3/SpecialPlayerInventory.java | 252 ---------------- .../internal/v1_7_R4/AnySilentChest.java | 125 -------- .../internal/v1_7_R4/InventoryAccess.java | 73 ----- .../internal/v1_7_R4/PlayerDataManager.java | 108 ------- .../v1_7_R4/SilentContainerChest.java | 36 --- .../internal/v1_7_R4/SpecialEnderChest.java | 126 -------- .../v1_7_R4/SpecialPlayerInventory.java | 252 ---------------- .../internal/v1_8_R1/AnySilentChest.java | 143 ---------- .../internal/v1_8_R1/EnumDirectionList.java | 23 -- .../internal/v1_8_R1/InventoryAccess.java | 73 ----- .../internal/v1_8_R1/PlayerDataManager.java | 101 ------- .../v1_8_R1/SilentContainerChest.java | 37 --- .../internal/v1_8_R1/SilentInventory.java | 162 ----------- .../internal/v1_8_R1/SpecialEnderChest.java | 102 ------- .../v1_8_R1/SpecialPlayerInventory.java | 253 ---------------- .../internal/v1_8_R2/AnySilentChest.java | 143 ---------- .../internal/v1_8_R2/EnumDirectionList.java | 24 -- .../internal/v1_8_R2/InventoryAccess.java | 73 ----- .../internal/v1_8_R2/PlayerDataManager.java | 101 ------- .../v1_8_R2/SilentContainerChest.java | 37 --- .../internal/v1_8_R2/SilentInventory.java | 162 ----------- .../internal/v1_8_R2/SpecialEnderChest.java | 96 ------- .../v1_8_R2/SpecialPlayerInventory.java | 253 ---------------- .../OpenInvEntityListener.java | 107 +++---- .../OpenInvInventoryListener.java | 70 ++--- .../OpenInvPlayerListener.java | 270 +++++++++--------- .../com/lishid/openinv/utils/UUIDFetcher.java | 98 +++++++ .../com/lishid/openinv/utils/UUIDUtil.java | 27 ++ src/main/resources/plugin.yml | 2 +- 122 files changed, 727 insertions(+), 11495 deletions(-) create mode 100644 pom.xml rename src/main/java/com/lishid/openinv/internal/{v1_8_R3 => }/AnySilentChest.java (97%) rename src/main/java/com/lishid/openinv/internal/{v1_8_R3 => }/EnumDirectionList.java (92%) delete mode 100644 src/main/java/com/lishid/openinv/internal/IAnySilentChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/IInventoryAccess.java delete mode 100644 src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java delete mode 100644 src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java delete mode 100644 src/main/java/com/lishid/openinv/internal/InternalAccessor.java rename src/main/java/com/lishid/openinv/internal/{v1_8_R3 => }/InventoryAccess.java (93%) rename src/main/java/com/lishid/openinv/internal/{v1_8_R3 => }/PlayerDataManager.java (55%) rename src/main/java/com/lishid/openinv/internal/{v1_8_R3 => }/SilentContainerChest.java (95%) rename src/main/java/com/lishid/openinv/internal/{v1_8_R3 => }/SilentInventory.java (97%) rename src/main/java/com/lishid/openinv/internal/{v1_8_R3 => }/SpecialEnderChest.java (88%) rename src/main/java/com/lishid/openinv/internal/{v1_8_R3 => }/SpecialPlayerInventory.java (94%) delete mode 100644 src/main/java/com/lishid/openinv/internal/craftbukkit/AnySilentChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/craftbukkit/InventoryAccess.java delete mode 100644 src/main/java/com/lishid/openinv/internal/craftbukkit/PlayerDataManager.java delete mode 100644 src/main/java/com/lishid/openinv/internal/craftbukkit/SilentContainerChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialEnderChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R1/EnumDirectionList.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentInventory.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R2/EnumDirectionList.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentInventory.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java delete mode 100644 src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java rename src/main/java/com/lishid/openinv/{ => listeners}/OpenInvEntityListener.java (94%) rename src/main/java/com/lishid/openinv/{ => listeners}/OpenInvInventoryListener.java (94%) rename src/main/java/com/lishid/openinv/{ => listeners}/OpenInvPlayerListener.java (87%) create mode 100644 src/main/java/com/lishid/openinv/utils/UUIDFetcher.java create mode 100644 src/main/java/com/lishid/openinv/utils/UUIDUtil.java diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..c5084d4 --- /dev/null +++ b/pom.xml @@ -0,0 +1,62 @@ + + 4.0.0 + com.lishid + openinv + jar + 2.2.9 + OpenInv + http://dev.bukkit.org/bukkit-plugins/openinv/ + + + UTF-8 + + + + + bukkit-repo + https://hub.spigotmc.org/nexus/content/groups/public/ + + + + + + org.bukkit + bukkit + 1.8.7-R0.1-SNAPSHOT + provided + + + + org.bukkit + craftbukkit + 1.8.7-R0.1-SNAPSHOT + provided + + + + + clean install + src/main/java + + + src/main/resources + true + + **/*.java + + + + + + + maven-compiler-plugin + 2.3.2 + + 1.6 + 1.6 + + + + + \ 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 index 3c76149..fbae1bc 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -18,6 +18,7 @@ package com.lishid.openinv; import java.util.HashMap; import java.util.Map; +import java.util.UUID; import java.util.logging.Logger; import org.bukkit.ChatColor; @@ -28,12 +29,14 @@ import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import com.lishid.openinv.commands.*; -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; +import com.lishid.openinv.internal.AnySilentChest; +import com.lishid.openinv.internal.InventoryAccess; +import com.lishid.openinv.internal.PlayerDataManager; +import com.lishid.openinv.internal.SpecialEnderChest; +import com.lishid.openinv.internal.SpecialPlayerInventory; +import com.lishid.openinv.listeners.OpenInvEntityListener; +import com.lishid.openinv.listeners.OpenInvInventoryListener; +import com.lishid.openinv.listeners.OpenInvPlayerListener; /** * Open other player's inventory @@ -43,32 +46,23 @@ import com.lishid.openinv.internal.InternalAccessor; public class OpenInv extends JavaPlugin { public static final Logger logger = Logger.getLogger("Minecraft.OpenInv"); - public static Map inventories = new HashMap(); - public static Map enderChests = new HashMap(); + public static final Map inventories = new HashMap(); + public static final Map enderChests = new HashMap(); public static OpenInv mainPlugin; - public static IPlayerDataManager playerLoader; - public static IInventoryAccess inventoryAccess; - public static IAnySilentChest anySilentChest; + public static PlayerDataManager playerLoader; + public static InventoryAccess inventoryAccess; + public static AnySilentChest 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(); + playerLoader = new PlayerDataManager(); + inventoryAccess = new InventoryAccess(); + anySilentChest = new AnySilentChest(); mainPlugin = this; FileConfiguration config = getConfig(); @@ -90,8 +84,8 @@ public class OpenInv extends JavaPlugin { getCommand("openinv").setExecutor(new OpenInvPluginCommand(this)); getCommand("searchinv").setExecutor(new SearchInvPluginCommand()); getCommand("toggleopeninv").setExecutor(new ToggleOpenInvPluginCommand()); - getCommand("silentchest").setExecutor(new SilentChestPluginCommand(this)); - getCommand("anychest").setExecutor(new AnyChestPluginCommand(this)); + getCommand("silentchest").setExecutor(new SilentChestPluginCommand()); + getCommand("anychest").setExecutor(new AnyChestPluginCommand()); getCommand("openender").setExecutor(new OpenEnderPluginCommand(this)); } @@ -195,4 +189,4 @@ public class OpenInv extends JavaPlugin { } return player.hasPermission(permission); } -} \ No newline at end of file +} diff --git a/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java b/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java index 03c80cb..8de71ae 100644 --- a/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java @@ -26,32 +26,33 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; public class AnyChestPluginCommand implements CommandExecutor { - public AnyChestPluginCommand(OpenInv 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; - } - if (!OpenInv.hasPermission(sender, Permissions.PERM_ANYCHEST)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to use anychest."); - return true; - } - - if (args.length > 0) { - if (args[0].equalsIgnoreCase("check")) { - if (OpenInv.GetPlayerAnyChestStatus(sender.getName())) - sender.sendMessage("AnyChest is ON."); - else - sender.sendMessage("AnyChest is OFF."); + if (command.getName().equalsIgnoreCase("anychest")) { + if (!(sender instanceof Player)) { + sender.sendMessage(ChatColor.RED + "You can't use this from the console."); + return true; } + if (!OpenInv.hasPermission(sender, Permissions.PERM_ANYCHEST)) { + sender.sendMessage(ChatColor.RED + "You do not have permission to use anychest."); + return true; + } + + if (args.length > 0) { + if (args[0].equalsIgnoreCase("check")) { + if (OpenInv.GetPlayerAnyChestStatus(sender.getName())) + 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") + "."); + + return true; } - OpenInv.SetPlayerAnyChestStatus(sender.getName(), !OpenInv.GetPlayerAnyChestStatus(sender.getName())); - sender.sendMessage("AnyChest is now " + (OpenInv.GetPlayerAnyChestStatus(sender.getName()) ? "On" : "Off") + "."); - - return true; + return false; } } diff --git a/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java index 82c492a..5a05087 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -17,6 +17,7 @@ package com.lishid.openinv.commands; import java.util.Map; +import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import org.bukkit.Bukkit; @@ -28,88 +29,93 @@ import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.internal.SpecialEnderChest; +import com.lishid.openinv.utils.UUIDUtil; public class OpenEnderPluginCommand implements CommandExecutor { private final OpenInv plugin; - public static Map openEnderHistory = new ConcurrentHashMap(); + public static final Map openEnderHistory = new ConcurrentHashMap(); public OpenEnderPluginCommand(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; - } - - if (!OpenInv.hasPermission(sender, Permissions.PERM_ENDERCHEST)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to access player enderchest"); - return true; - } - - if (args.length > 0 && args[0].equalsIgnoreCase("?")) { - OpenInv.ShowHelp((Player) sender); - return true; - } - - Player player = (Player) sender; - - // History management - String history = openEnderHistory.get(player); - - if (history == null || history == "") { - history = player.getName(); - openEnderHistory.put(player, history); - } - - final String name; - - // Read from history if target is not named - if (args.length < 1) { - if (history != null && history != "") { - name = history; - } - else { - sender.sendMessage(ChatColor.RED + "OpenEnder history is empty!"); + if (command.getName().equalsIgnoreCase("openender")) { + if (!(sender instanceof Player)) { + sender.sendMessage(ChatColor.RED + "You can't use this from the console."); return true; } - } - else { - name = args[0]; - } - final String playername = player.getName(); - Player target = plugin.getServer().getPlayer(name); - // Targeted player was not found online, start asynchron lookup in files - if (target == null) { - sender.sendMessage(ChatColor.GREEN + "Starting inventory lookup."); - plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() { - @Override - public void run() { - // Try loading the player's data asynchronly - final Player target = OpenInv.playerLoader.loadPlayer(name); - // Back to synchron to send messages and display inventory - Bukkit.getScheduler().runTask(plugin, new Runnable() { - @Override - public void run() { - Player player = Bukkit.getPlayer(playername); - // If sender is no longer online after loading the target. Abort! - if (player == null) { - return; - } - openInventory(player, target); - } - }); + if (!OpenInv.hasPermission(sender, Permissions.PERM_ENDERCHEST)) { + sender.sendMessage(ChatColor.RED + "You do not have permission to access player enderchest"); + return true; + } + + if (args.length > 0 && args[0].equalsIgnoreCase("?")) { + OpenInv.ShowHelp((Player) sender); + return true; + } + + Player player = (Player) sender; + + // History management + UUID history = openEnderHistory.get(player.getUniqueId()); + + if (history == null) { + history = player.getUniqueId(); + openEnderHistory.put(player.getUniqueId(), history); + } + + final UUID uuid; + + // Read from history if target is not named + if (args.length < 1) { + if (history != null) { + uuid = history; } - }); - } else { - openInventory(player, target); + else { + sender.sendMessage(ChatColor.RED + "OpenEnder history is empty!"); + return true; + } + } + else { + uuid = UUIDUtil.getUUIDOf(args[0]); + } + + final UUID playerUUID = player.getUniqueId(); + Player target = Bukkit.getPlayer(uuid); + // Targeted player was not found online, start asynchron lookup in files + if (target == null) { + sender.sendMessage(ChatColor.GREEN + "Starting inventory lookup."); + plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() { + @Override + public void run() { + // Try loading the player's data asynchronly + final Player target = OpenInv.playerLoader.loadPlayer(uuid); + // Back to synchron to send messages and display inventory + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + Player player = Bukkit.getPlayer(playerUUID); + // If sender is no longer online after loading the target. Abort! + if (player == null) { + return; + } + openInventory(player, target); + } + }); + } + }); + } else { + openInventory(player, target); + } + + return true; } - return true; + return false; } private void openInventory(Player player, Player target) { @@ -136,17 +142,15 @@ public class OpenEnderPluginCommand implements CommandExecutor { } // Record the target - openEnderHistory.put(player, target.getName()); + openEnderHistory.put(player.getUniqueId(), target.getUniqueId()); // Create the inventory - ISpecialEnderChest chest = OpenInv.enderChests.get(target.getName().toLowerCase()); + SpecialEnderChest chest = OpenInv.enderChests.get(target.getUniqueId()); if (chest == null) { - chest = InternalAccessor.Instance.newSpecialEnderChest(target, target.isOnline()); + chest = new SpecialEnderChest(target, target.isOnline()); } // Open the inventory player.openInventory(chest.getBukkitInventory()); - - return; } } diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java index b2bcd88..4ae1f19 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -17,6 +17,7 @@ package com.lishid.openinv.commands; import java.util.Map; +import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import org.bukkit.Bukkit; @@ -28,79 +29,86 @@ import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.internal.SpecialPlayerInventory; +import com.lishid.openinv.utils.UUIDUtil; public class OpenInvPluginCommand implements CommandExecutor { private final OpenInv plugin; - public static Map openInvHistory = new ConcurrentHashMap(); + public static final Map openInvHistory = new ConcurrentHashMap(); public OpenInvPluginCommand(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; - } - if (!OpenInv.hasPermission(sender, Permissions.PERM_OPENINV)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to access player inventories"); - return true; - } + if (command.getName().equalsIgnoreCase("openinv")) { + if (!(sender instanceof Player)) { + sender.sendMessage(ChatColor.RED + "You can't use this from the console."); + return true; + } + if (!OpenInv.hasPermission(sender, Permissions.PERM_OPENINV)) { + sender.sendMessage(ChatColor.RED + "You do not have permission to access player inventories"); + return true; + } - if (args.length > 0 && args[0].equalsIgnoreCase("?")) { - OpenInv.ShowHelp((Player) sender); - return true; - } + if (args.length > 0 && args[0].equalsIgnoreCase("?")) { + OpenInv.ShowHelp((Player) sender); + return true; + } - Player player = (Player) sender; + Player player = (Player) sender; - // History management - String history = openInvHistory.get(player); + // History management + UUID history = openInvHistory.get(player.getUniqueId()); - if (history == null || history == "") { - history = player.getName(); - openInvHistory.put(player, history); - } + if (history == null) { + history = player.getUniqueId(); + openInvHistory.put(player.getUniqueId(), history); + } - final String name; + final UUID uuid; - // Read from history if target is not named - if (args.length < 1) { - name = history; - } else { - name = args[0]; - } + // Read from history if target is not named + if (args.length < 1) { + uuid = history; + } + else { + uuid = UUIDUtil.getUUIDOf(args[0]); + } - final String playername = player.getName(); - Player target = plugin.getServer().getPlayer(name); - // Targeted player was not found online, start asynchron lookup in files - if (target == null) { - sender.sendMessage(ChatColor.GREEN + "Starting inventory lookup."); - plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() { - @Override - public void run() { - // Try loading the player's data asynchronly - final Player target = OpenInv.playerLoader.loadPlayer(name); - // Back to synchron to send messages and display inventory - Bukkit.getScheduler().runTask(plugin, new Runnable() { - @Override - public void run() { - Player player = Bukkit.getPlayer(playername); - // If sender is no longer online after loading the target. Abort! - if (player == null) { - return; + final UUID playerUUID = player.getUniqueId(); + Player target = Bukkit.getPlayer(uuid); + // Targeted player was not found online, start asynchron lookup in files + if (target == null) { + sender.sendMessage(ChatColor.GREEN + "Starting inventory lookup."); + plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() { + @Override + public void run() { + // Try loading the player's data asynchronly + final Player target = OpenInv.playerLoader.loadPlayer(uuid); + // Back to synchron to send messages and display inventory + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + Player player = Bukkit.getPlayer(playerUUID); + // If sender is no longer online after loading the target. Abort! + if (player == null) { + return; + } + openInventory(player, target); } - openInventory(player, target); - } - }); - } - }); - } else { - openInventory(player, target); + }); + } + }); + } else { + openInventory(player, target); + } + + return true; } - return true; + + return false; } private void openInventory(Player player, Player target) { @@ -128,17 +136,15 @@ public class OpenInvPluginCommand implements CommandExecutor { } // Record the target - openInvHistory.put(player, target.getName()); + openInvHistory.put(player.getUniqueId(), target.getUniqueId()); // Create the inventory - ISpecialPlayerInventory inv = OpenInv.inventories.get(target.getName().toLowerCase()); + SpecialPlayerInventory inv = OpenInv.inventories.get(target.getUniqueId()); if (inv == null) { - inv = InternalAccessor.Instance.newSpecialPlayerInventory(target, target.isOnline()); + inv = new SpecialPlayerInventory(target, target.isOnline()); } // Open the inventory player.openInventory(inv.getBukkitInventory()); - - return; } } diff --git a/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java b/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java index 0e75a08..968e1ab 100644 --- a/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java @@ -28,50 +28,52 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; public class SearchInvPluginCommand implements CommandExecutor { - public SearchInvPluginCommand() { - - } - + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (sender instanceof Player) { - if (!OpenInv.hasPermission(sender, Permissions.PERM_SEARCH)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to access player inventories"); - return true; + if (command.getName().equalsIgnoreCase("searchinv")) { + if (sender instanceof Player) { + if (!OpenInv.hasPermission(sender, Permissions.PERM_SEARCH)) { + sender.sendMessage(ChatColor.RED + "You do not have permission to access player inventories"); + return true; + } } - } - String PlayerList = ""; + String playerList = ""; - Material material = null; - int count = 1; + Material material = null; + int count = 1; - if (args.length >= 1) { - String[] gData = null; - gData = args[0].split(":"); - material = Material.matchMaterial(gData[0]); - } - if (args.length >= 2) { - try { - count = Integer.parseInt(args[1]); + if (args.length >= 1) { + String[] gData = null; + gData = args[0].split(":"); + material = Material.matchMaterial(gData[0]); } - catch (NumberFormatException ex) { - sender.sendMessage(ChatColor.RED + "'" + args[1] + "' is not a number!"); + if (args.length >= 2) { + try { + count = Integer.parseInt(args[1]); + } + catch (NumberFormatException ex) { + sender.sendMessage(ChatColor.RED + "'" + args[1] + "' is not a number!"); + return false; + } + } + + if (material == null) { + sender.sendMessage(ChatColor.RED + "Unknown item"); return false; } - } - if (material == null) { - sender.sendMessage(ChatColor.RED + "Unknown item"); - return false; - } - - for (Player templayer : Bukkit.getServer().getOnlinePlayers()) { - if (templayer.getInventory().contains(material, count)) { - PlayerList += templayer.getName() + " "; + for (Player templayer : Bukkit.getServer().getOnlinePlayers()) { + if (templayer.getInventory().contains(material, count)) { + playerList += templayer.getName() + " "; + } } + + sender.sendMessage("Players with the item " + material.toString() + ": " + playerList); + + return true; } - sender.sendMessage("Players with the item " + material.toString() + ": " + PlayerList); - return true; + return false; } } diff --git a/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java b/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java index 4dfbb7f..f698431 100644 --- a/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java @@ -26,32 +26,33 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; public class SilentChestPluginCommand implements CommandExecutor { - public SilentChestPluginCommand(OpenInv 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; - } - if (!OpenInv.hasPermission(sender, Permissions.PERM_SILENT)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to use silent chest."); - return true; - } - - if (args.length > 0) { - if (args[0].equalsIgnoreCase("check")) { - if (OpenInv.GetPlayerSilentChestStatus(sender.getName())) - sender.sendMessage("SilentChest is ON."); - else - sender.sendMessage("SilentChest is OFF."); + if (command.getName().equalsIgnoreCase("silentchest")) { + if (!(sender instanceof Player)) { + sender.sendMessage(ChatColor.RED + "You can't use this from the console."); + return true; } + if (!OpenInv.hasPermission(sender, Permissions.PERM_SILENT)) { + sender.sendMessage(ChatColor.RED + "You do not have permission to use silent chest."); + return true; + } + + if (args.length > 0) { + if (args[0].equalsIgnoreCase("check")) { + if (OpenInv.GetPlayerSilentChestStatus(sender.getName())) + 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") + "."); + + return true; } - OpenInv.SetPlayerSilentChestStatus(sender.getName(), !OpenInv.GetPlayerSilentChestStatus(sender.getName())); - sender.sendMessage("SilentChest is now " + (OpenInv.GetPlayerSilentChestStatus(sender.getName()) ? "On" : "Off") + "."); - - return true; + return false; } } diff --git a/src/main/java/com/lishid/openinv/commands/ToggleOpenInvPluginCommand.java b/src/main/java/com/lishid/openinv/commands/ToggleOpenInvPluginCommand.java index 005239f..0ba0fb7 100644 --- a/src/main/java/com/lishid/openinv/commands/ToggleOpenInvPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/ToggleOpenInvPluginCommand.java @@ -26,35 +26,40 @@ import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; +@SuppressWarnings("deprecation") public class ToggleOpenInvPluginCommand implements CommandExecutor { - + @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; - } - if (!OpenInv.hasPermission(sender, Permissions.PERM_OPENINV)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to access player inventories"); + if (command.getName().equalsIgnoreCase("toggleopeninv")) { + if (!(sender instanceof Player)) { + sender.sendMessage(ChatColor.RED + "You can't use this from the console."); + return true; + } + if (!OpenInv.hasPermission(sender, Permissions.PERM_OPENINV)) { + sender.sendMessage(ChatColor.RED + "You do not have permission to access player inventories"); + return true; + } + + Player player = (Player) sender; + if (args.length > 0) { + if (args[0].equalsIgnoreCase("check")) { + if (OpenInv.GetPlayerItemOpenInvStatus(player.getName())) + player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.GetItemOpenInvItem()).toString() + " is ON."); + else + player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.GetItemOpenInvItem()).toString() + " is OFF."); + } + } + if (OpenInv.GetPlayerItemOpenInvStatus(player.getName())) { + OpenInv.SetPlayerItemOpenInvStatus(player.getName(), false); + player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.GetItemOpenInvItem()).toString() + " is OFF."); + } + else { + OpenInv.SetPlayerItemOpenInvStatus(player.getName(), true); + player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.GetItemOpenInvItem()).toString() + " is ON."); + } return true; } - Player player = (Player) sender; - if (args.length > 0) { - if (args[0].equalsIgnoreCase("check")) { - if (OpenInv.GetPlayerItemOpenInvStatus(player.getName())) - player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.GetItemOpenInvItem()).toString() + " is ON."); - else - player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.GetItemOpenInvItem()).toString() + " is OFF."); - } - } - if (OpenInv.GetPlayerItemOpenInvStatus(player.getName())) { - OpenInv.SetPlayerItemOpenInvStatus(player.getName(), false); - player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.GetItemOpenInvItem()).toString() + " is OFF."); - } - else { - OpenInv.SetPlayerItemOpenInvStatus(player.getName(), true); - player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.GetItemOpenInvItem()).toString() + " is ON."); - } - return true; + return false; } } diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java similarity index 97% rename from src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentChest.java rename to src/main/java/com/lishid/openinv/internal/AnySilentChest.java index 56a2f33..47b6421 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentChest.java +++ b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java @@ -14,22 +14,20 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_8_R3; +package com.lishid.openinv.internal; import java.util.Iterator; import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - //Volatile import net.minecraft.server.v1_8_R3.*; import org.bukkit.craftbukkit.v1_8_R3.entity.*; -public class AnySilentChest implements IAnySilentChest { +public class AnySilentChest { public boolean IsAnyChestNeeded(Player p, int x, int y, int z) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest BlockPosition position = new BlockPosition(x, y, z); diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R3/EnumDirectionList.java b/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java similarity index 92% rename from src/main/java/com/lishid/openinv/internal/v1_8_R3/EnumDirectionList.java rename to src/main/java/com/lishid/openinv/internal/EnumDirectionList.java index 3c18e98..7ee4c7f 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R3/EnumDirectionList.java +++ b/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java @@ -1,11 +1,12 @@ -package com.lishid.openinv.internal.v1_8_R3; - -import com.google.common.collect.Iterators; -import net.minecraft.server.v1_8_R3.EnumDirection; -import net.minecraft.server.v1_8_R3.EnumDirection.EnumDirectionLimit; +package com.lishid.openinv.internal; import java.util.Iterator; +import com.google.common.collect.Iterators; + +import net.minecraft.server.v1_8_R3.EnumDirection; +import net.minecraft.server.v1_8_R3.EnumDirection.EnumDirectionLimit; + public enum EnumDirectionList implements Iterable { HORIZONTAL(EnumDirectionLimit.HORIZONTAL), VERTICAL(EnumDirectionLimit.VERTICAL); @@ -20,5 +21,4 @@ public enum EnumDirectionList implements Iterable { public Iterator iterator() { return Iterators.forArray(list.a()); } - -} \ No newline at end of file +} diff --git a/src/main/java/com/lishid/openinv/internal/IAnySilentChest.java b/src/main/java/com/lishid/openinv/internal/IAnySilentChest.java deleted file mode 100644 index 7177763..0000000 --- a/src/main/java/com/lishid/openinv/internal/IAnySilentChest.java +++ /dev/null @@ -1,25 +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; - -import org.bukkit.entity.Player; - -public interface IAnySilentChest { - public boolean IsAnyChestNeeded(Player p, int x, int y, int z); - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z); -} diff --git a/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java b/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java deleted file mode 100644 index f49c168..0000000 --- a/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java +++ /dev/null @@ -1,24 +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; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -public interface IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player); -} diff --git a/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java deleted file mode 100644 index ce0ed2f..0000000 --- a/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java +++ /dev/null @@ -1,23 +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; - -import org.bukkit.entity.Player; - -public interface IPlayerDataManager { - public Player loadPlayer(String name); -} diff --git a/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java deleted file mode 100644 index 5c2d03c..0000000 --- a/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java +++ /dev/null @@ -1,29 +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; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -public interface ISpecialEnderChest { - public Inventory getBukkitInventory(); - - public void playerOnline(Player p); - - public void playerOffline(); - -} diff --git a/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java deleted file mode 100644 index a613721..0000000 --- a/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java +++ /dev/null @@ -1,28 +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; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -public interface ISpecialPlayerInventory { - public Inventory getBukkitInventory(); - - public void playerOnline(Player p); - - public void playerOffline(); -} diff --git a/src/main/java/com/lishid/openinv/internal/InternalAccessor.java b/src/main/java/com/lishid/openinv/internal/InternalAccessor.java deleted file mode 100644 index b8b406c..0000000 --- a/src/main/java/com/lishid/openinv/internal/InternalAccessor.java +++ /dev/null @@ -1,105 +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; - -import org.bukkit.Server; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; - -public class InternalAccessor { - public static InternalAccessor Instance; - private String version; - - /* - * Returns false if version not supported - */ - public static boolean Initialize(Server server) { - Instance = new InternalAccessor(); - String packageName = server.getClass().getPackage().getName(); - Instance.version = packageName.substring(packageName.lastIndexOf('.') + 1); - - try { - Class.forName("com.lishid.openinv.internal." + Instance.version + ".AnySilentChest"); - return true; - } - catch (Exception e) { - return false; - } - } - - public void PrintError() { - OpenInv.log("OpenInv encountered an error with the CraftBukkit version \"" + Instance.version + "\". Please look for an updated version of OpenInv."); - } - - public IPlayerDataManager newPlayerDataManager() { - return (IPlayerDataManager) createObject(IPlayerDataManager.class, "PlayerDataManager"); - } - - public IInventoryAccess newInventoryAccess() { - return (IInventoryAccess) createObject(IInventoryAccess.class, "InventoryAccess"); - } - - public IAnySilentChest newAnySilentChest() { - return (IAnySilentChest) createObject(IAnySilentChest.class, "AnySilentChest"); - } - - public ISpecialPlayerInventory newSpecialPlayerInventory(Player player, boolean offline) { - try { - Class internalClass = Class.forName("com.lishid.openinv.internal." + version + ".SpecialPlayerInventory"); - if (ISpecialPlayerInventory.class.isAssignableFrom(internalClass)) { - return (ISpecialPlayerInventory) internalClass.getConstructor(Player.class, Boolean.class).newInstance(player, offline); - } - } - catch (Exception e) { - PrintError(); - OpenInv.log(e); - } - - return null; - } - - public ISpecialEnderChest newSpecialEnderChest(Player player, boolean offline) { - try { - Class internalClass = Class.forName("com.lishid.openinv.internal." + version + ".SpecialEnderChest"); - if (ISpecialEnderChest.class.isAssignableFrom(internalClass)) { - return (ISpecialEnderChest) internalClass.getConstructor(Player.class, Boolean.class).newInstance(player, offline); - } - } - catch (Exception e) { - PrintError(); - OpenInv.log(e); - } - - return null; - } - - private Object createObject(Class assignableClass, String className) { - try { - Class internalClass = Class.forName("com.lishid.openinv.internal." + version + "." + className); - if (assignableClass.isAssignableFrom(internalClass)) { - return internalClass.getConstructor().newInstance(); - } - } - catch (Exception e) { - PrintError(); - OpenInv.log(e); - } - - return null; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java similarity index 93% rename from src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java rename to src/main/java/com/lishid/openinv/internal/InventoryAccess.java index 86a85d3..97931f4 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java +++ b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java @@ -14,23 +14,22 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_8_R3; +package com.lishid.openinv.internal; import java.lang.reflect.Field; - import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.Inventory; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; //Volatile import net.minecraft.server.v1_8_R3.*; + import org.bukkit.craftbukkit.v1_8_R3.inventory.*; -public class InventoryAccess implements IInventoryAccess { +public class InventoryAccess { public boolean check(Inventory inventory, HumanEntity player) { IInventory inv = grabInventory(inventory); diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java similarity index 55% rename from src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java rename to src/main/java/com/lishid/openinv/internal/PlayerDataManager.java index 2a0b2b2..d0ee87e 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java +++ b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java @@ -14,7 +14,7 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_8_R3; +package com.lishid.openinv.internal; import java.util.UUID; @@ -23,7 +23,6 @@ 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 @@ -31,14 +30,9 @@ import net.minecraft.server.v1_8_R3.*; import org.bukkit.craftbukkit.v1_8_R3.*; -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { +public class PlayerDataManager { + public Player loadPlayer(UUID uuid) { try { - UUID uuid = matchUser(name); - if (uuid == null) { - return null; - } - OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); if (player == null) { return null; @@ -63,39 +57,4 @@ public class PlayerDataManager implements IPlayerDataManager { return null; } - - private static UUID matchUser(String search) { - OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(search); - if (offlinePlayer != null && offlinePlayer.hasPlayedBefore()) { - return offlinePlayer.getUniqueId(); - } - 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; - } } diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java similarity index 95% rename from src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java rename to src/main/java/com/lishid/openinv/internal/SilentContainerChest.java index 4352ef1..bc923e0 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java +++ b/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java @@ -14,12 +14,11 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_8_R3; +package com.lishid.openinv.internal; //Volatile import net.minecraft.server.v1_8_R3.*; - public class SilentContainerChest extends ContainerChest { public IInventory inv; @@ -34,4 +33,4 @@ public class SilentContainerChest extends ContainerChest { public void b(EntityHuman paramEntityHuman) { // Don't send close signal twice, might screw up } -} \ No newline at end of file +} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentInventory.java b/src/main/java/com/lishid/openinv/internal/SilentInventory.java similarity index 97% rename from src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentInventory.java rename to src/main/java/com/lishid/openinv/internal/SilentInventory.java index 65f93fa..3061142 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SilentInventory.java @@ -1,11 +1,13 @@ -package com.lishid.openinv.internal.v1_8_R3; +package com.lishid.openinv.internal; + +import java.util.List; -import net.minecraft.server.v1_8_R3.*; import org.bukkit.craftbukkit.v1_8_R3.entity.CraftHumanEntity; import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.InventoryHolder; -import java.util.List; +//Volatile +import net.minecraft.server.v1_8_R3.*; public class SilentInventory implements ITileInventory { public ITileInventory inv; @@ -109,12 +111,10 @@ public class SilentInventory implements ITileInventory { return inv.getContents(); } - @Override public void onOpen(CraftHumanEntity craftHumanEntity) { inv.onOpen(craftHumanEntity); } - @Override public void onClose(CraftHumanEntity craftHumanEntity) { inv.onClose(craftHumanEntity); } @@ -159,4 +159,4 @@ public class SilentInventory implements ITileInventory { public String getContainerName() { return inv.getContainerName(); } -} \ No newline at end of file +} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java similarity index 88% rename from src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java rename to src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java index e5c9137..75f4d95 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java @@ -14,21 +14,20 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_8_R3; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; +package com.lishid.openinv.internal; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; +import com.lishid.openinv.OpenInv; + //Volatile import net.minecraft.server.v1_8_R3.*; import org.bukkit.craftbukkit.v1_8_R3.entity.*; import org.bukkit.craftbukkit.v1_8_R3.inventory.*; -public class SpecialEnderChest extends InventorySubcontainer implements ISpecialEnderChest { +public class SpecialEnderChest extends InventorySubcontainer { private CraftInventory inventory = new CraftInventory(this); private InventoryEnderChest enderChest; private CraftPlayer owner; @@ -44,13 +43,13 @@ public class SpecialEnderChest extends InventorySubcontainer implements ISpecial this.enderChest = enderchest; this.items = enderChest.getContents(); this.playerOnline = online; - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); + OpenInv.enderChests.put(owner.getUniqueId(), this); } private void saveOnExit() { if (transaction.isEmpty() && !playerOnline) { owner.saveData(); - OpenInv.enderChests.remove(owner.getName().toLowerCase()); + OpenInv.enderChests.remove(owner.getUniqueId()); } } diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java similarity index 94% rename from src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java rename to src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index 09f4cba..48cdcdd 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -14,21 +14,19 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_8_R3; +package com.lishid.openinv.internal; import org.bukkit.entity.Player; - import org.bukkit.inventory.Inventory; import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; //Volatile import net.minecraft.server.v1_8_R3.*; import org.bukkit.craftbukkit.v1_8_R3.entity.*; import org.bukkit.craftbukkit.v1_8_R3.inventory.*; -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { +public class SpecialPlayerInventory extends PlayerInventory { private CraftInventory inventory = new CraftInventory(this); private ItemStack[] extra = new ItemStack[5]; private CraftPlayer owner; @@ -40,7 +38,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.items = player.inventory.items; this.armor = player.inventory.armor; this.playerOnline = online; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); + OpenInv.inventories.put(owner.getUniqueId(), this); } public Inventory getBukkitInventory() { @@ -50,7 +48,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private void saveOnExit() { if (transaction.isEmpty() && !playerOnline) { owner.saveData(); - OpenInv.inventories.remove(owner.getName().toLowerCase()); + OpenInv.inventories.remove(owner.getUniqueId()); } } @@ -250,4 +248,4 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP super.update(); player.inventory.update(); } -} \ No newline at end of file +} diff --git a/src/main/java/com/lishid/openinv/internal/craftbukkit/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/craftbukkit/AnySilentChest.java deleted file mode 100644 index df0b089..0000000 --- a/src/main/java/com/lishid/openinv/internal/craftbukkit/AnySilentChest.java +++ /dev/null @@ -1,120 +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.craftbukkit; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.*; - -import org.bukkit.craftbukkit.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.s(x, y + 1, z)) - return true; - - // If block next to chest is chest and has a block on top - if ((world.getTypeId(x - 1, y, z) == Block.CHEST.id) && (world.s(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == Block.CHEST.id) && (world.s(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == Block.CHEST.id) && (world.s(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == Block.CHEST.id) && (world.s(x, y + 1, z + 1))) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - if (!anychest) { - if (world.s(x, y + 1, z)) - return true; - if ((world.getTypeId(x - 1, y, z) == Block.CHEST.id) && (world.s(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == Block.CHEST.id) && (world.s(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == Block.CHEST.id) && (world.s(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == Block.CHEST.id) && (world.s(x, y + 1, z + 1))) - return true; - } - - if (world.getTypeId(x - 1, y, z) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (world.getTypeId(x + 1, y, z) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (world.getTypeId(x, y, z - 1) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (world.getTypeId(x, y, z + 1) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int id = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - id = windowID.getInt(player); - id = id % 100 + 1; - windowID.setInt(player, id); - } - catch (NoSuchFieldException e) {} - - player.netServerHandler.sendPacket(new Packet100OpenWindow(id, 0, ((IInventory) chest).getName(), ((IInventory) chest).getSize())); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = id; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/craftbukkit/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/craftbukkit/InventoryAccess.java deleted file mode 100644 index 3ac3352..0000000 --- a/src/main/java/com/lishid/openinv/internal/craftbukkit/InventoryAccess.java +++ /dev/null @@ -1,48 +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.craftbukkit; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.*; -import org.bukkit.craftbukkit.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/craftbukkit/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/craftbukkit/PlayerDataManager.java deleted file mode 100644 index 6a67c37..0000000 --- a/src/main/java/com/lishid/openinv/internal/craftbukkit/PlayerDataManager.java +++ /dev/null @@ -1,97 +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.craftbukkit; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; - -//Volatile -import net.minecraft.server.*; -import org.bukkit.craftbukkit.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), playername, new ItemInWorldManager(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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/craftbukkit/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/craftbukkit/SilentContainerChest.java deleted file mode 100644 index a5128f0..0000000 --- a/src/main/java/com/lishid/openinv/internal/craftbukkit/SilentContainerChest.java +++ /dev/null @@ -1,36 +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.craftbukkit; - -//Volatile -import net.minecraft.server.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.f(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialEnderChest.java deleted file mode 100644 index 2d45c2e..0000000 --- a/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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.craftbukkit; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.*; -import org.bukkit.craftbukkit.entity.*; -import org.bukkit.craftbukkit.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void playerOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void playerOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java deleted file mode 100644 index 680c695..0000000 --- a/src/main/java/com/lishid/openinv/internal/craftbukkit/SpecialPlayerInventory.java +++ /dev/null @@ -1,252 +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.craftbukkit; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.*; -import org.bukkit.craftbukkit.entity.*; -import org.bukkit.craftbukkit.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void playerOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void playerOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(armor, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.name.length() > 16) { - return player.name.substring(0, 16); - } - return player.name; - } - - @Override - public boolean a_(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentChest.java deleted file mode 100644 index 50d6921..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentChest.java +++ /dev/null @@ -1,120 +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_4_5; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_4_5.*; - -import org.bukkit.craftbukkit.v1_4_5.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.s(x, y + 1, z)) - return true; - - // If block next to chest is chest and has a block on top - if ((world.getTypeId(x - 1, y, z) == Block.CHEST.id) && (world.s(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == Block.CHEST.id) && (world.s(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == Block.CHEST.id) && (world.s(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == Block.CHEST.id) && (world.s(x, y + 1, z + 1))) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - if (!anychest) { - if (world.s(x, y + 1, z)) - return true; - if ((world.getTypeId(x - 1, y, z) == Block.CHEST.id) && (world.s(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == Block.CHEST.id) && (world.s(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == Block.CHEST.id) && (world.s(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == Block.CHEST.id) && (world.s(x, y + 1, z + 1))) - return true; - } - - if (world.getTypeId(x - 1, y, z) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (world.getTypeId(x + 1, y, z) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (world.getTypeId(x, y, z - 1) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (world.getTypeId(x, y, z + 1) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int id = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - id = windowID.getInt(player); - id = id % 100 + 1; - windowID.setInt(player, id); - } - catch (NoSuchFieldException e) {} - - player.netServerHandler.sendPacket(new Packet100OpenWindow(id, 0, ((IInventory) chest).getName(), ((IInventory) chest).getSize())); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = id; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java deleted file mode 100644 index b4f6d7e..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java +++ /dev/null @@ -1,48 +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_4_5; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_4_5.*; -import org.bukkit.craftbukkit.v1_4_5.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java deleted file mode 100644 index 9138717..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java +++ /dev/null @@ -1,97 +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_4_5; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; - -//Volatile -import net.minecraft.server.v1_4_5.*; -import org.bukkit.craftbukkit.v1_4_5.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), playername, new ItemInWorldManager(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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java deleted file mode 100644 index 9663096..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_4_5; - -//Volatile -import net.minecraft.server.v1_4_5.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.f(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java deleted file mode 100644 index 74a51f9..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_4_5; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_4_5.*; -import org.bukkit.craftbukkit.v1_4_5.entity.*; -import org.bukkit.craftbukkit.v1_4_5.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void playerOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void playerOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java deleted file mode 100644 index e1029fa..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java +++ /dev/null @@ -1,252 +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_4_5; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_4_5.*; -import org.bukkit.craftbukkit.v1_4_5.entity.*; -import org.bukkit.craftbukkit.v1_4_5.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void playerOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void playerOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(armor, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.name.length() > 16) { - return player.name.substring(0, 16); - } - return player.name; - } - - @Override - public boolean a_(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentChest.java deleted file mode 100644 index ea08779..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentChest.java +++ /dev/null @@ -1,120 +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_4_6; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_4_6.*; - -import org.bukkit.craftbukkit.v1_4_6.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.s(x, y + 1, z)) - return true; - - // If block next to chest is chest and has a block on top - if ((world.getTypeId(x - 1, y, z) == Block.CHEST.id) && (world.s(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == Block.CHEST.id) && (world.s(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == Block.CHEST.id) && (world.s(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == Block.CHEST.id) && (world.s(x, y + 1, z + 1))) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - if (!anychest) { - if (world.s(x, y + 1, z)) - return true; - if ((world.getTypeId(x - 1, y, z) == Block.CHEST.id) && (world.s(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == Block.CHEST.id) && (world.s(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == Block.CHEST.id) && (world.s(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == Block.CHEST.id) && (world.s(x, y + 1, z + 1))) - return true; - } - - if (world.getTypeId(x - 1, y, z) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (world.getTypeId(x + 1, y, z) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (world.getTypeId(x, y, z - 1) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (world.getTypeId(x, y, z + 1) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int id = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - id = windowID.getInt(player); - id = id % 100 + 1; - windowID.setInt(player, id); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new Packet100OpenWindow(id, 0, ((IInventory) chest).getName(), ((IInventory) chest).getSize())); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = id; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java deleted file mode 100644 index b71024c..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java +++ /dev/null @@ -1,48 +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_4_6; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_4_6.*; -import org.bukkit.craftbukkit.v1_4_6.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java deleted file mode 100644 index 84b37ad..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java +++ /dev/null @@ -1,97 +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_4_6; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; - -//Volatile -import net.minecraft.server.v1_4_6.*; -import org.bukkit.craftbukkit.v1_4_6.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), playername, 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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java deleted file mode 100644 index e245206..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_4_6; - -//Volatile -import net.minecraft.server.v1_4_6.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.f(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java deleted file mode 100644 index fbbb96f..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_4_6; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_4_6.*; -import org.bukkit.craftbukkit.v1_4_6.entity.*; -import org.bukkit.craftbukkit.v1_4_6.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void playerOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void playerOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java deleted file mode 100644 index 631e732..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java +++ /dev/null @@ -1,252 +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_4_6; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_4_6.*; -import org.bukkit.craftbukkit.v1_4_6.entity.*; -import org.bukkit.craftbukkit.v1_4_6.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void playerOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void playerOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(armor, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.name.length() > 16) { - return player.name.substring(0, 16); - } - return player.name; - } - - @Override - public boolean a_(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentChest.java deleted file mode 100644 index aa21018..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentChest.java +++ /dev/null @@ -1,120 +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_4_R1; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_4_R1.*; - -import org.bukkit.craftbukkit.v1_4_R1.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.s(x, y + 1, z)) - return true; - - // If block next to chest is chest and has a block on top - if ((world.getTypeId(x - 1, y, z) == Block.CHEST.id) && (world.s(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == Block.CHEST.id) && (world.s(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == Block.CHEST.id) && (world.s(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == Block.CHEST.id) && (world.s(x, y + 1, z + 1))) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - if (!anychest) { - if (world.s(x, y + 1, z)) - return true; - if ((world.getTypeId(x - 1, y, z) == Block.CHEST.id) && (world.s(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == Block.CHEST.id) && (world.s(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == Block.CHEST.id) && (world.s(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == Block.CHEST.id) && (world.s(x, y + 1, z + 1))) - return true; - } - - if (world.getTypeId(x - 1, y, z) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (world.getTypeId(x + 1, y, z) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (world.getTypeId(x, y, z - 1) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (world.getTypeId(x, y, z + 1) == Block.CHEST.id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int id = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - id = windowID.getInt(player); - id = id % 100 + 1; - windowID.setInt(player, id); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new Packet100OpenWindow(id, 0, ((IInventory) chest).getName(), ((IInventory) chest).getSize())); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = id; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java deleted file mode 100644 index 6ac96fe..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java +++ /dev/null @@ -1,48 +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_4_R1; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_4_R1.*; -import org.bukkit.craftbukkit.v1_4_R1.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java deleted file mode 100644 index 0f69936..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java +++ /dev/null @@ -1,97 +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_4_R1; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; - -//Volatile -import net.minecraft.server.v1_4_R1.*; -import org.bukkit.craftbukkit.v1_4_R1.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), playername, 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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java deleted file mode 100644 index 7364a38..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_4_R1; - -//Volatile -import net.minecraft.server.v1_4_R1.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.f(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java deleted file mode 100644 index 00a0c5e..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_4_R1; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_4_R1.*; -import org.bukkit.craftbukkit.v1_4_R1.entity.*; -import org.bukkit.craftbukkit.v1_4_R1.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void playerOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void playerOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java deleted file mode 100644 index d39c6a7..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java +++ /dev/null @@ -1,252 +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_4_R1; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_4_R1.*; -import org.bukkit.craftbukkit.v1_4_R1.entity.*; -import org.bukkit.craftbukkit.v1_4_R1.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void playerOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void playerOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(armor, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.name.length() > 16) { - return player.name.substring(0, 16); - } - return player.name; - } - - @Override - public boolean a_(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentChest.java deleted file mode 100644 index f91b90e..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentChest.java +++ /dev/null @@ -1,124 +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_5_R2; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_5_R2.*; - -import org.bukkit.craftbukkit.v1_5_R2.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.t(x, y + 1, z)) - return true; - - int id = world.getTypeId(x, y, z); - - // If block next to chest is chest and has a block on top - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - int id = world.getTypeId(x, y, z); - - if (!anychest) { - if (world.t(x, y + 1, z)) - return true; - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - } - - if (world.getTypeId(x - 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (world.getTypeId(x + 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (world.getTypeId(x, y, z - 1) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (world.getTypeId(x, y, z + 1) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) chest).getName(), ((IInventory) chest).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java deleted file mode 100644 index 56bc450..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java +++ /dev/null @@ -1,48 +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_5_R2; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_5_R2.*; -import org.bukkit.craftbukkit.v1_5_R2.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java deleted file mode 100644 index 6768a97..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java +++ /dev/null @@ -1,97 +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_5_R2; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; - -//Volatile -import net.minecraft.server.v1_5_R2.*; -import org.bukkit.craftbukkit.v1_5_R2.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), playername, new PlayerInteractManager((World) 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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java deleted file mode 100644 index 4eb0ecb..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_5_R2; - -//Volatile -import net.minecraft.server.v1_5_R2.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.g(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java deleted file mode 100644 index 0ee7079..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_5_R2; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_5_R2.*; -import org.bukkit.craftbukkit.v1_5_R2.entity.*; -import org.bukkit.craftbukkit.v1_5_R2.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().c(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void playerOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void playerOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java deleted file mode 100644 index da08414..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java +++ /dev/null @@ -1,252 +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_5_R2; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_5_R2.*; -import org.bukkit.craftbukkit.v1_5_R2.entity.*; -import org.bukkit.craftbukkit.v1_5_R2.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void playerOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void playerOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(armor, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.name.length() > 16) { - return player.name.substring(0, 16); - } - return player.name; - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentChest.java deleted file mode 100644 index 0f3805c..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentChest.java +++ /dev/null @@ -1,126 +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_5_R3; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -import com.lishid.openinv.internal.v1_5_R3.SilentContainerChest; - -//Volatile -import net.minecraft.server.v1_5_R3.*; - -import org.bukkit.craftbukkit.v1_5_R3.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.t(x, y + 1, z)) - return true; - - int id = world.getTypeId(x, y, z); - - // If block next to chest is chest and has a block on top - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - int id = world.getTypeId(x, y, z); - - if (!anychest) { - if (world.t(x, y + 1, z)) - return true; - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - } - - if (world.getTypeId(x - 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (world.getTypeId(x + 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (world.getTypeId(x, y, z - 1) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (world.getTypeId(x, y, z + 1) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) chest).getName(), ((IInventory) chest).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java deleted file mode 100644 index 192619c..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java +++ /dev/null @@ -1,48 +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_5_R3; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_5_R3.*; -import org.bukkit.craftbukkit.v1_5_R3.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java deleted file mode 100644 index 82e03fc..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java +++ /dev/null @@ -1,97 +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_5_R3; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; - -//Volatile -import net.minecraft.server.v1_5_R3.*; -import org.bukkit.craftbukkit.v1_5_R3.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), playername, new PlayerInteractManager((World) 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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java deleted file mode 100644 index 66615b1..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_5_R3; - -//Volatile -import net.minecraft.server.v1_5_R3.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.g(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java deleted file mode 100644 index cf98df4..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_5_R3; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_5_R3.*; -import org.bukkit.craftbukkit.v1_5_R3.entity.*; -import org.bukkit.craftbukkit.v1_5_R3.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().c(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void playerOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void playerOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java deleted file mode 100644 index 5f5aacd..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java +++ /dev/null @@ -1,252 +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_5_R3; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_5_R3.*; -import org.bukkit.craftbukkit.v1_5_R3.entity.*; -import org.bukkit.craftbukkit.v1_5_R3.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void playerOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void playerOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(armor, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.name.length() > 16) { - return player.name.substring(0, 16); - } - return player.name; - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentChest.java deleted file mode 100644 index b081942..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentChest.java +++ /dev/null @@ -1,124 +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_6_R1; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_6_R1.*; - -import org.bukkit.craftbukkit.v1_6_R1.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.t(x, y + 1, z)) - return true; - - int id = world.getTypeId(x, y, z); - - // If block next to chest is chest and has a block on top - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - int id = world.getTypeId(x, y, z); - - if (!anychest) { - if (world.t(x, y + 1, z)) - return true; - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - } - - if (world.getTypeId(x - 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (world.getTypeId(x + 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (world.getTypeId(x, y, z - 1) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (world.getTypeId(x, y, z + 1) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) chest).getName(), ((IInventory) chest).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java deleted file mode 100644 index 15acaa7..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java +++ /dev/null @@ -1,48 +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_6_R1; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_6_R1.*; -import org.bukkit.craftbukkit.v1_6_R1.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java deleted file mode 100644 index 393eedf..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java +++ /dev/null @@ -1,97 +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_6_R1; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; - -//Volatile -import net.minecraft.server.v1_6_R1.*; -import org.bukkit.craftbukkit.v1_6_R1.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), playername, new PlayerInteractManager((World) 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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java deleted file mode 100644 index 1e63378..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_6_R1; - -//Volatile -import net.minecraft.server.v1_6_R1.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.g(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java deleted file mode 100644 index 0513edc..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_6_R1; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_6_R1.*; -import org.bukkit.craftbukkit.v1_6_R1.entity.*; -import org.bukkit.craftbukkit.v1_6_R1.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().c(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void playerOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void playerOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java deleted file mode 100644 index 8abfcfb..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java +++ /dev/null @@ -1,252 +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_6_R1; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_6_R1.*; -import org.bukkit.craftbukkit.v1_6_R1.entity.*; -import org.bukkit.craftbukkit.v1_6_R1.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void playerOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void playerOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(armor, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentChest.java deleted file mode 100644 index e516a71..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentChest.java +++ /dev/null @@ -1,124 +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_6_R2; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_6_R2.*; - -import org.bukkit.craftbukkit.v1_6_R2.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.t(x, y + 1, z)) - return true; - - int id = world.getTypeId(x, y, z); - - // If block next to chest is chest and has a block on top - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - int id = world.getTypeId(x, y, z); - - if (!anychest) { - if (world.t(x, y + 1, z)) - return true; - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - } - - if (world.getTypeId(x - 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (world.getTypeId(x + 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (world.getTypeId(x, y, z - 1) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (world.getTypeId(x, y, z + 1) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) chest).getName(), ((IInventory) chest).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java deleted file mode 100644 index 6325e80..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java +++ /dev/null @@ -1,48 +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_6_R2; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_6_R2.*; -import org.bukkit.craftbukkit.v1_6_R2.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java deleted file mode 100644 index 3143ab3..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java +++ /dev/null @@ -1,97 +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_6_R2; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; - -//Volatile -import net.minecraft.server.v1_6_R2.*; -import org.bukkit.craftbukkit.v1_6_R2.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), playername, new PlayerInteractManager((World) 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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java deleted file mode 100644 index d014f35..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_6_R2; - -//Volatile -import net.minecraft.server.v1_6_R2.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.g(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java deleted file mode 100644 index 624d07a..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_6_R2; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_6_R2.*; -import org.bukkit.craftbukkit.v1_6_R2.entity.*; -import org.bukkit.craftbukkit.v1_6_R2.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().c(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void playerOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void playerOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java deleted file mode 100644 index 6a3ee41..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java +++ /dev/null @@ -1,252 +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_6_R2; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_6_R2.*; -import org.bukkit.craftbukkit.v1_6_R2.entity.*; -import org.bukkit.craftbukkit.v1_6_R2.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void playerOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void playerOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(armor, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentChest.java deleted file mode 100644 index e2a93e7..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentChest.java +++ /dev/null @@ -1,124 +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_6_R3; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_6_R3.*; - -import org.bukkit.craftbukkit.v1_6_R3.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.t(x, y + 1, z)) - return true; - - int id = world.getTypeId(x, y, z); - - // If block next to chest is chest and has a block on top - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - int id = world.getTypeId(x, y, z); - - if (!anychest) { - if (world.t(x, y + 1, z)) - return true; - if ((world.getTypeId(x - 1, y, z) == id) && (world.t(x - 1, y + 1, z))) - return true; - if ((world.getTypeId(x + 1, y, z) == id) && (world.t(x + 1, y + 1, z))) - return true; - if ((world.getTypeId(x, y, z - 1) == id) && (world.t(x, y + 1, z - 1))) - return true; - if ((world.getTypeId(x, y, z + 1) == id) && (world.t(x, y + 1, z + 1))) - return true; - } - - if (world.getTypeId(x - 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (world.getTypeId(x + 1, y, z) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (world.getTypeId(x, y, z - 1) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (world.getTypeId(x, y, z + 1) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) chest).getName(), ((IInventory) chest).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java deleted file mode 100644 index ecf5740..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java +++ /dev/null @@ -1,48 +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_6_R3; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_6_R3.*; -import org.bukkit.craftbukkit.v1_6_R3.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java deleted file mode 100644 index e87eb7a..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java +++ /dev/null @@ -1,97 +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_6_R3; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; - -//Volatile -import net.minecraft.server.v1_6_R3.*; -import org.bukkit.craftbukkit.v1_6_R3.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), playername, new PlayerInteractManager((World) 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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java deleted file mode 100644 index 3a37b25..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_6_R3; - -//Volatile -import net.minecraft.server.v1_6_R3.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.g(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java deleted file mode 100644 index 4fc3e5e..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_6_R3; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_6_R3.*; -import org.bukkit.craftbukkit.v1_6_R3.entity.*; -import org.bukkit.craftbukkit.v1_6_R3.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().c(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void playerOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void playerOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java deleted file mode 100644 index 4d10281..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java +++ /dev/null @@ -1,252 +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_6_R3; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_6_R3.*; -import org.bukkit.craftbukkit.v1_6_R3.entity.*; -import org.bukkit.craftbukkit.v1_6_R3.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void playerOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void playerOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(armor, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentChest.java deleted file mode 100644 index 92aa7ec..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentChest.java +++ /dev/null @@ -1,124 +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_7_R1; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_7_R1.*; - -import org.bukkit.craftbukkit.v1_7_R1.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.getType(x, y + 1, z).c()) - return true; - - int id = Block.b(world.getType(x, y, z)); - - // If block next to chest is chest and has a block on top - if ((Block.b(world.getType(x - 1, y, z)) == id) && (world.getType(x - 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x + 1, y, z)) == id) && (world.getType(x + 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x, y, z - 1)) == id) && (world.getType(x, y + 1, z - 1).c())) - return true; - if ((Block.b(world.getType(x, y, z + 1)) == id) && (world.getType(x, y + 1, z + 1).c())) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - int id = Block.b(world.getType(x, y, z)); - - if (!anychest) { - if (world.getType(x, y + 1, z).c()) - return true; - if ((Block.b(world.getType(x - 1, y, z)) == id) && (world.getType(x - 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x + 1, y, z)) == id) && (world.getType(x + 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x, y, z - 1)) == id) && (world.getType(x, y + 1, z - 1).c())) - return true; - if ((Block.b(world.getType(x, y, z + 1)) == id) && (world.getType(x, y + 1, z + 1).c())) - return true; - } - - if (Block.b(world.getType(x - 1, y, z)) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (Block.b(world.getType(x + 1, y, z)) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (Block.b(world.getType(x, y, z - 1)) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (Block.b(world.getType(x, y, z + 1)) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) chest).getInventoryName(), ((IInventory) chest).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java deleted file mode 100644 index 6121bcb..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java +++ /dev/null @@ -1,48 +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_7_R1; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_7_R1.*; -import org.bukkit.craftbukkit.v1_7_R1.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java deleted file mode 100644 index 96423ce..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java +++ /dev/null @@ -1,99 +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_7_R1; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; -import net.minecraft.util.com.mojang.authlib.GameProfile; - -//Volatile -import net.minecraft.server.v1_7_R1.*; -import org.bukkit.craftbukkit.v1_7_R1.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - GameProfile profile = new GameProfile(null, playername); - // 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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java deleted file mode 100644 index eaf44e3..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_7_R1; - -//Volatile -import net.minecraft.server.v1_7_R1.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.l_(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java deleted file mode 100644 index c203684..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_7_R1; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_7_R1.*; -import org.bukkit.craftbukkit.v1_7_R1.entity.*; -import org.bukkit.craftbukkit.v1_7_R1.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getInventoryName(), ((CraftPlayer) p).getHandle().getEnderChest().k_(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void playerOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void playerOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java deleted file mode 100644 index efaaa90..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java +++ /dev/null @@ -1,252 +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_7_R1; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_7_R1.*; -import org.bukkit.craftbukkit.v1_7_R1.entity.*; -import org.bukkit.craftbukkit.v1_7_R1.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void playerOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void playerOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(armor, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getInventoryName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentChest.java deleted file mode 100644 index ef4e932..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentChest.java +++ /dev/null @@ -1,124 +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_7_R2; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_7_R2.*; - -import org.bukkit.craftbukkit.v1_7_R2.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.getType(x, y + 1, z).c()) - return true; - - int id = Block.b(world.getType(x, y, z)); - - // If block next to chest is chest and has a block on top - if ((Block.b(world.getType(x - 1, y, z)) == id) && (world.getType(x - 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x + 1, y, z)) == id) && (world.getType(x + 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x, y, z - 1)) == id) && (world.getType(x, y + 1, z - 1).c())) - return true; - if ((Block.b(world.getType(x, y, z + 1)) == id) && (world.getType(x, y + 1, z + 1).c())) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - int id = Block.b(world.getType(x, y, z)); - - if (!anychest) { - if (world.getType(x, y + 1, z).c()) - return true; - if ((Block.b(world.getType(x - 1, y, z)) == id) && (world.getType(x - 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x + 1, y, z)) == id) && (world.getType(x + 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x, y, z - 1)) == id) && (world.getType(x, y + 1, z - 1).c())) - return true; - if ((Block.b(world.getType(x, y, z + 1)) == id) && (world.getType(x, y + 1, z + 1).c())) - return true; - } - - if (Block.b(world.getType(x - 1, y, z)) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (Block.b(world.getType(x + 1, y, z)) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (Block.b(world.getType(x, y, z - 1)) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (Block.b(world.getType(x, y, z + 1)) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) chest).getInventoryName(), ((IInventory) chest).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java deleted file mode 100644 index 5d04cd3..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java +++ /dev/null @@ -1,48 +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_7_R2; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_7_R2.*; -import org.bukkit.craftbukkit.v1_7_R2.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java deleted file mode 100644 index 35ce584..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java +++ /dev/null @@ -1,99 +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_7_R2; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; -import net.minecraft.util.com.mojang.authlib.GameProfile; - -//Volatile -import net.minecraft.server.v1_7_R2.*; -import org.bukkit.craftbukkit.v1_7_R2.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - // Default player folder - File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "players"); - if (!playerfolder.exists()) { - return null; - } - - String playername = matchUser(Arrays.asList(playerfolder.listFiles()), name); - - if (playername == null) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - GameProfile profile = new GameProfile(null, playername); - // 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; - } - - /** - * @author Balor (aka Antoine Aflalo) - */ - private static String matchUser(final Collection container, final String search) { - String found = null; - if (search == null) { - return found; - } - final String lowerSearch = search.toLowerCase(); - int delta = Integer.MAX_VALUE; - for (final File file : container) { - final String filename = file.getName(); - final String str = filename.substring(0, filename.length() - 4); - if (!str.toLowerCase().startsWith(lowerSearch)) { - continue; - } - final int curDelta = str.length() - lowerSearch.length(); - if (curDelta < delta) { - found = str; - delta = curDelta; - } - if (curDelta == 0) { - break; - } - - } - return found; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java deleted file mode 100644 index ef092cb..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_7_R2; - -//Volatile -import net.minecraft.server.v1_7_R2.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.l_(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java deleted file mode 100644 index fc1f6bb..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_7_R2; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_7_R2.*; -import org.bukkit.craftbukkit.v1_7_R2.entity.*; -import org.bukkit.craftbukkit.v1_7_R2.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getInventoryName(), ((CraftPlayer) p).getHandle().getEnderChest().k_(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void playerOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void playerOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java deleted file mode 100644 index 436299a..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java +++ /dev/null @@ -1,252 +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_7_R2; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_7_R2.*; -import org.bukkit.craftbukkit.v1_7_R2.entity.*; -import org.bukkit.craftbukkit.v1_7_R2.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void playerOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void playerOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(armor, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getInventoryName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentChest.java deleted file mode 100644 index 7eb95a5..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentChest.java +++ /dev/null @@ -1,124 +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_7_R3; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_7_R3.*; - -import org.bukkit.craftbukkit.v1_7_R3.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - // If block on top - if (world.getType(x, y + 1, z).c()) - return true; - - int id = Block.b(world.getType(x, y, z)); - - // If block next to chest is chest and has a block on top - if ((Block.b(world.getType(x - 1, y, z)) == id) && (world.getType(x - 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x + 1, y, z)) == id) && (world.getType(x + 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x, y, z - 1)) == id) && (world.getType(x, y + 1, z - 1).c())) - return true; - if ((Block.b(world.getType(x, y, z + 1)) == id) && (world.getType(x, y + 1, z + 1).c())) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - int id = Block.b(world.getType(x, y, z)); - - if (!anychest) { - if (world.getType(x, y + 1, z).c()) - return true; - if ((Block.b(world.getType(x - 1, y, z)) == id) && (world.getType(x - 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x + 1, y, z)) == id) && (world.getType(x + 1, y + 1, z).c())) - return true; - if ((Block.b(world.getType(x, y, z - 1)) == id) && (world.getType(x, y + 1, z - 1).c())) - return true; - if ((Block.b(world.getType(x, y, z + 1)) == id) && (world.getType(x, y + 1, z + 1).c())) - return true; - } - - if (Block.b(world.getType(x - 1, y, z)) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (Block.b(world.getType(x + 1, y, z)) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (Block.b(world.getType(x, y, z - 1)) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (Block.b(world.getType(x, y, z + 1)) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) chest).getInventoryName(), ((IInventory) chest).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java deleted file mode 100644 index 234fd2b..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java +++ /dev/null @@ -1,48 +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_7_R3; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_7_R3.*; -import org.bukkit.craftbukkit.v1_7_R3.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = ((CraftInventory) inventory).getInventory(); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java deleted file mode 100644 index 6326403..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java +++ /dev/null @@ -1,105 +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_7_R3; - -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 net.minecraft.util.com.mojang.authlib.GameProfile; - -//Volatile -import net.minecraft.server.v1_7_R3.*; - -import org.bukkit.craftbukkit.v1_7_R3.*; - -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) { - OpenInv.log(e); - } - - return null; - } - - private static UUID matchUser(String search) { - OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(search); - if (offlinePlayer != null && offlinePlayer.hasPlayedBefore()) { - return offlinePlayer.getUniqueId(); - } - UUID found = null; - - String lowerSearch = search.toLowerCase(); - int delta = 2147483647; - - OfflinePlayer[] offlinePlayers = Bukkit.getOfflinePlayers(); - for (OfflinePlayer player : offlinePlayers) { - String name = player.getName(); - - 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; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java deleted file mode 100644 index 867e714..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_7_R3; - -//Volatile -import net.minecraft.server.v1_7_R3.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.l_(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java deleted file mode 100644 index 4e9f663..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_7_R3; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_7_R3.*; -import org.bukkit.craftbukkit.v1_7_R3.entity.*; -import org.bukkit.craftbukkit.v1_7_R3.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getInventoryName(), ((CraftPlayer) p).getHandle().getEnderChest().k_(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void playerOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void playerOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java deleted file mode 100644 index 348f8c7..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java +++ /dev/null @@ -1,252 +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_7_R3; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_7_R3.*; -import org.bukkit.craftbukkit.v1_7_R3.entity.*; -import org.bukkit.craftbukkit.v1_7_R3.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void playerOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void playerOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(armor, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getInventoryName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentChest.java deleted file mode 100644 index f51f819..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentChest.java +++ /dev/null @@ -1,125 +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_7_R4; - -import java.lang.reflect.Field; - -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -//Volatile -import net.minecraft.server.v1_7_R4.*; - -import org.bukkit.craftbukkit.v1_7_R4.entity.*; - -public class AnySilentChest implements IAnySilentChest { - 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; - - // If block on top - if (world.getType(x, y + 1, z).c()) - return true; - - int id = Block.getId(world.getType(x, y, z)); - - // If block next to chest is chest and has a block on top - if ((Block.getId(world.getType(x - 1, y, z)) == id) && (world.getType(x - 1, y + 1, z).c())) - return true; - if ((Block.getId(world.getType(x + 1, y, z)) == id) && (world.getType(x + 1, y + 1, z).c())) - return true; - if ((Block.getId(world.getType(x, y, z - 1)) == id) && (world.getType(x, y + 1, z - 1).c())) - return true; - if ((Block.getId(world.getType(x, y, z + 1)) == id) && (world.getType(x, y + 1, z + 1).c())) - return true; - - return false; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - Object chest = (TileEntityChest) world.getTileEntity(x, y, z); - if (chest == null) - return true; - - int id = Block.getId(world.getType(x, y, z)); - - if (!anychest) { - if (world.getType(x, y + 1, z).c()) - return true; - if ((Block.getId(world.getType(x - 1, y, z)) == id) && (world.getType(x - 1, y + 1, z).c())) - return true; - if ((Block.getId(world.getType(x + 1, y, z)) == id) && (world.getType(x + 1, y + 1, z).c())) - return true; - if ((Block.getId(world.getType(x, y, z - 1)) == id) && (world.getType(x, y + 1, z - 1).c())) - return true; - if ((Block.getId(world.getType(x, y, z + 1)) == id) && (world.getType(x, y + 1, z + 1).c())) - return true; - } - - if (Block.getId(world.getType(x - 1, y, z)) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x - 1, y, z), (IInventory) chest); - if (Block.getId(world.getType(x + 1, y, z)) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x + 1, y, z)); - if (Block.getId(world.getType(x, y, z - 1)) == id) - chest = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(x, y, z - 1), (IInventory) chest); - if (Block.getId(world.getType(x, y, z + 1)) == id) - chest = new InventoryLargeChest("Large chest", (IInventory) chest, (TileEntityChest) world.getTileEntity(x, y, z + 1)); - - boolean returnValue = true; - if (!silentchest) { - player.openContainer((IInventory) chest); - } - else { - try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } - catch (NoSuchFieldException e) {} - - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) chest).getInventoryName(), ((IInventory) chest).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) chest)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } - } - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java deleted file mode 100644 index 3aae59c..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java +++ /dev/null @@ -1,73 +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_7_R4; - -import java.lang.reflect.Field; - - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_7_R4.*; -import org.bukkit.craftbukkit.v1_7_R4.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = grabInventory(inventory); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } - - private IInventory grabInventory(Inventory inventory) { - if(inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory(); - } - - //Use reflection to find the iiventory - Class clazz = inventory.getClass(); - IInventory result = null; - for(Field f : clazz.getDeclaredFields()) { - f.setAccessible(true); - if(IInventory.class.isAssignableFrom(f.getDeclaringClass())) { - try { - result = (IInventory) f.get(inventory); - } - catch (Exception e) { - OpenInv.log(e); - } - } - } - return result; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java deleted file mode 100644 index 9273d63..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java +++ /dev/null @@ -1,108 +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_7_R4; - -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 net.minecraft.util.com.mojang.authlib.GameProfile; - -//Volatile -import net.minecraft.server.v1_7_R4.*; - -import org.bukkit.craftbukkit.v1_7_R4.*; - -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) { - OpenInv.log(e); - } - - return null; - } - - private static UUID matchUser(String search) { - OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(search); - if (offlinePlayer != null && offlinePlayer.hasPlayedBefore()) { - return offlinePlayer.getUniqueId(); - } - 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; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java deleted file mode 100644 index 0cbf298..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java +++ /dev/null @@ -1,36 +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_7_R4; - -//Volatile -import net.minecraft.server.v1_7_R4.*; - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - inv = i2; - // close signal - inv.closeContainer(); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java deleted file mode 100644 index 776d1cf..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java +++ /dev/null @@ -1,126 +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_7_R4; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_7_R4.*; -import org.bukkit.craftbukkit.v1_7_R4.entity.*; -import org.bukkit.craftbukkit.v1_7_R4.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - public List transaction = new ArrayList(); - public boolean playerOnline = false; - private CraftPlayer owner; - private InventoryEnderChest enderChest; - private int maxStack = MAX_STACK; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getInventoryName(), ((CraftPlayer) p).getHandle().getEnderChest().k_(), ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; - this.items = enderChest.getContents(); - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - public void playerOnline(Player p) { - if (!playerOnline) { - try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } - catch (Exception e) {} - p.saveData(); - playerOnline = true; - } - } - - public void playerOffline() { - playerOnline = false; - } - - public ItemStack[] getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - this.InventoryRemovalCheck(); - } - - public List getViewers() { - return transaction; - } - - public InventoryHolder getOwner() { - return this.owner; - } - - public void setMaxStackSize(int size) { - maxStack = size; - } - - public int getMaxStackSize() { - return maxStack; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen() { - - } - - public void f() { - - } - - public void update() { - enderChest.update(); - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java deleted file mode 100644 index d480b59..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java +++ /dev/null @@ -1,252 +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_7_R4; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_7_R4.*; -import org.bukkit.craftbukkit.v1_7_R4.entity.*; -import org.bukkit.craftbukkit.v1_7_R4.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - CraftPlayer owner; - public boolean playerOnline = false; - private ItemStack[] extra = new ItemStack[5]; - private CraftInventory inventory = new CraftInventory(this); - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = ((CraftPlayer) p); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - @Override - public Inventory getBukkitInventory() { - return inventory; - } - - public void InventoryRemovalCheck() { - owner.saveData(); - if (transaction.isEmpty() && !playerOnline) { - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - @Override - public void playerOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; - p.saveData(); - playerOnline = true; - } - } - - @Override - public void playerOffline() { - playerOnline = false; - this.InventoryRemovalCheck(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.InventoryRemovalCheck(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(armor, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getInventoryName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java deleted file mode 100644 index 30756a7..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentChest.java +++ /dev/null @@ -1,143 +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_8_R1; - -import java.util.Iterator; - -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - - -//Volatile -import net.minecraft.server.v1_8_R1.*; - -import org.bukkit.craftbukkit.v1_8_R1.entity.*; - -public class AnySilentChest implements IAnySilentChest { - public boolean IsAnyChestNeeded(Player p, int x, int y, int z) { - // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - BlockPosition position = new BlockPosition(x, y, z); - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - BlockChest chest = (BlockChest) (((BlockChest) world.getType(position).getBlock()).b == 1 ? - Block.getByName("trapped_chest") : Block.getByName("chest")); - - // If block on top - if (topBlocking(world, position)) { - return true; - } - - // If block next to chest is chest and has a block on top - for (EnumDirection direction : EnumDirectionList.HORIZONTAL) { - BlockPosition sidePosition = position.shift(direction); - Block var8 = world.getType(sidePosition).getBlock(); - if (var8 == chest) { - if (this.topBlocking(world, sidePosition)) { - return true; - } - } - } - - return false; - } - private boolean topBlocking(World world, BlockPosition position) { - return this.blockOnTop(world, position) || this.ocelotOnTop(world, position); - } - - private boolean blockOnTop(World world, BlockPosition position) { - return world.getType(position.up()).getBlock().isOccluding(); - } - - private boolean ocelotOnTop(World world, BlockPosition position) { - Iterator var3 = world.a(EntityOcelot.class, - new AxisAlignedBB((double) position.getX(), (double) (position.getY() + 1), - (double) position.getZ(), (double) (position.getX() + 1), - (double) (position.getY() + 2), (double) (position.getZ() + 1))).iterator(); - - EntityOcelot var5; - do { - if (!var3.hasNext()) { - return false; - } - - Entity var4 = (Entity) var3.next(); - var5 = (EntityOcelot) var4; - } while (!var5.isSitting()); - - return true; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - BlockPosition position = new BlockPosition(x, y, z); - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - if (world.isStatic) { - return true; - } - - BlockChest chest = (BlockChest) (((BlockChest) world.getType(position).getBlock()).b == 1 ? - Block.getByName("trapped_chest") : Block.getByName("chest")); - - TileEntity tileEntity = world.getTileEntity(position); - if (!(tileEntity instanceof TileEntityChest)) { - return true; - } - - ITileInventory tileInventory = (ITileInventory) tileEntity; - if (!anychest && this.topBlocking(world, position)) { - return true; - } - - for (EnumDirection direction : EnumDirectionList.HORIZONTAL) { - BlockPosition side = position.shift(direction); - Block block = world.getType(side).getBlock(); - if (block == chest) { - if (!anychest && this.topBlocking(world, side)) { - return true; - } - - TileEntity sideTileEntity = world.getTileEntity(side); - if (sideTileEntity instanceof TileEntityChest) { - if (direction != EnumDirection.WEST && direction != EnumDirection.NORTH) { - tileInventory = new InventoryLargeChest("container.chestDouble", tileInventory, (TileEntityChest) sideTileEntity); - } else { - tileInventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) sideTileEntity, tileInventory); - } - } - } - } - - boolean returnValue = true; - if (silentchest) { - tileInventory = new SilentInventory(tileInventory); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - - player.openContainer(tileInventory); - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/EnumDirectionList.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/EnumDirectionList.java deleted file mode 100644 index 8d7078c..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/EnumDirectionList.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.lishid.openinv.internal.v1_8_R1; - -import com.google.common.collect.Iterators; -import net.minecraft.server.v1_8_R1.*; - -import java.util.Iterator; - -public enum EnumDirectionList implements Iterable { - HORIZONTAL(EnumDirectionLimit.HORIZONTAL), - VERTICAL(EnumDirectionLimit.VERTICAL); - - private EnumDirectionLimit list; - - private EnumDirectionList(EnumDirectionLimit list) { - this.list = list; - } - - @Override - public Iterator iterator() { - return Iterators.forArray(list.a()); - } - -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java deleted file mode 100644 index c32a40a..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java +++ /dev/null @@ -1,73 +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_8_R1; - -import java.lang.reflect.Field; - - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_8_R1.*; -import org.bukkit.craftbukkit.v1_8_R1.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = grabInventory(inventory); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } - - private IInventory grabInventory(Inventory inventory) { - if(inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory(); - } - - //Use reflection to find the iiventory - Class clazz = inventory.getClass(); - IInventory result = null; - for(Field f : clazz.getDeclaredFields()) { - f.setAccessible(true); - if(IInventory.class.isAssignableFrom(f.getDeclaringClass())) { - try { - result = (IInventory) f.get(inventory); - } - catch (Exception e) { - OpenInv.log(e); - } - } - } - return result; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java deleted file mode 100644 index 6716cf1..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java +++ /dev/null @@ -1,101 +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_8_R1; - -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 net.minecraft.server.v1_8_R1.*; - -import org.bukkit.craftbukkit.v1_8_R1.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - UUID uuid = matchUser(name); - if (uuid == null) { - 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.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) { - OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(search); - if (offlinePlayer != null && offlinePlayer.hasPlayedBefore()) { - return offlinePlayer.getUniqueId(); - } - 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; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java deleted file mode 100644 index c0f55df..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java +++ /dev/null @@ -1,37 +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_8_R1; - -//Volatile -import net.minecraft.server.v1_8_R1.*; - - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman human) { - super(i1, i2, human); - inv = i2; - // close signal - inv.closeContainer(human); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentInventory.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentInventory.java deleted file mode 100644 index df15bd8..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentInventory.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.lishid.openinv.internal.v1_8_R1; - -import net.minecraft.server.v1_8_R1.*; -import org.bukkit.craftbukkit.v1_8_R1.entity.CraftHumanEntity; -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.InventoryHolder; - -import java.util.List; - -public class SilentInventory implements ITileInventory { - public ITileInventory inv; - - public SilentInventory(ITileInventory inv) { - this.inv = inv; - } - - @Override - public boolean q_() { - return inv.q_(); - } - - @Override - public void a(ChestLock chestLock) { - inv.a(chestLock); - } - - @Override - public ChestLock i() { - return inv.i(); - } - - @Override - public int getSize() { - return inv.getSize(); - } - - @Override - public ItemStack getItem(int i) { - return inv.getItem(i); - } - - @Override - public ItemStack splitStack(int i, int i1) { - return inv.splitStack(i, i1); - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - return inv.splitWithoutUpdate(i); - } - - @Override - public void setItem(int i, ItemStack itemStack) { - inv.setItem(i, itemStack); - } - - @Override - public int getMaxStackSize() { - return inv.getMaxStackSize(); - } - - @Override - public void update() { - inv.update(); - } - - @Override - public boolean a(EntityHuman entityHuman) { - return inv.a(entityHuman); - } - - @Override - public void startOpen(EntityHuman entityHuman) { - //Don't do anything - } - - @Override - public void closeContainer(EntityHuman entityHuman) { - //Don't do anything - } - - @Override - public boolean b(int i, ItemStack itemStack) { - return inv.b(i, itemStack); - } - - @Override - public int getProperty(int i) { - return inv.getProperty(i); - } - - @Override - public void b(int i, int i1) { - inv.b(i, i1); - } - - @Override - public int g() { - return inv.g(); - } - - @Override - public void l() { - inv.l(); - } - - @Override - public ItemStack[] getContents() { - return inv.getContents(); - } - - @Override - public void onOpen(CraftHumanEntity craftHumanEntity) { - inv.onOpen(craftHumanEntity); - } - - @Override - public void onClose(CraftHumanEntity craftHumanEntity) { - inv.onClose(craftHumanEntity); - } - - @Override - public List getViewers() { - return inv.getViewers(); - } - - @Override - public InventoryHolder getOwner() { - return inv.getOwner(); - } - - @Override - public void setMaxStackSize(int i) { - inv.setMaxStackSize(i); - } - - @Override - public String getName() { - return inv.getName(); - } - - @Override - public boolean hasCustomName() { - return inv.hasCustomName(); - } - - @Override - public IChatBaseComponent getScoreboardDisplayName() { - return inv.getScoreboardDisplayName(); - } - - @Override - public Container createContainer(PlayerInventory playerInventory, EntityHuman entityHuman) { - //Don't let the chest itself create the container. - return new ContainerChest(playerInventory, this, entityHuman); - } - - @Override - public String getContainerName() { - return inv.getContainerName(); - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java deleted file mode 100644 index fccee15..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java +++ /dev/null @@ -1,102 +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_8_R1; - -import java.lang.reflect.Field; - -import java.util.ArrayList; -import java.util.List; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_8_R1.*; -import org.bukkit.craftbukkit.v1_8_R1.entity.*; -import org.bukkit.craftbukkit.v1_8_R1.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements ISpecialEnderChest { - private CraftInventory inventory = new CraftInventory(this); - private InventoryEnderChest enderChest; - private CraftPlayer owner; - private boolean playerOnline = false; - - public SpecialEnderChest(Player p, Boolean online) { - this(p, ((CraftPlayer) p).getHandle().getEnderChest(), online); - } - - public SpecialEnderChest(Player p, InventoryEnderChest enderchest, boolean online) { - super(enderchest.getName(), enderchest.hasCustomName(), enderchest.getSize()); - this.owner = (CraftPlayer) p; - this.enderChest = enderchest; - this.items = enderChest.getContents(); - this.playerOnline = online; - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - private void saveOnExit() { - if (transaction.isEmpty() && !playerOnline) { - owner.saveData(); - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - private void linkInventory(InventoryEnderChest inventory) { - inventory.items = this.items; - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void playerOnline(Player p) { - if (!playerOnline) { - linkInventory(((CraftPlayer) p).getHandle().getEnderChest()); - p.saveData(); - playerOnline = true; - } - } - - public void playerOffline() { - playerOnline = false; - owner.loadData(); - linkInventory(owner.getHandle().getEnderChest()); - saveOnExit(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - saveOnExit(); - } - - @Override - public InventoryHolder getOwner() { - return this.owner; - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java deleted file mode 100644 index 79a045a..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java +++ /dev/null @@ -1,253 +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_8_R1; - -import org.bukkit.entity.Player; - -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_8_R1.*; -import org.bukkit.craftbukkit.v1_8_R1.entity.*; -import org.bukkit.craftbukkit.v1_8_R1.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - private CraftInventory inventory = new CraftInventory(this); - private ItemStack[] extra = new ItemStack[5]; - private CraftPlayer owner; - private boolean playerOnline = false; - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = (CraftPlayer) p; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - this.playerOnline = online; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - private void saveOnExit() { - if (transaction.isEmpty() && !playerOnline) { - owner.saveData(); - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - private void linkInventory(PlayerInventory inventory) { - inventory.items = this.items; - inventory.armor = this.armor; - } - - public void playerOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - linkInventory(p.getHandle().inventory); - p.saveData(); - playerOnline = true; - } - } - - public void playerOffline() { - playerOnline = false; - owner.loadData(); - linkInventory(owner.getHandle().inventory); - saveOnExit(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.saveOnExit(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(armor, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public boolean hasCustomName() { - return true; - } - - @Override - public String getName() { - return player.getName(); - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } - - @Override - public void update() { - super.update(); - player.inventory.update(); - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentChest.java deleted file mode 100644 index 6eab905..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentChest.java +++ /dev/null @@ -1,143 +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_8_R2; - -import java.util.Iterator; - -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - - -//Volatile -import net.minecraft.server.v1_8_R2.*; - -import org.bukkit.craftbukkit.v1_8_R2.entity.*; - -public class AnySilentChest implements IAnySilentChest { - public boolean IsAnyChestNeeded(Player p, int x, int y, int z) { - // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - BlockPosition position = new BlockPosition(x, y, z); - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - BlockChest chest = (BlockChest) (((BlockChest) world.getType(position).getBlock()).b == 1 ? - Block.getByName("trapped_chest") : Block.getByName("chest")); - - // If block on top - if (topBlocking(world, position)) { - return true; - } - - // If block next to chest is chest and has a block on top - for (EnumDirection direction : EnumDirectionList.HORIZONTAL) { - BlockPosition sidePosition = position.shift(direction); - Block var8 = world.getType(sidePosition).getBlock(); - if (var8 == chest) { - if (this.topBlocking(world, sidePosition)) { - return true; - } - } - } - - return false; - } - private boolean topBlocking(World world, BlockPosition position) { - return this.blockOnTop(world, position) || this.ocelotOnTop(world, position); - } - - private boolean blockOnTop(World world, BlockPosition position) { - return world.getType(position.up()).getBlock().isOccluding(); - } - - private boolean ocelotOnTop(World world, BlockPosition position) { - Iterator var3 = world.a(EntityOcelot.class, - new AxisAlignedBB((double) position.getX(), (double) (position.getY() + 1), - (double) position.getZ(), (double) (position.getX() + 1), - (double) (position.getY() + 2), (double) (position.getZ() + 1))).iterator(); - - EntityOcelot var5; - do { - if (!var3.hasNext()) { - return false; - } - - Entity var4 = (Entity) var3.next(); - var5 = (EntityOcelot) var4; - } while (!var5.isSitting()); - - return true; - } - - public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { - BlockPosition position = new BlockPosition(x, y, z); - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - if (world.isClientSide) { - return true; - } - - BlockChest chest = (BlockChest) (((BlockChest) world.getType(position).getBlock()).b == 1 ? - Block.getByName("trapped_chest") : Block.getByName("chest")); - - TileEntity tileEntity = world.getTileEntity(position); - if (!(tileEntity instanceof TileEntityChest)) { - return true; - } - - ITileInventory tileInventory = (ITileInventory) tileEntity; - if (!anychest && this.topBlocking(world, position)) { - return true; - } - - for (EnumDirection direction : EnumDirectionList.HORIZONTAL) { - BlockPosition side = position.shift(direction); - Block block = world.getType(side).getBlock(); - if (block == chest) { - if (!anychest && this.topBlocking(world, side)) { - return true; - } - - TileEntity sideTileEntity = world.getTileEntity(side); - if (sideTileEntity instanceof TileEntityChest) { - if (direction != EnumDirection.WEST && direction != EnumDirection.NORTH) { - tileInventory = new InventoryLargeChest("container.chestDouble", tileInventory, (TileEntityChest) sideTileEntity); - } else { - tileInventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) sideTileEntity, tileInventory); - } - } - } - } - - boolean returnValue = true; - if (silentchest) { - tileInventory = new SilentInventory(tileInventory); - if (OpenInv.NotifySilentChest()) { - p.sendMessage("You are opening a chest silently."); - } - returnValue = false; - } - - player.openContainer(tileInventory); - - if (anychest && OpenInv.NotifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R2/EnumDirectionList.java b/src/main/java/com/lishid/openinv/internal/v1_8_R2/EnumDirectionList.java deleted file mode 100644 index eae6abf..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R2/EnumDirectionList.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.lishid.openinv.internal.v1_8_R2; - -import com.google.common.collect.Iterators; -import net.minecraft.server.v1_8_R2.EnumDirection; -import net.minecraft.server.v1_8_R2.EnumDirection.EnumDirectionLimit; - -import java.util.Iterator; - -public enum EnumDirectionList implements Iterable { - HORIZONTAL(EnumDirectionLimit.HORIZONTAL), - VERTICAL(EnumDirectionLimit.VERTICAL); - - private EnumDirectionLimit list; - - private EnumDirectionList(EnumDirectionLimit list) { - this.list = list; - } - - @Override - public Iterator iterator() { - return Iterators.forArray(list.a()); - } - -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java deleted file mode 100644 index 0381d3b..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java +++ /dev/null @@ -1,73 +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_8_R2; - -import java.lang.reflect.Field; - - -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.IInventoryAccess; - -//Volatile -import net.minecraft.server.v1_8_R2.*; -import org.bukkit.craftbukkit.v1_8_R2.inventory.*; - -public class InventoryAccess implements IInventoryAccess { - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = grabInventory(inventory); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } - - else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } - - private IInventory grabInventory(Inventory inventory) { - if(inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory(); - } - - //Use reflection to find the inventory - Class clazz = inventory.getClass(); - IInventory result = null; - for(Field f : clazz.getDeclaredFields()) { - f.setAccessible(true); - if(IInventory.class.isAssignableFrom(f.getDeclaringClass())) { - try { - result = (IInventory) f.get(inventory); - } - catch (Exception e) { - OpenInv.log(e); - } - } - } - return result; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java deleted file mode 100644 index 6e0eb5a..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java +++ /dev/null @@ -1,101 +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_8_R2; - -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 net.minecraft.server.v1_8_R2.*; - -import org.bukkit.craftbukkit.v1_8_R2.*; - -public class PlayerDataManager implements IPlayerDataManager { - public Player loadPlayer(String name) { - try { - UUID uuid = matchUser(name); - if (uuid == null) { - 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.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) { - OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(search); - if (offlinePlayer != null && offlinePlayer.hasPlayedBefore()) { - return offlinePlayer.getUniqueId(); - } - 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; - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java deleted file mode 100644 index aaed14c..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java +++ /dev/null @@ -1,37 +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_8_R2; - -//Volatile -import net.minecraft.server.v1_8_R2.*; - - -public class SilentContainerChest extends ContainerChest { - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman human) { - super(i1, i2, human); - inv = i2; - // close signal - inv.closeContainer(human); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentInventory.java b/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentInventory.java deleted file mode 100644 index fb6c881..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentInventory.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.lishid.openinv.internal.v1_8_R2; - -import net.minecraft.server.v1_8_R2.*; -import org.bukkit.craftbukkit.v1_8_R2.entity.CraftHumanEntity; -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.InventoryHolder; - -import java.util.List; - -public class SilentInventory implements ITileInventory { - public ITileInventory inv; - - public SilentInventory(ITileInventory inv) { - this.inv = inv; - } - - @Override - public boolean r_() { - return inv.r_(); - } - - @Override - public void a(ChestLock chestLock) { - inv.a(chestLock); - } - - @Override - public ChestLock i() { - return inv.i(); - } - - @Override - public int getSize() { - return inv.getSize(); - } - - @Override - public ItemStack getItem(int i) { - return inv.getItem(i); - } - - @Override - public ItemStack splitStack(int i, int i1) { - return inv.splitStack(i, i1); - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - return inv.splitWithoutUpdate(i); - } - - @Override - public void setItem(int i, ItemStack itemStack) { - inv.setItem(i, itemStack); - } - - @Override - public int getMaxStackSize() { - return inv.getMaxStackSize(); - } - - @Override - public void update() { - inv.update(); - } - - @Override - public boolean a(EntityHuman entityHuman) { - return inv.a(entityHuman); - } - - @Override - public void startOpen(EntityHuman entityHuman) { - //Don't do anything - } - - @Override - public void closeContainer(EntityHuman entityHuman) { - //Don't do anything - } - - @Override - public boolean b(int i, ItemStack itemStack) { - return inv.b(i, itemStack); - } - - @Override - public int getProperty(int i) { - return inv.getProperty(i); - } - - @Override - public void b(int i, int i1) { - inv.b(i, i1); - } - - @Override - public int g() { - return inv.g(); - } - - @Override - public void l() { - inv.l(); - } - - @Override - public ItemStack[] getContents() { - return inv.getContents(); - } - - @Override - public void onOpen(CraftHumanEntity craftHumanEntity) { - inv.onOpen(craftHumanEntity); - } - - @Override - public void onClose(CraftHumanEntity craftHumanEntity) { - inv.onClose(craftHumanEntity); - } - - @Override - public List getViewers() { - return inv.getViewers(); - } - - @Override - public InventoryHolder getOwner() { - return inv.getOwner(); - } - - @Override - public void setMaxStackSize(int i) { - inv.setMaxStackSize(i); - } - - @Override - public String getName() { - return inv.getName(); - } - - @Override - public boolean hasCustomName() { - return inv.hasCustomName(); - } - - @Override - public IChatBaseComponent getScoreboardDisplayName() { - return inv.getScoreboardDisplayName(); - } - - @Override - public Container createContainer(PlayerInventory playerInventory, EntityHuman entityHuman) { - //Don't let the chest itself create the container. - return new ContainerChest(playerInventory, this, entityHuman); - } - - @Override - public String getContainerName() { - return inv.getContainerName(); - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java deleted file mode 100644 index 3e63216..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java +++ /dev/null @@ -1,96 +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_8_R2; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - -//Volatile -import net.minecraft.server.v1_8_R2.*; -import org.bukkit.craftbukkit.v1_8_R2.entity.*; -import org.bukkit.craftbukkit.v1_8_R2.inventory.*; - -public class SpecialEnderChest extends InventorySubcontainer implements ISpecialEnderChest { - private CraftInventory inventory = new CraftInventory(this); - private InventoryEnderChest enderChest; - private CraftPlayer owner; - private boolean playerOnline = false; - - public SpecialEnderChest(Player p, Boolean online) { - this(p, ((CraftPlayer) p).getHandle().getEnderChest(), online); - } - - public SpecialEnderChest(Player p, InventoryEnderChest enderchest, boolean online) { - super(enderchest.getName(), enderchest.hasCustomName(), enderchest.getSize()); - this.owner = (CraftPlayer) p; - this.enderChest = enderchest; - this.items = enderChest.getContents(); - this.playerOnline = online; - OpenInv.enderChests.put(owner.getName().toLowerCase(), this); - } - - private void saveOnExit() { - if (transaction.isEmpty() && !playerOnline) { - owner.saveData(); - OpenInv.enderChests.remove(owner.getName().toLowerCase()); - } - } - - private void linkInventory(InventoryEnderChest inventory) { - inventory.items = this.items; - } - - public Inventory getBukkitInventory() { - return inventory; - } - - public void playerOnline(Player p) { - if (!playerOnline) { - linkInventory(((CraftPlayer) p).getHandle().getEnderChest()); - p.saveData(); - playerOnline = true; - } - } - - public void playerOffline() { - playerOnline = false; - owner.loadData(); - linkInventory(owner.getHandle().getEnderChest()); - saveOnExit(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - saveOnExit(); - } - - @Override - public InventoryHolder getOwner() { - return this.owner; - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } -} diff --git a/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java deleted file mode 100644 index dea68ae..0000000 --- a/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java +++ /dev/null @@ -1,253 +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_8_R2; - -import org.bukkit.entity.Player; - -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -//Volatile -import net.minecraft.server.v1_8_R2.*; -import org.bukkit.craftbukkit.v1_8_R2.entity.*; -import org.bukkit.craftbukkit.v1_8_R2.inventory.*; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - private CraftInventory inventory = new CraftInventory(this); - private ItemStack[] extra = new ItemStack[5]; - private CraftPlayer owner; - private boolean playerOnline = false; - - public SpecialPlayerInventory(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = (CraftPlayer) p; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - this.playerOnline = online; - OpenInv.inventories.put(owner.getName().toLowerCase(), this); - } - - public Inventory getBukkitInventory() { - return inventory; - } - - private void saveOnExit() { - if (transaction.isEmpty() && !playerOnline) { - owner.saveData(); - OpenInv.inventories.remove(owner.getName().toLowerCase()); - } - } - - private void linkInventory(PlayerInventory inventory) { - inventory.items = this.items; - inventory.armor = this.armor; - } - - public void playerOnline(Player player) { - if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - linkInventory(p.getHandle().inventory); - p.saveData(); - playerOnline = true; - } - } - - public void playerOffline() { - playerOnline = false; - owner.loadData(); - linkInventory(owner.getHandle().inventory); - saveOnExit(); - } - - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - this.saveOnExit(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(armor, 0, C, items.length, armor.length); - return C; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - owner.getHandle().defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public boolean hasCustomName() { - return true; - } - - @Override - public String getName() { - return player.getName(); - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } - - @Override - public void update() { - super.update(); - player.inventory.update(); - } -} \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/OpenInvEntityListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java similarity index 94% rename from src/main/java/com/lishid/openinv/OpenInvEntityListener.java rename to src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java index e2a80c5..4e1ba92 100644 --- a/src/main/java/com/lishid/openinv/OpenInvEntityListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java @@ -1,52 +1,55 @@ -/* - * 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 org.bukkit.entity.Entity; -import org.bukkit.entity.Player; -import org.bukkit.event.entity.EntityDamageByEntityEvent; -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; - -public class OpenInvEntityListener implements Listener { - @EventHandler(priority = EventPriority.LOWEST) - public void onEntityDamage(EntityDamageEvent event) { - if (event instanceof EntityDamageByEntityEvent) { - EntityDamageByEntityEvent evt = (EntityDamageByEntityEvent) event; - Entity attacker = evt.getDamager(); - Entity defender = evt.getEntity(); - - if (!(attacker instanceof Player) || !(defender instanceof Player)) { - return; - } - - Player player = (Player) attacker; - - if (!(player.getItemInHand().getType().getId() == OpenInv.GetItemOpenInvItem()) || (!OpenInv.GetPlayerItemOpenInvStatus(player.getName())) || !OpenInv.hasPermission(player, "OpenInv.openinv")) { - return; - } - - Player target = (Player) defender; - player.performCommand("openinv " + target.getName()); - - evt.setDamage(0); - evt.setCancelled(true); - } - } -} +/* + * 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.listeners; + +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; + +import com.lishid.openinv.OpenInv; + +@SuppressWarnings("deprecation") +public class OpenInvEntityListener implements Listener { + @EventHandler(priority = EventPriority.LOWEST) + public void onEntityDamage(EntityDamageEvent event) { + if (event instanceof EntityDamageByEntityEvent) { + EntityDamageByEntityEvent evt = (EntityDamageByEntityEvent) event; + Entity attacker = evt.getDamager(); + Entity defender = evt.getEntity(); + + if (!(attacker instanceof Player) || !(defender instanceof Player)) { + return; + } + + Player player = (Player) attacker; + + if (!(player.getItemInHand().getType().getId() == OpenInv.GetItemOpenInvItem()) || (!OpenInv.GetPlayerItemOpenInvStatus(player.getName())) || !OpenInv.hasPermission(player, "OpenInv.openinv")) { + return; + } + + Player target = (Player) defender; + player.performCommand("openinv " + target.getName()); + + evt.setDamage(0); + evt.setCancelled(true); + } + } +} diff --git a/src/main/java/com/lishid/openinv/OpenInvInventoryListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java similarity index 94% rename from src/main/java/com/lishid/openinv/OpenInvInventoryListener.java rename to src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java index 2cd6b7c..bd100c6 100644 --- a/src/main/java/com/lishid/openinv/OpenInvInventoryListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java @@ -1,35 +1,37 @@ -/* - * 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 org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.inventory.InventoryClickEvent; - -public class OpenInvInventoryListener implements Listener { - @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())) { - event.setCancelled(true); - } - // } - } +/* + * 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.listeners; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; + +import com.lishid.openinv.OpenInv; + +public class OpenInvInventoryListener implements Listener { + @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())) { + event.setCancelled(true); + } + // } + } } \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/OpenInvPlayerListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java similarity index 87% rename from src/main/java/com/lishid/openinv/OpenInvPlayerListener.java rename to src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java index 8141116..97a00e9 100644 --- a/src/main/java/com/lishid/openinv/OpenInvPlayerListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java @@ -1,133 +1,139 @@ -/* - * 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 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; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.block.Action; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerQuitEvent; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -public class OpenInvPlayerListener implements Listener { - @EventHandler(priority = EventPriority.LOWEST) - public void onPlayerJoin(PlayerJoinEvent event) { - ISpecialPlayerInventory inventory = OpenInv.inventories.get(event.getPlayer().getName().toLowerCase()); - - if (inventory != null) { - inventory.playerOnline(event.getPlayer()); - } - - ISpecialEnderChest chest = OpenInv.enderChests.get(event.getPlayer().getName().toLowerCase()); - - if (chest != null) { - chest.playerOnline(event.getPlayer()); - } - } - - @EventHandler(priority = EventPriority.MONITOR) - public void onPlayerQuit(PlayerQuitEvent event) { - ISpecialPlayerInventory inventory = OpenInv.inventories.get(event.getPlayer().getName().toLowerCase()); - if (inventory != null) { - inventory.playerOffline(); - } - ISpecialEnderChest chest = OpenInv.enderChests.get(event.getPlayer().getName().toLowerCase()); - if (chest != null) { - chest.playerOffline(); - } - } - - @EventHandler(priority = EventPriority.MONITOR) - public void onPlayerInteract(PlayerInteractEvent event) { - Player player = event.getPlayer(); - - if (event.getPlayer().isSneaking()) { - return; - } - - if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.useInteractedBlock() == Result.DENY) { - return; - } - - 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())) { - event.setCancelled(true); - player.openInventory(player.getEnderChest()); - } - } - - if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getState() instanceof Chest) { - boolean silentchest = false; - boolean anychest = false; - int x = event.getClickedBlock().getX(); - int y = event.getClickedBlock().getY(); - int z = event.getClickedBlock().getZ(); - - if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && OpenInv.GetPlayerSilentChestStatus(player.getName())) { - silentchest = true; - } - - if (OpenInv.hasPermission(player, Permissions.PERM_ANYCHEST) && OpenInv.GetPlayerAnyChestStatus(player.getName())) { - try { - anychest = OpenInv.anySilentChest.IsAnyChestNeeded(player, x, y, z); - } - catch (Exception e) { - player.sendMessage(ChatColor.RED + "Error while executing openinv. Unsupported CraftBukkit."); - e.printStackTrace(); - } - } - - // If the anychest or silentchest is active - if (anychest || silentchest) { - if (!OpenInv.anySilentChest.ActivateChest(player, anychest, silentchest, x, y, z)) { - 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(); - } - } - - if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) { - if (!(player.getItemInHand().getType().getId() == OpenInv.GetItemOpenInvItem()) || (!OpenInv.GetPlayerItemOpenInvStatus(player.getName())) || !OpenInv.hasPermission(player, Permissions.PERM_OPENINV)) { - return; - } - - player.performCommand("openinv"); - } - } +/* + * 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.listeners; + +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; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.Permissions; +import com.lishid.openinv.internal.SpecialEnderChest; +import com.lishid.openinv.internal.SpecialPlayerInventory; + +@SuppressWarnings("deprecation") +public class OpenInvPlayerListener implements Listener { + @EventHandler(priority = EventPriority.LOWEST) + public void onPlayerJoin(PlayerJoinEvent event) { + Player player = event.getPlayer(); + + SpecialPlayerInventory inventory = OpenInv.inventories.get(player.getUniqueId()); + if (inventory != null) { + inventory.playerOnline(event.getPlayer()); + } + + SpecialEnderChest chest = OpenInv.enderChests.get(player.getUniqueId()); + if (chest != null) { + chest.playerOnline(event.getPlayer()); + } + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onPlayerQuit(PlayerQuitEvent event) { + Player player = event.getPlayer(); + + SpecialPlayerInventory inventory = OpenInv.inventories.get(player.getUniqueId()); + if (inventory != null) { + inventory.playerOffline(); + } + + SpecialEnderChest chest = OpenInv.enderChests.get(player.getUniqueId()); + if (chest != null) { + chest.playerOffline(); + } + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onPlayerInteract(PlayerInteractEvent event) { + Player player = event.getPlayer(); + + if (event.getPlayer().isSneaking()) { + return; + } + + if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.useInteractedBlock() == Result.DENY) { + return; + } + + 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())) { + event.setCancelled(true); + player.openInventory(player.getEnderChest()); + } + } + + if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getState() instanceof Chest) { + boolean silentchest = false; + boolean anychest = false; + int x = event.getClickedBlock().getX(); + int y = event.getClickedBlock().getY(); + int z = event.getClickedBlock().getZ(); + + if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && OpenInv.GetPlayerSilentChestStatus(player.getName())) { + silentchest = true; + } + + if (OpenInv.hasPermission(player, Permissions.PERM_ANYCHEST) && OpenInv.GetPlayerAnyChestStatus(player.getName())) { + try { + anychest = OpenInv.anySilentChest.IsAnyChestNeeded(player, x, y, z); + } + catch (Exception e) { + player.sendMessage(ChatColor.RED + "Error while executing openinv. Unsupported CraftBukkit."); + e.printStackTrace(); + } + } + + // If the anychest or silentchest is active + if (anychest || silentchest) { + if (!OpenInv.anySilentChest.ActivateChest(player, anychest, silentchest, x, y, z)) { + 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(); + } + } + + if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) { + if (!(player.getItemInHand().getType().getId() == OpenInv.GetItemOpenInvItem()) || (!OpenInv.GetPlayerItemOpenInvStatus(player.getName())) || !OpenInv.hasPermission(player, Permissions.PERM_OPENINV)) { + return; + } + + player.performCommand("openinv"); + } + } } \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/utils/UUIDFetcher.java b/src/main/java/com/lishid/openinv/utils/UUIDFetcher.java new file mode 100644 index 0000000..11776a3 --- /dev/null +++ b/src/main/java/com/lishid/openinv/utils/UUIDFetcher.java @@ -0,0 +1,98 @@ +package com.lishid.openinv.utils; + +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.ByteBuffer; +import java.util.*; +import java.util.concurrent.Callable; + +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; + +import com.google.common.collect.ImmutableList; + +public class UUIDFetcher implements Callable> { + private static final double PROFILES_PER_REQUEST = 100; + private static final String PROFILE_URL = "https://api.mojang.com/profiles/minecraft"; + private final JSONParser jsonParser = new JSONParser(); + private final List names; + private final boolean rateLimiting; + + public UUIDFetcher(List names, boolean rateLimiting) { + this.names = ImmutableList.copyOf(names); + this.rateLimiting = rateLimiting; + } + + public UUIDFetcher(List names) { + this(names, true); + } + + @Override + public Map call() throws Exception { + Map uuidMap = new HashMap(); + int requests = (int) Math.ceil(names.size() / PROFILES_PER_REQUEST); + for (int i = 0; i < requests; i++) { + HttpURLConnection connection = createConnection(); + String body = JSONArray.toJSONString(names.subList(i * 100, Math.min((i + 1) * 100, names.size()))); + writeBody(connection, body); + JSONArray array = (JSONArray) jsonParser.parse(new InputStreamReader(connection.getInputStream())); + for (Object profile : array) { + JSONObject jsonProfile = (JSONObject) profile; + String id = (String) jsonProfile.get("id"); + String name = (String) jsonProfile.get("name"); + UUID uuid = UUIDFetcher.getUUID(id); + uuidMap.put(name, uuid); + } + if (rateLimiting && i != requests - 1) { + Thread.sleep(100L); + } + } + return uuidMap; + } + + private static void writeBody(HttpURLConnection connection, String body) throws Exception { + OutputStream stream = connection.getOutputStream(); + stream.write(body.getBytes()); + stream.flush(); + stream.close(); + } + + private static HttpURLConnection createConnection() throws Exception { + URL url = new URL(PROFILE_URL); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("POST"); + connection.setRequestProperty("Content-Type", "application/json"); + connection.setUseCaches(false); + connection.setDoInput(true); + connection.setDoOutput(true); + return connection; + } + + private static UUID getUUID(String id) { + return UUID.fromString(id.substring(0, 8) + "-" + id.substring(8, 12) + "-" + id.substring(12, 16) + "-" + id.substring(16, 20) + "-" +id.substring(20, 32)); + } + + public static byte[] toBytes(UUID uuid) { + ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[16]); + byteBuffer.putLong(uuid.getMostSignificantBits()); + byteBuffer.putLong(uuid.getLeastSignificantBits()); + return byteBuffer.array(); + } + + public static UUID fromBytes(byte[] array) { + if (array.length != 16) { + throw new IllegalArgumentException("Illegal byte array length: " + array.length); + } + ByteBuffer byteBuffer = ByteBuffer.wrap(array); + long mostSignificant = byteBuffer.getLong(); + long leastSignificant = byteBuffer.getLong(); + return new UUID(mostSignificant, leastSignificant); + } + + public static UUID getUUIDOf(String name) throws Exception { + return new UUIDFetcher(Arrays.asList(name)).call().get(name); + } +} diff --git a/src/main/java/com/lishid/openinv/utils/UUIDUtil.java b/src/main/java/com/lishid/openinv/utils/UUIDUtil.java new file mode 100644 index 0000000..76ebb38 --- /dev/null +++ b/src/main/java/com/lishid/openinv/utils/UUIDUtil.java @@ -0,0 +1,27 @@ +package com.lishid.openinv.utils; + +import java.util.Arrays; +import java.util.Map; +import java.util.UUID; + +import org.bukkit.Bukkit; + +public class UUIDUtil { + public static UUID getUUIDOf(String name) { + UUID uuid = null; + + UUIDFetcher fetcher = new UUIDFetcher(Arrays.asList(name)); + Map response; + + try { + response = fetcher.call(); + uuid = response.get(name); + } + catch (Exception e) { + Bukkit.getServer().getLogger().warning("Exception while running UUIDFetcher"); + e.printStackTrace(); + } + + return uuid; + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 88cfd0f..067a298 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.2.8 +version: 2.2.9 author: lishid description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. -- 2.49.1 From d988becf1f8af884e081e33a112d846effd552fc Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Mon, 22 Jun 2015 18:30:27 +1000 Subject: [PATCH 025/253] Migrate to UUID usage --- .../commands/OpenEnderPluginCommand.java | 22 +++++++++++-------- .../commands/OpenInvPluginCommand.java | 22 +++++++++++-------- .../openinv/internal/PlayerDataManager.java | 2 +- .../internal/SpecialPlayerInventory.java | 2 +- 4 files changed, 28 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java index 5a05087..bb383c5 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -34,7 +34,7 @@ import com.lishid.openinv.utils.UUIDUtil; public class OpenEnderPluginCommand implements CommandExecutor { private final OpenInv plugin; - public static final Map openEnderHistory = new ConcurrentHashMap(); + private final Map openEnderHistory = new ConcurrentHashMap(); public OpenEnderPluginCommand(OpenInv plugin) { this.plugin = plugin; @@ -49,7 +49,7 @@ public class OpenEnderPluginCommand implements CommandExecutor { } if (!OpenInv.hasPermission(sender, Permissions.PERM_ENDERCHEST)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to access player enderchest"); + sender.sendMessage(ChatColor.RED + "You do not have permission to access player enderchests."); return true; } @@ -58,7 +58,7 @@ public class OpenEnderPluginCommand implements CommandExecutor { return true; } - Player player = (Player) sender; + final Player player = (Player) sender; // History management UUID history = openEnderHistory.get(player.getUniqueId()); @@ -85,21 +85,25 @@ public class OpenEnderPluginCommand implements CommandExecutor { } final UUID playerUUID = player.getUniqueId(); + Player target = Bukkit.getPlayer(uuid); - // Targeted player was not found online, start asynchron lookup in files if (target == null) { - sender.sendMessage(ChatColor.GREEN + "Starting inventory lookup."); - plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() { + // Targeted player was not found online, start asynchronous lookup in files + Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { @Override public void run() { - // Try loading the player's data asynchronly + // Try loading the player's data asynchronously final Player target = OpenInv.playerLoader.loadPlayer(uuid); - // Back to synchron to send messages and display inventory + if (target == null) { + player.sendMessage(ChatColor.RED + "Player not found!"); + return; + } + // Open target's inventory synchronously Bukkit.getScheduler().runTask(plugin, new Runnable() { @Override public void run() { Player player = Bukkit.getPlayer(playerUUID); - // If sender is no longer online after loading the target. Abort! + // If sender is no longer online after loading the target, abort! if (player == null) { return; } diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java index 4ae1f19..7d01e73 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -34,7 +34,7 @@ import com.lishid.openinv.utils.UUIDUtil; public class OpenInvPluginCommand implements CommandExecutor { private final OpenInv plugin; - public static final Map openInvHistory = new ConcurrentHashMap(); + private final Map openInvHistory = new ConcurrentHashMap(); public OpenInvPluginCommand(OpenInv plugin) { this.plugin = plugin; @@ -48,7 +48,7 @@ public class OpenInvPluginCommand implements CommandExecutor { return true; } if (!OpenInv.hasPermission(sender, Permissions.PERM_OPENINV)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to access player inventories"); + sender.sendMessage(ChatColor.RED + "You do not have permission to access player inventories."); return true; } @@ -57,7 +57,7 @@ public class OpenInvPluginCommand implements CommandExecutor { return true; } - Player player = (Player) sender; + final Player player = (Player) sender; // History management UUID history = openInvHistory.get(player.getUniqueId()); @@ -78,21 +78,25 @@ public class OpenInvPluginCommand implements CommandExecutor { } final UUID playerUUID = player.getUniqueId(); + Player target = Bukkit.getPlayer(uuid); - // Targeted player was not found online, start asynchron lookup in files if (target == null) { - sender.sendMessage(ChatColor.GREEN + "Starting inventory lookup."); - plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() { + // Targeted player was not found online, start asynchronous lookup in files + Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { @Override public void run() { - // Try loading the player's data asynchronly + // Try loading the player's data asynchronously final Player target = OpenInv.playerLoader.loadPlayer(uuid); - // Back to synchron to send messages and display inventory + if (target == null) { + player.sendMessage(ChatColor.RED + "Player not found!"); + return; + } + // Open target's inventory synchronously Bukkit.getScheduler().runTask(plugin, new Runnable() { @Override public void run() { Player player = Bukkit.getPlayer(playerUUID); - // If sender is no longer online after loading the target. Abort! + // If sender is no longer online after loading the target, abort! if (player == null) { return; } diff --git a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java index d0ee87e..2bbc264 100644 --- a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java +++ b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java @@ -34,7 +34,7 @@ public class PlayerDataManager { public Player loadPlayer(UUID uuid) { try { OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); - if (player == null) { + if (player == null || !player.hasPlayedBefore()) { return null; } GameProfile profile = new GameProfile(uuid, player.getName()); diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index 48cdcdd..c34f3be 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -32,7 +32,7 @@ public class SpecialPlayerInventory extends PlayerInventory { private CraftPlayer owner; private boolean playerOnline = false; - public SpecialPlayerInventory(Player p, Boolean online) { + public SpecialPlayerInventory(Player p, boolean online) { super(((CraftPlayer) p).getHandle()); this.owner = (CraftPlayer) p; this.items = player.inventory.items; -- 2.49.1 From ded568ec3f64193b4f5d5d85c73dca671d8df9ca Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Mon, 22 Jun 2015 20:15:28 +1000 Subject: [PATCH 026/253] General refactoring --- .gitignore | 1 - pom.xml | 2 +- src/main/java/com/lishid/openinv/OpenInv.java | 38 +++++++++---------- .../commands/AnyChestPluginCommand.java | 6 +-- .../commands/OpenEnderPluginCommand.java | 2 +- .../commands/OpenInvPluginCommand.java | 2 +- .../commands/SilentChestPluginCommand.java | 6 +-- .../commands/ToggleOpenInvPluginCommand.java | 16 ++++---- .../openinv/internal/AnySilentChest.java | 4 +- .../openinv/internal/EnumDirectionList.java | 2 +- .../openinv/internal/SilentInventory.java | 2 + .../openinv/internal/SpecialEnderChest.java | 6 +-- .../internal/SpecialPlayerInventory.java | 6 +-- .../listeners/OpenInvEntityListener.java | 2 +- .../listeners/OpenInvPlayerListener.java | 8 ++-- src/main/resources/plugin.yml | 2 +- 16 files changed, 53 insertions(+), 52 deletions(-) diff --git a/.gitignore b/.gitignore index 02e7ddd..3c10ff7 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,3 @@ /bin /lib /out -*.iml diff --git a/pom.xml b/pom.xml index c5084d4..ef32711 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.lishid openinv jar - 2.2.9 + 2.3.0 OpenInv http://dev.bukkit.org/bukkit-plugins/openinv/ diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index fbae1bc..10e56a2 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -67,13 +67,13 @@ public class OpenInv extends JavaPlugin { mainPlugin = this; FileConfiguration config = getConfig(); config.set("CheckForUpdates", config.getBoolean("CheckForUpdates", true)); - config.set("NotifySilentChest", config.getBoolean("NotifySilentChest", true)); - config.set("NotifyAnyChest", config.getBoolean("NotifyAnyChest", true)); + config.set("notifySilentChest", config.getBoolean("notifySilentChest", true)); + config.set("notifyAnyChest", config.getBoolean("notifyAnyChest", true)); config.set("ItemOpenInvItemID", config.getInt("ItemOpenInvItemID", 280)); config.addDefault("ItemOpenInvItemID", 280); config.addDefault("CheckForUpdates", true); - config.addDefault("NotifySilentChest", true); - config.addDefault("NotifyAnyChest", true); + config.addDefault("notifySilentChest", true); + config.addDefault("notifyAnyChest", true); config.options().copyDefaults(true); saveConfig(); @@ -89,49 +89,49 @@ public class OpenInv extends JavaPlugin { getCommand("openender").setExecutor(new OpenEnderPluginCommand(this)); } - public static boolean NotifySilentChest() { - return mainPlugin.getConfig().getBoolean("NotifySilentChest", true); + public static boolean notifySilentChest() { + return mainPlugin.getConfig().getBoolean("notifySilentChest", true); } - public static boolean NotifyAnyChest() { - return mainPlugin.getConfig().getBoolean("NotifyAnyChest", true); + public static boolean notifyAnyChest() { + return mainPlugin.getConfig().getBoolean("notifyAnyChest", true); } - public static boolean GetPlayerItemOpenInvStatus(String name) { + public static boolean getPlayerItemOpenInvStatus(String name) { return mainPlugin.getConfig().getBoolean("ItemOpenInv." + name.toLowerCase() + ".toggle", false); } - public static void SetPlayerItemOpenInvStatus(String name, boolean status) { + public static void setPlayerItemOpenInvStatus(String name, boolean status) { mainPlugin.getConfig().set("ItemOpenInv." + name.toLowerCase() + ".toggle", status); mainPlugin.saveConfig(); } - public static boolean GetPlayerSilentChestStatus(String name) { + public static boolean getPlayerSilentChestStatus(String name) { return mainPlugin.getConfig().getBoolean("SilentChest." + name.toLowerCase() + ".toggle", false); } - public static void SetPlayerSilentChestStatus(String name, boolean status) { + public static void setPlayerSilentChestStatus(String name, boolean status) { mainPlugin.getConfig().set("SilentChest." + name.toLowerCase() + ".toggle", status); mainPlugin.saveConfig(); } - public static boolean GetPlayerAnyChestStatus(String name) { + public static boolean getPlayerAnyChestStatus(String name) { return mainPlugin.getConfig().getBoolean("AnyChest." + name.toLowerCase() + ".toggle", true); } - public static void SetPlayerAnyChestStatus(String name, boolean status) { + public static void setPlayerAnyChestStatus(String name, boolean status) { mainPlugin.getConfig().set("AnyChest." + name.toLowerCase() + ".toggle", status); mainPlugin.saveConfig(); } - public static int GetItemOpenInvItem() { + public static int getItemOpenInvItem() { if (mainPlugin.getConfig().get("ItemOpenInvItemID") == null) { - SaveToConfig("ItemOpenInvItemID", 280); + saveToConfig("ItemOpenInvItemID", 280); } return mainPlugin.getConfig().getInt("ItemOpenInvItemID", 280); } - public static Object GetFromConfig(String data, Object defaultValue) { + public static Object getFromConfig(String data, Object defaultValue) { Object val = mainPlugin.getConfig().get(data); if (val == null) { mainPlugin.getConfig().set(data, defaultValue); @@ -142,7 +142,7 @@ public class OpenInv extends JavaPlugin { } } - public static void SaveToConfig(String data, Object value) { + public static void saveToConfig(String data, Object value) { mainPlugin.getConfig().set(data, value); mainPlugin.saveConfig(); } @@ -162,7 +162,7 @@ public class OpenInv extends JavaPlugin { e.printStackTrace(); } - public static void ShowHelp(Player player) { + 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"); diff --git a/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java b/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java index 8de71ae..21423fe 100644 --- a/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java @@ -40,15 +40,15 @@ public class AnyChestPluginCommand implements CommandExecutor { if (args.length > 0) { if (args[0].equalsIgnoreCase("check")) { - if (OpenInv.GetPlayerAnyChestStatus(sender.getName())) + if (OpenInv.getPlayerAnyChestStatus(sender.getName())) 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") + "."); + OpenInv.setPlayerAnyChestStatus(sender.getName(), !OpenInv.getPlayerAnyChestStatus(sender.getName())); + sender.sendMessage("AnyChest is now " + (OpenInv.getPlayerAnyChestStatus(sender.getName()) ? "On" : "Off") + "."); return true; } diff --git a/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java index bb383c5..e190286 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -54,7 +54,7 @@ public class OpenEnderPluginCommand implements CommandExecutor { } if (args.length > 0 && args[0].equalsIgnoreCase("?")) { - OpenInv.ShowHelp((Player) sender); + OpenInv.showHelp((Player) sender); return true; } diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java index 7d01e73..a3e8629 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -53,7 +53,7 @@ public class OpenInvPluginCommand implements CommandExecutor { } if (args.length > 0 && args[0].equalsIgnoreCase("?")) { - OpenInv.ShowHelp((Player) sender); + OpenInv.showHelp((Player) sender); return true; } diff --git a/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java b/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java index f698431..90bd3fc 100644 --- a/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java @@ -40,15 +40,15 @@ public class SilentChestPluginCommand implements CommandExecutor { if (args.length > 0) { if (args[0].equalsIgnoreCase("check")) { - if (OpenInv.GetPlayerSilentChestStatus(sender.getName())) + if (OpenInv.getPlayerSilentChestStatus(sender.getName())) 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") + "."); + OpenInv.setPlayerSilentChestStatus(sender.getName(), !OpenInv.getPlayerSilentChestStatus(sender.getName())); + sender.sendMessage("SilentChest is now " + (OpenInv.getPlayerSilentChestStatus(sender.getName()) ? "On" : "Off") + "."); return true; } diff --git a/src/main/java/com/lishid/openinv/commands/ToggleOpenInvPluginCommand.java b/src/main/java/com/lishid/openinv/commands/ToggleOpenInvPluginCommand.java index 0ba0fb7..b59f841 100644 --- a/src/main/java/com/lishid/openinv/commands/ToggleOpenInvPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/ToggleOpenInvPluginCommand.java @@ -43,19 +43,19 @@ public class ToggleOpenInvPluginCommand implements CommandExecutor { Player player = (Player) sender; if (args.length > 0) { if (args[0].equalsIgnoreCase("check")) { - if (OpenInv.GetPlayerItemOpenInvStatus(player.getName())) - player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.GetItemOpenInvItem()).toString() + " is ON."); + if (OpenInv.getPlayerItemOpenInvStatus(player.getName())) + player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.getItemOpenInvItem()).toString() + " is ON."); else - player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.GetItemOpenInvItem()).toString() + " is OFF."); + player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.getItemOpenInvItem()).toString() + " is OFF."); } } - if (OpenInv.GetPlayerItemOpenInvStatus(player.getName())) { - OpenInv.SetPlayerItemOpenInvStatus(player.getName(), false); - player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.GetItemOpenInvItem()).toString() + " is OFF."); + if (OpenInv.getPlayerItemOpenInvStatus(player.getName())) { + OpenInv.setPlayerItemOpenInvStatus(player.getName(), false); + player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.getItemOpenInvItem()).toString() + " is OFF."); } else { - OpenInv.SetPlayerItemOpenInvStatus(player.getName(), true); - player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.GetItemOpenInvItem()).toString() + " is ON."); + OpenInv.setPlayerItemOpenInvStatus(player.getName(), true); + player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.getItemOpenInvItem()).toString() + " is ON."); } return true; } diff --git a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java index 47b6421..d668c82 100644 --- a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java +++ b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java @@ -124,7 +124,7 @@ public class AnySilentChest { boolean returnValue = true; if (silentchest) { tileInventory = new SilentInventory(tileInventory); - if (OpenInv.NotifySilentChest()) { + if (OpenInv.notifySilentChest()) { p.sendMessage("You are opening a chest silently."); } returnValue = false; @@ -132,7 +132,7 @@ public class AnySilentChest { player.openContainer(tileInventory); - if (anychest && OpenInv.NotifyAnyChest()) { + if (anychest && OpenInv.notifyAnyChest()) { p.sendMessage("You are opening a blocked chest."); } diff --git a/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java b/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java index 7ee4c7f..56c5b48 100644 --- a/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java +++ b/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java @@ -11,7 +11,7 @@ public enum EnumDirectionList implements Iterable { HORIZONTAL(EnumDirectionLimit.HORIZONTAL), VERTICAL(EnumDirectionLimit.VERTICAL); - private EnumDirectionLimit list; + private final EnumDirectionLimit list; private EnumDirectionList(EnumDirectionLimit list) { this.list = list; diff --git a/src/main/java/com/lishid/openinv/internal/SilentInventory.java b/src/main/java/com/lishid/openinv/internal/SilentInventory.java index 3061142..dcea079 100644 --- a/src/main/java/com/lishid/openinv/internal/SilentInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SilentInventory.java @@ -111,10 +111,12 @@ public class SilentInventory implements ITileInventory { return inv.getContents(); } + @Override public void onOpen(CraftHumanEntity craftHumanEntity) { inv.onOpen(craftHumanEntity); } + @Override public void onClose(CraftHumanEntity craftHumanEntity) { inv.onClose(craftHumanEntity); } diff --git a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java index 75f4d95..ed43765 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java @@ -28,9 +28,9 @@ import org.bukkit.craftbukkit.v1_8_R3.entity.*; import org.bukkit.craftbukkit.v1_8_R3.inventory.*; public class SpecialEnderChest extends InventorySubcontainer { - private CraftInventory inventory = new CraftInventory(this); - private InventoryEnderChest enderChest; - private CraftPlayer owner; + private final CraftInventory inventory = new CraftInventory(this); + private final InventoryEnderChest enderChest; + private final CraftPlayer owner; private boolean playerOnline = false; public SpecialEnderChest(Player p, Boolean online) { diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index c34f3be..f167e28 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -27,9 +27,9 @@ import org.bukkit.craftbukkit.v1_8_R3.entity.*; import org.bukkit.craftbukkit.v1_8_R3.inventory.*; public class SpecialPlayerInventory extends PlayerInventory { - private CraftInventory inventory = new CraftInventory(this); - private ItemStack[] extra = new ItemStack[5]; - private CraftPlayer owner; + private final CraftInventory inventory = new CraftInventory(this); + private final ItemStack[] extra = new ItemStack[5]; + private final CraftPlayer owner; private boolean playerOnline = false; public SpecialPlayerInventory(Player p, boolean online) { diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java index 4e1ba92..5697cfb 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java @@ -41,7 +41,7 @@ public class OpenInvEntityListener implements Listener { Player player = (Player) attacker; - if (!(player.getItemInHand().getType().getId() == OpenInv.GetItemOpenInvItem()) || (!OpenInv.GetPlayerItemOpenInvStatus(player.getName())) || !OpenInv.hasPermission(player, "OpenInv.openinv")) { + if (!(player.getItemInHand().getType().getId() == OpenInv.getItemOpenInvItem()) || (!OpenInv.getPlayerItemOpenInvStatus(player.getName())) || !OpenInv.hasPermission(player, "OpenInv.openinv")) { return; } diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java index 97a00e9..b78e606 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java @@ -79,7 +79,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) && OpenInv.getPlayerSilentChestStatus(player.getName())) { event.setCancelled(true); player.openInventory(player.getEnderChest()); } @@ -92,11 +92,11 @@ 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) && OpenInv.getPlayerSilentChestStatus(player.getName())) { silentchest = true; } - if (OpenInv.hasPermission(player, Permissions.PERM_ANYCHEST) && OpenInv.GetPlayerAnyChestStatus(player.getName())) { + if (OpenInv.hasPermission(player, Permissions.PERM_ANYCHEST) && OpenInv.getPlayerAnyChestStatus(player.getName())) { try { anychest = OpenInv.anySilentChest.IsAnyChestNeeded(player, x, y, z); } @@ -129,7 +129,7 @@ public class OpenInvPlayerListener implements Listener { } if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) { - if (!(player.getItemInHand().getType().getId() == OpenInv.GetItemOpenInvItem()) || (!OpenInv.GetPlayerItemOpenInvStatus(player.getName())) || !OpenInv.hasPermission(player, Permissions.PERM_OPENINV)) { + if (!(player.getItemInHand().getType().getId() == OpenInv.getItemOpenInvItem()) || (!OpenInv.getPlayerItemOpenInvStatus(player.getName())) || !OpenInv.hasPermission(player, Permissions.PERM_OPENINV)) { return; } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 067a298..4cd5127 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.2.9 +version: 2.3.0 author: lishid description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. -- 2.49.1 From 120b35d39438492597ffdc34aa642f2c446e6b07 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Mon, 22 Jun 2015 20:17:30 +1000 Subject: [PATCH 027/253] General refactoring - revert mistake --- src/main/java/com/lishid/openinv/OpenInv.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index 10e56a2..d67bf99 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -67,13 +67,13 @@ public class OpenInv extends JavaPlugin { mainPlugin = this; FileConfiguration config = getConfig(); config.set("CheckForUpdates", config.getBoolean("CheckForUpdates", true)); - config.set("notifySilentChest", config.getBoolean("notifySilentChest", true)); - config.set("notifyAnyChest", config.getBoolean("notifyAnyChest", true)); + config.set("NotifySilentChest", config.getBoolean("NotifySilentChest", true)); + config.set("NotifyAnyChest", config.getBoolean("NotifyAnyChest", true)); config.set("ItemOpenInvItemID", config.getInt("ItemOpenInvItemID", 280)); config.addDefault("ItemOpenInvItemID", 280); config.addDefault("CheckForUpdates", true); - config.addDefault("notifySilentChest", true); - config.addDefault("notifyAnyChest", true); + config.addDefault("NotifySilentChest", true); + config.addDefault("NotifyAnyChest", true); config.options().copyDefaults(true); saveConfig(); @@ -90,11 +90,11 @@ public class OpenInv extends JavaPlugin { } public static boolean notifySilentChest() { - return mainPlugin.getConfig().getBoolean("notifySilentChest", true); + return mainPlugin.getConfig().getBoolean("NotifySilentChest", true); } public static boolean notifyAnyChest() { - return mainPlugin.getConfig().getBoolean("notifyAnyChest", true); + return mainPlugin.getConfig().getBoolean("NotifyAnyChest", true); } public static boolean getPlayerItemOpenInvStatus(String name) { -- 2.49.1 From bc40e91215a4b6b01f6ab4b9df9b0d25dd03b9f4 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Mon, 22 Jun 2015 20:26:36 +1000 Subject: [PATCH 028/253] Minor no permissions message change --- .../com/lishid/openinv/commands/OpenEnderPluginCommand.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java index e190286..8c934a9 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -49,7 +49,7 @@ public class OpenEnderPluginCommand implements CommandExecutor { } if (!OpenInv.hasPermission(sender, Permissions.PERM_ENDERCHEST)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to access player enderchests."); + sender.sendMessage(ChatColor.RED + "You do not have permission to access player ender chests."); return true; } @@ -129,13 +129,13 @@ public class OpenEnderPluginCommand implements CommandExecutor { } if (target != player && !OpenInv.hasPermission(player, Permissions.PERM_ENDERCHEST_ALL)) { - player.sendMessage(ChatColor.RED + "You do not have permission to access other player's enderchest"); + player.sendMessage(ChatColor.RED + "You do not have permission to access other player's ender chests"); return; } // Permissions checks if (!OpenInv.hasPermission(player, Permissions.PERM_OVERRIDE) && OpenInv.hasPermission(target, Permissions.PERM_EXEMPT)) { - player.sendMessage(ChatColor.RED + target.getDisplayName() + "'s enderchest is protected!"); + player.sendMessage(ChatColor.RED + target.getDisplayName() + "'s ender chest is protected!"); return; } -- 2.49.1 From 902def1dd7c43ac3db191ed75761f5d1592a23ab Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Tue, 23 Jun 2015 13:31:26 +1000 Subject: [PATCH 029/253] Bug fix and changes --- gpl.txt => LICENSE.txt | 0 pom.xml | 2 +- .../com/lishid/openinv/ConfigUpdater.java | 161 ++++++++++++++++ src/main/java/com/lishid/openinv/OpenInv.java | 175 +++++++++++------- ...luginCommand.java => AnyChestCommand.java} | 22 ++- ...uginCommand.java => OpenEnderCommand.java} | 16 +- ...PluginCommand.java => OpenInvCommand.java} | 14 +- .../openinv/commands/SearchEnderCommand.java | 67 +++++++ ...uginCommand.java => SearchInvCommand.java} | 16 +- ...inCommand.java => SilentChestCommand.java} | 20 +- ...Command.java => ToggleOpenInvCommand.java} | 31 ++-- .../openinv/internal/AnySilentChest.java | 12 +- .../internal/SpecialPlayerInventory.java | 8 +- .../listeners/OpenInvEntityListener.java | 29 ++- .../listeners/OpenInvInventoryListener.java | 14 +- .../listeners/OpenInvPlayerListener.java | 50 ++--- .../com/lishid/openinv/utils/UUIDUtil.java | 51 ++++- src/main/resources/config.yml | 7 + src/main/resources/plugin.yml | 2 +- 19 files changed, 512 insertions(+), 185 deletions(-) rename gpl.txt => LICENSE.txt (100%) create mode 100644 src/main/java/com/lishid/openinv/ConfigUpdater.java rename src/main/java/com/lishid/openinv/commands/{AnyChestPluginCommand.java => AnyChestCommand.java} (68%) rename src/main/java/com/lishid/openinv/commands/{OpenEnderPluginCommand.java => OpenEnderCommand.java} (92%) rename src/main/java/com/lishid/openinv/commands/{OpenInvPluginCommand.java => OpenInvCommand.java} (93%) create mode 100644 src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java rename src/main/java/com/lishid/openinv/commands/{SearchInvPluginCommand.java => SearchInvCommand.java} (83%) rename src/main/java/com/lishid/openinv/commands/{SilentChestPluginCommand.java => SilentChestCommand.java} (69%) rename src/main/java/com/lishid/openinv/commands/{ToggleOpenInvPluginCommand.java => ToggleOpenInvCommand.java} (60%) create mode 100644 src/main/resources/config.yml diff --git a/gpl.txt b/LICENSE.txt similarity index 100% rename from gpl.txt rename to LICENSE.txt diff --git a/pom.xml b/pom.xml index ef32711..63f5b9e 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.lishid openinv jar - 2.3.0 + 2.3.1 OpenInv http://dev.bukkit.org/bukkit-plugins/openinv/ diff --git a/src/main/java/com/lishid/openinv/ConfigUpdater.java b/src/main/java/com/lishid/openinv/ConfigUpdater.java new file mode 100644 index 0000000..5d4f42e --- /dev/null +++ b/src/main/java/com/lishid/openinv/ConfigUpdater.java @@ -0,0 +1,161 @@ +package com.lishid.openinv; + +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import java.util.UUID; + +import org.bukkit.Material; +import org.bukkit.configuration.ConfigurationSection; + +import com.lishid.openinv.utils.UUIDUtil; + +public class ConfigUpdater { + private final OpenInv plugin; + + private static final int LATEST_CONFIG_VERSION = 2; + + public ConfigUpdater(OpenInv plugin) { + this.plugin = plugin; + } + + private int getConfigVersion() { + return plugin.getConfig().getInt("config-version", 1); + } + + private boolean isConfigOutdated() { + return getConfigVersion() < LATEST_CONFIG_VERSION; + } + + public void checkForUpdates() { + if (isConfigOutdated()) { + plugin.getLogger().info("[Config] Update found! Performing update..."); + updateConfig(); + } else { + plugin.getLogger().info("[Config] Update not found. Config is already up-to-date."); + } + } + + private void updateConfig() { + // Get the old config settings + int itemOpenInvItemId = plugin.getConfig().getInt("ItemOpenInvItemID", 280); + boolean checkForUpdates = plugin.getConfig().getBoolean("CheckForUpdates", true); + boolean notifySilentChest = plugin.getConfig().getBoolean("NotifySilentChest", true); + boolean notifyAnyChest = plugin.getConfig().getBoolean("NotifyAnyChest", true); + + Map anyChestToggles = null; + Map itemOpenInvToggles = null; + Map silentChestToggles = null; + + if (plugin.getConfig().isSet("AnyChest")) { + anyChestToggles = updateAnyChestToggles(); + } + + if (plugin.getConfig().isSet("ItemOpenInv")) { + itemOpenInvToggles = updateItemOpenInvToggles(); + } + + if (plugin.getConfig().isSet("SilentChest")) { + silentChestToggles = updateSilentChestToggles(); + } + + // Clear the old config + for (String key : plugin.getConfig().getKeys(false)) { + plugin.getConfig().set(key, null); + } + + // Set the new config options + plugin.getConfig().set("config-version", LATEST_CONFIG_VERSION); + plugin.getConfig().set("check-for-updates", checkForUpdates); + plugin.getConfig().set("items.open-inv", getMaterialById(itemOpenInvItemId).toString()); + plugin.getConfig().set("notify.any-chest", notifyAnyChest); + plugin.getConfig().set("notify.silent-chest", notifySilentChest); + + if (anyChestToggles != null && !anyChestToggles.isEmpty()) { + for (Map.Entry entry : anyChestToggles.entrySet()) { + plugin.getConfig().set("toggles.any-chest." + entry.getKey(), entry.getValue()); + } + } + + if (itemOpenInvToggles != null && !itemOpenInvToggles.isEmpty()) { + for (Map.Entry entry : itemOpenInvToggles.entrySet()) { + plugin.getConfig().set("toggles.items.open-inv." + entry.getKey(), entry.getValue()); + } + } + + if (silentChestToggles != null && !silentChestToggles.isEmpty()) { + for (Map.Entry entry : silentChestToggles.entrySet()) { + plugin.getConfig().set("toggles.silent-chest." + entry.getKey(), entry.getValue()); + } + } + + // Save the new config + plugin.saveConfig(); + + plugin.getLogger().info("[Config] Update complete."); + + } + + private Map updateAnyChestToggles() { + Map toggles = new HashMap(); + + ConfigurationSection anyChestSection = plugin.getConfig().getConfigurationSection("AnyChest"); + Set keys = anyChestSection.getKeys(false); + if (keys == null || keys.isEmpty()) return null; + + for (String playerName : keys) { + UUID uuid = UUIDUtil.getUUIDOf(playerName); + if (uuid != null) { + boolean toggled = anyChestSection.getBoolean(playerName + ".toggle", false); + toggles.put(uuid, toggled); + } + } + + return toggles; + } + + private Map updateItemOpenInvToggles() { + Map toggles = new HashMap(); + + ConfigurationSection anyChestSection = plugin.getConfig().getConfigurationSection("ItemOpenInv"); + Set keys = anyChestSection.getKeys(false); + if (keys == null || keys.isEmpty()) return null; + + for (String playerName : keys) { + UUID uuid = UUIDUtil.getUUIDOf(playerName); + if (uuid != null) { + boolean toggled = anyChestSection.getBoolean(playerName + ".toggle", false); + toggles.put(uuid, toggled); + } + } + + return toggles; + } + + private Map updateSilentChestToggles() { + Map toggles = new HashMap(); + + ConfigurationSection silentChestSection = plugin.getConfig().getConfigurationSection("SilentChest"); + Set keys = silentChestSection.getKeys(false); + if (keys == null || keys.isEmpty()) return null; + + for (String playerName : keys) { + UUID uuid = UUIDUtil.getUUIDOf(playerName); + if (uuid != null) { + boolean toggled = silentChestSection.getBoolean(playerName + ".toggle", false); + toggles.put(uuid, toggled); + } + } + + return toggles; + } + + @SuppressWarnings("deprecation") + private Material getMaterialById(int id) { + Material material = Material.getMaterial(id); + if (material == null) { + material = Material.STICK; + } + return material; + } +} diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index d67bf99..e300fc0 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -19,16 +19,21 @@ package com.lishid.openinv; import java.util.HashMap; import java.util.Map; import java.util.UUID; -import java.util.logging.Logger; import org.bukkit.ChatColor; -import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.Material; +import org.bukkit.command.CommandSender; 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.*; +import com.lishid.openinv.commands.AnyChestCommand; +import com.lishid.openinv.commands.OpenEnderCommand; +import com.lishid.openinv.commands.OpenInvCommand; +import com.lishid.openinv.commands.SearchInvCommand; +import com.lishid.openinv.commands.SilentChestCommand; +import com.lishid.openinv.commands.ToggleOpenInvCommand; import com.lishid.openinv.internal.AnySilentChest; import com.lishid.openinv.internal.InventoryAccess; import com.lishid.openinv.internal.PlayerDataManager; @@ -44,93 +49,67 @@ import com.lishid.openinv.listeners.OpenInvPlayerListener; * @author lishid */ public class OpenInv extends JavaPlugin { - public static final Logger logger = Logger.getLogger("Minecraft.OpenInv"); - public static final Map inventories = new HashMap(); public static final Map enderChests = new HashMap(); public static OpenInv mainPlugin; - public static PlayerDataManager playerLoader; - public static InventoryAccess inventoryAccess; - public static AnySilentChest anySilentChest; + private static PlayerDataManager playerLoader; + private static InventoryAccess inventoryAccess; + private static AnySilentChest anySilentChest; @Override public void onEnable() { - // Get plugin manager - PluginManager pm = getServer().getPluginManager(); + // Plugin + mainPlugin = this; + // Config + ConfigUpdater configUpdater = new ConfigUpdater(this); + configUpdater.checkForUpdates(); + + // Initialize playerLoader = new PlayerDataManager(); inventoryAccess = new InventoryAccess(); anySilentChest = new AnySilentChest(); - mainPlugin = this; - FileConfiguration config = getConfig(); - config.set("CheckForUpdates", config.getBoolean("CheckForUpdates", true)); - config.set("NotifySilentChest", config.getBoolean("NotifySilentChest", true)); - config.set("NotifyAnyChest", config.getBoolean("NotifyAnyChest", true)); - config.set("ItemOpenInvItemID", config.getInt("ItemOpenInvItemID", 280)); - config.addDefault("ItemOpenInvItemID", 280); - config.addDefault("CheckForUpdates", true); - config.addDefault("NotifySilentChest", true); - config.addDefault("NotifyAnyChest", true); - config.options().copyDefaults(true); - saveConfig(); + // Save the default config.yml if it doesn't already exist + saveDefaultConfig(); + + // Register the plugin's events & commands + registerEvents(); + registerCommands(); + } + + private void registerEvents() { + PluginManager pm = getServer().getPluginManager(); pm.registerEvents(new OpenInvPlayerListener(), this); pm.registerEvents(new OpenInvEntityListener(), this); pm.registerEvents(new OpenInvInventoryListener(), this); - - getCommand("openinv").setExecutor(new OpenInvPluginCommand(this)); - getCommand("searchinv").setExecutor(new SearchInvPluginCommand()); - getCommand("toggleopeninv").setExecutor(new ToggleOpenInvPluginCommand()); - getCommand("silentchest").setExecutor(new SilentChestPluginCommand()); - getCommand("anychest").setExecutor(new AnyChestPluginCommand()); - getCommand("openender").setExecutor(new OpenEnderPluginCommand(this)); } - public static boolean notifySilentChest() { - return mainPlugin.getConfig().getBoolean("NotifySilentChest", true); + private void registerCommands() { + getCommand("openinv").setExecutor(new OpenInvCommand(this)); + getCommand("searchinv").setExecutor(new SearchInvCommand()); + getCommand("toggleopeninv").setExecutor(new ToggleOpenInvCommand()); + getCommand("silentchest").setExecutor(new SilentChestCommand()); + getCommand("anychest").setExecutor(new AnyChestCommand()); + getCommand("openender").setExecutor(new OpenEnderCommand(this)); } - public static boolean notifyAnyChest() { - return mainPlugin.getConfig().getBoolean("NotifyAnyChest", true); + public static PlayerDataManager getPlayerLoader() { + return playerLoader; } - public static boolean getPlayerItemOpenInvStatus(String name) { - return mainPlugin.getConfig().getBoolean("ItemOpenInv." + name.toLowerCase() + ".toggle", false); + public static InventoryAccess getInventoryAccess() { + return inventoryAccess; } - 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 AnySilentChest getAnySilentChest() { + return anySilentChest; } + /* public static Object getFromConfig(String data, Object defaultValue) { Object val = mainPlugin.getConfig().get(data); if (val == null) { @@ -141,27 +120,83 @@ public class OpenInv extends JavaPlugin { 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); + public static Material getOpenInvItem() { + if (!mainPlugin.getConfig().isSet("items.open-inv")) { + saveToConfig("items.open-inv", "STICK"); + } + + String itemName = mainPlugin.getConfig().getString("items.open-inv", "STICK"); + return Material.getMaterial(itemName); + } + + public static boolean notifySilentChest() { + return mainPlugin.getConfig().getBoolean("notify.silent-chest", true); + } + + public static boolean notifyAnyChest() { + return mainPlugin.getConfig().getBoolean("notify.any-chest", true); + } + + public static boolean getPlayerAnyChestStatus(Player player) { + return mainPlugin.getConfig().getBoolean("toggles.any-chest." + player.getUniqueId(), false); + } + + public static void setPlayerAnyChestStatus(Player player, boolean status) { + saveToConfig("toggles.any-chest." + player.getUniqueId(), status); + } + + public static boolean getPlayerItemOpenInvStatus(Player player) { + return mainPlugin.getConfig().getBoolean("toggles.items.open-inv" + player.getUniqueId(), false); + } + + public static void setPlayerItemOpenInvStatus(Player player, boolean status) { + saveToConfig("toggles.items.open-inv." + player.getUniqueId(), status); + } + + public static boolean getPlayerSilentChestStatus(Player player) { + return mainPlugin.getConfig().getBoolean("toggles.silent-chest." + player.getUniqueId(), false); + } + + public static void setPlayerSilentChestStatus(Player player, boolean status) { + saveToConfig("toggles.silent-chest." + player.getUniqueId(), status); } /** - * Log an error + * Logs a given message to console. + * + * @param text the text to log + */ + public static void log(String text) { + mainPlugin.getLogger().info("[OpenInv] " + text); + } + + /** + * Logs an error to console. + * + * @param e the throwable error to log */ public static void log(Throwable e) { - logger.severe("[OpenInv] " + e.toString()); + mainPlugin.getLogger().severe("[OpenInv] " + e.toString()); e.printStackTrace(); } + /** + * Sends a specified message to a given CommandSender with the OpenInv prefix. + * + * @param sender the CommandSender to message + * @param message the message to send to the player + */ + public static void sendMessage(CommandSender sender, String message) { + sender.sendMessage(ChatColor.AQUA + "[OpenInv] " + ChatColor.WHITE + message); + } + public static void showHelp(Player player) { player.sendMessage(ChatColor.GREEN + "/openinv - Open a player's inventory"); player.sendMessage(ChatColor.GREEN + " (aliases: oi, inv, open)"); diff --git a/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java b/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java similarity index 68% rename from src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java rename to src/main/java/com/lishid/openinv/commands/AnyChestCommand.java index 21423fe..3bcde82 100644 --- a/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java @@ -25,30 +25,34 @@ import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; -public class AnyChestPluginCommand implements CommandExecutor { +public class AnyChestCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("anychest")) { 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 command from the console."); return true; } + if (!OpenInv.hasPermission(sender, Permissions.PERM_ANYCHEST)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to use anychest."); + sender.sendMessage(ChatColor.RED + "You do not have permission to use any chest."); return true; } + Player player = (Player) sender; + if (args.length > 0) { if (args[0].equalsIgnoreCase("check")) { - if (OpenInv.getPlayerAnyChestStatus(sender.getName())) - sender.sendMessage("AnyChest is ON."); - else - sender.sendMessage("AnyChest is OFF."); + String status = OpenInv.getPlayerAnyChestStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; + OpenInv.sendMessage(player, "Any Chest is " + status + ChatColor.RESET + "."); + return true; } } - OpenInv.setPlayerAnyChestStatus(sender.getName(), !OpenInv.getPlayerAnyChestStatus(sender.getName())); - sender.sendMessage("AnyChest is now " + (OpenInv.getPlayerAnyChestStatus(sender.getName()) ? "On" : "Off") + "."); + OpenInv.setPlayerAnyChestStatus(player, !OpenInv.getPlayerAnyChestStatus(player)); + + String status = OpenInv.getPlayerAnyChestStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; + OpenInv.sendMessage(player, "Any Chest is now " + status + ChatColor.RESET + "."); return true; } diff --git a/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java similarity index 92% rename from src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java rename to src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java index 8c934a9..4fbaa0c 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java @@ -32,11 +32,11 @@ import com.lishid.openinv.Permissions; import com.lishid.openinv.internal.SpecialEnderChest; import com.lishid.openinv.utils.UUIDUtil; -public class OpenEnderPluginCommand implements CommandExecutor { +public class OpenEnderCommand implements CommandExecutor { private final OpenInv plugin; private final Map openEnderHistory = new ConcurrentHashMap(); - public OpenEnderPluginCommand(OpenInv plugin) { + public OpenEnderCommand(OpenInv plugin) { this.plugin = plugin; } @@ -44,7 +44,7 @@ public class OpenEnderPluginCommand implements CommandExecutor { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("openender")) { 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 command from the console."); return true; } @@ -82,6 +82,11 @@ public class OpenEnderPluginCommand implements CommandExecutor { } else { uuid = UUIDUtil.getUUIDOf(args[0]); + + if (uuid == null) { + player.sendMessage(ChatColor.RED + "Player not found!"); + return true; + } } final UUID playerUUID = player.getUniqueId(); @@ -93,11 +98,12 @@ public class OpenEnderPluginCommand implements CommandExecutor { @Override public void run() { // Try loading the player's data asynchronously - final Player target = OpenInv.playerLoader.loadPlayer(uuid); + final Player target = OpenInv.getPlayerLoader().loadPlayer(uuid); if (target == null) { player.sendMessage(ChatColor.RED + "Player not found!"); return; } + // Open target's inventory synchronously Bukkit.getScheduler().runTask(plugin, new Runnable() { @Override @@ -129,7 +135,7 @@ public class OpenEnderPluginCommand implements CommandExecutor { } if (target != player && !OpenInv.hasPermission(player, Permissions.PERM_ENDERCHEST_ALL)) { - player.sendMessage(ChatColor.RED + "You do not have permission to access other player's ender chests"); + player.sendMessage(ChatColor.RED + "You do not have permission to access other player's ender chests."); return; } diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java similarity index 93% rename from src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java rename to src/main/java/com/lishid/openinv/commands/OpenInvCommand.java index a3e8629..2bfbb8c 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java @@ -32,11 +32,11 @@ import com.lishid.openinv.Permissions; import com.lishid.openinv.internal.SpecialPlayerInventory; import com.lishid.openinv.utils.UUIDUtil; -public class OpenInvPluginCommand implements CommandExecutor { +public class OpenInvCommand implements CommandExecutor { private final OpenInv plugin; private final Map openInvHistory = new ConcurrentHashMap(); - public OpenInvPluginCommand(OpenInv plugin) { + public OpenInvCommand(OpenInv plugin) { this.plugin = plugin; } @@ -44,7 +44,7 @@ public class OpenInvPluginCommand implements CommandExecutor { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("openinv")) { 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 command from the console."); return true; } if (!OpenInv.hasPermission(sender, Permissions.PERM_OPENINV)) { @@ -75,6 +75,11 @@ public class OpenInvPluginCommand implements CommandExecutor { } else { uuid = UUIDUtil.getUUIDOf(args[0]); + + if (uuid == null) { + player.sendMessage(ChatColor.RED + "Player not found!"); + return true; + } } final UUID playerUUID = player.getUniqueId(); @@ -86,11 +91,12 @@ public class OpenInvPluginCommand implements CommandExecutor { @Override public void run() { // Try loading the player's data asynchronously - final Player target = OpenInv.playerLoader.loadPlayer(uuid); + final Player target = OpenInv.getPlayerLoader().loadPlayer(uuid); if (target == null) { player.sendMessage(ChatColor.RED + "Player not found!"); return; } + // Open target's inventory synchronously Bukkit.getScheduler().runTask(plugin, new Runnable() { @Override diff --git a/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java b/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java new file mode 100644 index 0000000..658fa94 --- /dev/null +++ b/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java @@ -0,0 +1,67 @@ +package com.lishid.openinv.commands; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.Permissions; + +public class SearchEnderCommand implements CommandExecutor { + // TODO + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (command.getName().equalsIgnoreCase("searchinv")) { + if (sender instanceof Player) { + if (!OpenInv.hasPermission(sender, Permissions.PERM_SEARCH)) { + sender.sendMessage(ChatColor.RED + "You do not have permission to search player ender chests."); + return true; + } + } + + Material material = null; + int count = 1; + + if (args.length >= 1) { + String[] gData = null; + gData = args[0].split(":"); + material = Material.matchMaterial(gData[0]); + } + if (args.length >= 2) { + try { + count = Integer.parseInt(args[1]); + } + catch (NumberFormatException ex) { + sender.sendMessage(ChatColor.RED + "'" + args[1] + "' is not a number!"); + return false; + } + } + + if (material == null) { + sender.sendMessage(ChatColor.RED + "Unknown item"); + return false; + } + + StringBuilder sb = new StringBuilder(); + + for (Player onlinePlayer : Bukkit.getServer().getOnlinePlayers()) { + if (onlinePlayer.getInventory().contains(material, count)) { + sb.append(onlinePlayer.getName()); + sb.append(" "); + } + } + + String playerList = sb.toString(); + sender.sendMessage("Players with the item " + material.toString() + ": " + playerList); + + return true; + } + + return false; + } +} diff --git a/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java b/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java similarity index 83% rename from src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java rename to src/main/java/com/lishid/openinv/commands/SearchInvCommand.java index 968e1ab..98d1527 100644 --- a/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java @@ -27,19 +27,17 @@ import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; -public class SearchInvPluginCommand implements CommandExecutor { +public class SearchInvCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("searchinv")) { if (sender instanceof Player) { if (!OpenInv.hasPermission(sender, Permissions.PERM_SEARCH)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to access player inventories"); + sender.sendMessage(ChatColor.RED + "You do not have permission to search player inventories."); return true; } } - String playerList = ""; - Material material = null; int count = 1; @@ -63,12 +61,16 @@ public class SearchInvPluginCommand implements CommandExecutor { return false; } - for (Player templayer : Bukkit.getServer().getOnlinePlayers()) { - if (templayer.getInventory().contains(material, count)) { - playerList += templayer.getName() + " "; + StringBuilder sb = new StringBuilder(); + + for (Player onlinePlayer : Bukkit.getServer().getOnlinePlayers()) { + if (onlinePlayer.getInventory().contains(material, count)) { + sb.append(onlinePlayer.getName()); + sb.append(" "); } } + String playerList = sb.toString(); sender.sendMessage("Players with the item " + material.toString() + ": " + playerList); return true; diff --git a/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java b/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java similarity index 69% rename from src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java rename to src/main/java/com/lishid/openinv/commands/SilentChestCommand.java index 90bd3fc..ce94e88 100644 --- a/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java @@ -25,30 +25,34 @@ import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; -public class SilentChestPluginCommand implements CommandExecutor { +public class SilentChestCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("silentchest")) { 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 command from the console."); return true; } + if (!OpenInv.hasPermission(sender, Permissions.PERM_SILENT)) { sender.sendMessage(ChatColor.RED + "You do not have permission to use silent chest."); return true; } + Player player = (Player) sender; + if (args.length > 0) { if (args[0].equalsIgnoreCase("check")) { - if (OpenInv.getPlayerSilentChestStatus(sender.getName())) - sender.sendMessage("SilentChest is ON."); - else - sender.sendMessage("SilentChest is OFF."); + String status = OpenInv.getPlayerSilentChestStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; + OpenInv.sendMessage(player, "Silent Chest is " + status + ChatColor.RESET + "."); + return true; } } - OpenInv.setPlayerSilentChestStatus(sender.getName(), !OpenInv.getPlayerSilentChestStatus(sender.getName())); - sender.sendMessage("SilentChest is now " + (OpenInv.getPlayerSilentChestStatus(sender.getName()) ? "On" : "Off") + "."); + OpenInv.setPlayerSilentChestStatus(player, !OpenInv.getPlayerSilentChestStatus(player)); + + String status = OpenInv.getPlayerSilentChestStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; + OpenInv.sendMessage(player, "Silent Chest is now " + status + ChatColor.RESET + "."); return true; } diff --git a/src/main/java/com/lishid/openinv/commands/ToggleOpenInvPluginCommand.java b/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java similarity index 60% rename from src/main/java/com/lishid/openinv/commands/ToggleOpenInvPluginCommand.java rename to src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java index b59f841..a024c24 100644 --- a/src/main/java/com/lishid/openinv/commands/ToggleOpenInvPluginCommand.java +++ b/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java @@ -17,7 +17,6 @@ package com.lishid.openinv.commands; import org.bukkit.ChatColor; -import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -26,37 +25,35 @@ import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; -@SuppressWarnings("deprecation") -public class ToggleOpenInvPluginCommand implements CommandExecutor { +public class ToggleOpenInvCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("toggleopeninv")) { 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 command from the console."); return true; } + if (!OpenInv.hasPermission(sender, Permissions.PERM_OPENINV)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to access player inventories"); + sender.sendMessage(ChatColor.RED + "You do not have permission to access player inventories."); return true; } Player player = (Player) sender; + if (args.length > 0) { if (args[0].equalsIgnoreCase("check")) { - if (OpenInv.getPlayerItemOpenInvStatus(player.getName())) - player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.getItemOpenInvItem()).toString() + " is ON."); - else - player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.getItemOpenInvItem()).toString() + " is OFF."); + String status = OpenInv.getPlayerItemOpenInvStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; + OpenInv.sendMessage(player, "OpenInv with " + ChatColor.GRAY + OpenInv.getOpenInvItem() + ChatColor.RESET + status + ChatColor.RESET + "."); + return true; } } - if (OpenInv.getPlayerItemOpenInvStatus(player.getName())) { - OpenInv.setPlayerItemOpenInvStatus(player.getName(), false); - player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.getItemOpenInvItem()).toString() + " is OFF."); - } - else { - OpenInv.setPlayerItemOpenInvStatus(player.getName(), true); - player.sendMessage("OpenInv with " + Material.getMaterial(OpenInv.getItemOpenInvItem()).toString() + " is ON."); - } + + OpenInv.setPlayerItemOpenInvStatus(player, !OpenInv.getPlayerItemOpenInvStatus(player)); + + String status = OpenInv.getPlayerItemOpenInvStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; + OpenInv.sendMessage(player, "OpenInv with " + ChatColor.GRAY + OpenInv.getOpenInvItem() + ChatColor.RESET + " is now " + status + ChatColor.RESET + "."); + return true; } diff --git a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java index d668c82..213422e 100644 --- a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java +++ b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java @@ -28,7 +28,7 @@ import net.minecraft.server.v1_8_R3.*; import org.bukkit.craftbukkit.v1_8_R3.entity.*; public class AnySilentChest { - 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 BlockPosition position = new BlockPosition(x, y, z); EntityPlayer player = ((CraftPlayer) p).getHandle(); @@ -81,7 +81,7 @@ public class AnySilentChest { return true; } - 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) { BlockPosition position = new BlockPosition(x, y, z); EntityPlayer player = ((CraftPlayer) p).getHandle(); World world = player.world; @@ -98,7 +98,7 @@ public class AnySilentChest { } ITileInventory tileInventory = (ITileInventory) tileEntity; - if (!anychest && this.topBlocking(world, position)) { + if (!anyChest && this.topBlocking(world, position)) { return true; } @@ -106,7 +106,7 @@ public class AnySilentChest { BlockPosition side = position.shift(direction); Block block = world.getType(side).getBlock(); if (block == chest) { - if (!anychest && this.topBlocking(world, side)) { + if (!anyChest && this.topBlocking(world, side)) { return true; } @@ -122,7 +122,7 @@ public class AnySilentChest { } boolean returnValue = true; - if (silentchest) { + if (silentChest) { tileInventory = new SilentInventory(tileInventory); if (OpenInv.notifySilentChest()) { p.sendMessage("You are opening a chest silently."); @@ -132,7 +132,7 @@ public class AnySilentChest { player.openContainer(tileInventory); - if (anychest && OpenInv.notifyAnyChest()) { + if (anyChest && OpenInv.notifyAnyChest()) { p.sendMessage("You are opening a blocked chest."); } diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index f167e28..c9e39e3 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -180,7 +180,7 @@ public class SpecialPlayerInventory extends PlayerInventory { } @Override - public void setItem(int i, ItemStack itemstack) { + public void setItem(int i, ItemStack itemStack) { ItemStack[] is = this.items; if (i >= is.length) { @@ -199,11 +199,11 @@ public class SpecialPlayerInventory extends PlayerInventory { // Effects if (is == this.extra) { - owner.getHandle().drop(itemstack, true); - itemstack = null; + owner.getHandle().drop(itemStack, true); + itemStack = null; } - is[i] = itemstack; + is[i] = itemStack; owner.getHandle().defaultContainer.b(); } diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java index 5697cfb..3508af5 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java @@ -19,37 +19,36 @@ package com.lishid.openinv.listeners; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.entity.EntityDamageByEntityEvent; -import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import com.lishid.openinv.OpenInv; +import com.lishid.openinv.Permissions; -@SuppressWarnings("deprecation") public class OpenInvEntityListener implements Listener { @EventHandler(priority = EventPriority.LOWEST) - public void onEntityDamage(EntityDamageEvent event) { - if (event instanceof EntityDamageByEntityEvent) { - EntityDamageByEntityEvent evt = (EntityDamageByEntityEvent) event; - Entity attacker = evt.getDamager(); - Entity defender = evt.getEntity(); + public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { + Entity attacker = event.getDamager(); + Entity defender = event.getEntity(); - if (!(attacker instanceof Player) || !(defender instanceof Player)) { - return; - } + if (!(attacker instanceof Player) || !(defender instanceof Player)) { + return; + } - Player player = (Player) attacker; + Player player = (Player) attacker; - if (!(player.getItemInHand().getType().getId() == OpenInv.getItemOpenInvItem()) || (!OpenInv.getPlayerItemOpenInvStatus(player.getName())) || !OpenInv.hasPermission(player, "OpenInv.openinv")) { + if (player.getItemInHand().getType() == OpenInv.getOpenInvItem()) { + if (!OpenInv.getPlayerItemOpenInvStatus(player) || !OpenInv.hasPermission(player, Permissions.PERM_OPENINV)) { return; } Player target = (Player) defender; - player.performCommand("openinv " + target.getName()); - evt.setDamage(0); - evt.setCancelled(true); + event.setDamage(0); + event.setCancelled(true); + + player.performCommand("openinv " + target.getName()); } } } diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java index bd100c6..6d3250e 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java @@ -16,22 +16,22 @@ package com.lishid.openinv.listeners; +import org.bukkit.entity.HumanEntity; import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.Inventory; import com.lishid.openinv.OpenInv; public class OpenInvInventoryListener implements Listener { - @EventHandler(priority = EventPriority.NORMAL) + @EventHandler 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())) { + Inventory inventory = event.getInventory(); + HumanEntity player = event.getWhoClicked(); + + if (!OpenInv.getInventoryAccess().check(inventory, player)) { event.setCancelled(true); } - // } } } \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java index b78e606..07f8fc9 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java @@ -17,6 +17,8 @@ package com.lishid.openinv.listeners; import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.block.Block; import org.bukkit.block.Chest; import org.bukkit.block.Sign; import org.bukkit.entity.Player; @@ -34,7 +36,6 @@ import com.lishid.openinv.Permissions; import com.lishid.openinv.internal.SpecialEnderChest; import com.lishid.openinv.internal.SpecialPlayerInventory; -@SuppressWarnings("deprecation") public class OpenInvPlayerListener implements Listener { @EventHandler(priority = EventPriority.LOWEST) public void onPlayerJoin(PlayerJoinEvent event) { @@ -70,35 +71,40 @@ public class OpenInvPlayerListener implements Listener { public void onPlayerInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); - if (event.getPlayer().isSneaking()) { + if (player.isSneaking()) { return; } - if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.useInteractedBlock() == Result.DENY) { + Action action = event.getAction(); + + if (action == Action.RIGHT_CLICK_BLOCK && event.useInteractedBlock() == Result.DENY) { return; } - 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())) { + Block block = event.getClickedBlock(); + + if (action == Action.RIGHT_CLICK_BLOCK && block.getType() == Material.ENDER_CHEST) { + if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && OpenInv.getPlayerSilentChestStatus(player)) { event.setCancelled(true); player.openInventory(player.getEnderChest()); } } - if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getState() instanceof Chest) { - boolean silentchest = false; - boolean anychest = false; - int x = event.getClickedBlock().getX(); - int y = event.getClickedBlock().getY(); - int z = event.getClickedBlock().getZ(); + if (action == Action.RIGHT_CLICK_BLOCK && block.getState() instanceof Chest) { + boolean silentChest = false; + boolean anyChest = false; - if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && OpenInv.getPlayerSilentChestStatus(player.getName())) { - silentchest = true; + int x = block.getX(); + int y = block.getY(); + int z = block.getZ(); + + if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && OpenInv.getPlayerSilentChestStatus(player)) { + silentChest = true; } - if (OpenInv.hasPermission(player, Permissions.PERM_ANYCHEST) && OpenInv.getPlayerAnyChestStatus(player.getName())) { + if (OpenInv.hasPermission(player, Permissions.PERM_ANYCHEST) && OpenInv.getPlayerAnyChestStatus(player)) { try { - anychest = OpenInv.anySilentChest.IsAnyChestNeeded(player, x, y, z); + anyChest = OpenInv.getAnySilentChest().isAnyChestNeeded(player, x, y, z); } catch (Exception e) { player.sendMessage(ChatColor.RED + "Error while executing openinv. Unsupported CraftBukkit."); @@ -107,16 +113,16 @@ 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 (anyChest || silentChest) { + if (!OpenInv.getAnySilentChest().activateChest(player, anyChest, silentChest, x, y, z)) { event.setCancelled(true); } } } - if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getState() instanceof Sign) { + if (action == Action.RIGHT_CLICK_BLOCK && block.getState() instanceof Sign) { try { - Sign sign = ((Sign) event.getClickedBlock().getState()); + Sign sign = ((Sign) block.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); @@ -128,12 +134,12 @@ public class OpenInvPlayerListener implements Listener { } } - if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) { - if (!(player.getItemInHand().getType().getId() == OpenInv.getItemOpenInvItem()) || (!OpenInv.getPlayerItemOpenInvStatus(player.getName())) || !OpenInv.hasPermission(player, Permissions.PERM_OPENINV)) { + if (action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK) { + if (!(player.getItemInHand().getType() == OpenInv.getOpenInvItem()) || (!OpenInv.getPlayerItemOpenInvStatus(player)) || !OpenInv.hasPermission(player, Permissions.PERM_OPENINV)) { return; } player.performCommand("openinv"); } } -} \ No newline at end of file +} diff --git a/src/main/java/com/lishid/openinv/utils/UUIDUtil.java b/src/main/java/com/lishid/openinv/utils/UUIDUtil.java index 76ebb38..22e3928 100644 --- a/src/main/java/com/lishid/openinv/utils/UUIDUtil.java +++ b/src/main/java/com/lishid/openinv/utils/UUIDUtil.java @@ -1,25 +1,58 @@ package com.lishid.openinv.utils; import java.util.Arrays; +import java.util.Collection; import java.util.Map; import java.util.UUID; +import org.apache.commons.lang.Validate; import org.bukkit.Bukkit; +import org.bukkit.entity.Player; public class UUIDUtil { + private static Player getPlayer(String name) { + Validate.notNull(name, "Name cannot be null"); + + Player found = null; + String lowerName = name.toLowerCase(); + int delta = Integer.MAX_VALUE; + + Collection players = Bukkit.getOnlinePlayers(); + for (Player player : players) { + if (player.getName().toLowerCase().startsWith(lowerName)) { + int curDelta = player.getName().length() - lowerName.length(); + if (curDelta < delta) { + found = player; + delta = curDelta; + } + if (curDelta == 0) break; + } + } + + return found; + } + public static UUID getUUIDOf(String name) { UUID uuid = null; + Player player = getPlayer(name); - UUIDFetcher fetcher = new UUIDFetcher(Arrays.asList(name)); - Map response; - - try { - response = fetcher.call(); - uuid = response.get(name); + if (player != null) { + // Player was found online + uuid = player.getUniqueId(); } - catch (Exception e) { - Bukkit.getServer().getLogger().warning("Exception while running UUIDFetcher"); - e.printStackTrace(); + else { + // Player was not found online. Fetch their UUID instead + UUIDFetcher fetcher = new UUIDFetcher(Arrays.asList(name)); + Map response; + + try { + response = fetcher.call(); + uuid = response.get(name); + } + catch (Exception e) { + Bukkit.getServer().getLogger().warning("Exception while running UUIDFetcher"); + e.printStackTrace(); + } } return uuid; diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..eb76f52 --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,7 @@ +config-version: 2 +check-for-updates: true +notify: + any-chest: true + silent-chest: true +items: + open-inv: STICK \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 4cd5127..73a1bf2 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.3.0 +version: 2.3.1 author: lishid description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. -- 2.49.1 From 3c7d1696ff469fb9b05eb53a5360c315ed1747e0 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Tue, 23 Jun 2015 13:35:25 +1000 Subject: [PATCH 030/253] Bug fix and changes --- src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java | 1 - src/main/java/com/lishid/openinv/commands/OpenInvCommand.java | 1 - 2 files changed, 2 deletions(-) diff --git a/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java b/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java index 4fbaa0c..28a3ed5 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java @@ -82,7 +82,6 @@ public class OpenEnderCommand implements CommandExecutor { } else { uuid = UUIDUtil.getUUIDOf(args[0]); - if (uuid == null) { player.sendMessage(ChatColor.RED + "Player not found!"); return true; diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java index 2bfbb8c..3d2cdd7 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java @@ -75,7 +75,6 @@ public class OpenInvCommand implements CommandExecutor { } else { uuid = UUIDUtil.getUUIDOf(args[0]); - if (uuid == null) { player.sendMessage(ChatColor.RED + "Player not found!"); return true; -- 2.49.1 From f8e4e69e53ada5227a6bed4dc2e63917592aa93e Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Tue, 23 Jun 2015 15:11:35 +1000 Subject: [PATCH 031/253] Bug fix and changes --- src/main/java/com/lishid/openinv/ConfigUpdater.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/lishid/openinv/ConfigUpdater.java b/src/main/java/com/lishid/openinv/ConfigUpdater.java index 5d4f42e..6265210 100644 --- a/src/main/java/com/lishid/openinv/ConfigUpdater.java +++ b/src/main/java/com/lishid/openinv/ConfigUpdater.java @@ -13,7 +13,7 @@ import com.lishid.openinv.utils.UUIDUtil; public class ConfigUpdater { private final OpenInv plugin; - private static final int LATEST_CONFIG_VERSION = 2; + private static final int CONFIG_VERSION = 2; public ConfigUpdater(OpenInv plugin) { this.plugin = plugin; @@ -24,7 +24,7 @@ public class ConfigUpdater { } private boolean isConfigOutdated() { - return getConfigVersion() < LATEST_CONFIG_VERSION; + return getConfigVersion() < CONFIG_VERSION; } public void checkForUpdates() { @@ -65,7 +65,7 @@ public class ConfigUpdater { } // Set the new config options - plugin.getConfig().set("config-version", LATEST_CONFIG_VERSION); + plugin.getConfig().set("config-version", CONFIG_VERSION); plugin.getConfig().set("check-for-updates", checkForUpdates); plugin.getConfig().set("items.open-inv", getMaterialById(itemOpenInvItemId).toString()); plugin.getConfig().set("notify.any-chest", notifyAnyChest); -- 2.49.1 From 55deabe56ba8730cb3ab560b4a49ed701dacb990 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Tue, 23 Jun 2015 16:17:51 +1000 Subject: [PATCH 032/253] Small fixes --- .../com/lishid/openinv/ConfigUpdater.java | 100 +++++++----------- src/main/java/com/lishid/openinv/OpenInv.java | 10 +- 2 files changed, 42 insertions(+), 68 deletions(-) diff --git a/src/main/java/com/lishid/openinv/ConfigUpdater.java b/src/main/java/com/lishid/openinv/ConfigUpdater.java index 6265210..eff633e 100644 --- a/src/main/java/com/lishid/openinv/ConfigUpdater.java +++ b/src/main/java/com/lishid/openinv/ConfigUpdater.java @@ -7,6 +7,7 @@ import java.util.UUID; import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.FileConfiguration; import com.lishid.openinv.utils.UUIDUtil; @@ -30,119 +31,92 @@ public class ConfigUpdater { public void checkForUpdates() { if (isConfigOutdated()) { plugin.getLogger().info("[Config] Update found! Performing update..."); - updateConfig(); + performUpdate(); } else { plugin.getLogger().info("[Config] Update not found. Config is already up-to-date."); } } - private void updateConfig() { + private void performUpdate() { + // Update according to the right version + switch (getConfigVersion()) { + case 1: + updateConfig1To2(); + break; + } + } + + private void updateConfig1To2() { // Get the old config settings - int itemOpenInvItemId = plugin.getConfig().getInt("ItemOpenInvItemID", 280); - boolean checkForUpdates = plugin.getConfig().getBoolean("CheckForUpdates", true); - boolean notifySilentChest = plugin.getConfig().getBoolean("NotifySilentChest", true); - boolean notifyAnyChest = plugin.getConfig().getBoolean("NotifyAnyChest", true); + FileConfiguration config = plugin.getConfig(); + + int itemOpenInvItemId = config.getInt("ItemOpenInvItemID", 280); + boolean checkForUpdates = config.getBoolean("CheckForUpdates", true); + boolean notifySilentChest = config.getBoolean("NotifySilentChest", true); + boolean notifyAnyChest = config.getBoolean("NotifyAnyChest", true); Map anyChestToggles = null; Map itemOpenInvToggles = null; Map silentChestToggles = null; - if (plugin.getConfig().isSet("AnyChest")) { - anyChestToggles = updateAnyChestToggles(); + if (config.isSet("AnyChest")) { + anyChestToggles = updateToggles("AnyChest"); } - if (plugin.getConfig().isSet("ItemOpenInv")) { - itemOpenInvToggles = updateItemOpenInvToggles(); + if (config.isSet("ItemOpenInv")) { + itemOpenInvToggles = updateToggles("ItemOpenInv"); } - if (plugin.getConfig().isSet("SilentChest")) { - silentChestToggles = updateSilentChestToggles(); + if (config.isSet("SilentChest")) { + silentChestToggles = updateToggles("SilentChest"); } // Clear the old config - for (String key : plugin.getConfig().getKeys(false)) { + for (String key : config.getKeys(false)) { plugin.getConfig().set(key, null); } // Set the new config options - plugin.getConfig().set("config-version", CONFIG_VERSION); - plugin.getConfig().set("check-for-updates", checkForUpdates); - plugin.getConfig().set("items.open-inv", getMaterialById(itemOpenInvItemId).toString()); - plugin.getConfig().set("notify.any-chest", notifyAnyChest); - plugin.getConfig().set("notify.silent-chest", notifySilentChest); + config.set("config-version", "2"); + config.set("check-for-updates", checkForUpdates); + config.set("items.open-inv", getMaterialById(itemOpenInvItemId).toString()); + config.set("notify.any-chest", notifyAnyChest); + config.set("notify.silent-chest", notifySilentChest); if (anyChestToggles != null && !anyChestToggles.isEmpty()) { for (Map.Entry entry : anyChestToggles.entrySet()) { - plugin.getConfig().set("toggles.any-chest." + entry.getKey(), entry.getValue()); + config.set("toggles.any-chest." + entry.getKey(), entry.getValue()); } } if (itemOpenInvToggles != null && !itemOpenInvToggles.isEmpty()) { for (Map.Entry entry : itemOpenInvToggles.entrySet()) { - plugin.getConfig().set("toggles.items.open-inv." + entry.getKey(), entry.getValue()); + config.set("toggles.items.open-inv." + entry.getKey(), entry.getValue()); } } if (silentChestToggles != null && !silentChestToggles.isEmpty()) { for (Map.Entry entry : silentChestToggles.entrySet()) { - plugin.getConfig().set("toggles.silent-chest." + entry.getKey(), entry.getValue()); + config.set("toggles.silent-chest." + entry.getKey(), entry.getValue()); } } // Save the new config plugin.saveConfig(); - plugin.getLogger().info("[Config] Update complete."); - } - private Map updateAnyChestToggles() { + private Map updateToggles(String sectionName) { Map toggles = new HashMap(); - ConfigurationSection anyChestSection = plugin.getConfig().getConfigurationSection("AnyChest"); - Set keys = anyChestSection.getKeys(false); + ConfigurationSection section = plugin.getConfig().getConfigurationSection(sectionName); + Set keys = section.getKeys(false); if (keys == null || keys.isEmpty()) return null; for (String playerName : keys) { UUID uuid = UUIDUtil.getUUIDOf(playerName); if (uuid != null) { - boolean toggled = anyChestSection.getBoolean(playerName + ".toggle", false); - toggles.put(uuid, toggled); - } - } - - return toggles; - } - - private Map updateItemOpenInvToggles() { - Map toggles = new HashMap(); - - ConfigurationSection anyChestSection = plugin.getConfig().getConfigurationSection("ItemOpenInv"); - Set keys = anyChestSection.getKeys(false); - if (keys == null || keys.isEmpty()) return null; - - for (String playerName : keys) { - UUID uuid = UUIDUtil.getUUIDOf(playerName); - if (uuid != null) { - boolean toggled = anyChestSection.getBoolean(playerName + ".toggle", false); - toggles.put(uuid, toggled); - } - } - - return toggles; - } - - private Map updateSilentChestToggles() { - Map toggles = new HashMap(); - - ConfigurationSection silentChestSection = plugin.getConfig().getConfigurationSection("SilentChest"); - Set keys = silentChestSection.getKeys(false); - if (keys == null || keys.isEmpty()) return null; - - for (String playerName : keys) { - UUID uuid = UUIDUtil.getUUIDOf(playerName); - if (uuid != null) { - boolean toggled = silentChestSection.getBoolean(playerName + ".toggle", false); + boolean toggled = section.getBoolean(playerName + ".toggle", false); toggles.put(uuid, toggled); } } diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index e300fc0..ae96043 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -131,9 +131,9 @@ public class OpenInv extends JavaPlugin { if (!mainPlugin.getConfig().isSet("items.open-inv")) { saveToConfig("items.open-inv", "STICK"); } - String itemName = mainPlugin.getConfig().getString("items.open-inv", "STICK"); - return Material.getMaterial(itemName); + Material material = Material.getMaterial(itemName); + return material != null ? material : Material.STICK; } public static boolean notifySilentChest() { @@ -198,13 +198,13 @@ public class OpenInv extends JavaPlugin { } public static void showHelp(Player player) { - player.sendMessage(ChatColor.GREEN + "/openinv - Open a player's inventory"); + 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 + "/openender - Open a player's ender chest"); 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 + "/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"); -- 2.49.1 From 802e405c4e36128e452584936568c621c7ff520e Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Tue, 23 Jun 2015 16:28:58 +1000 Subject: [PATCH 033/253] Small change to update not required message --- src/main/java/com/lishid/openinv/ConfigUpdater.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/lishid/openinv/ConfigUpdater.java b/src/main/java/com/lishid/openinv/ConfigUpdater.java index eff633e..b061298 100644 --- a/src/main/java/com/lishid/openinv/ConfigUpdater.java +++ b/src/main/java/com/lishid/openinv/ConfigUpdater.java @@ -33,7 +33,7 @@ public class ConfigUpdater { plugin.getLogger().info("[Config] Update found! Performing update..."); performUpdate(); } else { - plugin.getLogger().info("[Config] Update not found. Config is already up-to-date."); + plugin.getLogger().info("[Config] Update not required."); } } -- 2.49.1 From f7029e5ee2de5a3e897b8a19d03e44736836cec5 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Tue, 23 Jun 2015 16:46:14 +1000 Subject: [PATCH 034/253] Another small change --- src/main/java/com/lishid/openinv/OpenInv.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index ae96043..22a5c77 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -131,9 +131,15 @@ public class OpenInv extends JavaPlugin { if (!mainPlugin.getConfig().isSet("items.open-inv")) { saveToConfig("items.open-inv", "STICK"); } + String itemName = mainPlugin.getConfig().getString("items.open-inv", "STICK"); Material material = Material.getMaterial(itemName); - return material != null ? material : Material.STICK; + if (material == null) { + mainPlugin.getLogger().info("OpenInv item '" + itemName + "' does not match to a valid item. Defaulting to stick."); + material = Material.STICK; + } + + return material; } public static boolean notifySilentChest() { -- 2.49.1 From a03c73f8d608a6db064c788f1e138c01af3617ba Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Tue, 23 Jun 2015 19:05:26 +1000 Subject: [PATCH 035/253] More fixes and improvements --- .../com/lishid/openinv/ConfigUpdater.java | 30 ++++++++++++++++--- src/main/java/com/lishid/openinv/OpenInv.java | 2 +- .../com/lishid/openinv/utils/UUIDFetcher.java | 2 +- .../com/lishid/openinv/utils/UUIDUtil.java | 14 ++++++++- 4 files changed, 41 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/lishid/openinv/ConfigUpdater.java b/src/main/java/com/lishid/openinv/ConfigUpdater.java index b061298..e8af988 100644 --- a/src/main/java/com/lishid/openinv/ConfigUpdater.java +++ b/src/main/java/com/lishid/openinv/ConfigUpdater.java @@ -1,5 +1,6 @@ package com.lishid.openinv; +import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -32,7 +33,8 @@ public class ConfigUpdater { if (isConfigOutdated()) { plugin.getLogger().info("[Config] Update found! Performing update..."); performUpdate(); - } else { + } + else { plugin.getLogger().info("[Config] Update not required."); } } @@ -47,9 +49,19 @@ public class ConfigUpdater { } private void updateConfig1To2() { - // Get the old config settings FileConfiguration config = plugin.getConfig(); + // Backup the old config file + File configFile = new File(plugin.getDataFolder(), "config.yml"); + File oldConfigFile = new File(plugin.getDataFolder(), "config_old.yml"); + + configFile.renameTo(oldConfigFile); + + if (configFile.exists()) { + configFile.delete(); + } + + // Get the old config settings int itemOpenInvItemId = config.getInt("ItemOpenInvItemID", 280); boolean checkForUpdates = config.getBoolean("CheckForUpdates", true); boolean notifySilentChest = config.getBoolean("NotifySilentChest", true); @@ -73,10 +85,15 @@ public class ConfigUpdater { // Clear the old config for (String key : config.getKeys(false)) { - plugin.getConfig().set(key, null); + config.set(key, null); } // Set the new config options + plugin.saveDefaultConfig(); + plugin.reloadConfig(); + + config = plugin.getConfig(); // Refresh the referenced config + config.set("config-version", "2"); config.set("check-for-updates", checkForUpdates); config.set("items.open-inv", getMaterialById(itemOpenInvItemId).toString()); @@ -111,7 +128,9 @@ public class ConfigUpdater { ConfigurationSection section = plugin.getConfig().getConfigurationSection(sectionName); Set keys = section.getKeys(false); - if (keys == null || keys.isEmpty()) return null; + if (keys == null || keys.isEmpty()) { + return null; + } for (String playerName : keys) { UUID uuid = UUIDUtil.getUUIDOf(playerName); @@ -119,6 +138,9 @@ public class ConfigUpdater { boolean toggled = section.getBoolean(playerName + ".toggle", false); toggles.put(uuid, toggled); } + else { + plugin.getLogger().warning("Failed to retrieve UUID of player: " + playerName); + } } return toggles; diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index 22a5c77..26adac5 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -135,7 +135,7 @@ public class OpenInv extends JavaPlugin { String itemName = mainPlugin.getConfig().getString("items.open-inv", "STICK"); Material material = Material.getMaterial(itemName); if (material == null) { - mainPlugin.getLogger().info("OpenInv item '" + itemName + "' does not match to a valid item. Defaulting to stick."); + mainPlugin.getLogger().warning("OpenInv item '" + itemName + "' does not match to a valid item. Defaulting to stick."); material = Material.STICK; } diff --git a/src/main/java/com/lishid/openinv/utils/UUIDFetcher.java b/src/main/java/com/lishid/openinv/utils/UUIDFetcher.java index 11776a3..2784fb4 100644 --- a/src/main/java/com/lishid/openinv/utils/UUIDFetcher.java +++ b/src/main/java/com/lishid/openinv/utils/UUIDFetcher.java @@ -44,7 +44,7 @@ public class UUIDFetcher implements Callable> { String id = (String) jsonProfile.get("id"); String name = (String) jsonProfile.get("name"); UUID uuid = UUIDFetcher.getUUID(id); - uuidMap.put(name, uuid); + uuidMap.put(name.toLowerCase(), uuid); } if (rateLimiting && i != requests - 1) { Thread.sleep(100L); diff --git a/src/main/java/com/lishid/openinv/utils/UUIDUtil.java b/src/main/java/com/lishid/openinv/utils/UUIDUtil.java index 22e3928..ce736aa 100644 --- a/src/main/java/com/lishid/openinv/utils/UUIDUtil.java +++ b/src/main/java/com/lishid/openinv/utils/UUIDUtil.java @@ -7,6 +7,7 @@ import java.util.UUID; import org.apache.commons.lang.Validate; import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; public class UUIDUtil { @@ -32,6 +33,7 @@ public class UUIDUtil { return found; } + @SuppressWarnings("deprecation") public static UUID getUUIDOf(String name) { UUID uuid = null; Player player = getPlayer(name); @@ -47,11 +49,21 @@ public class UUIDUtil { try { response = fetcher.call(); - uuid = response.get(name); + uuid = response.get(name.toLowerCase()); } catch (Exception e) { + /* Bukkit.getServer().getLogger().warning("Exception while running UUIDFetcher"); e.printStackTrace(); + */ + Bukkit.getServer().getLogger().warning("Exception while running UUIDFetcher"); + // Failed to retrieve with UUIDFetcher, server might be offline? + // Fallback on searching for the player via their name + OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name); + + if (offlinePlayer != null) { + uuid = offlinePlayer.getUniqueId(); + } } } -- 2.49.1 From 2f1fd8743587975d52cf509061c425ec57def456 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Tue, 23 Jun 2015 19:07:19 +1000 Subject: [PATCH 036/253] More fixes and improvements --- src/main/java/com/lishid/openinv/utils/UUIDUtil.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/lishid/openinv/utils/UUIDUtil.java b/src/main/java/com/lishid/openinv/utils/UUIDUtil.java index ce736aa..1489ad5 100644 --- a/src/main/java/com/lishid/openinv/utils/UUIDUtil.java +++ b/src/main/java/com/lishid/openinv/utils/UUIDUtil.java @@ -56,11 +56,10 @@ public class UUIDUtil { Bukkit.getServer().getLogger().warning("Exception while running UUIDFetcher"); e.printStackTrace(); */ - Bukkit.getServer().getLogger().warning("Exception while running UUIDFetcher"); + // Failed to retrieve with UUIDFetcher, server might be offline? // Fallback on searching for the player via their name OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name); - if (offlinePlayer != null) { uuid = offlinePlayer.getUniqueId(); } -- 2.49.1 From 471b63183800f416a6b2261f2cbc14993af99d13 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Wed, 24 Jun 2015 19:19:45 +1000 Subject: [PATCH 037/253] More fixes and improvements - continued --- .../com/lishid/openinv/ConfigUpdater.java | 19 ++- src/main/java/com/lishid/openinv/OpenInv.java | 67 +++++----- .../openinv/commands/OpenEnderCommand.java | 1 - .../openinv/commands/OpenInvCommand.java | 1 - .../openinv/commands/SearchEnderCommand.java | 8 +- .../openinv/commands/SearchInvCommand.java | 4 +- .../openinv/internal/AnySilentChest.java | 6 +- .../openinv/internal/InventoryAccess.java | 4 +- .../openinv/internal/PlayerDataManager.java | 2 +- .../internal/SilentContainerChest.java | 4 +- .../openinv/internal/SilentInventory.java | 8 +- .../openinv/internal/SpecialEnderChest.java | 15 ++- .../internal/SpecialPlayerInventory.java | 5 +- .../listeners/OpenInvPlayerListener.java | 120 +++++++++--------- src/main/resources/plugin.yml | 38 +++--- 15 files changed, 156 insertions(+), 146 deletions(-) diff --git a/src/main/java/com/lishid/openinv/ConfigUpdater.java b/src/main/java/com/lishid/openinv/ConfigUpdater.java index e8af988..e94ae1b 100644 --- a/src/main/java/com/lishid/openinv/ConfigUpdater.java +++ b/src/main/java/com/lishid/openinv/ConfigUpdater.java @@ -61,9 +61,11 @@ public class ConfigUpdater { configFile.delete(); } + plugin.getLogger().info("[Config] Backup of old config.yml file created."); + // Get the old config settings int itemOpenInvItemId = config.getInt("ItemOpenInvItemID", 280); - boolean checkForUpdates = config.getBoolean("CheckForUpdates", true); + // boolean checkForUpdates = config.getBoolean("CheckForUpdates", true); boolean notifySilentChest = config.getBoolean("NotifySilentChest", true); boolean notifyAnyChest = config.getBoolean("NotifyAnyChest", true); @@ -92,10 +94,10 @@ public class ConfigUpdater { plugin.saveDefaultConfig(); plugin.reloadConfig(); - config = plugin.getConfig(); // Refresh the referenced config + config = plugin.getConfig(); // Refresh the referenced plugin config - config.set("config-version", "2"); - config.set("check-for-updates", checkForUpdates); + config.set("config-version", 2); + // config.set("check-for-updates", checkForUpdates); config.set("items.open-inv", getMaterialById(itemOpenInvItemId).toString()); config.set("notify.any-chest", notifyAnyChest); config.set("notify.silent-chest", notifySilentChest); @@ -132,17 +134,20 @@ public class ConfigUpdater { return null; } + int total = keys.size(); + int converted = 0; + for (String playerName : keys) { UUID uuid = UUIDUtil.getUUIDOf(playerName); if (uuid != null) { boolean toggled = section.getBoolean(playerName + ".toggle", false); toggles.put(uuid, toggled); - } - else { - plugin.getLogger().warning("Failed to retrieve UUID of player: " + playerName); + converted++; } } + plugin.getLogger().info("[Config] Converted (" + converted + "/" + total + ") " + sectionName + " toggle player usernames to UUIDs."); + return toggles; } diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index 26adac5..71773f1 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -31,6 +31,7 @@ import org.bukkit.plugin.java.JavaPlugin; import com.lishid.openinv.commands.AnyChestCommand; import com.lishid.openinv.commands.OpenEnderCommand; import com.lishid.openinv.commands.OpenInvCommand; +import com.lishid.openinv.commands.SearchEnderCommand; import com.lishid.openinv.commands.SearchInvCommand; import com.lishid.openinv.commands.SilentChestCommand; import com.lishid.openinv.commands.ToggleOpenInvCommand; @@ -63,7 +64,7 @@ public class OpenInv extends JavaPlugin { // Plugin mainPlugin = this; - // Config + // Config Updater ConfigUpdater configUpdater = new ConfigUpdater(this); configUpdater.checkForUpdates(); @@ -90,11 +91,12 @@ public class OpenInv extends JavaPlugin { private void registerCommands() { getCommand("openinv").setExecutor(new OpenInvCommand(this)); - getCommand("searchinv").setExecutor(new SearchInvCommand()); - getCommand("toggleopeninv").setExecutor(new ToggleOpenInvCommand()); - getCommand("silentchest").setExecutor(new SilentChestCommand()); - getCommand("anychest").setExecutor(new AnyChestCommand()); getCommand("openender").setExecutor(new OpenEnderCommand(this)); + getCommand("searchinv").setExecutor(new SearchInvCommand()); + getCommand("searchender").setExecutor(new SearchEnderCommand()); + getCommand("toggleopeninv").setExecutor(new ToggleOpenInvCommand()); + getCommand("anychest").setExecutor(new AnyChestCommand()); + getCommand("silentchest").setExecutor(new SilentChestCommand()); } public static PlayerDataManager getPlayerLoader() { @@ -109,21 +111,19 @@ public class OpenInv extends JavaPlugin { return anySilentChest; } - /* - public static Object getFromConfig(String data, Object defaultValue) { - Object val = mainPlugin.getConfig().get(data); + public static Object getFromConfig(String path, Object defaultValue) { + Object val = mainPlugin.getConfig().get(path); if (val == null) { - mainPlugin.getConfig().set(data, defaultValue); + mainPlugin.getConfig().set(path, defaultValue); return defaultValue; } else { return val; } } - */ - public static void saveToConfig(String data, Object value) { - mainPlugin.getConfig().set(data, value); + public static void saveToConfig(String path, Object value) { + mainPlugin.getConfig().set(path, value); mainPlugin.saveConfig(); } @@ -174,48 +174,41 @@ public class OpenInv extends JavaPlugin { saveToConfig("toggles.silent-chest." + player.getUniqueId(), status); } - /** - * Logs a given message to console. - * - * @param text the text to log - */ public static void log(String text) { mainPlugin.getLogger().info("[OpenInv] " + text); } - /** - * Logs an error to console. - * - * @param e the throwable error to log - */ public static void log(Throwable e) { mainPlugin.getLogger().severe("[OpenInv] " + e.toString()); e.printStackTrace(); } - /** - * Sends a specified message to a given CommandSender with the OpenInv prefix. - * - * @param sender the CommandSender to message - * @param message the message to send to the player - */ public static void sendMessage(CommandSender sender, String message) { sender.sendMessage(ChatColor.AQUA + "[OpenInv] " + ChatColor.WHITE + message); } public static void showHelp(Player player) { - player.sendMessage(ChatColor.GREEN + "/openinv - Open a player's inventory"); + 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 ender chest"); - 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 + "/openender - Open a player's ender chest."); + player.sendMessage(ChatColor.GREEN + " (aliases: oe)"); + + 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: si)"); + + player.sendMessage(ChatColor.GREEN + "/searchender [minAmount] -"); + player.sendMessage(ChatColor.GREEN + " Search and list players having a specific item."); + player.sendMessage(ChatColor.GREEN + " (aliases: se)"); + + player.sendMessage(ChatColor.GREEN + "/toggleopeninv - Toggle the item openinv function."); + player.sendMessage(ChatColor.GREEN + " (aliases: toi, toggleoi, toggleinv)"); + + player.sendMessage(ChatColor.GREEN + "/anychest - Toggle the any chest function."); player.sendMessage(ChatColor.GREEN + " (aliases: ac)"); - player.sendMessage(ChatColor.GREEN + "/silentchest - Toggle silent chest function"); + + player.sendMessage(ChatColor.GREEN + "/silentchest - Toggle the silent chest function."); player.sendMessage(ChatColor.GREEN + " (aliases: sc, silent)"); } diff --git a/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java b/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java index 28a3ed5..f39fce8 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java @@ -62,7 +62,6 @@ public class OpenEnderCommand implements CommandExecutor { // History management UUID history = openEnderHistory.get(player.getUniqueId()); - if (history == null) { history = player.getUniqueId(); openEnderHistory.put(player.getUniqueId(), history); diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java index 3d2cdd7..4368ac7 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java @@ -61,7 +61,6 @@ public class OpenInvCommand implements CommandExecutor { // History management UUID history = openInvHistory.get(player.getUniqueId()); - if (history == null) { history = player.getUniqueId(); openInvHistory.put(player.getUniqueId(), history); diff --git a/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java b/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java index 658fa94..65fd961 100644 --- a/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java @@ -16,7 +16,7 @@ public class SearchEnderCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (command.getName().equalsIgnoreCase("searchinv")) { + if (command.getName().equalsIgnoreCase("searchender")) { if (sender instanceof Player) { if (!OpenInv.hasPermission(sender, Permissions.PERM_SEARCH)) { sender.sendMessage(ChatColor.RED + "You do not have permission to search player ender chests."); @@ -28,7 +28,7 @@ public class SearchEnderCommand implements CommandExecutor { int count = 1; if (args.length >= 1) { - String[] gData = null; + String[] gData; gData = args[0].split(":"); material = Material.matchMaterial(gData[0]); } @@ -50,14 +50,14 @@ public class SearchEnderCommand implements CommandExecutor { StringBuilder sb = new StringBuilder(); for (Player onlinePlayer : Bukkit.getServer().getOnlinePlayers()) { - if (onlinePlayer.getInventory().contains(material, count)) { + if (onlinePlayer.getEnderChest().contains(material, count)) { sb.append(onlinePlayer.getName()); sb.append(" "); } } String playerList = sb.toString(); - sender.sendMessage("Players with the item " + material.toString() + ": " + playerList); + sender.sendMessage("Players with the item " + ChatColor.GRAY + material.toString() + ChatColor.RESET + " in their ender chest: " + playerList); return true; } diff --git a/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java b/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java index 98d1527..babe370 100644 --- a/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java @@ -42,7 +42,7 @@ public class SearchInvCommand implements CommandExecutor { int count = 1; if (args.length >= 1) { - String[] gData = null; + String[] gData; gData = args[0].split(":"); material = Material.matchMaterial(gData[0]); } @@ -71,7 +71,7 @@ public class SearchInvCommand implements CommandExecutor { } String playerList = sb.toString(); - sender.sendMessage("Players with the item " + material.toString() + ": " + playerList); + sender.sendMessage("Players with the item " + ChatColor.GRAY + material.toString() + ChatColor.RESET + " in their inventory: " + playerList); return true; } diff --git a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java index 213422e..6c88ad6 100644 --- a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java +++ b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java @@ -22,7 +22,7 @@ import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; -//Volatile +// Volatile import net.minecraft.server.v1_8_R3.*; import org.bukkit.craftbukkit.v1_8_R3.entity.*; @@ -125,7 +125,7 @@ public class AnySilentChest { if (silentChest) { tileInventory = new SilentInventory(tileInventory); if (OpenInv.notifySilentChest()) { - p.sendMessage("You are opening a chest silently."); + OpenInv.sendMessage(p, "You are opening a chest silently."); } returnValue = false; } @@ -133,7 +133,7 @@ public class AnySilentChest { player.openContainer(tileInventory); if (anyChest && OpenInv.notifyAnyChest()) { - p.sendMessage("You are opening a blocked chest."); + OpenInv.sendMessage(p, "You are opening a blocked chest."); } return returnValue; diff --git a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java index 97931f4..9d6940b 100644 --- a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java +++ b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java @@ -24,7 +24,7 @@ import org.bukkit.inventory.Inventory; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; -//Volatile +// Volatile import net.minecraft.server.v1_8_R3.*; import org.bukkit.craftbukkit.v1_8_R3.inventory.*; @@ -53,7 +53,7 @@ public class InventoryAccess { return ((CraftInventory) inventory).getInventory(); } - //Use reflection to find the inventory + // Use reflection to find the inventory Class clazz = inventory.getClass(); IInventory result = null; for(Field f : clazz.getDeclaredFields()) { diff --git a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java index 2bbc264..d6fa177 100644 --- a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java +++ b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java @@ -25,7 +25,7 @@ import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.mojang.authlib.GameProfile; -//Volatile +// Volatile import net.minecraft.server.v1_8_R3.*; import org.bukkit.craftbukkit.v1_8_R3.*; diff --git a/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java index bc923e0..b9bc4be 100644 --- a/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java +++ b/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java @@ -16,7 +16,7 @@ package com.lishid.openinv.internal; -//Volatile +// Volatile import net.minecraft.server.v1_8_R3.*; public class SilentContainerChest extends ContainerChest { @@ -25,7 +25,7 @@ public class SilentContainerChest extends ContainerChest { public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman human) { super(i1, i2, human); inv = i2; - // close signal + // Close signal inv.closeContainer(human); } diff --git a/src/main/java/com/lishid/openinv/internal/SilentInventory.java b/src/main/java/com/lishid/openinv/internal/SilentInventory.java index dcea079..a2f50a6 100644 --- a/src/main/java/com/lishid/openinv/internal/SilentInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SilentInventory.java @@ -6,7 +6,7 @@ import org.bukkit.craftbukkit.v1_8_R3.entity.CraftHumanEntity; import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.InventoryHolder; -//Volatile +// Volatile import net.minecraft.server.v1_8_R3.*; public class SilentInventory implements ITileInventory { @@ -73,12 +73,12 @@ public class SilentInventory implements ITileInventory { @Override public void startOpen(EntityHuman entityHuman) { - //Don't do anything + // Don't do anything } @Override public void closeContainer(EntityHuman entityHuman) { - //Don't do anything + // Don't do anything } @Override @@ -153,7 +153,7 @@ public class SilentInventory implements ITileInventory { @Override public Container createContainer(PlayerInventory playerInventory, EntityHuman entityHuman) { - //Don't let the chest itself create the container. + // Don't let the chest itself create the container. return new ContainerChest(playerInventory, this, entityHuman); } diff --git a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java index ed43765..91f7b94 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java @@ -22,8 +22,9 @@ import org.bukkit.inventory.InventoryHolder; import com.lishid.openinv.OpenInv; -//Volatile +// Volatile import net.minecraft.server.v1_8_R3.*; + import org.bukkit.craftbukkit.v1_8_R3.entity.*; import org.bukkit.craftbukkit.v1_8_R3.inventory.*; @@ -31,17 +32,17 @@ public class SpecialEnderChest extends InventorySubcontainer { private final CraftInventory inventory = new CraftInventory(this); private final InventoryEnderChest enderChest; private final CraftPlayer owner; - private boolean playerOnline = false; + private boolean playerOnline; - public SpecialEnderChest(Player p, Boolean online) { + public SpecialEnderChest(Player p, boolean online) { this(p, ((CraftPlayer) p).getHandle().getEnderChest(), online); } - public SpecialEnderChest(Player p, InventoryEnderChest enderchest, boolean online) { - super(enderchest.getName(), enderchest.hasCustomName(), enderchest.getSize()); + public SpecialEnderChest(Player p, InventoryEnderChest enderChest, boolean online) { + super(enderChest.getName(), enderChest.hasCustomName(), enderChest.getSize()); this.owner = (CraftPlayer) p; - this.enderChest = enderchest; - this.items = enderChest.getContents(); + this.enderChest = enderChest; + this.items = this.enderChest.getContents(); this.playerOnline = online; OpenInv.enderChests.put(owner.getUniqueId(), this); } diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index c9e39e3..a53110d 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -21,8 +21,9 @@ import org.bukkit.inventory.Inventory; import com.lishid.openinv.OpenInv; -//Volatile +// Volatile import net.minecraft.server.v1_8_R3.*; + import org.bukkit.craftbukkit.v1_8_R3.entity.*; import org.bukkit.craftbukkit.v1_8_R3.inventory.*; @@ -30,7 +31,7 @@ public class SpecialPlayerInventory extends PlayerInventory { private final CraftInventory inventory = new CraftInventory(this); private final ItemStack[] extra = new ItemStack[5]; private final CraftPlayer owner; - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player p, boolean online) { super(((CraftPlayer) p).getHandle()); diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java index 07f8fc9..2c479f0 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java @@ -67,7 +67,7 @@ public class OpenInvPlayerListener implements Listener { } } - @EventHandler(priority = EventPriority.MONITOR) + @EventHandler public void onPlayerInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); @@ -76,70 +76,76 @@ public class OpenInvPlayerListener implements Listener { } Action action = event.getAction(); - - if (action == Action.RIGHT_CLICK_BLOCK && event.useInteractedBlock() == Result.DENY) { - return; - } - Block block = event.getClickedBlock(); - if (action == Action.RIGHT_CLICK_BLOCK && block.getType() == Material.ENDER_CHEST) { - if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && OpenInv.getPlayerSilentChestStatus(player)) { - event.setCancelled(true); - player.openInventory(player.getEnderChest()); - } - } - - if (action == Action.RIGHT_CLICK_BLOCK && block.getState() instanceof Chest) { - boolean silentChest = false; - boolean anyChest = false; - - int x = block.getX(); - int y = block.getY(); - int z = block.getZ(); - - if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && OpenInv.getPlayerSilentChestStatus(player)) { - silentChest = true; - } - - if (OpenInv.hasPermission(player, Permissions.PERM_ANYCHEST) && OpenInv.getPlayerAnyChestStatus(player)) { - try { - anyChest = OpenInv.getAnySilentChest().isAnyChestNeeded(player, x, y, z); + switch (action) { + case RIGHT_CLICK_BLOCK: + if (event.useInteractedBlock() == Result.DENY) { + return; } - catch (Exception e) { - player.sendMessage(ChatColor.RED + "Error while executing openinv. Unsupported CraftBukkit."); - e.printStackTrace(); + + // Ender Chests + if (block.getType() == Material.ENDER_CHEST) { + if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && OpenInv.getPlayerSilentChestStatus(player)) { + event.setCancelled(true); + player.openInventory(player.getEnderChest()); + return; + } } - } - // If the anychest or silentchest is active - if (anyChest || silentChest) { - if (!OpenInv.getAnySilentChest().activateChest(player, anyChest, silentChest, x, y, z)) { - event.setCancelled(true); + // Chests + if (block.getState() instanceof Chest) { + boolean silentChest = false; + boolean anyChest = false; + int x = block.getX(); + int y = block.getY(); + int z = block.getZ(); + + if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && OpenInv.getPlayerSilentChestStatus(player)) { + silentChest = true; + } + + if (OpenInv.hasPermission(player, Permissions.PERM_ANYCHEST) && OpenInv.getPlayerAnyChestStatus(player)) { + try { + anyChest = OpenInv.getAnySilentChest().isAnyChestNeeded(player, x, y, z); + } + catch (Exception e) { + player.sendMessage(ChatColor.RED + "Error while executing openinv. Unsupported CraftBukkit."); + e.printStackTrace(); + } + } + + // If the anyChest or silentChest is active + if (anyChest || silentChest) { + if (!OpenInv.getAnySilentChest().activateChest(player, anyChest, silentChest, x, y, z)) { + event.setCancelled(true); + } + } + + return; } - } - } - if (action == Action.RIGHT_CLICK_BLOCK && block.getState() instanceof Sign) { - try { - Sign sign = ((Sign) block.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); + // Signs + if (block.getState() instanceof Sign) { + try { + Sign sign = ((Sign) block.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 e) { + player.sendMessage("Internal Error."); + e.printStackTrace(); + } + + return; + } + case RIGHT_CLICK_AIR: + // OpenInv item + if (player.getItemInHand().getType() == OpenInv.getOpenInvItem() && OpenInv.getPlayerItemOpenInvStatus(player) && OpenInv.hasPermission(player, Permissions.PERM_OPENINV)) { + player.performCommand("openinv"); } - } - catch (Exception ex) { - player.sendMessage("Internal Error."); - ex.printStackTrace(); - } - } - - if (action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK) { - if (!(player.getItemInHand().getType() == OpenInv.getOpenInvItem()) || (!OpenInv.getPlayerItemOpenInvStatus(player)) || !OpenInv.hasPermission(player, Permissions.PERM_OPENINV)) { - return; - } - - player.performCommand("openinv"); } } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 73a1bf2..2058558 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -7,32 +7,38 @@ description: > commands: openinv: aliases: [oi, inv, open] - description: Open a player's inventory + description: Open a player's inventory. usage: | - / - Open last person's inventory - / - Open a player's inventory + / - Opens last person's inventory. + / - Opens a player's inventory. openender: aliases: [oe] - description: Opens the enderchest of a player + description: Opens a player's ender chest. usage: | - / - Opens a player's enderchest + / - Opens last person's ender chest. + / - Opens a player's ender chest. searchinv: aliases: [si] - description: Search and list players having a specific item + description: Searches and lists players that have a specific item in their inventory. usage: | - / [MinAmount] - Item can be the Item ID or the CraftBukkit Item Name, MinAmount is the minimum amount to be considered. + / [minAmount] - Item can be the Item ID or the CraftBukkit Item Name, minAmount is the minimum amount to be considered. + searchender: + aliases: [se] + description: Searches and lists players that have a specific item in their ender chest. + usage: | + / [minAmount] - Item can be the Item ID or the CraftBukkit Item Name, minAmount is the minimum amount to be considered. toggleopeninv: aliases: [toi, toggleoi, toggleinv] - description: Toggle item openinv function + description: Toggles the item openinv function. usage: | - / [Check] - Checks whether item openinv is enabled - silentchest: - aliases: [sc, silent] - description: Toggle silent chest function, which hides the animation of a chest when opened or closed, and suppresses the sound. - usage: | - / [Check] - Checks whether silent chest is enabled + / [check] - Checks whether item openinv is enabled. anychest: aliases: [ac] - description: Toggle anychest function, which allows opening of blocked chests. + description: Toggles the any chest function, which allows opening of blocked chests. usage: | - / [Check] - Checks whether anychest is enabled + / [check] - Checks whether any chest is enabled. + silentchest: + aliases: [sc, silent] + description: Toggles the silent chest function, which hides the animation of a chest when opened or closed, and suppresses the sound. + usage: | + / [check] - Checks whether silent chest is enabled. \ No newline at end of file -- 2.49.1 From d1d60e55d50fea966bbebaa92339f83c0965f298 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Wed, 24 Jun 2015 19:37:09 +1000 Subject: [PATCH 038/253] More fixes and improvements - continued --- src/main/java/com/lishid/openinv/ConfigUpdater.java | 2 -- .../java/com/lishid/openinv/commands/SearchEnderCommand.java | 2 -- src/main/resources/config.yml | 1 - src/main/resources/plugin.yml | 2 +- 4 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/com/lishid/openinv/ConfigUpdater.java b/src/main/java/com/lishid/openinv/ConfigUpdater.java index e94ae1b..f3fa1bb 100644 --- a/src/main/java/com/lishid/openinv/ConfigUpdater.java +++ b/src/main/java/com/lishid/openinv/ConfigUpdater.java @@ -65,7 +65,6 @@ public class ConfigUpdater { // Get the old config settings int itemOpenInvItemId = config.getInt("ItemOpenInvItemID", 280); - // boolean checkForUpdates = config.getBoolean("CheckForUpdates", true); boolean notifySilentChest = config.getBoolean("NotifySilentChest", true); boolean notifyAnyChest = config.getBoolean("NotifyAnyChest", true); @@ -97,7 +96,6 @@ public class ConfigUpdater { config = plugin.getConfig(); // Refresh the referenced plugin config config.set("config-version", 2); - // config.set("check-for-updates", checkForUpdates); config.set("items.open-inv", getMaterialById(itemOpenInvItemId).toString()); config.set("notify.any-chest", notifyAnyChest); config.set("notify.silent-chest", notifySilentChest); diff --git a/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java b/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java index 65fd961..71c4557 100644 --- a/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java @@ -12,8 +12,6 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; public class SearchEnderCommand implements CommandExecutor { - // TODO - @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("searchender")) { diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index eb76f52..50320d5 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,5 +1,4 @@ config-version: 2 -check-for-updates: true notify: any-chest: true silent-chest: true diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 2058558..163b3a0 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -7,7 +7,7 @@ description: > commands: openinv: aliases: [oi, inv, open] - description: Open a player's inventory. + description: Opens a player's inventory. usage: | / - Opens last person's inventory. / - Opens a player's inventory. -- 2.49.1 From 791368b100eadb519464a1699ba40c9446ed1722 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Fri, 10 Jul 2015 19:44:45 +1000 Subject: [PATCH 039/253] Fix & improve UUID retrieval --- .../com/lishid/openinv/utils/UUIDUtil.java | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/lishid/openinv/utils/UUIDUtil.java b/src/main/java/com/lishid/openinv/utils/UUIDUtil.java index 1489ad5..ea7c038 100644 --- a/src/main/java/com/lishid/openinv/utils/UUIDUtil.java +++ b/src/main/java/com/lishid/openinv/utils/UUIDUtil.java @@ -34,35 +34,36 @@ public class UUIDUtil { } @SuppressWarnings("deprecation") + private static UUID getUUIDLocally(String name) { + OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name); + return offlinePlayer.hasPlayedBefore() ? offlinePlayer.getUniqueId() : null; + } + public static UUID getUUIDOf(String name) { - UUID uuid = null; + UUID uuid; Player player = getPlayer(name); if (player != null) { - // Player was found online uuid = player.getUniqueId(); } else { - // Player was not found online. Fetch their UUID instead - UUIDFetcher fetcher = new UUIDFetcher(Arrays.asList(name)); - Map response; + if (Bukkit.getServer().getOnlineMode()) { + if (!Bukkit.getServer().isPrimaryThread()) { + UUIDFetcher fetcher = new UUIDFetcher(Arrays.asList(name)); + Map response; - try { - response = fetcher.call(); - uuid = response.get(name.toLowerCase()); - } - catch (Exception e) { - /* - Bukkit.getServer().getLogger().warning("Exception while running UUIDFetcher"); - e.printStackTrace(); - */ - - // Failed to retrieve with UUIDFetcher, server might be offline? - // Fallback on searching for the player via their name - OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name); - if (offlinePlayer != null) { - uuid = offlinePlayer.getUniqueId(); + try { + response = fetcher.call(); + uuid = response.get(name.toLowerCase()); + } + catch (Exception e) { + uuid = getUUIDLocally(name); + } + } else { + uuid = getUUIDLocally(name); } + } else { + uuid = getUUIDLocally(name); } } -- 2.49.1 From 03308be7f5f6a68cbfdba1e5c5e484cd30af5fbe Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Thu, 16 Jul 2015 19:14:57 +1000 Subject: [PATCH 040/253] Bump version for release --- pom.xml | 2 +- src/main/resources/plugin.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 63f5b9e..d5c672a 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.lishid openinv jar - 2.3.1 + 2.3.2 OpenInv http://dev.bukkit.org/bukkit-plugins/openinv/ diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 163b3a0..6e7d602 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.3.1 +version: 2.3.2 author: lishid description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. -- 2.49.1 From 6ea09dc9646d4accc7d22c8b89d6dd374dd5c5bc Mon Sep 17 00:00:00 2001 From: LulzFTW Date: Mon, 20 Jul 2015 15:16:31 -0400 Subject: [PATCH 041/253] Fix openinv item status always being false --- src/main/java/com/lishid/openinv/OpenInv.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index 71773f1..1e6c25d 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -159,7 +159,7 @@ public class OpenInv extends JavaPlugin { } public static boolean getPlayerItemOpenInvStatus(Player player) { - return mainPlugin.getConfig().getBoolean("toggles.items.open-inv" + player.getUniqueId(), false); + return mainPlugin.getConfig().getBoolean("toggles.items.open-inv." + player.getUniqueId(), false); } public static void setPlayerItemOpenInvStatus(Player player, boolean status) { -- 2.49.1 From b5d6cf047c52bfcfea034827cf90b7680f7a8437 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Tue, 21 Jul 2015 09:29:34 +1000 Subject: [PATCH 042/253] Bump version for release --- pom.xml | 2 +- src/main/java/com/lishid/openinv/OpenInv.java | 2 +- src/main/resources/plugin.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index d5c672a..5e04afb 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.lishid openinv jar - 2.3.2 + 2.3.3 OpenInv http://dev.bukkit.org/bukkit-plugins/openinv/ diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index 71773f1..1e6c25d 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -159,7 +159,7 @@ public class OpenInv extends JavaPlugin { } public static boolean getPlayerItemOpenInvStatus(Player player) { - return mainPlugin.getConfig().getBoolean("toggles.items.open-inv" + player.getUniqueId(), false); + return mainPlugin.getConfig().getBoolean("toggles.items.open-inv." + player.getUniqueId(), false); } public static void setPlayerItemOpenInvStatus(Player player, boolean status) { diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 6e7d602..59fab5a 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.3.2 +version: 2.3.3 author: lishid description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. -- 2.49.1 From cd405a9b9eb28bb5fe927335de14d3b8d7cdb76b Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Tue, 21 Jul 2015 09:43:06 +1000 Subject: [PATCH 043/253] Minor fix/change --- src/main/java/com/lishid/openinv/OpenInv.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index 1e6c25d..8bf491c 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -151,7 +151,7 @@ public class OpenInv extends JavaPlugin { } public static boolean getPlayerAnyChestStatus(Player player) { - return mainPlugin.getConfig().getBoolean("toggles.any-chest." + player.getUniqueId(), false); + return mainPlugin.getConfig().getBoolean("toggles.any-chest." + player.getUniqueId(), true); } public static void setPlayerAnyChestStatus(Player player, boolean status) { -- 2.49.1 From 8dbbe80dbfc2f3586010d3ef6fb3c6a23b603232 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Thu, 27 Aug 2015 19:52:56 +1000 Subject: [PATCH 044/253] Fixed an error & updated Bukkit --- pom.xml | 6 +++--- .../com/lishid/openinv/internal/SpecialPlayerInventory.java | 2 +- src/main/resources/plugin.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 5e04afb..1505c64 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.lishid openinv jar - 2.3.3 + 2.3.4 OpenInv http://dev.bukkit.org/bukkit-plugins/openinv/ @@ -23,14 +23,14 @@ org.bukkit bukkit - 1.8.7-R0.1-SNAPSHOT + 1.8.8-R0.1-SNAPSHOT provided org.bukkit craftbukkit - 1.8.7-R0.1-SNAPSHOT + 1.8.8-R0.1-SNAPSHOT provided diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index a53110d..fe1cdad 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -140,7 +140,7 @@ public class SpecialPlayerInventory extends PlayerInventory { is[i] = null; return itemstack; } else { - itemstack = is[i].a(j); + itemstack = is[i].cloneAndSubtract(j); if (is[i].count == 0) { is[i] = null; } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 59fab5a..fc8109c 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.3.3 +version: 2.3.4 author: lishid description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. -- 2.49.1 From 346036b7e78375dd9ae6b407c5f4ce49a84ada2b Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Wed, 2 Mar 2016 13:44:16 +1100 Subject: [PATCH 045/253] Updated to CraftBukkit 1.9 --- pom.xml | 6 ++--- .../openinv/internal/AnySilentChest.java | 15 ++++++++----- .../openinv/internal/EnumDirectionList.java | 8 +++---- .../openinv/internal/InventoryAccess.java | 11 +++++----- .../openinv/internal/PlayerDataManager.java | 4 ++-- .../internal/SilentContainerChest.java | 2 +- .../openinv/internal/SilentInventory.java | 22 ++++++++++++------- .../openinv/internal/SpecialEnderChest.java | 6 ++--- .../internal/SpecialPlayerInventory.java | 11 +++++++--- .../listeners/OpenInvEntityListener.java | 2 +- .../listeners/OpenInvPlayerListener.java | 2 +- src/main/resources/plugin.yml | 2 +- 12 files changed, 54 insertions(+), 37 deletions(-) diff --git a/pom.xml b/pom.xml index 1505c64..391df44 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.lishid openinv jar - 2.3.4 + 2.3.5 OpenInv http://dev.bukkit.org/bukkit-plugins/openinv/ @@ -23,14 +23,14 @@ org.bukkit bukkit - 1.8.8-R0.1-SNAPSHOT + 1.9-R0.1-SNAPSHOT provided org.bukkit craftbukkit - 1.8.8-R0.1-SNAPSHOT + 1.9-R0.1-SNAPSHOT provided diff --git a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java index 6c88ad6..0f4fb06 100644 --- a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java +++ b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java @@ -23,9 +23,10 @@ import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; // Volatile -import net.minecraft.server.v1_8_R3.*; +import net.minecraft.server.v1_9_R1.*; +import net.minecraft.server.v1_9_R1.BlockChest.Type; -import org.bukkit.craftbukkit.v1_8_R3.entity.*; +import org.bukkit.craftbukkit.v1_9_R1.entity.*; public class AnySilentChest { public boolean isAnyChestNeeded(Player p, int x, int y, int z) { @@ -33,7 +34,7 @@ public class AnySilentChest { BlockPosition position = new BlockPosition(x, y, z); EntityPlayer player = ((CraftPlayer) p).getHandle(); World world = player.world; - BlockChest chest = (BlockChest) (((BlockChest) world.getType(position).getBlock()).b == 1 ? + BlockChest chest = (BlockChest) (((BlockChest) world.getType(position).getBlock()).g == Type.TRAP ? Block.getByName("trapped_chest") : Block.getByName("chest")); // If block on top @@ -59,7 +60,11 @@ public class AnySilentChest { } private boolean blockOnTop(World world, BlockPosition position) { - return world.getType(position.up()).getBlock().isOccluding(); + // return world.getType(position.up()).getBlock().isOccluding(); + + // TODO: Does this work? + Block block = world.getType(position.up()).getBlock(); + return block.isOccluding(block.getBlockData()); } private boolean ocelotOnTop(World world, BlockPosition position) { @@ -89,7 +94,7 @@ public class AnySilentChest { return true; } - BlockChest chest = (BlockChest) (((BlockChest) world.getType(position).getBlock()).b == 1 ? + BlockChest chest = (BlockChest) (((BlockChest) world.getType(position).getBlock()).g == Type.TRAP ? Block.getByName("trapped_chest") : Block.getByName("chest")); TileEntity tileEntity = world.getTileEntity(position); diff --git a/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java b/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java index 56c5b48..fece744 100644 --- a/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java +++ b/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java @@ -4,16 +4,16 @@ import java.util.Iterator; import com.google.common.collect.Iterators; -import net.minecraft.server.v1_8_R3.EnumDirection; -import net.minecraft.server.v1_8_R3.EnumDirection.EnumDirectionLimit; +import net.minecraft.server.v1_9_R1.EnumDirection; +import net.minecraft.server.v1_9_R1.EnumDirection.EnumDirectionLimit; public enum EnumDirectionList implements Iterable { HORIZONTAL(EnumDirectionLimit.HORIZONTAL), VERTICAL(EnumDirectionLimit.VERTICAL); - private final EnumDirectionLimit list; + private final EnumDirection.EnumDirectionLimit list; - private EnumDirectionList(EnumDirectionLimit list) { + EnumDirectionList(EnumDirection.EnumDirectionLimit list) { this.list = list; } diff --git a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java index 9d6940b..ef1357f 100644 --- a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java +++ b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java @@ -25,9 +25,9 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; // Volatile -import net.minecraft.server.v1_8_R3.*; +import net.minecraft.server.v1_9_R1.*; -import org.bukkit.craftbukkit.v1_8_R3.inventory.*; +import org.bukkit.craftbukkit.v1_9_R1.inventory.*; public class InventoryAccess { public boolean check(Inventory inventory, HumanEntity player) { @@ -49,16 +49,17 @@ public class InventoryAccess { } private IInventory grabInventory(Inventory inventory) { - if(inventory instanceof CraftInventory) { + if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory(); } // Use reflection to find the inventory Class clazz = inventory.getClass(); IInventory result = null; - for(Field f : clazz.getDeclaredFields()) { + for (Field f : clazz.getDeclaredFields()) { f.setAccessible(true); - if(IInventory.class.isAssignableFrom(f.getDeclaringClass())) { + + if (IInventory.class.isAssignableFrom(f.getDeclaringClass())) { try { result = (IInventory) f.get(inventory); } diff --git a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java index d6fa177..9a06cbb 100644 --- a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java +++ b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java @@ -26,9 +26,9 @@ import com.lishid.openinv.OpenInv; import com.mojang.authlib.GameProfile; // Volatile -import net.minecraft.server.v1_8_R3.*; +import net.minecraft.server.v1_9_R1.*; -import org.bukkit.craftbukkit.v1_8_R3.*; +import org.bukkit.craftbukkit.v1_9_R1.*; public class PlayerDataManager { public Player loadPlayer(UUID uuid) { diff --git a/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java index b9bc4be..2be1435 100644 --- a/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java +++ b/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java @@ -17,7 +17,7 @@ package com.lishid.openinv.internal; // Volatile -import net.minecraft.server.v1_8_R3.*; +import net.minecraft.server.v1_9_R1.*; public class SilentContainerChest extends ContainerChest { public IInventory inv; diff --git a/src/main/java/com/lishid/openinv/internal/SilentInventory.java b/src/main/java/com/lishid/openinv/internal/SilentInventory.java index a2f50a6..b05211c 100644 --- a/src/main/java/com/lishid/openinv/internal/SilentInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SilentInventory.java @@ -2,12 +2,13 @@ package com.lishid.openinv.internal; import java.util.List; -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftHumanEntity; +import org.bukkit.Location; +import org.bukkit.craftbukkit.v1_9_R1.entity.CraftHumanEntity; import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.InventoryHolder; // Volatile -import net.minecraft.server.v1_8_R3.*; +import net.minecraft.server.v1_9_R1.*; public class SilentInventory implements ITileInventory { public ITileInventory inv; @@ -17,8 +18,8 @@ public class SilentInventory implements ITileInventory { } @Override - public boolean r_() { - return inv.r_(); + public boolean x_() { + return inv.x_(); } @Override @@ -27,8 +28,8 @@ public class SilentInventory implements ITileInventory { } @Override - public ChestLock i() { - return inv.i(); + public ChestLock y_() { + return inv.y_(); } @Override @@ -92,8 +93,8 @@ public class SilentInventory implements ITileInventory { } @Override - public void b(int i, int i1) { - inv.b(i, i1); + public void setProperty(int i, int i1) { + inv.setProperty(i, i1); } @Override @@ -136,6 +137,11 @@ public class SilentInventory implements ITileInventory { inv.setMaxStackSize(i); } + @Override + public Location getLocation() { + return inv.getLocation(); + } + @Override public String getName() { return inv.getName(); diff --git a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java index 91f7b94..40d4a5d 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java @@ -23,10 +23,10 @@ import org.bukkit.inventory.InventoryHolder; import com.lishid.openinv.OpenInv; // Volatile -import net.minecraft.server.v1_8_R3.*; +import net.minecraft.server.v1_9_R1.*; -import org.bukkit.craftbukkit.v1_8_R3.entity.*; -import org.bukkit.craftbukkit.v1_8_R3.inventory.*; +import org.bukkit.craftbukkit.v1_9_R1.entity.*; +import org.bukkit.craftbukkit.v1_9_R1.inventory.*; public class SpecialEnderChest extends InventorySubcontainer { private final CraftInventory inventory = new CraftInventory(this); diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index fe1cdad..390dc03 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -22,11 +22,16 @@ import org.bukkit.inventory.Inventory; import com.lishid.openinv.OpenInv; // Volatile -import net.minecraft.server.v1_8_R3.*; +import net.minecraft.server.v1_9_R1.*; -import org.bukkit.craftbukkit.v1_8_R3.entity.*; -import org.bukkit.craftbukkit.v1_8_R3.inventory.*; +import org.bukkit.craftbukkit.v1_9_R1.entity.*; +import org.bukkit.craftbukkit.v1_9_R1.inventory.*; +/* + * ----------------------------------------------- + * This class still needs to be updated for 1.9. + * ----------------------------------------------- + */ public class SpecialPlayerInventory extends PlayerInventory { private final CraftInventory inventory = new CraftInventory(this); private final ItemStack[] extra = new ItemStack[5]; diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java index 3508af5..25b6785 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java @@ -38,7 +38,7 @@ public class OpenInvEntityListener implements Listener { Player player = (Player) attacker; - if (player.getItemInHand().getType() == OpenInv.getOpenInvItem()) { + if (player.getInventory().getItemInMainHand().getType() == OpenInv.getOpenInvItem()) { if (!OpenInv.getPlayerItemOpenInvStatus(player) || !OpenInv.hasPermission(player, Permissions.PERM_OPENINV)) { return; } diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java index 2c479f0..5e1f42b 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java @@ -143,7 +143,7 @@ public class OpenInvPlayerListener implements Listener { } case RIGHT_CLICK_AIR: // OpenInv item - if (player.getItemInHand().getType() == OpenInv.getOpenInvItem() && OpenInv.getPlayerItemOpenInvStatus(player) && OpenInv.hasPermission(player, Permissions.PERM_OPENINV)) { + if (player.getInventory().getItemInMainHand().getType() == OpenInv.getOpenInvItem() && OpenInv.getPlayerItemOpenInvStatus(player) && OpenInv.hasPermission(player, Permissions.PERM_OPENINV)) { player.performCommand("openinv"); } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index fc8109c..c05d306 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.3.4 +version: 2.3.5 author: lishid description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. -- 2.49.1 From 7ae87d1dbe93bd0482e5dcf564fc1397e1fd5144 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Wed, 2 Mar 2016 13:46:42 +1100 Subject: [PATCH 046/253] Updated to CraftBukkit 1.9 --- src/main/java/com/lishid/openinv/internal/AnySilentChest.java | 3 --- .../java/com/lishid/openinv/internal/EnumDirectionList.java | 4 ++-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java index 0f4fb06..d03a756 100644 --- a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java +++ b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java @@ -60,9 +60,6 @@ public class AnySilentChest { } private boolean blockOnTop(World world, BlockPosition position) { - // return world.getType(position.up()).getBlock().isOccluding(); - - // TODO: Does this work? Block block = world.getType(position.up()).getBlock(); return block.isOccluding(block.getBlockData()); } diff --git a/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java b/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java index fece744..2f49d3f 100644 --- a/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java +++ b/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java @@ -11,9 +11,9 @@ public enum EnumDirectionList implements Iterable { HORIZONTAL(EnumDirectionLimit.HORIZONTAL), VERTICAL(EnumDirectionLimit.VERTICAL); - private final EnumDirection.EnumDirectionLimit list; + private final EnumDirectionLimit list; - EnumDirectionList(EnumDirection.EnumDirectionLimit list) { + EnumDirectionList(EnumDirectionLimit list) { this.list = list; } -- 2.49.1 From c4a9cb0a4a744a8a46ebc063a628d435e6aaaece Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Wed, 2 Mar 2016 20:11:45 +1100 Subject: [PATCH 047/253] Updated to CraftBukkit 1.9 --- README | 2 +- src/main/java/com/lishid/openinv/OpenInv.java | 3 +- .../openinv/commands/AnyChestCommand.java | 2 +- .../openinv/commands/OpenEnderCommand.java | 2 +- .../openinv/commands/OpenInvCommand.java | 6 +- .../openinv/commands/SearchInvCommand.java | 2 +- .../openinv/commands/SilentChestCommand.java | 2 +- .../commands/ToggleOpenInvCommand.java | 2 +- .../openinv/internal/AnySilentChest.java | 2 +- .../openinv/internal/InventoryAccess.java | 2 +- .../openinv/internal/PlayerDataManager.java | 2 +- .../internal/SilentContainerChest.java | 2 +- .../openinv/internal/SpecialEnderChest.java | 2 +- .../internal/SpecialPlayerInventory.java | 183 ++++++++++-------- .../listeners/OpenInvEntityListener.java | 2 +- .../listeners/OpenInvInventoryListener.java | 2 +- .../listeners/OpenInvPlayerListener.java | 2 +- 17 files changed, 119 insertions(+), 101 deletions(-) diff --git a/README b/README index 209e1e8..ebd75f3 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -Copyright (C) 2011-2014 lishid. All rights reserved. +Copyright (C) 2011-2016 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 diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index 8bf491c..70a7aeb 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2016 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 @@ -20,6 +20,7 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.command.CommandSender; diff --git a/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java b/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java index 3bcde82..2ceae54 100644 --- a/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java +++ b/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2016 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 diff --git a/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java b/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java index f39fce8..8d3b79f 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2016 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 diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java index 4368ac7..fee3a81 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2016 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 @@ -147,10 +147,14 @@ public class OpenInvCommand implements CommandExecutor { openInvHistory.put(player.getUniqueId(), target.getUniqueId()); // Create the inventory + /* SpecialPlayerInventory inv = OpenInv.inventories.get(target.getUniqueId()); if (inv == null) { inv = new SpecialPlayerInventory(target, target.isOnline()); } + */ + + SpecialPlayerInventory inv = new SpecialPlayerInventory(target, target.isOnline()); // Open the inventory player.openInventory(inv.getBukkitInventory()); diff --git a/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java b/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java index babe370..584c5ad 100644 --- a/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2016 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 diff --git a/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java b/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java index ce94e88..e2b0a46 100644 --- a/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2016 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 diff --git a/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java b/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java index a024c24..26d14ea 100644 --- a/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2016 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 diff --git a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java index d03a756..e303823 100644 --- a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java +++ b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2016 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 diff --git a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java index ef1357f..8c6327a 100644 --- a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java +++ b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2016 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 diff --git a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java index 9a06cbb..dc4083f 100644 --- a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java +++ b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2016 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 diff --git a/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java index 2be1435..f2af89f 100644 --- a/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java +++ b/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2016 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 diff --git a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java index 40d4a5d..fdccf4a 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2016 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 diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index 390dc03..40e8193 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2016 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 @@ -30,21 +30,26 @@ import org.bukkit.craftbukkit.v1_9_R1.inventory.*; /* * ----------------------------------------------- * This class still needs to be updated for 1.9. + * + * It has been partially updated, but is very buggy + * and does not work correctly. * ----------------------------------------------- */ public class SpecialPlayerInventory extends PlayerInventory { private final CraftInventory inventory = new CraftInventory(this); private final ItemStack[] extra = new ItemStack[5]; + private final ItemStack[][] g; private final CraftPlayer owner; private boolean playerOnline; public SpecialPlayerInventory(Player p, boolean online) { super(((CraftPlayer) p).getHandle()); this.owner = (CraftPlayer) p; - this.items = player.inventory.items; - this.armor = player.inventory.armor; + System.arraycopy(player.inventory.items, 0, this.items, 0, this.items.length); + System.arraycopy(player.inventory.armor, 0, this.armor, 0, this.armor.length); + this.g = new ItemStack[][]{this.items, this.armor, this.extra}; this.playerOnline = online; - OpenInv.inventories.put(owner.getUniqueId(), this); + // OpenInv.inventories.put(owner.getUniqueId(), this); } public Inventory getBukkitInventory() { @@ -52,15 +57,19 @@ public class SpecialPlayerInventory extends PlayerInventory { } private void saveOnExit() { + if (playerOnline) { + linkInventory(player.inventory); + } + if (transaction.isEmpty() && !playerOnline) { owner.saveData(); - OpenInv.inventories.remove(owner.getUniqueId()); + // OpenInv.inventories.remove(owner.getUniqueId()); } } private void linkInventory(PlayerInventory inventory) { - inventory.items = this.items; - inventory.armor = this.armor; + System.arraycopy(this.items, 0, inventory.items, 0, inventory.items.length); + System.arraycopy(this.armor, 0, inventory.armor, 0, inventory.armor.length); } public void playerOnline(Player player) { @@ -87,99 +96,100 @@ public class SpecialPlayerInventory extends PlayerInventory { @Override public ItemStack[] getContents() { - ItemStack[] C = new ItemStack[getSize()]; - System.arraycopy(items, 0, C, 0, items.length); - System.arraycopy(armor, 0, C, items.length, armor.length); - return C; + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(this.items, 0, contents, 0, this.items.length); + System.arraycopy(this.armor, 0, contents, this.items.length, this.armor.length); + return contents; } @Override public int getSize() { - return super.getSize() + 5; + return super.getSize() + 5; // super.getSize() - this.extraSlots.length + 5; } @Override public ItemStack getItem(int i) { - ItemStack[] is = this.items; + ItemStack[] is = null; + ItemStack[][] contents = this.g; + int j = contents.length; - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); + for (int k = 0; k < j; ++k) { + ItemStack[] is2 = contents[k]; + if (i < is2.length) { + is = is2; + break; + } + + i -= is2.length; } - if (i >= is.length) { - i -= is.length; - is = this.extra; + if (is == this.items) { + i = getReversedItemSlotNum(i); } else if (is == this.armor) { i = getReversedArmorSlotNum(i); + } else if (is == this.extra) { + // Do nothing } - return is[i]; + return is == null ? null : is[i]; } @Override public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; + ItemStack[] is = null; + ItemStack[][] contents = this.g; + int k = contents.length; - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); + for (int l = 0; l < k; ++l) { + ItemStack[] is2 = contents[l]; + if (i < is2.length) { + is = is2; + break; + } + + i -= is2.length; } - if (i >= is.length) { - i -= is.length; - is = this.extra; + if (is == this.items) { + i = getReversedItemSlotNum(i); } else if (is == this.armor) { i = getReversedArmorSlotNum(i); + } else if (is == this.extra) { + // Do nothing } - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].cloneAndSubtract(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } else { - return null; - } + return is != null && is[i] != null ? ContainerUtil.a(is, i, j) : null; } @Override public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; + ItemStack[] is = null; + ItemStack[][] contents = this.g; + int j = contents.length; - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); + for (int object = 0; object < j; ++object) { + ItemStack[] is2 = contents[object]; + if (i < is2.length) { + is = is2; + break; + } + + i -= is2.length; } - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - if (is[i] != null) { - ItemStack itemstack = is[i]; + if (is != null && is[i] != null) { + if (is == this.items) { + i = getReversedItemSlotNum(i); + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } else if (is == this.extra) { + // Do nothing + } + Object object = is[i]; is[i] = null; - return itemstack; + return (ItemStack) object; } else { return null; } @@ -187,31 +197,34 @@ public class SpecialPlayerInventory extends PlayerInventory { @Override public void setItem(int i, ItemStack itemStack) { - ItemStack[] is = this.items; + ItemStack[] is = null; + ItemStack[][] contents = this.g; + int j = contents.length; - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); + for (int k = 0; k < j; ++k) { + ItemStack[] is2 = contents[k]; + if (i < is2.length) { + is = is2; + break; + } + + i -= is2.length; } - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); + if (is != null) { + if (is == this.items) { + i = getReversedItemSlotNum(i); + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } else if (is == this.extra) { + owner.getHandle().drop(itemStack, true); + itemStack = null; + } + + is[i] = itemStack; + + // owner.getHandle().defaultContainer.b(); } - - // Effects - if (is == this.extra) { - owner.getHandle().drop(itemStack, true); - itemStack = null; - } - - is[i] = itemStack; - - owner.getHandle().defaultContainer.b(); } private int getReversedItemSlotNum(int i) { diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java index 25b6785..0411f6f 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2016 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 diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java index 6d3250e..e81fd5c 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2016 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 diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java index 5e1f42b..579d93d 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2016 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 -- 2.49.1 From 71ac05ae8515d3795df1f25919435e01308f4278 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Fri, 4 Mar 2016 13:45:54 +1100 Subject: [PATCH 048/253] Updated to CraftBukkit 1.9 --- .../com/lishid/openinv/ConfigUpdater.java | 7 +- src/main/java/com/lishid/openinv/OpenInv.java | 13 ++- .../openinv/commands/AnyChestCommand.java | 1 + .../openinv/commands/OpenEnderCommand.java | 5 +- .../openinv/commands/OpenInvCommand.java | 1 + .../openinv/commands/SearchEnderCommand.java | 5 +- .../openinv/commands/SearchInvCommand.java | 5 +- .../openinv/commands/SilentChestCommand.java | 1 + .../commands/ToggleOpenInvCommand.java | 1 + .../openinv/internal/AnySilentChest.java | 30 ++++-- .../openinv/internal/EnumDirectionList.java | 1 + .../openinv/internal/InventoryAccess.java | 5 +- .../openinv/internal/PlayerDataManager.java | 7 +- .../internal/SilentContainerChest.java | 1 + .../openinv/internal/SilentInventory.java | 1 + .../openinv/internal/SpecialEnderChest.java | 1 + .../internal/SpecialPlayerInventory.java | 102 ++++++++++-------- 17 files changed, 115 insertions(+), 72 deletions(-) diff --git a/src/main/java/com/lishid/openinv/ConfigUpdater.java b/src/main/java/com/lishid/openinv/ConfigUpdater.java index f3fa1bb..31a2fd9 100644 --- a/src/main/java/com/lishid/openinv/ConfigUpdater.java +++ b/src/main/java/com/lishid/openinv/ConfigUpdater.java @@ -13,6 +13,7 @@ import org.bukkit.configuration.file.FileConfiguration; import com.lishid.openinv.utils.UUIDUtil; public class ConfigUpdater { + private final OpenInv plugin; private static final int CONFIG_VERSION = 2; @@ -33,8 +34,7 @@ public class ConfigUpdater { if (isConfigOutdated()) { plugin.getLogger().info("[Config] Update found! Performing update..."); performUpdate(); - } - else { + } else { plugin.getLogger().info("[Config] Update not required."); } } @@ -137,6 +137,7 @@ public class ConfigUpdater { for (String playerName : keys) { UUID uuid = UUIDUtil.getUUIDOf(playerName); + if (uuid != null) { boolean toggled = section.getBoolean(playerName + ".toggle", false); toggles.put(uuid, toggled); @@ -152,9 +153,11 @@ public class ConfigUpdater { @SuppressWarnings("deprecation") private Material getMaterialById(int id) { Material material = Material.getMaterial(id); + if (material == null) { material = Material.STICK; } + return material; } } diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index 70a7aeb..863891b 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -45,12 +45,8 @@ import com.lishid.openinv.listeners.OpenInvEntityListener; import com.lishid.openinv.listeners.OpenInvInventoryListener; import com.lishid.openinv.listeners.OpenInvPlayerListener; -/** - * Open other player's inventory - * - * @author lishid - */ public class OpenInv extends JavaPlugin { + public static final Map inventories = new HashMap(); public static final Map enderChests = new HashMap(); @@ -114,11 +110,11 @@ public class OpenInv extends JavaPlugin { public static Object getFromConfig(String path, Object defaultValue) { Object val = mainPlugin.getConfig().get(path); + if (val == null) { mainPlugin.getConfig().set(path, defaultValue); return defaultValue; - } - else { + } else { return val; } } @@ -216,12 +212,15 @@ public class OpenInv extends JavaPlugin { 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); } } diff --git a/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java b/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java index 2ceae54..732f641 100644 --- a/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java +++ b/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java @@ -26,6 +26,7 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; public class AnyChestCommand implements CommandExecutor { + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("anychest")) { diff --git a/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java b/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java index 8d3b79f..ceb6472 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java @@ -33,6 +33,7 @@ import com.lishid.openinv.internal.SpecialEnderChest; import com.lishid.openinv.utils.UUIDUtil; public class OpenEnderCommand implements CommandExecutor { + private final OpenInv plugin; private final Map openEnderHistory = new ConcurrentHashMap(); @@ -73,8 +74,7 @@ public class OpenEnderCommand implements CommandExecutor { if (args.length < 1) { if (history != null) { uuid = history; - } - else { + } else { sender.sendMessage(ChatColor.RED + "OpenEnder history is empty!"); return true; } @@ -111,6 +111,7 @@ public class OpenEnderCommand implements CommandExecutor { if (player == null) { return; } + openInventory(player, target); } }); diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java index fee3a81..75e093a 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java @@ -33,6 +33,7 @@ import com.lishid.openinv.internal.SpecialPlayerInventory; import com.lishid.openinv.utils.UUIDUtil; public class OpenInvCommand implements CommandExecutor { + private final OpenInv plugin; private final Map openInvHistory = new ConcurrentHashMap(); diff --git a/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java b/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java index 71c4557..778a762 100644 --- a/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java @@ -12,6 +12,7 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; public class SearchEnderCommand implements CommandExecutor { + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("searchender")) { @@ -30,11 +31,11 @@ public class SearchEnderCommand implements CommandExecutor { gData = args[0].split(":"); material = Material.matchMaterial(gData[0]); } + if (args.length >= 2) { try { count = Integer.parseInt(args[1]); - } - catch (NumberFormatException ex) { + } catch (NumberFormatException e) { sender.sendMessage(ChatColor.RED + "'" + args[1] + "' is not a number!"); return false; } diff --git a/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java b/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java index 584c5ad..46bf5f3 100644 --- a/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java @@ -28,6 +28,7 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; public class SearchInvCommand implements CommandExecutor { + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("searchinv")) { @@ -46,11 +47,11 @@ public class SearchInvCommand implements CommandExecutor { gData = args[0].split(":"); material = Material.matchMaterial(gData[0]); } + if (args.length >= 2) { try { count = Integer.parseInt(args[1]); - } - catch (NumberFormatException ex) { + } catch (NumberFormatException e) { sender.sendMessage(ChatColor.RED + "'" + args[1] + "' is not a number!"); return false; } diff --git a/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java b/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java index e2b0a46..afdc8c6 100644 --- a/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java @@ -26,6 +26,7 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; public class SilentChestCommand implements CommandExecutor { + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("silentchest")) { diff --git a/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java b/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java index 26d14ea..ac3c714 100644 --- a/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java @@ -26,6 +26,7 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; public class ToggleOpenInvCommand implements CommandExecutor { + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("toggleopeninv")) { diff --git a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java index e303823..8347aa6 100644 --- a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java +++ b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java @@ -29,6 +29,7 @@ import net.minecraft.server.v1_9_R1.BlockChest.Type; import org.bukkit.craftbukkit.v1_9_R1.entity.*; public class AnySilentChest { + public boolean isAnyChestNeeded(Player p, int x, int y, int z) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest BlockPosition position = new BlockPosition(x, y, z); @@ -37,16 +38,17 @@ public class AnySilentChest { BlockChest chest = (BlockChest) (((BlockChest) world.getType(position).getBlock()).g == Type.TRAP ? Block.getByName("trapped_chest") : Block.getByName("chest")); - // If block on top + // If a block is on top if (topBlocking(world, position)) { return true; } - // If block next to chest is chest and has a block on top + // If the block next to the chest is chest and has a block on top for (EnumDirection direction : EnumDirectionList.HORIZONTAL) { BlockPosition sidePosition = position.shift(direction); - Block var8 = world.getType(sidePosition).getBlock(); - if (var8 == chest) { + Block block = world.getType(sidePosition).getBlock(); + + if (block == chest) { if (this.topBlocking(world, sidePosition)) { return true; } @@ -55,6 +57,7 @@ public class AnySilentChest { return false; } + private boolean topBlocking(World world, BlockPosition position) { return this.blockOnTop(world, position) || this.ocelotOnTop(world, position); } @@ -65,20 +68,22 @@ public class AnySilentChest { } private boolean ocelotOnTop(World world, BlockPosition position) { - Iterator var3 = world.a(EntityOcelot.class, + Iterator iterator = world.a(EntityOcelot.class, new AxisAlignedBB((double) position.getX(), (double) (position.getY() + 1), (double) position.getZ(), (double) (position.getX() + 1), (double) (position.getY() + 2), (double) (position.getZ() + 1))).iterator(); - EntityOcelot var5; + EntityOcelot entityOcelot; + do { - if (!var3.hasNext()) { + if (!iterator.hasNext()) { return false; } - Entity var4 = (Entity) var3.next(); - var5 = (EntityOcelot) var4; - } while (!var5.isSitting()); + Entity entity = (Entity) iterator.next(); + + entityOcelot = (EntityOcelot) entity; + } while (!entityOcelot.isSitting()); return true; } @@ -107,12 +112,14 @@ public class AnySilentChest { for (EnumDirection direction : EnumDirectionList.HORIZONTAL) { BlockPosition side = position.shift(direction); Block block = world.getType(side).getBlock(); + if (block == chest) { if (!anyChest && this.topBlocking(world, side)) { return true; } TileEntity sideTileEntity = world.getTileEntity(side); + if (sideTileEntity instanceof TileEntityChest) { if (direction != EnumDirection.WEST && direction != EnumDirection.NORTH) { tileInventory = new InventoryLargeChest("container.chestDouble", tileInventory, (TileEntityChest) sideTileEntity); @@ -124,11 +131,14 @@ public class AnySilentChest { } boolean returnValue = true; + if (silentChest) { tileInventory = new SilentInventory(tileInventory); + if (OpenInv.notifySilentChest()) { OpenInv.sendMessage(p, "You are opening a chest silently."); } + returnValue = false; } diff --git a/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java b/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java index 2f49d3f..2cd77f6 100644 --- a/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java +++ b/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java @@ -8,6 +8,7 @@ import net.minecraft.server.v1_9_R1.EnumDirection; import net.minecraft.server.v1_9_R1.EnumDirection.EnumDirectionLimit; public enum EnumDirectionList implements Iterable { + HORIZONTAL(EnumDirectionLimit.HORIZONTAL), VERTICAL(EnumDirectionLimit.VERTICAL); diff --git a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java index 8c6327a..cf8e2f1 100644 --- a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java +++ b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java @@ -30,6 +30,7 @@ import net.minecraft.server.v1_9_R1.*; import org.bukkit.craftbukkit.v1_9_R1.inventory.*; public class InventoryAccess { + public boolean check(Inventory inventory, HumanEntity player) { IInventory inv = grabInventory(inventory); @@ -62,12 +63,12 @@ public class InventoryAccess { if (IInventory.class.isAssignableFrom(f.getDeclaringClass())) { try { result = (IInventory) f.get(inventory); - } - catch (Exception e) { + } catch (Exception e) { OpenInv.log(e); } } } + return result; } } diff --git a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java index dc4083f..4e4aef0 100644 --- a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java +++ b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java @@ -31,12 +31,14 @@ import net.minecraft.server.v1_9_R1.*; import org.bukkit.craftbukkit.v1_9_R1.*; public class PlayerDataManager { + public Player loadPlayer(UUID uuid) { try { 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 @@ -44,14 +46,15 @@ public class PlayerDataManager { // Get the bukkit entity Player target = entity.getBukkitEntity(); + if (target != null) { // Load data target.loadData(); + // Return the entity return target; } - } - catch (Exception e) { + } catch (Exception e) { OpenInv.log(e); } diff --git a/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java index f2af89f..301c813 100644 --- a/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java +++ b/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java @@ -20,6 +20,7 @@ package com.lishid.openinv.internal; import net.minecraft.server.v1_9_R1.*; public class SilentContainerChest extends ContainerChest { + public IInventory inv; public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman human) { diff --git a/src/main/java/com/lishid/openinv/internal/SilentInventory.java b/src/main/java/com/lishid/openinv/internal/SilentInventory.java index b05211c..ee802c5 100644 --- a/src/main/java/com/lishid/openinv/internal/SilentInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SilentInventory.java @@ -11,6 +11,7 @@ import org.bukkit.inventory.InventoryHolder; import net.minecraft.server.v1_9_R1.*; public class SilentInventory implements ITileInventory { + public ITileInventory inv; public SilentInventory(ITileInventory inv) { diff --git a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java index fdccf4a..4c37370 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java @@ -29,6 +29,7 @@ import org.bukkit.craftbukkit.v1_9_R1.entity.*; import org.bukkit.craftbukkit.v1_9_R1.inventory.*; public class SpecialEnderChest extends InventorySubcontainer { + private final CraftInventory inventory = new CraftInventory(this); private final InventoryEnderChest enderChest; private final CraftPlayer owner; diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index 40e8193..f16661b 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -16,40 +16,67 @@ package com.lishid.openinv.internal; +import java.lang.reflect.Field; + import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -import com.lishid.openinv.OpenInv; - // Volatile import net.minecraft.server.v1_9_R1.*; import org.bukkit.craftbukkit.v1_9_R1.entity.*; import org.bukkit.craftbukkit.v1_9_R1.inventory.*; -/* - * ----------------------------------------------- - * This class still needs to be updated for 1.9. - * - * It has been partially updated, but is very buggy - * and does not work correctly. - * ----------------------------------------------- - */ +import com.lishid.openinv.OpenInv; + public class SpecialPlayerInventory extends PlayerInventory { + private final CraftInventory inventory = new CraftInventory(this); private final ItemStack[] extra = new ItemStack[5]; - private final ItemStack[][] g; + private final ItemStack[][] arrays; private final CraftPlayer owner; private boolean playerOnline; public SpecialPlayerInventory(Player p, boolean online) { super(((CraftPlayer) p).getHandle()); this.owner = (CraftPlayer) p; - System.arraycopy(player.inventory.items, 0, this.items, 0, this.items.length); - System.arraycopy(player.inventory.armor, 0, this.armor, 0, this.armor.length); - this.g = new ItemStack[][]{this.items, this.armor, this.extra}; + // applyContents(); + reflectContents(getClass().getSuperclass(), player.inventory, this); + this.arrays = new ItemStack[][] { this.items, this.armor, this.extra }; this.playerOnline = online; - // OpenInv.inventories.put(owner.getUniqueId(), this); + OpenInv.inventories.put(owner.getUniqueId(), this); + } + + private void reflectContents(Class clazz, PlayerInventory src, PlayerInventory dest) { + // Items + try { + Field itemsField = clazz.getDeclaredField("items"); + itemsField.setAccessible(true); + itemsField.set(dest, src.items); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + + // Armor + try { + Field armorField = clazz.getDeclaredField("armor"); + armorField.setAccessible(true); + armorField.set(dest, src.armor); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } } public Inventory getBukkitInventory() { @@ -57,19 +84,14 @@ public class SpecialPlayerInventory extends PlayerInventory { } private void saveOnExit() { - if (playerOnline) { - linkInventory(player.inventory); - } - if (transaction.isEmpty() && !playerOnline) { owner.saveData(); - // OpenInv.inventories.remove(owner.getUniqueId()); + OpenInv.inventories.remove(owner.getUniqueId()); } } private void linkInventory(PlayerInventory inventory) { - System.arraycopy(this.items, 0, inventory.items, 0, inventory.items.length); - System.arraycopy(this.armor, 0, inventory.armor, 0, inventory.armor.length); + reflectContents(inventory.getClass(), inventory, this); } public void playerOnline(Player player) { @@ -104,17 +126,18 @@ public class SpecialPlayerInventory extends PlayerInventory { @Override public int getSize() { - return super.getSize() + 5; // super.getSize() - this.extraSlots.length + 5; + return super.getSize() - this.extraSlots.length + 5; } @Override public ItemStack getItem(int i) { ItemStack[] is = null; - ItemStack[][] contents = this.g; + ItemStack[][] contents = this.arrays; int j = contents.length; for (int k = 0; k < j; ++k) { ItemStack[] is2 = contents[k]; + if (i < is2.length) { is = is2; break; @@ -137,11 +160,12 @@ public class SpecialPlayerInventory extends PlayerInventory { @Override public ItemStack splitStack(int i, int j) { ItemStack[] is = null; - ItemStack[][] contents = this.g; + ItemStack[][] contents = this.arrays; int k = contents.length; for (int l = 0; l < k; ++l) { ItemStack[] is2 = contents[l]; + if (i < is2.length) { is = is2; break; @@ -164,11 +188,12 @@ public class SpecialPlayerInventory extends PlayerInventory { @Override public ItemStack splitWithoutUpdate(int i) { ItemStack[] is = null; - ItemStack[][] contents = this.g; + ItemStack[][] contents = this.arrays; int j = contents.length; for (int object = 0; object < j; ++object) { ItemStack[] is2 = contents[object]; + if (i < is2.length) { is = is2; break; @@ -177,7 +202,6 @@ public class SpecialPlayerInventory extends PlayerInventory { i -= is2.length; } - if (is != null && is[i] != null) { if (is == this.items) { i = getReversedItemSlotNum(i); @@ -198,11 +222,12 @@ public class SpecialPlayerInventory extends PlayerInventory { @Override public void setItem(int i, ItemStack itemStack) { ItemStack[] is = null; - ItemStack[][] contents = this.g; + ItemStack[][] contents = this.arrays; int j = contents.length; for (int k = 0; k < j; ++k) { ItemStack[] is2 = contents[k]; + if (i < is2.length) { is = is2; break; @@ -223,28 +248,19 @@ public class SpecialPlayerInventory extends PlayerInventory { is[i] = itemStack; - // owner.getHandle().defaultContainer.b(); + owner.getHandle().defaultContainer.b(); } } private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; + return (i >= 27) ? (i - 27) : (i + 9); } private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; + if (i == 0) return 3; + if (i == 1) return 2; + if (i == 2) return 1; + return (i == 3) ? 0 : i; } @Override -- 2.49.1 From 14ec280d26a59fde18a0a85229cb8c0e385d180a Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Fri, 4 Mar 2016 13:46:29 +1100 Subject: [PATCH 049/253] Updated to CraftBukkit 1.9 --- .../java/com/lishid/openinv/internal/SpecialPlayerInventory.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index f16661b..029a8cf 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -40,7 +40,6 @@ public class SpecialPlayerInventory extends PlayerInventory { public SpecialPlayerInventory(Player p, boolean online) { super(((CraftPlayer) p).getHandle()); this.owner = (CraftPlayer) p; - // applyContents(); reflectContents(getClass().getSuperclass(), player.inventory, this); this.arrays = new ItemStack[][] { this.items, this.armor, this.extra }; this.playerOnline = online; -- 2.49.1 From 8feca3fb218d1962a608d5500b088b0e98c6f112 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Wed, 9 Mar 2016 14:14:27 +1100 Subject: [PATCH 050/253] Added 1.9 shield slot support --- pom.xml | 2 +- .../internal/SpecialPlayerInventory.java | 31 ++++++++++--------- src/main/resources/plugin.yml | 2 +- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/pom.xml b/pom.xml index 391df44..b92241e 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.lishid openinv jar - 2.3.5 + 2.3.6 OpenInv http://dev.bukkit.org/bukkit-plugins/openinv/ diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index 029a8cf..528a789 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -32,7 +32,7 @@ import com.lishid.openinv.OpenInv; public class SpecialPlayerInventory extends PlayerInventory { private final CraftInventory inventory = new CraftInventory(this); - private final ItemStack[] extra = new ItemStack[5]; + private final ItemStack[] extra = new ItemStack[4]; private final ItemStack[][] arrays; private final CraftPlayer owner; private boolean playerOnline; @@ -41,32 +41,24 @@ public class SpecialPlayerInventory extends PlayerInventory { super(((CraftPlayer) p).getHandle()); this.owner = (CraftPlayer) p; reflectContents(getClass().getSuperclass(), player.inventory, this); - this.arrays = new ItemStack[][] { this.items, this.armor, this.extra }; + this.arrays = new ItemStack[][] { this.items, this.armor, this.extraSlots, this.extra }; this.playerOnline = online; OpenInv.inventories.put(owner.getUniqueId(), this); } private void reflectContents(Class clazz, PlayerInventory src, PlayerInventory dest) { - // Items try { Field itemsField = clazz.getDeclaredField("items"); itemsField.setAccessible(true); itemsField.set(dest, src.items); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - // Armor - try { Field armorField = clazz.getDeclaredField("armor"); armorField.setAccessible(true); armorField.set(dest, src.armor); + + Field extraSlotsField = clazz.getDeclaredField("extraSlots"); + extraSlotsField.setAccessible(true); + extraSlotsField.set(dest, src.extraSlots); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (SecurityException e) { @@ -120,12 +112,13 @@ public class SpecialPlayerInventory extends PlayerInventory { ItemStack[] contents = new ItemStack[getSize()]; System.arraycopy(this.items, 0, contents, 0, this.items.length); System.arraycopy(this.armor, 0, contents, this.items.length, this.armor.length); + System.arraycopy(this.extraSlots, 0, contents, this.items.length + this.armor.length, this.extraSlots.length); return contents; } @Override public int getSize() { - return super.getSize() - this.extraSlots.length + 5; + return super.getSize() + 4; } @Override @@ -149,6 +142,8 @@ public class SpecialPlayerInventory extends PlayerInventory { i = getReversedItemSlotNum(i); } else if (is == this.armor) { i = getReversedArmorSlotNum(i); + } else if (is == this.extraSlots) { + // Do nothing } else if (is == this.extra) { // Do nothing } @@ -177,6 +172,8 @@ public class SpecialPlayerInventory extends PlayerInventory { i = getReversedItemSlotNum(i); } else if (is == this.armor) { i = getReversedArmorSlotNum(i); + } else if (is == this.extraSlots) { + // Do nothing } else if (is == this.extra) { // Do nothing } @@ -206,6 +203,8 @@ public class SpecialPlayerInventory extends PlayerInventory { i = getReversedItemSlotNum(i); } else if (is == this.armor) { i = getReversedArmorSlotNum(i); + } else if (is == this.extraSlots) { + // Do nothing } else if (is == this.extra) { // Do nothing } @@ -240,6 +239,8 @@ public class SpecialPlayerInventory extends PlayerInventory { i = getReversedItemSlotNum(i); } else if (is == this.armor) { i = getReversedArmorSlotNum(i); + } else if (is == this.extraSlots) { + // Do nothing } else if (is == this.extra) { owner.getHandle().drop(itemStack, true); itemStack = null; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index c05d306..aaaca8e 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.3.5 +version: 2.3.6 author: lishid description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. -- 2.49.1 From f9ac6804b29948bf5dc55c77501a8abb5fc9ad21 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Thu, 10 Mar 2016 13:37:28 +1100 Subject: [PATCH 051/253] General refactoring --- .../com/lishid/openinv/Configuration.java | 146 ++++++++++++++ src/main/java/com/lishid/openinv/OpenInv.java | 179 ++++++++---------- .../java/com/lishid/openinv/Permissions.java | 5 +- .../openinv/commands/AnyChestCommand.java | 15 +- .../openinv/commands/OpenEnderCommand.java | 2 +- .../openinv/commands/OpenInvCommand.java | 7 +- .../openinv/commands/SearchEnderCommand.java | 6 + .../openinv/commands/SearchInvCommand.java | 6 + .../openinv/commands/SilentChestCommand.java | 19 +- .../commands/ToggleOpenInvCommand.java | 19 +- .../openinv/internal/AnySilentChest.java | 32 +++- .../openinv/internal/InventoryAccess.java | 14 +- .../openinv/internal/PlayerDataManager.java | 16 +- .../internal/SilentContainerChest.java | 5 +- .../openinv/internal/SilentInventory.java | 10 +- .../openinv/internal/SpecialEnderChest.java | 10 +- .../listeners/OpenInvEntityListener.java | 14 +- .../listeners/OpenInvInventoryListener.java | 9 +- .../listeners/OpenInvPlayerListener.java | 24 ++- src/main/resources/plugin.yml | 1 + 20 files changed, 381 insertions(+), 158 deletions(-) create mode 100644 src/main/java/com/lishid/openinv/Configuration.java diff --git a/src/main/java/com/lishid/openinv/Configuration.java b/src/main/java/com/lishid/openinv/Configuration.java new file mode 100644 index 0000000..b391ccf --- /dev/null +++ b/src/main/java/com/lishid/openinv/Configuration.java @@ -0,0 +1,146 @@ +package com.lishid.openinv; + +import org.bukkit.Material; +import org.bukkit.entity.Player; + +public class Configuration { + + private final OpenInv plugin; + + private Material openInvItem; + private boolean notifySilentChest; + private boolean notifyAnyChest; + + public Configuration(OpenInv plugin) { + this.plugin = plugin; + + // Check for config updates + ConfigUpdater configUpdater = new ConfigUpdater(plugin); + configUpdater.checkForUpdates(); + + // Load the config settings + load(); + } + + /** + * Loads OpenInv's config settings. + */ + public void load() { + // OpenInv Item + if (!plugin.getConfig().isSet("items.open-inv")) { + saveToConfig("items.open-inv", "STICK"); + } + + String itemName = plugin.getConfig().getString("items.open-inv", "STICK"); + Material material = Material.getMaterial(itemName); + + if (material == null) { + plugin.getLogger().warning("OpenInv item '" + itemName + "' does not match to a valid item. Defaulting to stick."); + material = Material.STICK; + } + + openInvItem = material; + + // Other Values + notifySilentChest = plugin.getConfig().getBoolean("notify.silent-chest", true); + notifyAnyChest = plugin.getConfig().getBoolean("notify.any-chest", true); + } + + /** + * Saves a value to the plugin config at the specified path. + * + * @param path the path to set the value to + * @param value the value to set to the path + */ + public void saveToConfig(String path, Object value) { + plugin.getConfig().set(path, value); + plugin.saveConfig(); + } + + /** + * Returns the OpenInv item Material. + * + * @return the OpenInv item Material + */ + public Material getOpenInvItem() { + return openInvItem; + } + + /** + * Returns whether or not notify silent chest is enabled. + * + * @return true if notify silent chest is enabled; false otherwise + */ + public boolean notifySilentChest() { + return notifySilentChest; + } + + /** + * Returns whether or not notify any chest is enabled. + * + * @return true if notify any chest is enabled; false otherwise + */ + public boolean notifyAnyChest() { + return notifyAnyChest; + } + + /** + * Returns a player's item OpenInv status. + * + * @param player the player to get the item OpenInv status of + * @return the player's item OpenInv status + */ + public boolean getPlayerItemOpenInvStatus(Player player) { + return plugin.getConfig().getBoolean("toggles.items.open-inv." + player.getUniqueId(), false); + } + + /** + * Returns a player's any chest status. + * + * @param player the player to get the any chest status of + * @return the player's any chest status + */ + public boolean getPlayerAnyChestStatus(Player player) { + return plugin.getConfig().getBoolean("toggles.any-chest." + player.getUniqueId(), true); + } + + /** + * Sets a player's any chest status. + * + * @param player the player to set the any chest status of + * @param status the status to set with + */ + public void setPlayerAnyChestStatus(Player player, boolean status) { + saveToConfig("toggles.any-chest." + player.getUniqueId(), status); + } + + /** + * Sets a player's item OpenInv status. + * + * @param player the player to set the item OpenInv status of + * @param status the status to set with + */ + public void setPlayerItemOpenInvStatus(Player player, boolean status) { + saveToConfig("toggles.items.open-inv." + player.getUniqueId(), status); + } + + /** + * Returns a player's silent chest status. + * + * @param player the player to get the silent chest status of + * @return the player's silent chest status + */ + public boolean getPlayerSilentChestStatus(Player player) { + return plugin.getConfig().getBoolean("toggles.silent-chest." + player.getUniqueId(), false); + } + + /** + * Sets a player's silent chest status. + * + * @param player the player to set the silent chest status of + * @param status the status to set with + */ + public void setPlayerSilentChestStatus(Player player, boolean status) { + saveToConfig("toggles.silent-chest." + player.getUniqueId(), status); + } +} diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index 863891b..08d563f 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -20,9 +20,7 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; -import org.bukkit.Material; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.permissions.Permissible; @@ -50,140 +48,112 @@ public class OpenInv extends JavaPlugin { public static final Map inventories = new HashMap(); public static final Map enderChests = new HashMap(); - public static OpenInv mainPlugin; + private PlayerDataManager playerLoader; + private InventoryAccess inventoryAccess; + private AnySilentChest anySilentChest; - private static PlayerDataManager playerLoader; - private static InventoryAccess inventoryAccess; - private static AnySilentChest anySilentChest; + private Configuration configuration; @Override public void onEnable() { - // Plugin - mainPlugin = this; - - // Config Updater - ConfigUpdater configUpdater = new ConfigUpdater(this); - configUpdater.checkForUpdates(); + // Config + configuration = new Configuration(this); // Initialize - playerLoader = new PlayerDataManager(); - inventoryAccess = new InventoryAccess(); - anySilentChest = new AnySilentChest(); + playerLoader = new PlayerDataManager(this); + inventoryAccess = new InventoryAccess(this); + anySilentChest = new AnySilentChest(this); // Save the default config.yml if it doesn't already exist saveDefaultConfig(); - // Register the plugin's events & commands - registerEvents(); - registerCommands(); - } - - private void registerEvents() { + // Register the plugin's events PluginManager pm = getServer().getPluginManager(); - pm.registerEvents(new OpenInvPlayerListener(), this); - pm.registerEvents(new OpenInvEntityListener(), this); - pm.registerEvents(new OpenInvInventoryListener(), this); - } + pm.registerEvents(new OpenInvPlayerListener(this), this); + pm.registerEvents(new OpenInvEntityListener(this), this); + pm.registerEvents(new OpenInvInventoryListener(this), this); - private void registerCommands() { + // Register the plugin's commands getCommand("openinv").setExecutor(new OpenInvCommand(this)); getCommand("openender").setExecutor(new OpenEnderCommand(this)); - getCommand("searchinv").setExecutor(new SearchInvCommand()); - getCommand("searchender").setExecutor(new SearchEnderCommand()); - getCommand("toggleopeninv").setExecutor(new ToggleOpenInvCommand()); - getCommand("anychest").setExecutor(new AnyChestCommand()); - getCommand("silentchest").setExecutor(new SilentChestCommand()); + getCommand("searchinv").setExecutor(new SearchInvCommand(this)); + getCommand("searchender").setExecutor(new SearchEnderCommand(this)); + getCommand("toggleopeninv").setExecutor(new ToggleOpenInvCommand(this)); + getCommand("anychest").setExecutor(new AnyChestCommand(this)); + getCommand("silentchest").setExecutor(new SilentChestCommand(this)); } - public static PlayerDataManager getPlayerLoader() { + /** + * Returns the plugin Configuration. + * + * @return the plugin Configuration + */ + public Configuration getConfiguration() { + return configuration; + } + + /** + * Returns an instance of PlayerDataManager. + * + * @return an instance of PlayerDataManager + */ + public PlayerDataManager getPlayerLoader() { return playerLoader; } - public static InventoryAccess getInventoryAccess() { + /** + * Returns an instance of InventoryAccess. + * + * @return an instance of InventoryAccess + */ + public InventoryAccess getInventoryAccess() { return inventoryAccess; } - public static AnySilentChest getAnySilentChest() { + /** + * Returns an instance of AnySilentChest. + * + * @return an instance of AnySilentChest + */ + public AnySilentChest getAnySilentChest() { return anySilentChest; } - public static Object getFromConfig(String path, Object defaultValue) { - Object val = mainPlugin.getConfig().get(path); - - if (val == null) { - mainPlugin.getConfig().set(path, defaultValue); - return defaultValue; - } else { - return val; - } + /** + * Logs a message to console. + * + * @param text the message to log + */ + public void log(String text) { + getLogger().info(text); } - public static void saveToConfig(String path, Object value) { - mainPlugin.getConfig().set(path, value); - mainPlugin.saveConfig(); - } - - public static Material getOpenInvItem() { - if (!mainPlugin.getConfig().isSet("items.open-inv")) { - saveToConfig("items.open-inv", "STICK"); - } - - String itemName = mainPlugin.getConfig().getString("items.open-inv", "STICK"); - Material material = Material.getMaterial(itemName); - if (material == null) { - mainPlugin.getLogger().warning("OpenInv item '" + itemName + "' does not match to a valid item. Defaulting to stick."); - material = Material.STICK; - } - - return material; - } - - public static boolean notifySilentChest() { - return mainPlugin.getConfig().getBoolean("notify.silent-chest", true); - } - - public static boolean notifyAnyChest() { - return mainPlugin.getConfig().getBoolean("notify.any-chest", true); - } - - public static boolean getPlayerAnyChestStatus(Player player) { - return mainPlugin.getConfig().getBoolean("toggles.any-chest." + player.getUniqueId(), true); - } - - public static void setPlayerAnyChestStatus(Player player, boolean status) { - saveToConfig("toggles.any-chest." + player.getUniqueId(), status); - } - - public static boolean getPlayerItemOpenInvStatus(Player player) { - return mainPlugin.getConfig().getBoolean("toggles.items.open-inv." + player.getUniqueId(), false); - } - - public static void setPlayerItemOpenInvStatus(Player player, boolean status) { - saveToConfig("toggles.items.open-inv." + player.getUniqueId(), status); - } - - public static boolean getPlayerSilentChestStatus(Player player) { - return mainPlugin.getConfig().getBoolean("toggles.silent-chest." + player.getUniqueId(), false); - } - - public static void setPlayerSilentChestStatus(Player player, boolean status) { - saveToConfig("toggles.silent-chest." + player.getUniqueId(), status); - } - - public static void log(String text) { - mainPlugin.getLogger().info("[OpenInv] " + text); - } - - public static void log(Throwable e) { - mainPlugin.getLogger().severe("[OpenInv] " + e.toString()); + /** + * Logs a Throwable to console. + * + * @param e the Throwable to log + */ + public void log(Throwable e) { + getLogger().severe(e.toString()); e.printStackTrace(); } + /** + * Sends an OpenInv message to a player. + * + * @param sender the CommandSender to message + * @param message the message to send + */ public static void sendMessage(CommandSender sender, String message) { sender.sendMessage(ChatColor.AQUA + "[OpenInv] " + ChatColor.WHITE + message); } + /** + * Outputs OpenInv help information to a player. + * + * @param player the player to show help to + */ public static void showHelp(Player player) { player.sendMessage(ChatColor.GREEN + "/openinv - Open a player's inventory."); player.sendMessage(ChatColor.GREEN + " (aliases: oi, inv, open)"); @@ -209,6 +179,13 @@ public class OpenInv extends JavaPlugin { player.sendMessage(ChatColor.GREEN + " (aliases: sc, silent)"); } + /** + * Returns whether or not a player has a permission. + * + * @param player the player to check + * @param permission the permission node to check for + * @return true if the player has the permission; false otherwise + */ public static boolean hasPermission(Permissible player, String permission) { String[] parts = permission.split("\\."); String perm = ""; diff --git a/src/main/java/com/lishid/openinv/Permissions.java b/src/main/java/com/lishid/openinv/Permissions.java index f0de775..5021236 100644 --- a/src/main/java/com/lishid/openinv/Permissions.java +++ b/src/main/java/com/lishid/openinv/Permissions.java @@ -1,6 +1,9 @@ package com.lishid.openinv; -public class Permissions { +public final class Permissions { + + private Permissions() {} + public static final String PERM_OPENINV = "OpenInv.openinv"; public static final String PERM_OVERRIDE = "OpenInv.override"; public static final String PERM_EXEMPT = "OpenInv.exempt"; diff --git a/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java b/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java index 732f641..1cfdd85 100644 --- a/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java +++ b/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java @@ -24,9 +24,18 @@ import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; +import com.lishid.openinv.Configuration; public class AnyChestCommand implements CommandExecutor { + private final OpenInv plugin; + private final Configuration configuration; + + public AnyChestCommand(OpenInv plugin) { + this.plugin = plugin; + configuration = plugin.getConfiguration(); + } + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("anychest")) { @@ -44,15 +53,15 @@ public class AnyChestCommand implements CommandExecutor { if (args.length > 0) { if (args[0].equalsIgnoreCase("check")) { - String status = OpenInv.getPlayerAnyChestStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; + String status = configuration.getPlayerAnyChestStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; OpenInv.sendMessage(player, "Any Chest is " + status + ChatColor.RESET + "."); return true; } } - OpenInv.setPlayerAnyChestStatus(player, !OpenInv.getPlayerAnyChestStatus(player)); + configuration.setPlayerAnyChestStatus(player, !configuration.getPlayerAnyChestStatus(player)); - String status = OpenInv.getPlayerAnyChestStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; + String status = configuration.getPlayerAnyChestStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; OpenInv.sendMessage(player, "Any Chest is now " + status + ChatColor.RESET + "."); return true; diff --git a/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java b/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java index ceb6472..ab4320d 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java @@ -96,7 +96,7 @@ public class OpenEnderCommand implements CommandExecutor { @Override public void run() { // Try loading the player's data asynchronously - final Player target = OpenInv.getPlayerLoader().loadPlayer(uuid); + final Player target = plugin.getPlayerLoader().loadPlayer(uuid); if (target == null) { player.sendMessage(ChatColor.RED + "Player not found!"); return; diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java index 75e093a..ce7e8ba 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java @@ -48,6 +48,7 @@ public class OpenInvCommand implements CommandExecutor { sender.sendMessage(ChatColor.RED + "You can't use this command from the console."); return true; } + if (!OpenInv.hasPermission(sender, Permissions.PERM_OPENINV)) { sender.sendMessage(ChatColor.RED + "You do not have permission to access player inventories."); return true; @@ -90,7 +91,7 @@ public class OpenInvCommand implements CommandExecutor { @Override public void run() { // Try loading the player's data asynchronously - final Player target = OpenInv.getPlayerLoader().loadPlayer(uuid); + final Player target = plugin.getPlayerLoader().loadPlayer(uuid); if (target == null) { player.sendMessage(ChatColor.RED + "Player not found!"); return; @@ -148,14 +149,10 @@ public class OpenInvCommand implements CommandExecutor { openInvHistory.put(player.getUniqueId(), target.getUniqueId()); // Create the inventory - /* SpecialPlayerInventory inv = OpenInv.inventories.get(target.getUniqueId()); if (inv == null) { inv = new SpecialPlayerInventory(target, target.isOnline()); } - */ - - SpecialPlayerInventory inv = new SpecialPlayerInventory(target, target.isOnline()); // Open the inventory player.openInventory(inv.getBukkitInventory()); diff --git a/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java b/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java index 778a762..544b353 100644 --- a/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java @@ -13,6 +13,12 @@ import com.lishid.openinv.Permissions; public class SearchEnderCommand implements CommandExecutor { + private OpenInv plugin; + + public SearchEnderCommand(OpenInv plugin) { + this.plugin = plugin; + } + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("searchender")) { diff --git a/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java b/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java index 46bf5f3..b7eb5df 100644 --- a/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java @@ -29,6 +29,12 @@ import com.lishid.openinv.Permissions; public class SearchInvCommand implements CommandExecutor { + private final OpenInv plugin; + + public SearchInvCommand(OpenInv plugin) { + this.plugin = plugin; + } + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("searchinv")) { diff --git a/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java b/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java index afdc8c6..73de4c5 100644 --- a/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java @@ -24,9 +24,18 @@ import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; +import com.lishid.openinv.Configuration; public class SilentChestCommand implements CommandExecutor { + private final OpenInv plugin; + private final Configuration configuration; + + public SilentChestCommand(OpenInv plugin) { + this.plugin = plugin; + configuration = plugin.getConfiguration(); + } + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("silentchest")) { @@ -44,16 +53,16 @@ public class SilentChestCommand implements CommandExecutor { if (args.length > 0) { if (args[0].equalsIgnoreCase("check")) { - String status = OpenInv.getPlayerSilentChestStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; - OpenInv.sendMessage(player, "Silent Chest is " + status + ChatColor.RESET + "."); + String status = configuration.getPlayerSilentChestStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; + plugin.sendMessage(player, "Silent Chest is " + status + ChatColor.RESET + "."); return true; } } - OpenInv.setPlayerSilentChestStatus(player, !OpenInv.getPlayerSilentChestStatus(player)); + configuration.setPlayerSilentChestStatus(player, !configuration.getPlayerSilentChestStatus(player)); - String status = OpenInv.getPlayerSilentChestStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; - OpenInv.sendMessage(player, "Silent Chest is now " + status + ChatColor.RESET + "."); + String status = configuration.getPlayerSilentChestStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; + plugin.sendMessage(player, "Silent Chest is now " + status + ChatColor.RESET + "."); return true; } diff --git a/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java b/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java index ac3c714..b6edd62 100644 --- a/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java @@ -24,9 +24,18 @@ import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; +import com.lishid.openinv.Configuration; public class ToggleOpenInvCommand implements CommandExecutor { + private final OpenInv plugin; + private final Configuration configuration; + + public ToggleOpenInvCommand(OpenInv plugin) { + this.plugin = plugin; + configuration = plugin.getConfiguration(); + } + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("toggleopeninv")) { @@ -44,16 +53,16 @@ public class ToggleOpenInvCommand implements CommandExecutor { if (args.length > 0) { if (args[0].equalsIgnoreCase("check")) { - String status = OpenInv.getPlayerItemOpenInvStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; - OpenInv.sendMessage(player, "OpenInv with " + ChatColor.GRAY + OpenInv.getOpenInvItem() + ChatColor.RESET + status + ChatColor.RESET + "."); + String status = configuration.getPlayerItemOpenInvStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; + plugin.sendMessage(player, "OpenInv with " + ChatColor.GRAY + configuration.getOpenInvItem() + ChatColor.RESET + status + ChatColor.RESET + "."); return true; } } - OpenInv.setPlayerItemOpenInvStatus(player, !OpenInv.getPlayerItemOpenInvStatus(player)); + configuration.setPlayerItemOpenInvStatus(player, !configuration.getPlayerItemOpenInvStatus(player)); - String status = OpenInv.getPlayerItemOpenInvStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; - OpenInv.sendMessage(player, "OpenInv with " + ChatColor.GRAY + OpenInv.getOpenInvItem() + ChatColor.RESET + " is now " + status + ChatColor.RESET + "."); + String status = configuration.getPlayerItemOpenInvStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; + plugin.sendMessage(player, "OpenInv with " + ChatColor.GRAY + configuration.getOpenInvItem() + ChatColor.RESET + " is now " + status + ChatColor.RESET + "."); return true; } diff --git a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java index 8347aa6..1a22b97 100644 --- a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java +++ b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java @@ -18,18 +18,34 @@ package com.lishid.openinv.internal; import java.util.Iterator; +import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; -// Volatile -import net.minecraft.server.v1_9_R1.*; +import net.minecraft.server.v1_9_R1.AxisAlignedBB; +import net.minecraft.server.v1_9_R1.Block; +import net.minecraft.server.v1_9_R1.BlockChest; import net.minecraft.server.v1_9_R1.BlockChest.Type; - -import org.bukkit.craftbukkit.v1_9_R1.entity.*; +import net.minecraft.server.v1_9_R1.BlockPosition; +import net.minecraft.server.v1_9_R1.Entity; +import net.minecraft.server.v1_9_R1.EntityOcelot; +import net.minecraft.server.v1_9_R1.EntityPlayer; +import net.minecraft.server.v1_9_R1.EnumDirection; +import net.minecraft.server.v1_9_R1.ITileInventory; +import net.minecraft.server.v1_9_R1.InventoryLargeChest; +import net.minecraft.server.v1_9_R1.TileEntity; +import net.minecraft.server.v1_9_R1.TileEntityChest; +import net.minecraft.server.v1_9_R1.World; public class AnySilentChest { + private final OpenInv plugin; + + public AnySilentChest(OpenInv plugin) { + this.plugin = plugin; + } + public boolean isAnyChestNeeded(Player p, int x, int y, int z) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest BlockPosition position = new BlockPosition(x, y, z); @@ -135,8 +151,8 @@ public class AnySilentChest { if (silentChest) { tileInventory = new SilentInventory(tileInventory); - if (OpenInv.notifySilentChest()) { - OpenInv.sendMessage(p, "You are opening a chest silently."); + if (plugin.getConfiguration().notifySilentChest()) { + plugin.sendMessage(p, "You are opening a chest silently."); } returnValue = false; @@ -144,8 +160,8 @@ public class AnySilentChest { player.openContainer(tileInventory); - if (anyChest && OpenInv.notifyAnyChest()) { - OpenInv.sendMessage(p, "You are opening a blocked chest."); + if (anyChest && plugin.getConfiguration().notifyAnyChest()) { + plugin.sendMessage(p, "You are opening a blocked chest."); } return returnValue; diff --git a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java index cf8e2f1..9aacb51 100644 --- a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java +++ b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java @@ -18,19 +18,23 @@ package com.lishid.openinv.internal; import java.lang.reflect.Field; +import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.Inventory; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; -// Volatile -import net.minecraft.server.v1_9_R1.*; - -import org.bukkit.craftbukkit.v1_9_R1.inventory.*; +import net.minecraft.server.v1_9_R1.IInventory; public class InventoryAccess { + private final OpenInv plugin; + + public InventoryAccess(OpenInv plugin) { + this.plugin = plugin; + } + public boolean check(Inventory inventory, HumanEntity player) { IInventory inv = grabInventory(inventory); @@ -64,7 +68,7 @@ public class InventoryAccess { try { result = (IInventory) f.get(inventory); } catch (Exception e) { - OpenInv.log(e); + plugin.log(e); } } } diff --git a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java index 4e4aef0..2f2f8d9 100644 --- a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java +++ b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java @@ -20,18 +20,24 @@ import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.craftbukkit.v1_9_R1.CraftServer; import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.mojang.authlib.GameProfile; -// Volatile -import net.minecraft.server.v1_9_R1.*; - -import org.bukkit.craftbukkit.v1_9_R1.*; +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 { + private OpenInv plugin; + + public PlayerDataManager(OpenInv plugin) { + this.plugin = plugin; + } + public Player loadPlayer(UUID uuid) { try { OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); @@ -55,7 +61,7 @@ public class PlayerDataManager { return target; } } catch (Exception e) { - OpenInv.log(e); + plugin.log(e); } return null; diff --git a/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java index 301c813..7c9c5c3 100644 --- a/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java +++ b/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java @@ -16,8 +16,9 @@ package com.lishid.openinv.internal; -// Volatile -import net.minecraft.server.v1_9_R1.*; +import net.minecraft.server.v1_9_R1.ContainerChest; +import net.minecraft.server.v1_9_R1.EntityHuman; +import net.minecraft.server.v1_9_R1.IInventory; public class SilentContainerChest extends ContainerChest { diff --git a/src/main/java/com/lishid/openinv/internal/SilentInventory.java b/src/main/java/com/lishid/openinv/internal/SilentInventory.java index ee802c5..f2b246e 100644 --- a/src/main/java/com/lishid/openinv/internal/SilentInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SilentInventory.java @@ -7,8 +7,14 @@ import org.bukkit.craftbukkit.v1_9_R1.entity.CraftHumanEntity; import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.InventoryHolder; -// Volatile -import net.minecraft.server.v1_9_R1.*; +import net.minecraft.server.v1_9_R1.ChestLock; +import net.minecraft.server.v1_9_R1.Container; +import net.minecraft.server.v1_9_R1.ContainerChest; +import net.minecraft.server.v1_9_R1.EntityHuman; +import net.minecraft.server.v1_9_R1.IChatBaseComponent; +import net.minecraft.server.v1_9_R1.ITileInventory; +import net.minecraft.server.v1_9_R1.ItemStack; +import net.minecraft.server.v1_9_R1.PlayerInventory; public class SilentInventory implements ITileInventory { diff --git a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java index 4c37370..f8b74af 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java @@ -16,17 +16,17 @@ package com.lishid.openinv.internal; +import org.bukkit.craftbukkit.v1_9_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; import com.lishid.openinv.OpenInv; -// Volatile -import net.minecraft.server.v1_9_R1.*; - -import org.bukkit.craftbukkit.v1_9_R1.entity.*; -import org.bukkit.craftbukkit.v1_9_R1.inventory.*; +import net.minecraft.server.v1_9_R1.InventoryEnderChest; +import net.minecraft.server.v1_9_R1.InventorySubcontainer; public class SpecialEnderChest extends InventorySubcontainer { diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java index 0411f6f..b01a9f4 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java @@ -25,8 +25,18 @@ import org.bukkit.event.Listener; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; +import com.lishid.openinv.Configuration; public class OpenInvEntityListener implements Listener { + + private final OpenInv plugin; + private final Configuration configuration; + + public OpenInvEntityListener(OpenInv plugin) { + this.plugin = plugin; + configuration = plugin.getConfiguration(); + } + @EventHandler(priority = EventPriority.LOWEST) public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { Entity attacker = event.getDamager(); @@ -38,8 +48,8 @@ public class OpenInvEntityListener implements Listener { Player player = (Player) attacker; - if (player.getInventory().getItemInMainHand().getType() == OpenInv.getOpenInvItem()) { - if (!OpenInv.getPlayerItemOpenInvStatus(player) || !OpenInv.hasPermission(player, Permissions.PERM_OPENINV)) { + if (player.getInventory().getItemInMainHand().getType() == configuration.getOpenInvItem()) { + if (!configuration.getPlayerItemOpenInvStatus(player) || !OpenInv.hasPermission(player, Permissions.PERM_OPENINV)) { return; } diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java index e81fd5c..efe92fe 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java @@ -25,12 +25,19 @@ import org.bukkit.inventory.Inventory; import com.lishid.openinv.OpenInv; public class OpenInvInventoryListener implements Listener { + + private final OpenInv plugin; + + public OpenInvInventoryListener(OpenInv plugin) { + this.plugin = plugin; + } + @EventHandler public void onInventoryClick(InventoryClickEvent event) { Inventory inventory = event.getInventory(); HumanEntity player = event.getWhoClicked(); - if (!OpenInv.getInventoryAccess().check(inventory, player)) { + if (!plugin.getInventoryAccess().check(inventory, player)) { event.setCancelled(true); } } diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java index 579d93d..7db5c9b 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java @@ -33,10 +33,20 @@ import org.bukkit.event.player.PlayerQuitEvent; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; +import com.lishid.openinv.Configuration; import com.lishid.openinv.internal.SpecialEnderChest; import com.lishid.openinv.internal.SpecialPlayerInventory; public class OpenInvPlayerListener implements Listener { + + private final OpenInv plugin; + private final Configuration configuration; + + public OpenInvPlayerListener(OpenInv plugin) { + this.plugin = plugin; + configuration = plugin.getConfiguration(); + } + @EventHandler(priority = EventPriority.LOWEST) public void onPlayerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); @@ -86,7 +96,7 @@ public class OpenInvPlayerListener implements Listener { // Ender Chests if (block.getType() == Material.ENDER_CHEST) { - if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && OpenInv.getPlayerSilentChestStatus(player)) { + if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && configuration.getPlayerSilentChestStatus(player)) { event.setCancelled(true); player.openInventory(player.getEnderChest()); return; @@ -101,13 +111,13 @@ public class OpenInvPlayerListener implements Listener { int y = block.getY(); int z = block.getZ(); - if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && OpenInv.getPlayerSilentChestStatus(player)) { + if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && configuration.getPlayerSilentChestStatus(player)) { silentChest = true; } - if (OpenInv.hasPermission(player, Permissions.PERM_ANYCHEST) && OpenInv.getPlayerAnyChestStatus(player)) { + if (OpenInv.hasPermission(player, Permissions.PERM_ANYCHEST) && configuration.getPlayerAnyChestStatus(player)) { try { - anyChest = OpenInv.getAnySilentChest().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."); @@ -117,7 +127,7 @@ public class OpenInvPlayerListener implements Listener { // If the anyChest or silentChest is active if (anyChest || silentChest) { - if (!OpenInv.getAnySilentChest().activateChest(player, anyChest, silentChest, x, y, z)) { + if (!plugin.getAnySilentChest().activateChest(player, anyChest, silentChest, x, y, z)) { event.setCancelled(true); } } @@ -128,7 +138,7 @@ public class OpenInvPlayerListener implements Listener { // Signs if (block.getState() instanceof Sign) { try { - Sign sign = ((Sign) block.getState()); + Sign sign = (Sign) block.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); @@ -143,7 +153,7 @@ public class OpenInvPlayerListener implements Listener { } case RIGHT_CLICK_AIR: // OpenInv item - if (player.getInventory().getItemInMainHand().getType() == OpenInv.getOpenInvItem() && OpenInv.getPlayerItemOpenInvStatus(player) && OpenInv.hasPermission(player, Permissions.PERM_OPENINV)) { + if (player.getInventory().getItemInMainHand().getType() == configuration.getOpenInvItem() && configuration.getPlayerItemOpenInvStatus(player) && OpenInv.hasPermission(player, Permissions.PERM_OPENINV)) { player.performCommand("openinv"); } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index aaaca8e..e5093ff 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -2,6 +2,7 @@ name: OpenInv main: com.lishid.openinv.OpenInv version: 2.3.6 author: lishid +authors: [ShadowRanger] description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. commands: -- 2.49.1 From b8f4589b87b6ccb37b2a956b9377bc09509d36d9 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Thu, 10 Mar 2016 13:47:17 +1100 Subject: [PATCH 052/253] General refactoring --- pom.xml | 2 +- .../com/lishid/openinv/Configuration.java | 9 ++++++++- src/main/java/com/lishid/openinv/OpenInv.java | 20 +++++++++---------- .../openinv/commands/SilentChestCommand.java | 4 ++-- .../commands/ToggleOpenInvCommand.java | 4 ++-- .../openinv/internal/AnySilentChest.java | 4 ++-- src/main/resources/plugin.yml | 2 +- 7 files changed, 26 insertions(+), 19 deletions(-) diff --git a/pom.xml b/pom.xml index b92241e..bc36ee3 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.lishid openinv jar - 2.3.6 + 2.3.7 OpenInv http://dev.bukkit.org/bukkit-plugins/openinv/ diff --git a/src/main/java/com/lishid/openinv/Configuration.java b/src/main/java/com/lishid/openinv/Configuration.java index b391ccf..1a03d9a 100644 --- a/src/main/java/com/lishid/openinv/Configuration.java +++ b/src/main/java/com/lishid/openinv/Configuration.java @@ -46,13 +46,20 @@ public class Configuration { notifyAnyChest = plugin.getConfig().getBoolean("notify.any-chest", true); } + /** + * Reloads OpenInv's config settings. + */ + public void reload() { + load(); + } + /** * Saves a value to the plugin config at the specified path. * * @param path the path to set the value to * @param value the value to set to the path */ - public void saveToConfig(String path, Object value) { + private void saveToConfig(String path, Object value) { plugin.getConfig().set(path, value); plugin.saveConfig(); } diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index 08d563f..d6b18f0 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -56,6 +56,9 @@ public class OpenInv extends JavaPlugin { @Override public void onEnable() { + // Save the default config.yml if it doesn't already exist + saveDefaultConfig(); + // Config configuration = new Configuration(this); @@ -64,9 +67,6 @@ public class OpenInv extends JavaPlugin { inventoryAccess = new InventoryAccess(this); anySilentChest = new AnySilentChest(this); - // Save the default config.yml if it doesn't already exist - saveDefaultConfig(); - // Register the plugin's events PluginManager pm = getServer().getPluginManager(); @@ -155,27 +155,27 @@ public class OpenInv extends JavaPlugin { * @param player the player to show help to */ public static void showHelp(Player player) { - player.sendMessage(ChatColor.GREEN + "/openinv - Open a player's inventory."); + player.sendMessage(ChatColor.GREEN + "/openinv - Opens a player's inventory."); player.sendMessage(ChatColor.GREEN + " (aliases: oi, inv, open)"); - player.sendMessage(ChatColor.GREEN + "/openender - Open a player's ender chest."); + player.sendMessage(ChatColor.GREEN + "/openender - Opens a player's ender chest."); player.sendMessage(ChatColor.GREEN + " (aliases: oe)"); player.sendMessage(ChatColor.GREEN + "/searchinv [minAmount] -"); - player.sendMessage(ChatColor.GREEN + " Search and list players having a specific item."); + player.sendMessage(ChatColor.GREEN + " Searches and lists players that have a specific item in their inventory."); player.sendMessage(ChatColor.GREEN + " (aliases: si)"); player.sendMessage(ChatColor.GREEN + "/searchender [minAmount] -"); - player.sendMessage(ChatColor.GREEN + " Search and list players having a specific item."); + player.sendMessage(ChatColor.GREEN + " Searches and lists players that have a specific item in their ender chest."); player.sendMessage(ChatColor.GREEN + " (aliases: se)"); - player.sendMessage(ChatColor.GREEN + "/toggleopeninv - Toggle the item openinv function."); + player.sendMessage(ChatColor.GREEN + "/toggleopeninv - Toggles the item openinv function."); player.sendMessage(ChatColor.GREEN + " (aliases: toi, toggleoi, toggleinv)"); - player.sendMessage(ChatColor.GREEN + "/anychest - Toggle the any chest function."); + player.sendMessage(ChatColor.GREEN + "/anychest - Toggles the any chest function."); player.sendMessage(ChatColor.GREEN + " (aliases: ac)"); - player.sendMessage(ChatColor.GREEN + "/silentchest - Toggle the silent chest function."); + player.sendMessage(ChatColor.GREEN + "/silentchest - Toggles the silent chest function."); player.sendMessage(ChatColor.GREEN + " (aliases: sc, silent)"); } diff --git a/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java b/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java index 73de4c5..6b14379 100644 --- a/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java @@ -54,7 +54,7 @@ public class SilentChestCommand implements CommandExecutor { if (args.length > 0) { if (args[0].equalsIgnoreCase("check")) { String status = configuration.getPlayerSilentChestStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; - plugin.sendMessage(player, "Silent Chest is " + status + ChatColor.RESET + "."); + OpenInv.sendMessage(player, "Silent Chest is " + status + ChatColor.RESET + "."); return true; } } @@ -62,7 +62,7 @@ public class SilentChestCommand implements CommandExecutor { configuration.setPlayerSilentChestStatus(player, !configuration.getPlayerSilentChestStatus(player)); String status = configuration.getPlayerSilentChestStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; - plugin.sendMessage(player, "Silent Chest is now " + status + ChatColor.RESET + "."); + OpenInv.sendMessage(player, "Silent Chest is now " + status + ChatColor.RESET + "."); return true; } diff --git a/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java b/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java index b6edd62..dcda462 100644 --- a/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java @@ -54,7 +54,7 @@ public class ToggleOpenInvCommand implements CommandExecutor { if (args.length > 0) { if (args[0].equalsIgnoreCase("check")) { String status = configuration.getPlayerItemOpenInvStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; - plugin.sendMessage(player, "OpenInv with " + ChatColor.GRAY + configuration.getOpenInvItem() + ChatColor.RESET + status + ChatColor.RESET + "."); + OpenInv.sendMessage(player, "OpenInv with " + ChatColor.GRAY + configuration.getOpenInvItem() + ChatColor.RESET + status + ChatColor.RESET + "."); return true; } } @@ -62,7 +62,7 @@ public class ToggleOpenInvCommand implements CommandExecutor { configuration.setPlayerItemOpenInvStatus(player, !configuration.getPlayerItemOpenInvStatus(player)); String status = configuration.getPlayerItemOpenInvStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; - plugin.sendMessage(player, "OpenInv with " + ChatColor.GRAY + configuration.getOpenInvItem() + ChatColor.RESET + " is now " + status + ChatColor.RESET + "."); + OpenInv.sendMessage(player, "OpenInv with " + ChatColor.GRAY + configuration.getOpenInvItem() + ChatColor.RESET + " is now " + status + ChatColor.RESET + "."); return true; } diff --git a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java index 1a22b97..ae43489 100644 --- a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java +++ b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java @@ -152,7 +152,7 @@ public class AnySilentChest { tileInventory = new SilentInventory(tileInventory); if (plugin.getConfiguration().notifySilentChest()) { - plugin.sendMessage(p, "You are opening a chest silently."); + OpenInv.sendMessage(p, "You are opening a chest silently."); } returnValue = false; @@ -161,7 +161,7 @@ public class AnySilentChest { player.openContainer(tileInventory); if (anyChest && plugin.getConfiguration().notifyAnyChest()) { - plugin.sendMessage(p, "You are opening a blocked chest."); + OpenInv.sendMessage(p, "You are opening a blocked chest."); } return returnValue; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index e5093ff..d1be4db 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.3.6 +version: 2.3.7 author: lishid authors: [ShadowRanger] description: > -- 2.49.1 From d42cc3e275e12f9417244b7c74ef6dced2bd8406 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Thu, 10 Mar 2016 14:01:56 +1100 Subject: [PATCH 053/253] General refactoring --- src/main/java/com/lishid/openinv/OpenInv.java | 2 +- .../openinv/commands/SearchEnderCommand.java | 6 ------ .../openinv/internal/PlayerDataManager.java | 2 +- .../internal/SpecialPlayerInventory.java | 14 +++++++------ .../listeners/OpenInvPlayerListener.java | 21 +++++++++---------- .../com/lishid/openinv/utils/UUIDFetcher.java | 10 +++++++++ .../com/lishid/openinv/utils/UUIDUtil.java | 19 ++++++++++++----- 7 files changed, 44 insertions(+), 30 deletions(-) diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index d6b18f0..162ac72 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -78,7 +78,7 @@ public class OpenInv extends JavaPlugin { getCommand("openinv").setExecutor(new OpenInvCommand(this)); getCommand("openender").setExecutor(new OpenEnderCommand(this)); getCommand("searchinv").setExecutor(new SearchInvCommand(this)); - getCommand("searchender").setExecutor(new SearchEnderCommand(this)); + getCommand("searchender").setExecutor(new SearchEnderCommand()); getCommand("toggleopeninv").setExecutor(new ToggleOpenInvCommand(this)); getCommand("anychest").setExecutor(new AnyChestCommand(this)); getCommand("silentchest").setExecutor(new SilentChestCommand(this)); diff --git a/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java b/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java index 544b353..778a762 100644 --- a/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java @@ -13,12 +13,6 @@ import com.lishid.openinv.Permissions; public class SearchEnderCommand implements CommandExecutor { - private OpenInv plugin; - - public SearchEnderCommand(OpenInv plugin) { - this.plugin = plugin; - } - @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("searchender")) { diff --git a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java index 2f2f8d9..87bab09 100644 --- a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java +++ b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java @@ -32,7 +32,7 @@ import net.minecraft.server.v1_9_R1.PlayerInteractManager; public class PlayerDataManager { - private OpenInv plugin; + private final OpenInv plugin; public PlayerDataManager(OpenInv plugin) { this.plugin = plugin; diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index 528a789..18adb68 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -18,17 +18,19 @@ package com.lishid.openinv.internal; import java.lang.reflect.Field; +import org.bukkit.craftbukkit.v1_9_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile -import net.minecraft.server.v1_9_R1.*; - -import org.bukkit.craftbukkit.v1_9_R1.entity.*; -import org.bukkit.craftbukkit.v1_9_R1.inventory.*; - import com.lishid.openinv.OpenInv; +import net.minecraft.server.v1_9_R1.ContainerUtil; +import net.minecraft.server.v1_9_R1.EntityHuman; +import net.minecraft.server.v1_9_R1.ItemStack; +import net.minecraft.server.v1_9_R1.PlayerInventory; + public class SpecialPlayerInventory extends PlayerInventory { private final CraftInventory inventory = new CraftInventory(this); diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java index 7db5c9b..9c2f9e4 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java @@ -56,9 +56,9 @@ public class OpenInvPlayerListener implements Listener { inventory.playerOnline(event.getPlayer()); } - SpecialEnderChest chest = OpenInv.enderChests.get(player.getUniqueId()); - if (chest != null) { - chest.playerOnline(event.getPlayer()); + SpecialEnderChest enderChest = OpenInv.enderChests.get(player.getUniqueId()); + if (enderChest != null) { + enderChest.playerOnline(event.getPlayer()); } } @@ -71,9 +71,9 @@ public class OpenInvPlayerListener implements Listener { inventory.playerOffline(); } - SpecialEnderChest chest = OpenInv.enderChests.get(player.getUniqueId()); - if (chest != null) { - chest.playerOffline(); + SpecialEnderChest enderChest = OpenInv.enderChests.get(player.getUniqueId()); + if (enderChest != null) { + enderChest.playerOffline(); } } @@ -118,8 +118,7 @@ public class OpenInvPlayerListener implements Listener { if (OpenInv.hasPermission(player, Permissions.PERM_ANYCHEST) && configuration.getPlayerAnyChestStatus(player)) { try { anyChest = plugin.getAnySilentChest().isAnyChestNeeded(player, x, y, z); - } - catch (Exception e) { + } catch (Exception e) { player.sendMessage(ChatColor.RED + "Error while executing openinv. Unsupported CraftBukkit."); e.printStackTrace(); } @@ -139,13 +138,13 @@ public class OpenInvPlayerListener implements Listener { if (block.getState() instanceof Sign) { try { Sign sign = (Sign) block.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 e) { - player.sendMessage("Internal Error."); + } catch (Exception e) { + player.sendMessage(ChatColor.RED + "An internal error occured."); e.printStackTrace(); } diff --git a/src/main/java/com/lishid/openinv/utils/UUIDFetcher.java b/src/main/java/com/lishid/openinv/utils/UUIDFetcher.java index 2784fb4..cc0499a 100644 --- a/src/main/java/com/lishid/openinv/utils/UUIDFetcher.java +++ b/src/main/java/com/lishid/openinv/utils/UUIDFetcher.java @@ -15,6 +15,7 @@ import org.json.simple.parser.JSONParser; import com.google.common.collect.ImmutableList; public class UUIDFetcher implements Callable> { + private static final double PROFILES_PER_REQUEST = 100; private static final String PROFILE_URL = "https://api.mojang.com/profiles/minecraft"; private final JSONParser jsonParser = new JSONParser(); @@ -34,11 +35,13 @@ public class UUIDFetcher implements Callable> { public Map call() throws Exception { Map uuidMap = new HashMap(); int requests = (int) Math.ceil(names.size() / PROFILES_PER_REQUEST); + for (int i = 0; i < requests; i++) { HttpURLConnection connection = createConnection(); String body = JSONArray.toJSONString(names.subList(i * 100, Math.min((i + 1) * 100, names.size()))); writeBody(connection, body); JSONArray array = (JSONArray) jsonParser.parse(new InputStreamReader(connection.getInputStream())); + for (Object profile : array) { JSONObject jsonProfile = (JSONObject) profile; String id = (String) jsonProfile.get("id"); @@ -46,10 +49,12 @@ public class UUIDFetcher implements Callable> { UUID uuid = UUIDFetcher.getUUID(id); uuidMap.put(name.toLowerCase(), uuid); } + if (rateLimiting && i != requests - 1) { Thread.sleep(100L); } } + return uuidMap; } @@ -62,12 +67,14 @@ public class UUIDFetcher implements Callable> { private static HttpURLConnection createConnection() throws Exception { URL url = new URL(PROFILE_URL); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/json"); connection.setUseCaches(false); connection.setDoInput(true); connection.setDoOutput(true); + return connection; } @@ -79,6 +86,7 @@ public class UUIDFetcher implements Callable> { ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[16]); byteBuffer.putLong(uuid.getMostSignificantBits()); byteBuffer.putLong(uuid.getLeastSignificantBits()); + return byteBuffer.array(); } @@ -86,9 +94,11 @@ public class UUIDFetcher implements Callable> { if (array.length != 16) { throw new IllegalArgumentException("Illegal byte array length: " + array.length); } + ByteBuffer byteBuffer = ByteBuffer.wrap(array); long mostSignificant = byteBuffer.getLong(); long leastSignificant = byteBuffer.getLong(); + return new UUID(mostSignificant, leastSignificant); } diff --git a/src/main/java/com/lishid/openinv/utils/UUIDUtil.java b/src/main/java/com/lishid/openinv/utils/UUIDUtil.java index ea7c038..f7faad1 100644 --- a/src/main/java/com/lishid/openinv/utils/UUIDUtil.java +++ b/src/main/java/com/lishid/openinv/utils/UUIDUtil.java @@ -10,7 +10,10 @@ import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; -public class UUIDUtil { +public final class UUIDUtil { + + private UUIDUtil() {} + private static Player getPlayer(String name) { Validate.notNull(name, "Name cannot be null"); @@ -22,10 +25,12 @@ public class UUIDUtil { for (Player player : players) { if (player.getName().toLowerCase().startsWith(lowerName)) { int curDelta = player.getName().length() - lowerName.length(); + if (curDelta < delta) { found = player; delta = curDelta; } + if (curDelta == 0) break; } } @@ -39,14 +44,19 @@ public class UUIDUtil { return offlinePlayer.hasPlayedBefore() ? offlinePlayer.getUniqueId() : null; } + /** + * Returns the UUID of a player by their name. + * + * @param name the name of the player to get the UUID of + * @return the player's UUID or null + */ public static UUID getUUIDOf(String name) { UUID uuid; Player player = getPlayer(name); if (player != null) { uuid = player.getUniqueId(); - } - else { + } else { if (Bukkit.getServer().getOnlineMode()) { if (!Bukkit.getServer().isPrimaryThread()) { UUIDFetcher fetcher = new UUIDFetcher(Arrays.asList(name)); @@ -55,8 +65,7 @@ public class UUIDUtil { try { response = fetcher.call(); uuid = response.get(name.toLowerCase()); - } - catch (Exception e) { + } catch (Exception e) { uuid = getUUIDLocally(name); } } else { -- 2.49.1 From 99a7359be35c73e5e5ded6dadd644b0dadf1ee9b Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Thu, 10 Mar 2016 14:04:20 +1100 Subject: [PATCH 054/253] General refactoring --- .../java/com/lishid/openinv/commands/SearchEnderCommand.java | 2 +- src/main/java/com/lishid/openinv/commands/SearchInvCommand.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java b/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java index 778a762..aa30025 100644 --- a/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java @@ -42,7 +42,7 @@ public class SearchEnderCommand implements CommandExecutor { } if (material == null) { - sender.sendMessage(ChatColor.RED + "Unknown item"); + sender.sendMessage(ChatColor.RED + "Unknown item."); return false; } diff --git a/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java b/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java index b7eb5df..481b635 100644 --- a/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java @@ -64,7 +64,7 @@ public class SearchInvCommand implements CommandExecutor { } if (material == null) { - sender.sendMessage(ChatColor.RED + "Unknown item"); + sender.sendMessage(ChatColor.RED + "Unknown item."); return false; } -- 2.49.1 From c7f38adb3f19bf8e18627d59c53f1bb99f02bf4d Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Tue, 12 Apr 2016 14:25:09 +1000 Subject: [PATCH 055/253] Implement cbarber's player data glitch and online/offline event changes --- pom.xml | 4 ++-- .../openinv/commands/OpenInvCommand.java | 1 + .../openinv/internal/SpecialEnderChest.java | 2 +- .../internal/SpecialPlayerInventory.java | 7 ++++--- .../listeners/OpenInvPlayerListener.java | 21 ++++++++++++++----- 5 files changed, 24 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index bc36ee3..183edbe 100644 --- a/pom.xml +++ b/pom.xml @@ -23,14 +23,14 @@ org.bukkit bukkit - 1.9-R0.1-SNAPSHOT + 1.9.2-R0.1-SNAPSHOT provided org.bukkit craftbukkit - 1.9-R0.1-SNAPSHOT + 1.9.2-R0.1-SNAPSHOT provided diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java index ce7e8ba..66effa6 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java @@ -106,6 +106,7 @@ public class OpenInvCommand implements CommandExecutor { if (player == null) { return; } + openInventory(player, target); } }); diff --git a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java index f8b74af..f2adfde 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java @@ -51,7 +51,6 @@ public class SpecialEnderChest extends InventorySubcontainer { private void saveOnExit() { if (transaction.isEmpty() && !playerOnline) { owner.saveData(); - OpenInv.enderChests.remove(owner.getUniqueId()); } } @@ -82,6 +81,7 @@ public class SpecialEnderChest extends InventorySubcontainer { public void onClose(CraftHumanEntity who) { super.onClose(who); saveOnExit(); + OpenInv.enderChests.remove(owner.getUniqueId()); } @Override diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index 18adb68..b0994ad 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -35,15 +35,14 @@ public class SpecialPlayerInventory extends PlayerInventory { private final CraftInventory inventory = new CraftInventory(this); private final ItemStack[] extra = new ItemStack[4]; - private final ItemStack[][] arrays; private final CraftPlayer owner; + private ItemStack[][] arrays; private boolean playerOnline; public SpecialPlayerInventory(Player p, boolean online) { super(((CraftPlayer) p).getHandle()); this.owner = (CraftPlayer) p; reflectContents(getClass().getSuperclass(), player.inventory, this); - this.arrays = new ItemStack[][] { this.items, this.armor, this.extraSlots, this.extra }; this.playerOnline = online; OpenInv.inventories.put(owner.getUniqueId(), this); } @@ -70,6 +69,8 @@ public class SpecialPlayerInventory extends PlayerInventory { } catch (IllegalAccessException e) { e.printStackTrace(); } + + arrays = new ItemStack[][] { this.items, this.armor, this.extraSlots, this.extra }; } public Inventory getBukkitInventory() { @@ -79,7 +80,6 @@ public class SpecialPlayerInventory extends PlayerInventory { private void saveOnExit() { if (transaction.isEmpty() && !playerOnline) { owner.saveData(); - OpenInv.inventories.remove(owner.getUniqueId()); } } @@ -107,6 +107,7 @@ public class SpecialPlayerInventory extends PlayerInventory { public void onClose(CraftHumanEntity who) { super.onClose(who); this.saveOnExit(); + OpenInv.inventories.remove(owner.getUniqueId()); } @Override diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java index 9c2f9e4..2eb3ff1 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java @@ -30,6 +30,7 @@ import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.scheduler.BukkitRunnable; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; @@ -62,18 +63,28 @@ public class OpenInvPlayerListener implements Listener { } } - @EventHandler(priority = EventPriority.MONITOR) + @EventHandler public void onPlayerQuit(PlayerQuitEvent event) { Player player = event.getPlayer(); - SpecialPlayerInventory inventory = OpenInv.inventories.get(player.getUniqueId()); + final SpecialPlayerInventory inventory = OpenInv.inventories.get(player.getUniqueId()); if (inventory != null) { - inventory.playerOffline(); + new BukkitRunnable() { + @Override + public void run() { + inventory.playerOffline(); + } + }.runTaskLater(plugin, 1); } - SpecialEnderChest enderChest = OpenInv.enderChests.get(player.getUniqueId()); + final SpecialEnderChest enderChest = OpenInv.enderChests.get(player.getUniqueId()); if (enderChest != null) { - enderChest.playerOffline(); + new BukkitRunnable() { + @Override + public void run() { + enderChest.playerOffline(); + } + }.runTaskLater(plugin, 1); } } -- 2.49.1 From 4811e53d127c8954cd753179356a06d4b7d981ae Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Tue, 12 Apr 2016 14:33:44 +1000 Subject: [PATCH 056/253] General refactoring --- src/main/java/com/lishid/openinv/OpenInv.java | 4 ++-- .../lishid/openinv/listeners/OpenInvPlayerListener.java | 9 ++------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index 162ac72..198faf0 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -48,12 +48,12 @@ public class OpenInv extends JavaPlugin { public static final Map inventories = new HashMap(); public static final Map enderChests = new HashMap(); + private Configuration configuration; + private PlayerDataManager playerLoader; private InventoryAccess inventoryAccess; private AnySilentChest anySilentChest; - private Configuration configuration; - @Override public void onEnable() { // Save the default config.yml if it doesn't already exist diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java index 2eb3ff1..f3eca18 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java @@ -77,14 +77,9 @@ public class OpenInvPlayerListener implements Listener { }.runTaskLater(plugin, 1); } - final SpecialEnderChest enderChest = OpenInv.enderChests.get(player.getUniqueId()); + SpecialEnderChest enderChest = OpenInv.enderChests.get(player.getUniqueId()); if (enderChest != null) { - new BukkitRunnable() { - @Override - public void run() { - enderChest.playerOffline(); - } - }.runTaskLater(plugin, 1); + enderChest.playerOffline(); } } -- 2.49.1 From 90ea07308919616e9a5920dd146baec070da9bdd Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Tue, 12 Apr 2016 14:34:46 +1000 Subject: [PATCH 057/253] General refactoring --- .../lishid/openinv/listeners/OpenInvPlayerListener.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java index f3eca18..2eb3ff1 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java @@ -77,9 +77,14 @@ public class OpenInvPlayerListener implements Listener { }.runTaskLater(plugin, 1); } - SpecialEnderChest enderChest = OpenInv.enderChests.get(player.getUniqueId()); + final SpecialEnderChest enderChest = OpenInv.enderChests.get(player.getUniqueId()); if (enderChest != null) { - enderChest.playerOffline(); + new BukkitRunnable() { + @Override + public void run() { + enderChest.playerOffline(); + } + }.runTaskLater(plugin, 1); } } -- 2.49.1 From ba9396ad5ca39b27d5e5b883f1d7ffa144394198 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Wed, 4 May 2016 14:38:10 +1000 Subject: [PATCH 058/253] Implement Jikoo's data duplication glitch fix --- src/main/java/com/lishid/openinv/OpenInv.java | 60 ++++++++++++++++++- .../openinv/commands/OpenEnderCommand.java | 14 ++--- .../openinv/commands/OpenInvCommand.java | 12 ++-- .../openinv/internal/InventoryAccess.java | 4 +- .../internal/SilentContainerChest.java | 38 ------------ .../openinv/internal/SpecialEnderChest.java | 27 ++++++--- .../internal/SpecialPlayerInventory.java | 43 +++++++------ .../listeners/OpenInvPlayerListener.java | 53 ++++++++-------- 8 files changed, 137 insertions(+), 114 deletions(-) delete mode 100644 src/main/java/com/lishid/openinv/internal/SilentContainerChest.java diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index 198faf0..c7fa0fc 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -45,8 +45,8 @@ import com.lishid.openinv.listeners.OpenInvPlayerListener; public class OpenInv extends JavaPlugin { - public static final Map inventories = new HashMap(); - public static final Map enderChests = new HashMap(); + private final Map inventories = new HashMap(); + private final Map enderChests = new HashMap(); private Configuration configuration; @@ -120,6 +120,62 @@ public class OpenInv extends JavaPlugin { return anySilentChest; } + /** + * Returns a player's SpecialPlayerInventory. + * + * @param player the player to get the SpecialPlayerInventory of + * @param createIfNull whether or not to create it if it doesn't exist + * @return the player's SpecialPlayerInventory or null + */ + public SpecialPlayerInventory getPlayerInventory(Player player, boolean createIfNull) { + SpecialPlayerInventory inventory = inventories.get(player.getUniqueId()); + if (inventory == null && createIfNull) { + inventory = new SpecialPlayerInventory(player, player.isOnline()); + inventories.put(player.getUniqueId(), inventory); + } + + return inventory; + } + + /** + * Returns a player's SpecialEnderChest. + * + * @param player the player to get the SpecialEnderChest of + * @param createIfNull whether or not to create it if it doesn't exist + * @return the player's SpecialEnderChest or null + */ + public SpecialEnderChest getPlayerEnderChest(Player player, boolean createIfNull) { + SpecialEnderChest enderChest = enderChests.get(player.getUniqueId()); + if (enderChest == null && createIfNull) { + enderChest = new SpecialEnderChest(player, player.isOnline()); + enderChests.put(player.getUniqueId(), enderChest); + } + + return enderChest; + } + + /** + * Removes a player's loaded inventory if it exists. + * + * @param player the player to remove the loaded inventory of + */ + public void removeLoadedInventory(Player player) { + if (inventories.containsKey(player.getUniqueId())) { + inventories.remove(player.getUniqueId()); + } + } + + /** + * Removes a player's loaded ender chest if it exists. + * + * @param player the player to remove the loaded ender chest of + */ + public void removeLoadedEnderChest(Player player) { + if (enderChests.containsKey(player.getUniqueId())) { + enderChests.remove(player.getUniqueId()); + } + } + /** * Logs a message to console. * diff --git a/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java b/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java index ab4320d..6ff14b9 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java @@ -128,17 +128,18 @@ public class OpenEnderCommand implements CommandExecutor { } private void openInventory(Player player, Player target) { + // Null target check if (target == null) { player.sendMessage(ChatColor.RED + "Player not found!"); return; } + // Permissions checks if (target != player && !OpenInv.hasPermission(player, Permissions.PERM_ENDERCHEST_ALL)) { player.sendMessage(ChatColor.RED + "You do not have permission to access other player's ender chests."); return; } - // Permissions checks if (!OpenInv.hasPermission(player, Permissions.PERM_OVERRIDE) && OpenInv.hasPermission(target, Permissions.PERM_EXEMPT)) { player.sendMessage(ChatColor.RED + target.getDisplayName() + "'s ender chest is protected!"); return; @@ -153,13 +154,8 @@ public class OpenEnderCommand implements CommandExecutor { // Record the target openEnderHistory.put(player.getUniqueId(), target.getUniqueId()); - // Create the inventory - SpecialEnderChest chest = OpenInv.enderChests.get(target.getUniqueId()); - if (chest == null) { - chest = new SpecialEnderChest(target, target.isOnline()); - } - - // Open the inventory - player.openInventory(chest.getBukkitInventory()); + // Get the inventory and open it + SpecialEnderChest enderChest = plugin.getPlayerEnderChest(target, true); + player.openInventory(enderChest.getBukkitInventory()); } } diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java index 66effa6..cae130e 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java @@ -123,6 +123,7 @@ public class OpenInvCommand implements CommandExecutor { } private void openInventory(Player player, Player target) { + // Null target check if (target == null) { player.sendMessage(ChatColor.RED + "Player not found!"); return; @@ -149,13 +150,8 @@ public class OpenInvCommand implements CommandExecutor { // Record the target openInvHistory.put(player.getUniqueId(), target.getUniqueId()); - // Create the inventory - SpecialPlayerInventory inv = OpenInv.inventories.get(target.getUniqueId()); - if (inv == null) { - inv = new SpecialPlayerInventory(target, target.isOnline()); - } - - // Open the inventory - player.openInventory(inv.getBukkitInventory()); + // Get the inventory and open it + SpecialPlayerInventory inventory = plugin.getPlayerInventory(target, true); + player.openInventory(inventory.getBukkitInventory()); } } diff --git a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java index 9aacb51..29738c7 100644 --- a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java +++ b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java @@ -42,9 +42,7 @@ public class InventoryAccess { if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { return false; } - } - - else if (inv instanceof SpecialEnderChest) { + } else if (inv instanceof SpecialEnderChest) { if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { return false; } diff --git a/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java deleted file mode 100644 index 7c9c5c3..0000000 --- a/src/main/java/com/lishid/openinv/internal/SilentContainerChest.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2011-2016 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; - -import net.minecraft.server.v1_9_R1.ContainerChest; -import net.minecraft.server.v1_9_R1.EntityHuman; -import net.minecraft.server.v1_9_R1.IInventory; - -public class SilentContainerChest extends ContainerChest { - - public IInventory inv; - - public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman human) { - super(i1, i2, human); - inv = i2; - // Close signal - inv.closeContainer(human); - } - - @Override - public void b(EntityHuman paramEntityHuman) { - // Don't send close signal twice, might screw up - } -} diff --git a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java index f2adfde..15546b6 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java @@ -32,7 +32,7 @@ public class SpecialEnderChest extends InventorySubcontainer { private final CraftInventory inventory = new CraftInventory(this); private final InventoryEnderChest enderChest; - private final CraftPlayer owner; + private CraftPlayer owner; private boolean playerOnline; public SpecialEnderChest(Player p, boolean online) { @@ -45,7 +45,6 @@ public class SpecialEnderChest extends InventorySubcontainer { this.enderChest = enderChest; this.items = this.enderChest.getContents(); this.playerOnline = online; - OpenInv.enderChests.put(owner.getUniqueId(), this); } private void saveOnExit() { @@ -62,26 +61,38 @@ public class SpecialEnderChest extends InventorySubcontainer { return inventory; } + public boolean inventoryRemovalCheck(boolean save) { + boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { + owner.saveData(); + } + + return offline; + } + public void playerOnline(Player p) { if (!playerOnline) { + owner = (CraftPlayer) p; + linkInventory(((CraftPlayer) p).getHandle().getEnderChest()); + playerOnline = true; + + /* linkInventory(((CraftPlayer) p).getHandle().getEnderChest()); p.saveData(); playerOnline = true; + */ } } - public void playerOffline() { + public boolean playerOffline() { playerOnline = false; - owner.loadData(); - linkInventory(owner.getHandle().getEnderChest()); - saveOnExit(); + return inventoryRemovalCheck(false); } @Override public void onClose(CraftHumanEntity who) { super.onClose(who); - saveOnExit(); - OpenInv.enderChests.remove(owner.getUniqueId()); + inventoryRemovalCheck(true); } @Override diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index b0994ad..f00acae 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -35,16 +35,15 @@ public class SpecialPlayerInventory extends PlayerInventory { private final CraftInventory inventory = new CraftInventory(this); private final ItemStack[] extra = new ItemStack[4]; - private final CraftPlayer owner; + private CraftPlayer owner; private ItemStack[][] arrays; private boolean playerOnline; public SpecialPlayerInventory(Player p, boolean online) { super(((CraftPlayer) p).getHandle()); this.owner = (CraftPlayer) p; - reflectContents(getClass().getSuperclass(), player.inventory, this); this.playerOnline = online; - OpenInv.inventories.put(owner.getUniqueId(), this); + reflectContents(getClass().getSuperclass(), player.inventory, this); } private void reflectContents(Class clazz, PlayerInventory src, PlayerInventory dest) { @@ -73,41 +72,41 @@ public class SpecialPlayerInventory extends PlayerInventory { arrays = new ItemStack[][] { this.items, this.armor, this.extraSlots, this.extra }; } - public Inventory getBukkitInventory() { - return inventory; - } - - private void saveOnExit() { - if (transaction.isEmpty() && !playerOnline) { - owner.saveData(); - } - } - private void linkInventory(PlayerInventory inventory) { reflectContents(inventory.getClass(), inventory, this); } + public Inventory getBukkitInventory() { + return inventory; + } + + public boolean inventoryRemovalCheck(boolean save) { + boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { + owner.saveData(); + } + + return offline; + } + public void playerOnline(Player player) { if (!playerOnline) { - CraftPlayer p = (CraftPlayer) player; - linkInventory(p.getHandle().inventory); - p.saveData(); + owner = (CraftPlayer) player; + this.player = owner.getHandle(); + linkInventory(owner.getHandle().inventory); playerOnline = true; } } - public void playerOffline() { + public boolean playerOffline() { playerOnline = false; - owner.loadData(); - linkInventory(owner.getHandle().inventory); - saveOnExit(); + return inventoryRemovalCheck(false); } @Override public void onClose(CraftHumanEntity who) { super.onClose(who); - this.saveOnExit(); - OpenInv.inventories.remove(owner.getUniqueId()); + inventoryRemovalCheck(true); } @Override diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java index 2eb3ff1..df7d2b7 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java @@ -48,43 +48,48 @@ public class OpenInvPlayerListener implements Listener { configuration = plugin.getConfiguration(); } - @EventHandler(priority = EventPriority.LOWEST) + @SuppressWarnings("deprecation") + @EventHandler(priority = EventPriority.MONITOR) public void onPlayerJoin(PlayerJoinEvent event) { - Player player = event.getPlayer(); + final Player player = event.getPlayer(); - SpecialPlayerInventory inventory = OpenInv.inventories.get(player.getUniqueId()); - if (inventory != null) { - inventory.playerOnline(event.getPlayer()); - } + new BukkitRunnable() { + @Override + public void run() { + if (!player.isOnline()) { + return; + } - SpecialEnderChest enderChest = OpenInv.enderChests.get(player.getUniqueId()); - if (enderChest != null) { - enderChest.playerOnline(event.getPlayer()); - } + SpecialPlayerInventory inventory = plugin.getPlayerInventory(player, false); + if (inventory != null) { + inventory.playerOnline(player); + player.updateInventory(); + } + + SpecialEnderChest chest = plugin.getPlayerEnderChest(player, false); + if (chest != null) { + chest.playerOnline(player); + } + } + }.runTask(plugin); } @EventHandler public void onPlayerQuit(PlayerQuitEvent event) { Player player = event.getPlayer(); - final SpecialPlayerInventory inventory = OpenInv.inventories.get(player.getUniqueId()); + SpecialPlayerInventory inventory = plugin.getPlayerInventory(player, false); if (inventory != null) { - new BukkitRunnable() { - @Override - public void run() { - inventory.playerOffline(); - } - }.runTaskLater(plugin, 1); + if (inventory.playerOffline()) { + plugin.removeLoadedInventory(event.getPlayer()); + } } - final SpecialEnderChest enderChest = OpenInv.enderChests.get(player.getUniqueId()); + SpecialEnderChest enderChest = plugin.getPlayerEnderChest(player, false); if (enderChest != null) { - new BukkitRunnable() { - @Override - public void run() { - enderChest.playerOffline(); - } - }.runTaskLater(plugin, 1); + if (enderChest.playerOffline()) { + plugin.removeLoadedEnderChest(event.getPlayer()); + } } } -- 2.49.1 From 9245b4cc272818370043d0bad602676f849084fa Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Wed, 4 May 2016 23:18:20 +1000 Subject: [PATCH 059/253] Implement Jikoo's data duplication glitch fix --- .../com/lishid/openinv/internal/SpecialEnderChest.java | 8 -------- .../lishid/openinv/internal/SpecialPlayerInventory.java | 2 -- 2 files changed, 10 deletions(-) diff --git a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java index 15546b6..2c96c10 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java @@ -23,8 +23,6 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import com.lishid.openinv.OpenInv; - import net.minecraft.server.v1_9_R1.InventoryEnderChest; import net.minecraft.server.v1_9_R1.InventorySubcontainer; @@ -75,12 +73,6 @@ public class SpecialEnderChest extends InventorySubcontainer { owner = (CraftPlayer) p; linkInventory(((CraftPlayer) p).getHandle().getEnderChest()); playerOnline = true; - - /* - linkInventory(((CraftPlayer) p).getHandle().getEnderChest()); - p.saveData(); - playerOnline = true; - */ } } diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index f00acae..532f2df 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -24,8 +24,6 @@ import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -import com.lishid.openinv.OpenInv; - import net.minecraft.server.v1_9_R1.ContainerUtil; import net.minecraft.server.v1_9_R1.EntityHuman; import net.minecraft.server.v1_9_R1.ItemStack; -- 2.49.1 From 1d622b653d9717a884d8b75df34d5f064a78deee Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Thu, 5 May 2016 11:32:01 +1000 Subject: [PATCH 060/253] Implement Jikoo's data duplication glitch fix --- .../com/lishid/openinv/listeners/OpenInvPlayerListener.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java index df7d2b7..22949a9 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java +++ b/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java @@ -66,9 +66,9 @@ public class OpenInvPlayerListener implements Listener { player.updateInventory(); } - SpecialEnderChest chest = plugin.getPlayerEnderChest(player, false); - if (chest != null) { - chest.playerOnline(player); + SpecialEnderChest enderChest = plugin.getPlayerEnderChest(player, false); + if (enderChest != null) { + enderChest.playerOnline(player); } } }.runTask(plugin); -- 2.49.1 From d16cca9847fca7439ff15c3a065a7a9c1b3f8d30 Mon Sep 17 00:00:00 2001 From: Tim-Schneider Date: Tue, 10 May 2016 21:50:34 +0200 Subject: [PATCH 061/253] fix for minecraft 1.9.4 --- pom.xml | 4 +-- .../openinv/internal/AnySilentChest.java | 30 +++++++++---------- .../openinv/internal/EnumDirectionList.java | 4 +-- .../openinv/internal/InventoryAccess.java | 4 +-- .../openinv/internal/PlayerDataManager.java | 8 ++--- .../openinv/internal/SilentInventory.java | 18 +++++------ .../openinv/internal/SpecialEnderChest.java | 10 +++---- .../internal/SpecialPlayerInventory.java | 14 ++++----- 8 files changed, 46 insertions(+), 46 deletions(-) diff --git a/pom.xml b/pom.xml index 183edbe..c42cd36 100644 --- a/pom.xml +++ b/pom.xml @@ -23,14 +23,14 @@ org.bukkit bukkit - 1.9.2-R0.1-SNAPSHOT + 1.9.4-R0.1-SNAPSHOT provided org.bukkit craftbukkit - 1.9.2-R0.1-SNAPSHOT + 1.9.4-R0.1-SNAPSHOT provided diff --git a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java index ae43489..f25903f 100644 --- a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java +++ b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java @@ -18,25 +18,25 @@ package com.lishid.openinv.internal; import java.util.Iterator; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; -import net.minecraft.server.v1_9_R1.AxisAlignedBB; -import net.minecraft.server.v1_9_R1.Block; -import net.minecraft.server.v1_9_R1.BlockChest; -import net.minecraft.server.v1_9_R1.BlockChest.Type; -import net.minecraft.server.v1_9_R1.BlockPosition; -import net.minecraft.server.v1_9_R1.Entity; -import net.minecraft.server.v1_9_R1.EntityOcelot; -import net.minecraft.server.v1_9_R1.EntityPlayer; -import net.minecraft.server.v1_9_R1.EnumDirection; -import net.minecraft.server.v1_9_R1.ITileInventory; -import net.minecraft.server.v1_9_R1.InventoryLargeChest; -import net.minecraft.server.v1_9_R1.TileEntity; -import net.minecraft.server.v1_9_R1.TileEntityChest; -import net.minecraft.server.v1_9_R1.World; +import net.minecraft.server.v1_9_R2.AxisAlignedBB; +import net.minecraft.server.v1_9_R2.Block; +import net.minecraft.server.v1_9_R2.BlockChest; +import net.minecraft.server.v1_9_R2.BlockChest.Type; +import net.minecraft.server.v1_9_R2.BlockPosition; +import net.minecraft.server.v1_9_R2.Entity; +import net.minecraft.server.v1_9_R2.EntityOcelot; +import net.minecraft.server.v1_9_R2.EntityPlayer; +import net.minecraft.server.v1_9_R2.EnumDirection; +import net.minecraft.server.v1_9_R2.ITileInventory; +import net.minecraft.server.v1_9_R2.InventoryLargeChest; +import net.minecraft.server.v1_9_R2.TileEntity; +import net.minecraft.server.v1_9_R2.TileEntityChest; +import net.minecraft.server.v1_9_R2.World; public class AnySilentChest { diff --git a/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java b/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java index 2cd77f6..cd8a8c2 100644 --- a/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java +++ b/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java @@ -4,8 +4,8 @@ import java.util.Iterator; import com.google.common.collect.Iterators; -import net.minecraft.server.v1_9_R1.EnumDirection; -import net.minecraft.server.v1_9_R1.EnumDirection.EnumDirectionLimit; +import net.minecraft.server.v1_9_R2.EnumDirection; +import net.minecraft.server.v1_9_R2.EnumDirection.EnumDirectionLimit; public enum EnumDirectionList implements Iterable { diff --git a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java index 29738c7..5c388f1 100644 --- a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java +++ b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java @@ -18,14 +18,14 @@ package com.lishid.openinv.internal; import java.lang.reflect.Field; -import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; +import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.Inventory; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; -import net.minecraft.server.v1_9_R1.IInventory; +import net.minecraft.server.v1_9_R2.IInventory; public class InventoryAccess { diff --git a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java index 87bab09..ac600fb 100644 --- a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java +++ b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java @@ -20,15 +20,15 @@ import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; -import org.bukkit.craftbukkit.v1_9_R1.CraftServer; +import org.bukkit.craftbukkit.v1_9_R2.CraftServer; import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.mojang.authlib.GameProfile; -import net.minecraft.server.v1_9_R1.EntityPlayer; -import net.minecraft.server.v1_9_R1.MinecraftServer; -import net.minecraft.server.v1_9_R1.PlayerInteractManager; +import net.minecraft.server.v1_9_R2.EntityPlayer; +import net.minecraft.server.v1_9_R2.MinecraftServer; +import net.minecraft.server.v1_9_R2.PlayerInteractManager; public class PlayerDataManager { diff --git a/src/main/java/com/lishid/openinv/internal/SilentInventory.java b/src/main/java/com/lishid/openinv/internal/SilentInventory.java index f2b246e..509795b 100644 --- a/src/main/java/com/lishid/openinv/internal/SilentInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SilentInventory.java @@ -3,18 +3,18 @@ package com.lishid.openinv.internal; import java.util.List; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftHumanEntity; import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.InventoryHolder; -import net.minecraft.server.v1_9_R1.ChestLock; -import net.minecraft.server.v1_9_R1.Container; -import net.minecraft.server.v1_9_R1.ContainerChest; -import net.minecraft.server.v1_9_R1.EntityHuman; -import net.minecraft.server.v1_9_R1.IChatBaseComponent; -import net.minecraft.server.v1_9_R1.ITileInventory; -import net.minecraft.server.v1_9_R1.ItemStack; -import net.minecraft.server.v1_9_R1.PlayerInventory; +import net.minecraft.server.v1_9_R2.ChestLock; +import net.minecraft.server.v1_9_R2.Container; +import net.minecraft.server.v1_9_R2.ContainerChest; +import net.minecraft.server.v1_9_R2.EntityHuman; +import net.minecraft.server.v1_9_R2.IChatBaseComponent; +import net.minecraft.server.v1_9_R2.ITileInventory; +import net.minecraft.server.v1_9_R2.ItemStack; +import net.minecraft.server.v1_9_R2.PlayerInventory; public class SilentInventory implements ITileInventory { diff --git a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java index 2c96c10..5ce95a8 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java @@ -16,15 +16,15 @@ package com.lishid.openinv.internal; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import net.minecraft.server.v1_9_R1.InventoryEnderChest; -import net.minecraft.server.v1_9_R1.InventorySubcontainer; +import net.minecraft.server.v1_9_R2.InventoryEnderChest; +import net.minecraft.server.v1_9_R2.InventorySubcontainer; public class SpecialEnderChest extends InventorySubcontainer { diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index 532f2df..8c86ba1 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -18,16 +18,16 @@ package com.lishid.openinv.internal; import java.lang.reflect.Field; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -import net.minecraft.server.v1_9_R1.ContainerUtil; -import net.minecraft.server.v1_9_R1.EntityHuman; -import net.minecraft.server.v1_9_R1.ItemStack; -import net.minecraft.server.v1_9_R1.PlayerInventory; +import net.minecraft.server.v1_9_R2.ContainerUtil; +import net.minecraft.server.v1_9_R2.EntityHuman; +import net.minecraft.server.v1_9_R2.ItemStack; +import net.minecraft.server.v1_9_R2.PlayerInventory; public class SpecialPlayerInventory extends PlayerInventory { -- 2.49.1 From 2fc439b3064abff99a8dbdbed1fa6a476fe84bec Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Fri, 13 May 2016 00:20:24 +1000 Subject: [PATCH 062/253] Update to 1.9.4 --- pom.xml | 4 +-- .../openinv/internal/AnySilentChest.java | 30 +++++++++---------- .../openinv/internal/EnumDirectionList.java | 4 +-- .../openinv/internal/InventoryAccess.java | 4 +-- .../openinv/internal/PlayerDataManager.java | 8 ++--- .../openinv/internal/SilentInventory.java | 18 +++++------ .../openinv/internal/SpecialEnderChest.java | 10 +++---- .../internal/SpecialPlayerInventory.java | 14 ++++----- 8 files changed, 46 insertions(+), 46 deletions(-) diff --git a/pom.xml b/pom.xml index 183edbe..c42cd36 100644 --- a/pom.xml +++ b/pom.xml @@ -23,14 +23,14 @@ org.bukkit bukkit - 1.9.2-R0.1-SNAPSHOT + 1.9.4-R0.1-SNAPSHOT provided org.bukkit craftbukkit - 1.9.2-R0.1-SNAPSHOT + 1.9.4-R0.1-SNAPSHOT provided diff --git a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java index ae43489..f25903f 100644 --- a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java +++ b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java @@ -18,25 +18,25 @@ package com.lishid.openinv.internal; import java.util.Iterator; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; -import net.minecraft.server.v1_9_R1.AxisAlignedBB; -import net.minecraft.server.v1_9_R1.Block; -import net.minecraft.server.v1_9_R1.BlockChest; -import net.minecraft.server.v1_9_R1.BlockChest.Type; -import net.minecraft.server.v1_9_R1.BlockPosition; -import net.minecraft.server.v1_9_R1.Entity; -import net.minecraft.server.v1_9_R1.EntityOcelot; -import net.minecraft.server.v1_9_R1.EntityPlayer; -import net.minecraft.server.v1_9_R1.EnumDirection; -import net.minecraft.server.v1_9_R1.ITileInventory; -import net.minecraft.server.v1_9_R1.InventoryLargeChest; -import net.minecraft.server.v1_9_R1.TileEntity; -import net.minecraft.server.v1_9_R1.TileEntityChest; -import net.minecraft.server.v1_9_R1.World; +import net.minecraft.server.v1_9_R2.AxisAlignedBB; +import net.minecraft.server.v1_9_R2.Block; +import net.minecraft.server.v1_9_R2.BlockChest; +import net.minecraft.server.v1_9_R2.BlockChest.Type; +import net.minecraft.server.v1_9_R2.BlockPosition; +import net.minecraft.server.v1_9_R2.Entity; +import net.minecraft.server.v1_9_R2.EntityOcelot; +import net.minecraft.server.v1_9_R2.EntityPlayer; +import net.minecraft.server.v1_9_R2.EnumDirection; +import net.minecraft.server.v1_9_R2.ITileInventory; +import net.minecraft.server.v1_9_R2.InventoryLargeChest; +import net.minecraft.server.v1_9_R2.TileEntity; +import net.minecraft.server.v1_9_R2.TileEntityChest; +import net.minecraft.server.v1_9_R2.World; public class AnySilentChest { diff --git a/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java b/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java index 2cd77f6..cd8a8c2 100644 --- a/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java +++ b/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java @@ -4,8 +4,8 @@ import java.util.Iterator; import com.google.common.collect.Iterators; -import net.minecraft.server.v1_9_R1.EnumDirection; -import net.minecraft.server.v1_9_R1.EnumDirection.EnumDirectionLimit; +import net.minecraft.server.v1_9_R2.EnumDirection; +import net.minecraft.server.v1_9_R2.EnumDirection.EnumDirectionLimit; public enum EnumDirectionList implements Iterable { diff --git a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java index 29738c7..5c388f1 100644 --- a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java +++ b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java @@ -18,14 +18,14 @@ package com.lishid.openinv.internal; import java.lang.reflect.Field; -import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; +import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.Inventory; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; -import net.minecraft.server.v1_9_R1.IInventory; +import net.minecraft.server.v1_9_R2.IInventory; public class InventoryAccess { diff --git a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java index 87bab09..ac600fb 100644 --- a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java +++ b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java @@ -20,15 +20,15 @@ import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; -import org.bukkit.craftbukkit.v1_9_R1.CraftServer; +import org.bukkit.craftbukkit.v1_9_R2.CraftServer; import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.mojang.authlib.GameProfile; -import net.minecraft.server.v1_9_R1.EntityPlayer; -import net.minecraft.server.v1_9_R1.MinecraftServer; -import net.minecraft.server.v1_9_R1.PlayerInteractManager; +import net.minecraft.server.v1_9_R2.EntityPlayer; +import net.minecraft.server.v1_9_R2.MinecraftServer; +import net.minecraft.server.v1_9_R2.PlayerInteractManager; public class PlayerDataManager { diff --git a/src/main/java/com/lishid/openinv/internal/SilentInventory.java b/src/main/java/com/lishid/openinv/internal/SilentInventory.java index f2b246e..509795b 100644 --- a/src/main/java/com/lishid/openinv/internal/SilentInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SilentInventory.java @@ -3,18 +3,18 @@ package com.lishid.openinv.internal; import java.util.List; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftHumanEntity; import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.InventoryHolder; -import net.minecraft.server.v1_9_R1.ChestLock; -import net.minecraft.server.v1_9_R1.Container; -import net.minecraft.server.v1_9_R1.ContainerChest; -import net.minecraft.server.v1_9_R1.EntityHuman; -import net.minecraft.server.v1_9_R1.IChatBaseComponent; -import net.minecraft.server.v1_9_R1.ITileInventory; -import net.minecraft.server.v1_9_R1.ItemStack; -import net.minecraft.server.v1_9_R1.PlayerInventory; +import net.minecraft.server.v1_9_R2.ChestLock; +import net.minecraft.server.v1_9_R2.Container; +import net.minecraft.server.v1_9_R2.ContainerChest; +import net.minecraft.server.v1_9_R2.EntityHuman; +import net.minecraft.server.v1_9_R2.IChatBaseComponent; +import net.minecraft.server.v1_9_R2.ITileInventory; +import net.minecraft.server.v1_9_R2.ItemStack; +import net.minecraft.server.v1_9_R2.PlayerInventory; public class SilentInventory implements ITileInventory { diff --git a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java index 2c96c10..5ce95a8 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java @@ -16,15 +16,15 @@ package com.lishid.openinv.internal; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import net.minecraft.server.v1_9_R1.InventoryEnderChest; -import net.minecraft.server.v1_9_R1.InventorySubcontainer; +import net.minecraft.server.v1_9_R2.InventoryEnderChest; +import net.minecraft.server.v1_9_R2.InventorySubcontainer; public class SpecialEnderChest extends InventorySubcontainer { diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index 532f2df..8c86ba1 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -18,16 +18,16 @@ package com.lishid.openinv.internal; import java.lang.reflect.Field; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -import net.minecraft.server.v1_9_R1.ContainerUtil; -import net.minecraft.server.v1_9_R1.EntityHuman; -import net.minecraft.server.v1_9_R1.ItemStack; -import net.minecraft.server.v1_9_R1.PlayerInventory; +import net.minecraft.server.v1_9_R2.ContainerUtil; +import net.minecraft.server.v1_9_R2.EntityHuman; +import net.minecraft.server.v1_9_R2.ItemStack; +import net.minecraft.server.v1_9_R2.PlayerInventory; public class SpecialPlayerInventory extends PlayerInventory { -- 2.49.1 From d9c1b00b506f0d2548df3a9dc51f7c7d21c878ed Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Fri, 13 May 2016 00:21:37 +1000 Subject: [PATCH 063/253] Update to 1.9.4 --- pom.xml | 2 +- src/main/resources/plugin.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index c42cd36..11fd144 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.lishid openinv jar - 2.3.7 + 2.3.8 OpenInv http://dev.bukkit.org/bukkit-plugins/openinv/ diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index d1be4db..4860eb4 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.3.7 +version: 2.3.8 author: lishid authors: [ShadowRanger] description: > -- 2.49.1 From c3a8bc9486b388f6a690eb83f374c98839a90a79 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Thu, 9 Jun 2016 22:41:21 +1000 Subject: [PATCH 064/253] Update to 1.10 --- pom.xml | 6 +- .../com/lishid/openinv/ConfigUpdater.java | 4 +- src/main/java/com/lishid/openinv/OpenInv.java | 40 +++---- .../openinv/commands/OpenEnderCommand.java | 6 +- .../openinv/commands/OpenInvCommand.java | 107 ++++++++++++------ .../openinv/internal/AnySilentChest.java | 31 ++--- .../openinv/internal/EnumDirectionList.java | 4 +- .../openinv/internal/InventoryAccess.java | 4 +- .../openinv/internal/PlayerDataManager.java | 8 +- .../openinv/internal/SilentInventory.java | 18 +-- .../openinv/internal/SpecialEnderChest.java | 34 ++++-- .../internal/SpecialPlayerInventory.java | 15 +-- .../utils/{UUIDUtil.java => UUIDUtils.java} | 6 +- src/main/resources/plugin.yml | 2 +- 14 files changed, 174 insertions(+), 111 deletions(-) rename src/main/java/com/lishid/openinv/utils/{UUIDUtil.java => UUIDUtils.java} (95%) diff --git a/pom.xml b/pom.xml index 11fd144..efe52d4 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.lishid openinv jar - 2.3.8 + 2.3.9 OpenInv http://dev.bukkit.org/bukkit-plugins/openinv/ @@ -23,14 +23,14 @@ org.bukkit bukkit - 1.9.4-R0.1-SNAPSHOT + 1.10-R0.1-SNAPSHOT provided org.bukkit craftbukkit - 1.9.4-R0.1-SNAPSHOT + 1.10-R0.1-SNAPSHOT provided diff --git a/src/main/java/com/lishid/openinv/ConfigUpdater.java b/src/main/java/com/lishid/openinv/ConfigUpdater.java index 31a2fd9..cf0772c 100644 --- a/src/main/java/com/lishid/openinv/ConfigUpdater.java +++ b/src/main/java/com/lishid/openinv/ConfigUpdater.java @@ -10,7 +10,7 @@ import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; -import com.lishid.openinv.utils.UUIDUtil; +import com.lishid.openinv.utils.UUIDUtils; public class ConfigUpdater { @@ -136,7 +136,7 @@ public class ConfigUpdater { int converted = 0; for (String playerName : keys) { - UUID uuid = UUIDUtil.getUUIDOf(playerName); + UUID uuid = UUIDUtils.getPlayerUUID(playerName); if (uuid != null) { boolean toggled = section.getBoolean(playerName + ".toggle", false); diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java index c7fa0fc..6b62e35 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/src/main/java/com/lishid/openinv/OpenInv.java @@ -129,6 +129,7 @@ public class OpenInv extends JavaPlugin { */ public SpecialPlayerInventory getPlayerInventory(Player player, boolean createIfNull) { SpecialPlayerInventory inventory = inventories.get(player.getUniqueId()); + if (inventory == null && createIfNull) { inventory = new SpecialPlayerInventory(player, player.isOnline()); inventories.put(player.getUniqueId(), inventory); @@ -146,6 +147,7 @@ public class OpenInv extends JavaPlugin { */ public SpecialEnderChest getPlayerEnderChest(Player player, boolean createIfNull) { SpecialEnderChest enderChest = enderChests.get(player.getUniqueId()); + if (enderChest == null && createIfNull) { enderChest = new SpecialEnderChest(player, player.isOnline()); enderChests.put(player.getUniqueId(), enderChest); @@ -206,33 +208,33 @@ public class OpenInv extends JavaPlugin { } /** - * Outputs OpenInv help information to a player. + * Outputs OpenInv help information to a CommandSender. * - * @param player the player to show help to + * @param sender the CommandSender to show help to */ - public static void showHelp(Player player) { - player.sendMessage(ChatColor.GREEN + "/openinv - Opens a player's inventory."); - player.sendMessage(ChatColor.GREEN + " (aliases: oi, inv, open)"); + public static void showHelp(CommandSender sender) { + sender.sendMessage(ChatColor.GREEN + "/openinv - Opens a player's inventory."); + sender.sendMessage(ChatColor.GREEN + " (aliases: oi, inv, open)"); - player.sendMessage(ChatColor.GREEN + "/openender - Opens a player's ender chest."); - player.sendMessage(ChatColor.GREEN + " (aliases: oe)"); + sender.sendMessage(ChatColor.GREEN + "/openender - Opens a player's ender chest."); + sender.sendMessage(ChatColor.GREEN + " (aliases: oe)"); - player.sendMessage(ChatColor.GREEN + "/searchinv [minAmount] -"); - player.sendMessage(ChatColor.GREEN + " Searches and lists players that have a specific item in their inventory."); - player.sendMessage(ChatColor.GREEN + " (aliases: si)"); + sender.sendMessage(ChatColor.GREEN + "/searchinv [minAmount] -"); + sender.sendMessage(ChatColor.GREEN + " Searches and lists players that have a specific item in their inventory."); + sender.sendMessage(ChatColor.GREEN + " (aliases: si)"); - player.sendMessage(ChatColor.GREEN + "/searchender [minAmount] -"); - player.sendMessage(ChatColor.GREEN + " Searches and lists players that have a specific item in their ender chest."); - player.sendMessage(ChatColor.GREEN + " (aliases: se)"); + sender.sendMessage(ChatColor.GREEN + "/searchender [minAmount] -"); + sender.sendMessage(ChatColor.GREEN + " Searches and lists players that have a specific item in their ender chest."); + sender.sendMessage(ChatColor.GREEN + " (aliases: se)"); - player.sendMessage(ChatColor.GREEN + "/toggleopeninv - Toggles the item openinv function."); - player.sendMessage(ChatColor.GREEN + " (aliases: toi, toggleoi, toggleinv)"); + sender.sendMessage(ChatColor.GREEN + "/toggleopeninv - Toggles the item openinv function."); + sender.sendMessage(ChatColor.GREEN + " (aliases: toi, toggleoi, toggleinv)"); - player.sendMessage(ChatColor.GREEN + "/anychest - Toggles the any chest function."); - player.sendMessage(ChatColor.GREEN + " (aliases: ac)"); + sender.sendMessage(ChatColor.GREEN + "/anychest - Toggles the any chest function."); + sender.sendMessage(ChatColor.GREEN + " (aliases: ac)"); - player.sendMessage(ChatColor.GREEN + "/silentchest - Toggles the silent chest function."); - player.sendMessage(ChatColor.GREEN + " (aliases: sc, silent)"); + sender.sendMessage(ChatColor.GREEN + "/silentchest - Toggles the silent chest function."); + sender.sendMessage(ChatColor.GREEN + " (aliases: sc, silent)"); } /** diff --git a/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java b/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java index 6ff14b9..11727a4 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java @@ -30,7 +30,7 @@ import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; import com.lishid.openinv.internal.SpecialEnderChest; -import com.lishid.openinv.utils.UUIDUtil; +import com.lishid.openinv.utils.UUIDUtils; public class OpenEnderCommand implements CommandExecutor { @@ -55,7 +55,7 @@ public class OpenEnderCommand implements CommandExecutor { } if (args.length > 0 && args[0].equalsIgnoreCase("?")) { - OpenInv.showHelp((Player) sender); + OpenInv.showHelp(sender); return true; } @@ -80,7 +80,7 @@ public class OpenEnderCommand implements CommandExecutor { } } else { - uuid = UUIDUtil.getUUIDOf(args[0]); + uuid = UUIDUtils.getPlayerUUID(args[0]); if (uuid == null) { player.sendMessage(ChatColor.RED + "Player not found!"); return true; diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java index cae130e..29b9094 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java @@ -25,12 +25,15 @@ import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; import com.lishid.openinv.internal.SpecialPlayerInventory; -import com.lishid.openinv.utils.UUIDUtil; +import com.lishid.openinv.utils.UUIDUtils; public class OpenInvCommand implements CommandExecutor { @@ -42,12 +45,9 @@ public class OpenInvCommand implements CommandExecutor { } @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("openinv")) { - if (!(sender instanceof Player)) { - sender.sendMessage(ChatColor.RED + "You can't use this command from the console."); - return true; - } + final boolean isConsole = sender instanceof ConsoleCommandSender; if (!OpenInv.hasPermission(sender, Permissions.PERM_OPENINV)) { sender.sendMessage(ChatColor.RED + "You do not have permission to access player inventories."); @@ -55,34 +55,38 @@ public class OpenInvCommand implements CommandExecutor { } if (args.length > 0 && args[0].equalsIgnoreCase("?")) { - OpenInv.showHelp((Player) sender); + OpenInv.showHelp(sender); return true; } - final Player player = (Player) sender; - - // History management - UUID history = openInvHistory.get(player.getUniqueId()); - if (history == null) { - history = player.getUniqueId(); - openInvHistory.put(player.getUniqueId(), history); - } - + Player player = isConsole ? null : (Player) sender; final UUID uuid; // Read from history if target is not named if (args.length < 1) { + if (isConsole) { + // TODO: Should this output the command's usage instead? + sender.sendMessage(ChatColor.RED + "Player not found!"); + return true; + } + + // History management + UUID history = openInvHistory.get(player.getUniqueId()); + if (history == null) { + history = player.getUniqueId(); + openInvHistory.put(player.getUniqueId(), history); + } + uuid = history; - } - else { - uuid = UUIDUtil.getUUIDOf(args[0]); + } else { + uuid = UUIDUtils.getPlayerUUID(args[0]); if (uuid == null) { - player.sendMessage(ChatColor.RED + "Player not found!"); + sender.sendMessage(ChatColor.RED + "Player not found!"); return true; } } - final UUID playerUUID = player.getUniqueId(); + final UUID playerUUID = isConsole ? null : player.getUniqueId(); Player target = Bukkit.getPlayer(uuid); if (target == null) { @@ -93,27 +97,40 @@ public class OpenInvCommand implements CommandExecutor { // Try loading the player's data asynchronously final Player target = plugin.getPlayerLoader().loadPlayer(uuid); if (target == null) { - player.sendMessage(ChatColor.RED + "Player not found!"); + sender.sendMessage(ChatColor.RED + "Player not found!"); return; } - // Open target's inventory synchronously - Bukkit.getScheduler().runTask(plugin, new Runnable() { - @Override - public void run() { - Player player = Bukkit.getPlayer(playerUUID); - // If sender is no longer online after loading the target, abort! - if (player == null) { - return; + // Open/output target's inventory synchronously + if (isConsole) { + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + outputInventory(sender, target); } + }); + } else { + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + Player player = Bukkit.getPlayer(playerUUID); + // If sender is no longer online after loading the target, abort! + if (player == null) { + return; + } - openInventory(player, target); - } - }); + openInventory(player, target); + } + }); + } } }); } else { - openInventory(player, target); + if (isConsole) { + outputInventory(sender, target); + } else { + openInventory(player, target); + } } return true; @@ -122,6 +139,28 @@ public class OpenInvCommand implements CommandExecutor { return false; } + @SuppressWarnings("deprecation") + private void outputInventory(CommandSender sender, Player target) { + // Get the inventory and open it + SpecialPlayerInventory specialInv = plugin.getPlayerInventory(target, true); + Inventory inventory = specialInv.getBukkitInventory(); + + for (int slot = 0; slot < inventory.getSize(); slot++) { + ItemStack itemStack = inventory.getItem(slot); + + if (itemStack != null) { + String itemID = (itemStack.getDurability() != -1) + ? (itemStack.getTypeId() + ":" + itemStack.getDurability()) + : String.valueOf(itemStack.getTypeId()); + + sender.sendMessage(ChatColor.GREEN + "Slot " + slot + ": " + ChatColor.WHITE + + itemStack.getType().toString() + "(" + itemID + ") x" + itemStack.getAmount()); + } else { + sender.sendMessage(ChatColor.GREEN + "Slot " + slot + ": " + ChatColor.WHITE + "Empty"); + } + } + } + private void openInventory(Player player, Player target) { // Null target check if (target == null) { diff --git a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java index f25903f..f8cb40c 100644 --- a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java +++ b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java @@ -18,25 +18,25 @@ package com.lishid.openinv.internal; import java.util.Iterator; -import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; -import net.minecraft.server.v1_9_R2.AxisAlignedBB; -import net.minecraft.server.v1_9_R2.Block; -import net.minecraft.server.v1_9_R2.BlockChest; -import net.minecraft.server.v1_9_R2.BlockChest.Type; -import net.minecraft.server.v1_9_R2.BlockPosition; -import net.minecraft.server.v1_9_R2.Entity; -import net.minecraft.server.v1_9_R2.EntityOcelot; -import net.minecraft.server.v1_9_R2.EntityPlayer; -import net.minecraft.server.v1_9_R2.EnumDirection; -import net.minecraft.server.v1_9_R2.ITileInventory; -import net.minecraft.server.v1_9_R2.InventoryLargeChest; -import net.minecraft.server.v1_9_R2.TileEntity; -import net.minecraft.server.v1_9_R2.TileEntityChest; -import net.minecraft.server.v1_9_R2.World; +import net.minecraft.server.v1_10_R1.AxisAlignedBB; +import net.minecraft.server.v1_10_R1.Block; +import net.minecraft.server.v1_10_R1.BlockChest; +import net.minecraft.server.v1_10_R1.BlockChest.Type; +import net.minecraft.server.v1_10_R1.BlockPosition; +import net.minecraft.server.v1_10_R1.Entity; +import net.minecraft.server.v1_10_R1.EntityOcelot; +import net.minecraft.server.v1_10_R1.EntityPlayer; +import net.minecraft.server.v1_10_R1.EnumDirection; +import net.minecraft.server.v1_10_R1.ITileInventory; +import net.minecraft.server.v1_10_R1.InventoryLargeChest; +import net.minecraft.server.v1_10_R1.TileEntity; +import net.minecraft.server.v1_10_R1.TileEntityChest; +import net.minecraft.server.v1_10_R1.World; public class AnySilentChest { @@ -78,6 +78,7 @@ public class AnySilentChest { return this.blockOnTop(world, position) || this.ocelotOnTop(world, position); } + @SuppressWarnings("deprecation") private boolean blockOnTop(World world, BlockPosition position) { Block block = world.getType(position.up()).getBlock(); return block.isOccluding(block.getBlockData()); diff --git a/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java b/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java index cd8a8c2..3f0f5d4 100644 --- a/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java +++ b/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java @@ -4,8 +4,8 @@ import java.util.Iterator; import com.google.common.collect.Iterators; -import net.minecraft.server.v1_9_R2.EnumDirection; -import net.minecraft.server.v1_9_R2.EnumDirection.EnumDirectionLimit; +import net.minecraft.server.v1_10_R1.EnumDirection; +import net.minecraft.server.v1_10_R1.EnumDirection.EnumDirectionLimit; public enum EnumDirectionList implements Iterable { diff --git a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java index 5c388f1..d468a14 100644 --- a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java +++ b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java @@ -18,14 +18,14 @@ package com.lishid.openinv.internal; import java.lang.reflect.Field; -import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; +import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.Inventory; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; -import net.minecraft.server.v1_9_R2.IInventory; +import net.minecraft.server.v1_10_R1.IInventory; public class InventoryAccess { diff --git a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java index ac600fb..c576c6b 100644 --- a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java +++ b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java @@ -20,15 +20,15 @@ import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; -import org.bukkit.craftbukkit.v1_9_R2.CraftServer; +import org.bukkit.craftbukkit.v1_10_R1.CraftServer; import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.mojang.authlib.GameProfile; -import net.minecraft.server.v1_9_R2.EntityPlayer; -import net.minecraft.server.v1_9_R2.MinecraftServer; -import net.minecraft.server.v1_9_R2.PlayerInteractManager; +import net.minecraft.server.v1_10_R1.EntityPlayer; +import net.minecraft.server.v1_10_R1.MinecraftServer; +import net.minecraft.server.v1_10_R1.PlayerInteractManager; public class PlayerDataManager { diff --git a/src/main/java/com/lishid/openinv/internal/SilentInventory.java b/src/main/java/com/lishid/openinv/internal/SilentInventory.java index 509795b..fd5ecd4 100644 --- a/src/main/java/com/lishid/openinv/internal/SilentInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SilentInventory.java @@ -3,18 +3,18 @@ package com.lishid.openinv.internal; import java.util.List; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_9_R2.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_10_R1.entity.CraftHumanEntity; import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.InventoryHolder; -import net.minecraft.server.v1_9_R2.ChestLock; -import net.minecraft.server.v1_9_R2.Container; -import net.minecraft.server.v1_9_R2.ContainerChest; -import net.minecraft.server.v1_9_R2.EntityHuman; -import net.minecraft.server.v1_9_R2.IChatBaseComponent; -import net.minecraft.server.v1_9_R2.ITileInventory; -import net.minecraft.server.v1_9_R2.ItemStack; -import net.minecraft.server.v1_9_R2.PlayerInventory; +import net.minecraft.server.v1_10_R1.ChestLock; +import net.minecraft.server.v1_10_R1.Container; +import net.minecraft.server.v1_10_R1.ContainerChest; +import net.minecraft.server.v1_10_R1.EntityHuman; +import net.minecraft.server.v1_10_R1.IChatBaseComponent; +import net.minecraft.server.v1_10_R1.ITileInventory; +import net.minecraft.server.v1_10_R1.ItemStack; +import net.minecraft.server.v1_10_R1.PlayerInventory; public class SilentInventory implements ITileInventory { diff --git a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java index 5ce95a8..0ccc6fe 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java @@ -16,15 +16,18 @@ package com.lishid.openinv.internal; -import org.bukkit.craftbukkit.v1_9_R2.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; +import java.lang.reflect.Field; + +import org.bukkit.craftbukkit.v1_10_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import net.minecraft.server.v1_9_R2.InventoryEnderChest; -import net.minecraft.server.v1_9_R2.InventorySubcontainer; +import net.minecraft.server.v1_10_R1.InventoryEnderChest; +import net.minecraft.server.v1_10_R1.InventorySubcontainer; +import net.minecraft.server.v1_10_R1.ItemStack; public class SpecialEnderChest extends InventorySubcontainer { @@ -41,8 +44,8 @@ public class SpecialEnderChest extends InventorySubcontainer { super(enderChest.getName(), enderChest.hasCustomName(), enderChest.getSize()); this.owner = (CraftPlayer) p; this.enderChest = enderChest; - this.items = this.enderChest.getContents(); this.playerOnline = online; + reflectContents(getClass().getSuperclass(), this, this.enderChest.getContents()); } private void saveOnExit() { @@ -51,8 +54,24 @@ public class SpecialEnderChest extends InventorySubcontainer { } } + private void reflectContents(Class clazz, InventorySubcontainer enderChest, ItemStack[] items) { + try { + Field itemsField = clazz.getDeclaredField("items"); + itemsField.setAccessible(true); + itemsField.set(enderChest, items); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + private void linkInventory(InventoryEnderChest inventory) { - inventory.items = this.items; + reflectContents(inventory.getClass(), inventory, this.items); } public Inventory getBukkitInventory() { @@ -61,6 +80,7 @@ public class SpecialEnderChest extends InventorySubcontainer { public boolean inventoryRemovalCheck(boolean save) { boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { owner.saveData(); } diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index 8c86ba1..605a65b 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -18,16 +18,16 @@ package com.lishid.openinv.internal; import java.lang.reflect.Field; -import org.bukkit.craftbukkit.v1_9_R2.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; +import org.bukkit.craftbukkit.v1_10_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -import net.minecraft.server.v1_9_R2.ContainerUtil; -import net.minecraft.server.v1_9_R2.EntityHuman; -import net.minecraft.server.v1_9_R2.ItemStack; -import net.minecraft.server.v1_9_R2.PlayerInventory; +import net.minecraft.server.v1_10_R1.ContainerUtil; +import net.minecraft.server.v1_10_R1.EntityHuman; +import net.minecraft.server.v1_10_R1.ItemStack; +import net.minecraft.server.v1_10_R1.PlayerInventory; public class SpecialPlayerInventory extends PlayerInventory { @@ -80,6 +80,7 @@ public class SpecialPlayerInventory extends PlayerInventory { public boolean inventoryRemovalCheck(boolean save) { boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { owner.saveData(); } diff --git a/src/main/java/com/lishid/openinv/utils/UUIDUtil.java b/src/main/java/com/lishid/openinv/utils/UUIDUtils.java similarity index 95% rename from src/main/java/com/lishid/openinv/utils/UUIDUtil.java rename to src/main/java/com/lishid/openinv/utils/UUIDUtils.java index f7faad1..0ac6aba 100644 --- a/src/main/java/com/lishid/openinv/utils/UUIDUtil.java +++ b/src/main/java/com/lishid/openinv/utils/UUIDUtils.java @@ -10,9 +10,9 @@ import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; -public final class UUIDUtil { +public final class UUIDUtils { - private UUIDUtil() {} + private UUIDUtils() {} private static Player getPlayer(String name) { Validate.notNull(name, "Name cannot be null"); @@ -50,7 +50,7 @@ public final class UUIDUtil { * @param name the name of the player to get the UUID of * @return the player's UUID or null */ - public static UUID getUUIDOf(String name) { + public static UUID getPlayerUUID(String name) { UUID uuid; Player player = getPlayer(name); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 4860eb4..f98c9b1 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.3.8 +version: 2.3.9 author: lishid authors: [ShadowRanger] description: > -- 2.49.1 From de0d28b12d2c8f9ea0ffb4ac08928bb17bdb0966 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Thu, 9 Jun 2016 22:43:20 +1000 Subject: [PATCH 065/253] Update to 1.10 --- .../openinv/commands/OpenInvCommand.java | 100 ++++++------------ 1 file changed, 32 insertions(+), 68 deletions(-) diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java index 29b9094..addeba0 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java @@ -45,9 +45,12 @@ public class OpenInvCommand implements CommandExecutor { } @Override - public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) { + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("openinv")) { - final boolean isConsole = sender instanceof ConsoleCommandSender; + if (!(sender instanceof Player)) { + sender.sendMessage(ChatColor.RED + "You can't use this command from the console."); + return true; + } if (!OpenInv.hasPermission(sender, Permissions.PERM_OPENINV)) { sender.sendMessage(ChatColor.RED + "You do not have permission to access player inventories."); @@ -55,38 +58,34 @@ public class OpenInvCommand implements CommandExecutor { } if (args.length > 0 && args[0].equalsIgnoreCase("?")) { - OpenInv.showHelp(sender); + OpenInv.showHelp((Player) sender); return true; } - Player player = isConsole ? null : (Player) sender; + final Player player = (Player) sender; + + // History management + UUID history = openInvHistory.get(player.getUniqueId()); + if (history == null) { + history = player.getUniqueId(); + openInvHistory.put(player.getUniqueId(), history); + } + final UUID uuid; // Read from history if target is not named if (args.length < 1) { - if (isConsole) { - // TODO: Should this output the command's usage instead? - sender.sendMessage(ChatColor.RED + "Player not found!"); - return true; - } - - // History management - UUID history = openInvHistory.get(player.getUniqueId()); - if (history == null) { - history = player.getUniqueId(); - openInvHistory.put(player.getUniqueId(), history); - } - uuid = history; - } else { + } + else { uuid = UUIDUtils.getPlayerUUID(args[0]); if (uuid == null) { - sender.sendMessage(ChatColor.RED + "Player not found!"); + player.sendMessage(ChatColor.RED + "Player not found!"); return true; } } - final UUID playerUUID = isConsole ? null : player.getUniqueId(); + final UUID playerUUID = player.getUniqueId(); Player target = Bukkit.getPlayer(uuid); if (target == null) { @@ -97,40 +96,27 @@ public class OpenInvCommand implements CommandExecutor { // Try loading the player's data asynchronously final Player target = plugin.getPlayerLoader().loadPlayer(uuid); if (target == null) { - sender.sendMessage(ChatColor.RED + "Player not found!"); + player.sendMessage(ChatColor.RED + "Player not found!"); return; } - // Open/output target's inventory synchronously - if (isConsole) { - Bukkit.getScheduler().runTask(plugin, new Runnable() { - @Override - public void run() { - outputInventory(sender, target); + // Open target's inventory synchronously + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + Player player = Bukkit.getPlayer(playerUUID); + // If sender is no longer online after loading the target, abort! + if (player == null) { + return; } - }); - } else { - Bukkit.getScheduler().runTask(plugin, new Runnable() { - @Override - public void run() { - Player player = Bukkit.getPlayer(playerUUID); - // If sender is no longer online after loading the target, abort! - if (player == null) { - return; - } - openInventory(player, target); - } - }); - } + openInventory(player, target); + } + }); } }); } else { - if (isConsole) { - outputInventory(sender, target); - } else { - openInventory(player, target); - } + openInventory(player, target); } return true; @@ -139,28 +125,6 @@ public class OpenInvCommand implements CommandExecutor { return false; } - @SuppressWarnings("deprecation") - private void outputInventory(CommandSender sender, Player target) { - // Get the inventory and open it - SpecialPlayerInventory specialInv = plugin.getPlayerInventory(target, true); - Inventory inventory = specialInv.getBukkitInventory(); - - for (int slot = 0; slot < inventory.getSize(); slot++) { - ItemStack itemStack = inventory.getItem(slot); - - if (itemStack != null) { - String itemID = (itemStack.getDurability() != -1) - ? (itemStack.getTypeId() + ":" + itemStack.getDurability()) - : String.valueOf(itemStack.getTypeId()); - - sender.sendMessage(ChatColor.GREEN + "Slot " + slot + ": " + ChatColor.WHITE - + itemStack.getType().toString() + "(" + itemID + ") x" + itemStack.getAmount()); - } else { - sender.sendMessage(ChatColor.GREEN + "Slot " + slot + ": " + ChatColor.WHITE + "Empty"); - } - } - } - private void openInventory(Player player, Player target) { // Null target check if (target == null) { -- 2.49.1 From eaabd30dc20013fa20c25ffe42d3c58df42493b7 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Thu, 9 Jun 2016 22:46:36 +1000 Subject: [PATCH 066/253] Update to 1.10 --- .../java/com/lishid/openinv/commands/OpenInvCommand.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java index addeba0..49afd30 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java +++ b/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java @@ -58,7 +58,7 @@ public class OpenInvCommand implements CommandExecutor { } if (args.length > 0 && args[0].equalsIgnoreCase("?")) { - OpenInv.showHelp((Player) sender); + OpenInv.showHelp(sender); return true; } @@ -76,8 +76,7 @@ public class OpenInvCommand implements CommandExecutor { // Read from history if target is not named if (args.length < 1) { uuid = history; - } - else { + } else { uuid = UUIDUtils.getPlayerUUID(args[0]); if (uuid == null) { player.sendMessage(ChatColor.RED + "Player not found!"); -- 2.49.1 From b76440ab9a1e2acc9bc1f089422db5525577c15b Mon Sep 17 00:00:00 2001 From: Jacob Martin Date: Sun, 20 Nov 2016 10:28:57 -0600 Subject: [PATCH 067/253] Update to 1.11 --- pom.xml | 11 +-- .../openinv/internal/AnySilentChest.java | 30 +++---- .../openinv/internal/EnumDirectionList.java | 4 +- .../openinv/internal/InventoryAccess.java | 4 +- .../openinv/internal/PlayerDataManager.java | 8 +- .../openinv/internal/SilentInventory.java | 42 +++++---- .../openinv/internal/SpecialEnderChest.java | 16 ++-- .../internal/SpecialPlayerInventory.java | 85 +++++++++---------- src/main/resources/plugin.yml | 2 +- 9 files changed, 100 insertions(+), 102 deletions(-) diff --git a/pom.xml b/pom.xml index efe52d4..647b723 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.lishid openinv jar - 2.3.9 + 2.4.0 OpenInv http://dev.bukkit.org/bukkit-plugins/openinv/ @@ -20,17 +20,10 @@ - - org.bukkit - bukkit - 1.10-R0.1-SNAPSHOT - provided - - org.bukkit craftbukkit - 1.10-R0.1-SNAPSHOT + 1.11-R0.1-SNAPSHOT provided diff --git a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java index f8cb40c..27d86a9 100644 --- a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java +++ b/src/main/java/com/lishid/openinv/internal/AnySilentChest.java @@ -18,25 +18,25 @@ package com.lishid.openinv.internal; import java.util.Iterator; -import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; -import net.minecraft.server.v1_10_R1.AxisAlignedBB; -import net.minecraft.server.v1_10_R1.Block; -import net.minecraft.server.v1_10_R1.BlockChest; -import net.minecraft.server.v1_10_R1.BlockChest.Type; -import net.minecraft.server.v1_10_R1.BlockPosition; -import net.minecraft.server.v1_10_R1.Entity; -import net.minecraft.server.v1_10_R1.EntityOcelot; -import net.minecraft.server.v1_10_R1.EntityPlayer; -import net.minecraft.server.v1_10_R1.EnumDirection; -import net.minecraft.server.v1_10_R1.ITileInventory; -import net.minecraft.server.v1_10_R1.InventoryLargeChest; -import net.minecraft.server.v1_10_R1.TileEntity; -import net.minecraft.server.v1_10_R1.TileEntityChest; -import net.minecraft.server.v1_10_R1.World; +import net.minecraft.server.v1_11_R1.AxisAlignedBB; +import net.minecraft.server.v1_11_R1.Block; +import net.minecraft.server.v1_11_R1.BlockChest; +import net.minecraft.server.v1_11_R1.BlockChest.Type; +import net.minecraft.server.v1_11_R1.BlockPosition; +import net.minecraft.server.v1_11_R1.Entity; +import net.minecraft.server.v1_11_R1.EntityOcelot; +import net.minecraft.server.v1_11_R1.EntityPlayer; +import net.minecraft.server.v1_11_R1.EnumDirection; +import net.minecraft.server.v1_11_R1.ITileInventory; +import net.minecraft.server.v1_11_R1.InventoryLargeChest; +import net.minecraft.server.v1_11_R1.TileEntity; +import net.minecraft.server.v1_11_R1.TileEntityChest; +import net.minecraft.server.v1_11_R1.World; public class AnySilentChest { diff --git a/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java b/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java index 3f0f5d4..36f19de 100644 --- a/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java +++ b/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java @@ -4,8 +4,8 @@ import java.util.Iterator; import com.google.common.collect.Iterators; -import net.minecraft.server.v1_10_R1.EnumDirection; -import net.minecraft.server.v1_10_R1.EnumDirection.EnumDirectionLimit; +import net.minecraft.server.v1_11_R1.EnumDirection; +import net.minecraft.server.v1_11_R1.EnumDirection.EnumDirectionLimit; public enum EnumDirectionList implements Iterable { diff --git a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java index d468a14..2470e56 100644 --- a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java +++ b/src/main/java/com/lishid/openinv/internal/InventoryAccess.java @@ -18,14 +18,14 @@ package com.lishid.openinv.internal; import java.lang.reflect.Field; -import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; +import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.Inventory; import com.lishid.openinv.OpenInv; import com.lishid.openinv.Permissions; -import net.minecraft.server.v1_10_R1.IInventory; +import net.minecraft.server.v1_11_R1.IInventory; public class InventoryAccess { diff --git a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java index c576c6b..f764aed 100644 --- a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java +++ b/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java @@ -20,15 +20,15 @@ import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; -import org.bukkit.craftbukkit.v1_10_R1.CraftServer; +import org.bukkit.craftbukkit.v1_11_R1.CraftServer; import org.bukkit.entity.Player; import com.lishid.openinv.OpenInv; import com.mojang.authlib.GameProfile; -import net.minecraft.server.v1_10_R1.EntityPlayer; -import net.minecraft.server.v1_10_R1.MinecraftServer; -import net.minecraft.server.v1_10_R1.PlayerInteractManager; +import net.minecraft.server.v1_11_R1.EntityPlayer; +import net.minecraft.server.v1_11_R1.MinecraftServer; +import net.minecraft.server.v1_11_R1.PlayerInteractManager; public class PlayerDataManager { diff --git a/src/main/java/com/lishid/openinv/internal/SilentInventory.java b/src/main/java/com/lishid/openinv/internal/SilentInventory.java index fd5ecd4..ea5020c 100644 --- a/src/main/java/com/lishid/openinv/internal/SilentInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SilentInventory.java @@ -3,18 +3,18 @@ package com.lishid.openinv.internal; import java.util.List; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_10_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_11_R1.entity.CraftHumanEntity; import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.InventoryHolder; -import net.minecraft.server.v1_10_R1.ChestLock; -import net.minecraft.server.v1_10_R1.Container; -import net.minecraft.server.v1_10_R1.ContainerChest; -import net.minecraft.server.v1_10_R1.EntityHuman; -import net.minecraft.server.v1_10_R1.IChatBaseComponent; -import net.minecraft.server.v1_10_R1.ITileInventory; -import net.minecraft.server.v1_10_R1.ItemStack; -import net.minecraft.server.v1_10_R1.PlayerInventory; +import net.minecraft.server.v1_11_R1.ChestLock; +import net.minecraft.server.v1_11_R1.Container; +import net.minecraft.server.v1_11_R1.ContainerChest; +import net.minecraft.server.v1_11_R1.EntityHuman; +import net.minecraft.server.v1_11_R1.IChatBaseComponent; +import net.minecraft.server.v1_11_R1.ITileInventory; +import net.minecraft.server.v1_11_R1.ItemStack; +import net.minecraft.server.v1_11_R1.PlayerInventory; public class SilentInventory implements ITileInventory { @@ -25,8 +25,9 @@ public class SilentInventory implements ITileInventory { } @Override - public boolean x_() { - return inv.x_(); + public boolean isLocked() + { + return inv.isLocked(); } @Override @@ -35,8 +36,8 @@ public class SilentInventory implements ITileInventory { } @Override - public ChestLock y_() { - return inv.y_(); + public ChestLock getLock() { + return inv.getLock(); } @Override @@ -44,6 +45,11 @@ public class SilentInventory implements ITileInventory { return inv.getSize(); } + @Override + public boolean w_() { + return inv.w_(); + } + @Override public ItemStack getItem(int i) { return inv.getItem(i); @@ -105,17 +111,17 @@ public class SilentInventory implements ITileInventory { } @Override - public int g() { - return inv.g(); + public int h() { + return inv.h(); } @Override - public void l() { - inv.l(); + public void clear() { + inv.clear(); } @Override - public ItemStack[] getContents() { + public List getContents() { return inv.getContents(); } diff --git a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java index 0ccc6fe..3b82d2f 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java @@ -17,17 +17,19 @@ package com.lishid.openinv.internal; import java.lang.reflect.Field; +import java.util.List; -import org.bukkit.craftbukkit.v1_10_R1.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; +import net.minecraft.server.v1_11_R1.NonNullList; +import org.bukkit.craftbukkit.v1_11_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import net.minecraft.server.v1_10_R1.InventoryEnderChest; -import net.minecraft.server.v1_10_R1.InventorySubcontainer; -import net.minecraft.server.v1_10_R1.ItemStack; +import net.minecraft.server.v1_11_R1.InventoryEnderChest; +import net.minecraft.server.v1_11_R1.InventorySubcontainer; +import net.minecraft.server.v1_11_R1.ItemStack; public class SpecialEnderChest extends InventorySubcontainer { @@ -54,7 +56,7 @@ public class SpecialEnderChest extends InventorySubcontainer { } } - private void reflectContents(Class clazz, InventorySubcontainer enderChest, ItemStack[] items) { + private void reflectContents(Class clazz, InventorySubcontainer enderChest, List items) { try { Field itemsField = clazz.getDeclaredField("items"); itemsField.setAccessible(true); diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java index 605a65b..b857690 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java @@ -18,23 +18,19 @@ package com.lishid.openinv.internal; import java.lang.reflect.Field; -import org.bukkit.craftbukkit.v1_10_R1.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; +import net.minecraft.server.v1_11_R1.*; +import org.bukkit.craftbukkit.v1_11_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -import net.minecraft.server.v1_10_R1.ContainerUtil; -import net.minecraft.server.v1_10_R1.EntityHuman; -import net.minecraft.server.v1_10_R1.ItemStack; -import net.minecraft.server.v1_10_R1.PlayerInventory; - public class SpecialPlayerInventory extends PlayerInventory { private final CraftInventory inventory = new CraftInventory(this); - private final ItemStack[] extra = new ItemStack[4]; + private final NonNullList extra = NonNullList.a(); private CraftPlayer owner; - private ItemStack[][] arrays; + private NonNullList[] arrays; private boolean playerOnline; public SpecialPlayerInventory(Player p, boolean online) { @@ -67,7 +63,8 @@ public class SpecialPlayerInventory extends PlayerInventory { e.printStackTrace(); } - arrays = new ItemStack[][] { this.items, this.armor, this.extraSlots, this.extra }; + //noinspection unchecked + arrays = new NonNullList[] { this.items, this.armor, this.extraSlots, this.extra }; } private void linkInventory(PlayerInventory inventory) { @@ -109,11 +106,11 @@ public class SpecialPlayerInventory extends PlayerInventory { } @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(this.items, 0, contents, 0, this.items.length); - System.arraycopy(this.armor, 0, contents, this.items.length, this.armor.length); - System.arraycopy(this.extraSlots, 0, contents, this.items.length + this.armor.length, this.extraSlots.length); + public NonNullList getContents() { + NonNullList contents = NonNullList.a(); + contents.addAll(this.items); + contents.addAll(this.armor); + contents.addAll(this.extraSlots); return contents; } @@ -124,19 +121,19 @@ public class SpecialPlayerInventory extends PlayerInventory { @Override public ItemStack getItem(int i) { - ItemStack[] is = null; - ItemStack[][] contents = this.arrays; + NonNullList is = null; + NonNullList[] contents = this.arrays; int j = contents.length; for (int k = 0; k < j; ++k) { - ItemStack[] is2 = contents[k]; + NonNullList is2 = contents[k]; - if (i < is2.length) { + if (i < is2.size()) { is = is2; break; } - i -= is2.length; + i -= is2.size(); } if (is == this.items) { @@ -149,24 +146,24 @@ public class SpecialPlayerInventory extends PlayerInventory { // Do nothing } - return is == null ? null : is[i]; + return is == null ? ItemStack.a : is.get(i); } @Override public ItemStack splitStack(int i, int j) { - ItemStack[] is = null; - ItemStack[][] contents = this.arrays; + NonNullList is = null; + NonNullList[] contents = this.arrays; int k = contents.length; for (int l = 0; l < k; ++l) { - ItemStack[] is2 = contents[l]; + NonNullList is2 = contents[l]; - if (i < is2.length) { + if (i < is2.size()) { is = is2; break; } - i -= is2.length; + i -= is2.size(); } if (is == this.items) { @@ -179,27 +176,27 @@ public class SpecialPlayerInventory extends PlayerInventory { // Do nothing } - return is != null && is[i] != null ? ContainerUtil.a(is, i, j) : null; + return is != null && !is.get(i).isEmpty() ? ContainerUtil.a(is, i, j) : ItemStack.a; } @Override public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = null; - ItemStack[][] contents = this.arrays; + NonNullList is = null; + NonNullList[] contents = this.arrays; int j = contents.length; for (int object = 0; object < j; ++object) { - ItemStack[] is2 = contents[object]; + NonNullList is2 = contents[object]; - if (i < is2.length) { + if (i < is2.size()) { is = is2; break; } - i -= is2.length; + i -= is2.size(); } - if (is != null && is[i] != null) { + if (is != null && !is.get(i).isEmpty()) { if (is == this.items) { i = getReversedItemSlotNum(i); } else if (is == this.armor) { @@ -210,29 +207,29 @@ public class SpecialPlayerInventory extends PlayerInventory { // Do nothing } - Object object = is[i]; - is[i] = null; + Object object = is.get(i); + is.set(i, ItemStack.a); return (ItemStack) object; } else { - return null; + return ItemStack.a; } } @Override public void setItem(int i, ItemStack itemStack) { - ItemStack[] is = null; - ItemStack[][] contents = this.arrays; + NonNullList is = null; + NonNullList[] contents = this.arrays; int j = contents.length; for (int k = 0; k < j; ++k) { - ItemStack[] is2 = contents[k]; + NonNullList is2 = contents[k]; - if (i < is2.length) { + if (i < is2.size()) { is = is2; break; } - i -= is2.length; + i -= is2.size(); } if (is != null) { @@ -244,10 +241,10 @@ public class SpecialPlayerInventory extends PlayerInventory { // Do nothing } else if (is == this.extra) { owner.getHandle().drop(itemStack, true); - itemStack = null; + itemStack = ItemStack.a; } - is[i] = itemStack; + is.set(i, itemStack); owner.getHandle().defaultContainer.b(); } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index f98c9b1..78e279d 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.3.9 +version: 2.4.0 author: lishid authors: [ShadowRanger] description: > -- 2.49.1 From 3bf7225712b4b1cb851a4cd0db2158cc453e8832 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 25 Nov 2016 08:01:44 -0500 Subject: [PATCH 068/253] Convert to a multi-module Maven setup This is much more user-friendly - users can either compile a specific module or create a profile to compile for the specific Minecraft versions they're looking to support. It means that it's much easier for people to continue assisting with the development of OpenInv in the future without access to every version of CB since 1.4.5. This commit restores and updates most of the old system. --- .gitignore | 19 +- assembly/pom.xml | 77 ++++++++ internal/pom.xml | 23 +++ .../openinv/internal/IAnySilentChest.java | 40 ++++ .../openinv/internal/IAnySilentContainer.java | 38 ++++ .../openinv/internal/IInventoryAccess.java | 33 ++++ .../openinv/internal/IPlayerDataManager.java | 50 +++++ .../openinv/internal/ISpecialEnderChest.java | 62 ++++++ .../internal/ISpecialPlayerInventory.java | 62 ++++++ .../openinv/internal/InternalAccessor.java | 183 ++++++++++++++++++ plugin/pom.xml | 38 ++++ .../com/lishid/openinv/ConfigUpdater.java | 0 .../com/lishid/openinv/Configuration.java | 0 .../main/java/com/lishid/openinv/OpenInv.java | 73 ++++--- .../java/com/lishid/openinv/Permissions.java | 38 ++-- .../openinv/commands/AnyChestCommand.java | 0 .../openinv/commands/OpenEnderCommand.java | 12 +- .../openinv/commands/OpenInvCommand.java | 15 +- .../openinv/commands/SearchEnderCommand.java | 0 .../openinv/commands/SearchInvCommand.java | 0 .../openinv/commands/SilentChestCommand.java | 0 .../commands/ToggleOpenInvCommand.java | 0 .../listeners/OpenInvEntityListener.java | 0 .../listeners/OpenInvInventoryListener.java | 0 .../listeners/OpenInvPlayerListener.java | 26 +-- .../java/com/lishid/openinv/util/Cache.java | 160 +++++++++++++++ .../com/lishid/openinv/util/Function.java | 12 ++ .../com/lishid/openinv/utils/UUIDFetcher.java | 0 .../com/lishid/openinv/utils/UUIDUtils.java | 0 {src => plugin/src}/main/resources/config.yml | 0 {src => plugin/src}/main/resources/plugin.yml | 90 ++++----- pom.xml | 169 +++++++++++----- v1_11_R1/pom.xml | 28 +++ .../internal/v1_11_R1}/AnySilentChest.java | 24 ++- .../internal/v1_11_R1}/EnumDirectionList.java | 2 +- .../internal/v1_11_R1}/InventoryAccess.java | 2 +- .../internal/v1_11_R1}/PlayerDataManager.java | 2 +- .../internal/v1_11_R1}/SilentInventory.java | 2 +- .../internal/v1_11_R1}/SpecialEnderChest.java | 2 +- .../v1_11_R1}/SpecialPlayerInventory.java | 2 +- 40 files changed, 1088 insertions(+), 196 deletions(-) create mode 100644 assembly/pom.xml create mode 100644 internal/pom.xml create mode 100644 internal/src/main/java/com/lishid/openinv/internal/IAnySilentChest.java create mode 100644 internal/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java create mode 100644 internal/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java create mode 100644 internal/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java create mode 100644 internal/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java create mode 100644 internal/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java create mode 100644 internal/src/main/java/com/lishid/openinv/internal/InternalAccessor.java create mode 100644 plugin/pom.xml rename {src => plugin/src}/main/java/com/lishid/openinv/ConfigUpdater.java (100%) rename {src => plugin/src}/main/java/com/lishid/openinv/Configuration.java (100%) rename {src => plugin/src}/main/java/com/lishid/openinv/OpenInv.java (80%) rename {src => plugin/src}/main/java/com/lishid/openinv/Permissions.java (97%) rename {src => plugin/src}/main/java/com/lishid/openinv/commands/AnyChestCommand.java (100%) rename {src => plugin/src}/main/java/com/lishid/openinv/commands/OpenEnderCommand.java (97%) rename {src => plugin/src}/main/java/com/lishid/openinv/commands/OpenInvCommand.java (95%) rename {src => plugin/src}/main/java/com/lishid/openinv/commands/SearchEnderCommand.java (100%) rename {src => plugin/src}/main/java/com/lishid/openinv/commands/SearchInvCommand.java (100%) rename {src => plugin/src}/main/java/com/lishid/openinv/commands/SilentChestCommand.java (100%) rename {src => plugin/src}/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java (100%) rename {src => plugin/src}/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java (100%) rename {src => plugin/src}/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java (100%) rename {src => plugin/src}/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java (90%) create mode 100644 plugin/src/main/java/com/lishid/openinv/util/Cache.java create mode 100644 plugin/src/main/java/com/lishid/openinv/util/Function.java rename {src => plugin/src}/main/java/com/lishid/openinv/utils/UUIDFetcher.java (100%) rename {src => plugin/src}/main/java/com/lishid/openinv/utils/UUIDUtils.java (100%) rename {src => plugin/src}/main/resources/config.yml (100%) rename {src => plugin/src}/main/resources/plugin.yml (96%) create mode 100644 v1_11_R1/pom.xml rename {src/main/java/com/lishid/openinv/internal => v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1}/AnySilentChest.java (91%) rename {src/main/java/com/lishid/openinv/internal => v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1}/EnumDirectionList.java (92%) rename {src/main/java/com/lishid/openinv/internal => v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1}/InventoryAccess.java (98%) rename {src/main/java/com/lishid/openinv/internal => v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1}/PlayerDataManager.java (97%) rename {src/main/java/com/lishid/openinv/internal => v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1}/SilentInventory.java (98%) rename {src/main/java/com/lishid/openinv/internal => v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1}/SpecialEnderChest.java (98%) rename {src/main/java/com/lishid/openinv/internal => v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1}/SpecialPlayerInventory.java (99%) diff --git a/.gitignore b/.gitignore index 3c10ff7..dac1d9c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,10 @@ -/.settings -/.gitignore -/.project -/.classpath -/.idea -/target -/bin -/lib -/out +**/.settings +**/.gitignore +**/.project +**/.classpath +**/.idea +**/target +**/bin +**/lib +**/out +**dependency-reduced-pom.xml diff --git a/assembly/pom.xml b/assembly/pom.xml new file mode 100644 index 0000000..86563e3 --- /dev/null +++ b/assembly/pom.xml @@ -0,0 +1,77 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvassembly + OpenInvAssembly + + + + + latest + + + com.lishid + openinvadapter1_11_R1 + 1.0-SNAPSHOT + + + + + + all + + + com.lishid + openinvadapter1_11_R1 + 1.0-SNAPSHOT + + + + + + + + ../target + OpenInv + + + + org.apache.maven.plugins + maven-shade-plugin + 2.4.3 + + + true + + + com.lishid:* + + com/lishid/openinv/**/* + plugin.yml + + + + + + + package + + shade + + + + + + + + \ No newline at end of file diff --git a/internal/pom.xml b/internal/pom.xml new file mode 100644 index 0000000..ce65e5c --- /dev/null +++ b/internal/pom.xml @@ -0,0 +1,23 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvinternal + OpenInvInternal + + + + org.bukkit + bukkit + 1.4.5-R1.0 + provided + + + + diff --git a/internal/src/main/java/com/lishid/openinv/internal/IAnySilentChest.java b/internal/src/main/java/com/lishid/openinv/internal/IAnySilentChest.java new file mode 100644 index 0000000..b109b12 --- /dev/null +++ b/internal/src/main/java/com/lishid/openinv/internal/IAnySilentChest.java @@ -0,0 +1,40 @@ +/* + * 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; + +import org.bukkit.block.Block; +import org.bukkit.entity.Player; + +/** + * @deprecated Use {@link IAnySilentContainer} + */ +@Deprecated +public interface IAnySilentChest { + + /** + * @deprecated Use {@link IAnySilentContainer#activateContainer(Player, boolean, Block)}. + */ + @Deprecated + public boolean activateChest(Player player, boolean anychest, boolean silentchest, int x, int y, int z); + + /** + * @deprecated Use {@link IAnySilentContainer#isAnyContainerNeeded(Player, Block)}. + */ + @Deprecated + public boolean isAnyChestNeeded(Player player, int x, int y, int z); + +} diff --git a/internal/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java b/internal/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java new file mode 100644 index 0000000..a7b6802 --- /dev/null +++ b/internal/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java @@ -0,0 +1,38 @@ +package com.lishid.openinv.internal; + +import org.bukkit.block.Block; +import org.bukkit.entity.Player; + +@SuppressWarnings("deprecation") +public interface IAnySilentContainer extends IAnySilentChest { + + /** + * Checks if the given block is a container which can be unblocked or silenced. + * + * @param block the BlockState + * @return true if the Block is a supported container + */ + public boolean isAnySilentContainer(Block block); + + /** + * Checks if the container at the given coordinates is blocked. + * + * @param player the Player opening the container + * @param block the Block + * @return true if the container is blocked + */ + public boolean isAnyContainerNeeded(Player player, Block block); + + /** + * Opens the container at the given coordinates for the Player. If you do not want blocked + * containers to open, be sure to check {@link #isAnyContainerNeeded(Player, Block)} + * first. + * + * @param player + * @param silentchest whether the container's noise is to be silenced + * @param block the Block + * @return true if the container can be opened + */ + public boolean activateContainer(Player player, boolean silentchest, Block block); + +} diff --git a/internal/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java b/internal/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java new file mode 100644 index 0000000..16ae2a4 --- /dev/null +++ b/internal/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java @@ -0,0 +1,33 @@ +/* + * 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; + +import org.bukkit.entity.HumanEntity; +import org.bukkit.inventory.Inventory; + +public interface IInventoryAccess { + + /** + * Check if an entity has permission to modify the contents of an inventory. + * + * @param inventory the Inventory + * @param player the HumanEntity + * @return true if the HumanEntity can modify the Inventory + */ + public boolean check(Inventory inventory, HumanEntity player); + +} diff --git a/internal/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java b/internal/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java new file mode 100644 index 0000000..d9738a6 --- /dev/null +++ b/internal/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java @@ -0,0 +1,50 @@ +/* + * 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; + +import java.util.UUID; + +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +public interface IPlayerDataManager { + + /** + * Loads a Player for an OfflinePlayer. + *

+ * This method is potentially blocking, and should not be called on the main thread. + * + * @param offline + * @return + */ + public Player loadPlayer(OfflinePlayer offline); + + /** + * @deprecated use {@link #loadPlayer(OfflinePlayer)} + */ + @Deprecated + public Player loadPlayer(UUID uuid); + + /** + * Gets a unique identifying string for an OfflinePlayer. + * + * @param player + * @return + */ + public String getPlayerDataID(OfflinePlayer player); + +} diff --git a/internal/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java b/internal/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java new file mode 100644 index 0000000..2b7c6cd --- /dev/null +++ b/internal/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java @@ -0,0 +1,62 @@ +/* + * 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; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +public interface ISpecialEnderChest { + + /** + * Gets the Inventory associated with this ISpecialEnderChest. + * + * @return the Inventory + */ + public Inventory getBukkitInventory(); + + /** + * Sets the Player associated with this ISpecialEnderChest online. + * + * @param player the Player coming online + */ + public void setPlayerOnline(Player player); + + /** + * @deprecated use {@link #setPlayerOnline(Player)} + */ + @Deprecated + public void playerOnline(Player player); + + /** + * Sets the Player associated with this ISpecialEnderChest offline. + */ + public void setPlayerOffline(); + + /** + * @deprecated use {@link #setPlayerOffline()} + */ + @Deprecated + public void playerOffline(); + + /** + * Gets whether or not this ISpecialEnderChest is in use. + * + * @return true if the ISpecialEnderChest is in use + */ + public boolean isInUse(); + +} diff --git a/internal/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java b/internal/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java new file mode 100644 index 0000000..088ee5f --- /dev/null +++ b/internal/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java @@ -0,0 +1,62 @@ +/* + * 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; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +public interface ISpecialPlayerInventory { + + /** + * Gets the Inventory associated with this ISpecialPlayerInventory. + * + * @return the Inventory + */ + public Inventory getBukkitInventory(); + + /** + * Sets the Player associated with this ISpecialPlayerInventory online. + * + * @param player the Player coming online + */ + public void setPlayerOnline(Player player); + + /** + * @deprecated use {@link #setPlayerOnline(Player)} + */ + @Deprecated + public void playerOnline(Player player); + + /** + * Sets the Player associated with this ISpecialPlayerInventory offline. + */ + public void setPlayerOffline(); + + /** + * @deprecated use {@link #setPlayerOffline()} + */ + @Deprecated + public void playerOffline(); + + /** + * Gets whether or not this ISpecialPlayerInventory is in use. + * + * @return true if the ISpecialPlayerInventory is in use + */ + public boolean isInUse(); + +} diff --git a/internal/src/main/java/com/lishid/openinv/internal/InternalAccessor.java b/internal/src/main/java/com/lishid/openinv/internal/InternalAccessor.java new file mode 100644 index 0000000..01ea58d --- /dev/null +++ b/internal/src/main/java/com/lishid/openinv/internal/InternalAccessor.java @@ -0,0 +1,183 @@ +/* + * 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; + +import java.lang.reflect.Constructor; + +import org.bukkit.Server; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; + +public class InternalAccessor { + + private final Plugin plugin; + + private String version; + private boolean supported = false; + + public InternalAccessor(Plugin 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 boolean initialize(Server server) { + String packageName = server.getClass().getPackage().getName(); + version = packageName.substring(packageName.lastIndexOf('.') + 1); + + try { + Class.forName("com.lishid.openinv.internal." + version + ".PlayerDataManager"); + return (supported = true); + } catch (Exception e) { + return false; + } + } + + /** + * Gets the server implementation version. If not initialized, returns the string "null" + * instead. + * + * @return the version, or "null" + */ + public String getVersion() { + return this.version != null ? this.version : "null"; + } + + /** + * Checks if the server implementation is supported. + * + * @return true if initialized for a supported server version + */ + public boolean isSupported() { + return this.supported; + } + + /** + * Creates an instance of the IPlayerDataManager implementation for the current server version, + * or null if unsupported. + * + * @return the IPlayerDataManager + */ + public IPlayerDataManager newPlayerDataManager() { + return createObject(IPlayerDataManager.class, "PlayerDataManager"); + } + + /** + * Creates an instance of the IInventoryAccess implementation for the current server version, or + * null if unsupported. + * + * @return the IInventoryAccess + */ + public IInventoryAccess newInventoryAccess() { + return createObject(IInventoryAccess.class, "InventoryAccess"); + } + + /** + * Creates an instance of the IAnySilentContainer implementation for the current server version, + * or null if unsupported. + * + * @return the IAnySilentContainer + */ + public IAnySilentContainer newAnySilentContainer() { + return createObject(IAnySilentContainer.class, "AnySilentContainer"); + } + + /** + * @deprecated Use {@link #newAnySilentContainer()} + */ + @Deprecated + public IAnySilentChest newAnySilentChest() { + IAnySilentChest iAnySilentChest = createObject(IAnySilentChest.class, "AnySilentChest"); + return iAnySilentChest != null ? iAnySilentChest : newAnySilentContainer(); + } + + /** + * Creates an instance of the ISpecialPlayerInventory implementation for the given Player, or + * null if the current version is unsupported. + * + * @param player the Player + * @param online true if the Player is online + * @return the ISpecialPlayerInventory created + */ + public ISpecialPlayerInventory newSpecialPlayerInventory(Player player, boolean online) { + return createObject(ISpecialPlayerInventory.class, "SpecialPlayerInventory", player, online); + } + + /** + * Creates an instance of the ISpecialEnderChest implementation for the given Player, or + * null if the current version is unsupported. + * + * @param player the Player + * @param online true if the Player is online + * @return the ISpecialEnderChest created + */ + public ISpecialEnderChest newSpecialEnderChest(Player player, boolean online) { + return createObject(ISpecialEnderChest.class, "SpecialEnderChest", player, online); + } + + private T createObject(Class assignableClass, String className, Object... params) { + try { + // Check if internal versioned class exists + Class internalClass = Class.forName("com.lishid.openinv.internal." + version + "." + className); + if (!assignableClass.isAssignableFrom(internalClass)) { + plugin.getLogger().warning("Found class " + internalClass.getName() + " but cannot cast to " + assignableClass.getName()); + return null; + } + + // Quick return: no parameters, no need to fiddle about finding the correct constructor. + if (params.length == 0) { + return assignableClass.cast(internalClass.getConstructor().newInstance()); + } + + // Search constructors for one matching the given parameters + nextConstructor: for (Constructor constructor : internalClass.getConstructors()) { + Class[] requiredClasses = constructor.getParameterTypes(); + if (requiredClasses.length != params.length) { + continue; + } + for (int i = 0; i < params.length; ++i) { + if (!requiredClasses[i].isAssignableFrom(params[i].getClass())) { + continue nextConstructor; + } + } + return assignableClass.cast(constructor.newInstance(params)); + } + + StringBuilder message = new StringBuilder("Found class ").append(internalClass.getName()) + .append(" but cannot find any matching constructors for ["); + for (Object object : params) { + message.append(object.getClass().getName()).append(", "); + } + if (params.length > 0) { + message.delete(message.length() - 2, message.length()); + } + + plugin.getLogger().warning(message.append(']').toString()); + } catch (Exception e) { + plugin.getLogger().warning("OpenInv encountered an error with the CraftBukkit version \"" + version + "\". Please look for an updated version of OpenInv."); + e.printStackTrace(); + } + + return null; + } + +} diff --git a/plugin/pom.xml b/plugin/pom.xml new file mode 100644 index 0000000..64c32d7 --- /dev/null +++ b/plugin/pom.xml @@ -0,0 +1,38 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvplugin + OpenInvPlugin + + + + org.bukkit + bukkit + + 1.11-R0.1-SNAPSHOT + provided + + + com.lishid + openinvinternal + 1.0-SNAPSHOT + + + + + + + src/main/resources + true + + + + + \ No newline at end of file diff --git a/src/main/java/com/lishid/openinv/ConfigUpdater.java b/plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java similarity index 100% rename from src/main/java/com/lishid/openinv/ConfigUpdater.java rename to plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java diff --git a/src/main/java/com/lishid/openinv/Configuration.java b/plugin/src/main/java/com/lishid/openinv/Configuration.java similarity index 100% rename from src/main/java/com/lishid/openinv/Configuration.java rename to plugin/src/main/java/com/lishid/openinv/Configuration.java diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/src/main/java/com/lishid/openinv/OpenInv.java similarity index 80% rename from src/main/java/com/lishid/openinv/OpenInv.java rename to plugin/src/main/java/com/lishid/openinv/OpenInv.java index 6b62e35..4474e2b 100644 --- a/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/src/main/java/com/lishid/openinv/OpenInv.java @@ -20,13 +20,6 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; -import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; -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.AnyChestCommand; import com.lishid.openinv.commands.OpenEnderCommand; import com.lishid.openinv.commands.OpenInvCommand; @@ -34,25 +27,34 @@ import com.lishid.openinv.commands.SearchEnderCommand; import com.lishid.openinv.commands.SearchInvCommand; import com.lishid.openinv.commands.SilentChestCommand; import com.lishid.openinv.commands.ToggleOpenInvCommand; -import com.lishid.openinv.internal.AnySilentChest; -import com.lishid.openinv.internal.InventoryAccess; -import com.lishid.openinv.internal.PlayerDataManager; -import com.lishid.openinv.internal.SpecialEnderChest; -import com.lishid.openinv.internal.SpecialPlayerInventory; +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; import com.lishid.openinv.listeners.OpenInvEntityListener; import com.lishid.openinv.listeners.OpenInvInventoryListener; import com.lishid.openinv.listeners.OpenInvPlayerListener; +import org.bukkit.ChatColor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.permissions.Permissible; +import org.bukkit.plugin.PluginManager; +import org.bukkit.plugin.java.JavaPlugin; + public class OpenInv extends JavaPlugin { - private final Map inventories = new HashMap(); - private final Map enderChests = new HashMap(); + private final Map inventories = new HashMap(); + private final Map enderChests = new HashMap(); private Configuration configuration; - private PlayerDataManager playerLoader; - private InventoryAccess inventoryAccess; - private AnySilentChest anySilentChest; + private InternalAccessor accessor; + private IPlayerDataManager playerLoader; + private IInventoryAccess inventoryAccess; + private IAnySilentChest anySilentChest; @Override public void onEnable() { @@ -62,14 +64,21 @@ public class OpenInv extends JavaPlugin { // Config configuration = new Configuration(this); - // Initialize - playerLoader = new PlayerDataManager(this); - inventoryAccess = new InventoryAccess(this); - anySilentChest = new AnySilentChest(this); - - // Register the plugin's events PluginManager pm = getServer().getPluginManager(); + // Version check + if (!accessor.initialize(getServer())) { + getLogger().info("Your version of CraftBukkit (" + accessor.getVersion() + ") 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(); + + // Register the plugin's events pm.registerEvents(new OpenInvPlayerListener(this), this); pm.registerEvents(new OpenInvEntityListener(this), this); pm.registerEvents(new OpenInvInventoryListener(this), this); @@ -98,7 +107,7 @@ public class OpenInv extends JavaPlugin { * * @return an instance of PlayerDataManager */ - public PlayerDataManager getPlayerLoader() { + public IPlayerDataManager getPlayerLoader() { return playerLoader; } @@ -107,7 +116,7 @@ public class OpenInv extends JavaPlugin { * * @return an instance of InventoryAccess */ - public InventoryAccess getInventoryAccess() { + public IInventoryAccess getInventoryAccess() { return inventoryAccess; } @@ -116,7 +125,7 @@ public class OpenInv extends JavaPlugin { * * @return an instance of AnySilentChest */ - public AnySilentChest getAnySilentChest() { + public IAnySilentChest getAnySilentChest() { return anySilentChest; } @@ -127,11 +136,11 @@ public class OpenInv extends JavaPlugin { * @param createIfNull whether or not to create it if it doesn't exist * @return the player's SpecialPlayerInventory or null */ - public SpecialPlayerInventory getPlayerInventory(Player player, boolean createIfNull) { - SpecialPlayerInventory inventory = inventories.get(player.getUniqueId()); + public ISpecialPlayerInventory getPlayerInventory(Player player, boolean createIfNull) { + ISpecialPlayerInventory inventory = inventories.get(player.getUniqueId()); if (inventory == null && createIfNull) { - inventory = new SpecialPlayerInventory(player, player.isOnline()); + inventory = accessor.newSpecialPlayerInventory(player, !player.isOnline()); inventories.put(player.getUniqueId(), inventory); } @@ -145,11 +154,11 @@ public class OpenInv extends JavaPlugin { * @param createIfNull whether or not to create it if it doesn't exist * @return the player's SpecialEnderChest or null */ - public SpecialEnderChest getPlayerEnderChest(Player player, boolean createIfNull) { - SpecialEnderChest enderChest = enderChests.get(player.getUniqueId()); + public ISpecialEnderChest getPlayerEnderChest(Player player, boolean createIfNull) { + ISpecialEnderChest enderChest = enderChests.get(player.getUniqueId()); if (enderChest == null && createIfNull) { - enderChest = new SpecialEnderChest(player, player.isOnline()); + enderChest = accessor.newSpecialEnderChest(player, player.isOnline()); enderChests.put(player.getUniqueId(), enderChest); } diff --git a/src/main/java/com/lishid/openinv/Permissions.java b/plugin/src/main/java/com/lishid/openinv/Permissions.java similarity index 97% rename from src/main/java/com/lishid/openinv/Permissions.java rename to plugin/src/main/java/com/lishid/openinv/Permissions.java index 5021236..0577a51 100644 --- a/src/main/java/com/lishid/openinv/Permissions.java +++ b/plugin/src/main/java/com/lishid/openinv/Permissions.java @@ -1,19 +1,19 @@ -package com.lishid.openinv; - -public final class Permissions { - - private Permissions() {} - - public static final String PERM_OPENINV = "OpenInv.openinv"; - public static final String PERM_OVERRIDE = "OpenInv.override"; - public static final String PERM_EXEMPT = "OpenInv.exempt"; - public static final String PERM_CROSSWORLD = "OpenInv.crossworld"; - public static final String PERM_SILENT = "OpenInv.silent"; - public static final String PERM_ANYCHEST = "OpenInv.anychest"; - public static final String PERM_ENDERCHEST = "OpenInv.openender"; - public static final String PERM_ENDERCHEST_ALL = "OpenInv.openenderall"; - public static final String PERM_SEARCH = "OpenInv.search"; - public static final String PERM_EDITINV = "OpenInv.editinv"; - public static final String PERM_EDITENDER = "OpenInv.editender"; - public static final String PERM_OPENSELF = "OpenInv.openself"; -} +package com.lishid.openinv; + +public final class Permissions { + + private Permissions() {} + + public static final String PERM_OPENINV = "OpenInv.openinv"; + public static final String PERM_OVERRIDE = "OpenInv.override"; + public static final String PERM_EXEMPT = "OpenInv.exempt"; + public static final String PERM_CROSSWORLD = "OpenInv.crossworld"; + public static final String PERM_SILENT = "OpenInv.silent"; + public static final String PERM_ANYCHEST = "OpenInv.anychest"; + public static final String PERM_ENDERCHEST = "OpenInv.openender"; + public static final String PERM_ENDERCHEST_ALL = "OpenInv.openenderall"; + public static final String PERM_SEARCH = "OpenInv.search"; + public static final String PERM_EDITINV = "OpenInv.editinv"; + public static final String PERM_EDITENDER = "OpenInv.editender"; + public static final String PERM_OPENSELF = "OpenInv.openself"; +} diff --git a/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java similarity index 100% rename from src/main/java/com/lishid/openinv/commands/AnyChestCommand.java rename to plugin/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java diff --git a/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java similarity index 97% rename from src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java rename to plugin/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java index 11727a4..aef46ca 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java +++ b/plugin/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java @@ -20,6 +20,11 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.Permissions; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.utils.UUIDUtils; + import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; @@ -27,11 +32,6 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.SpecialEnderChest; -import com.lishid.openinv.utils.UUIDUtils; - public class OpenEnderCommand implements CommandExecutor { private final OpenInv plugin; @@ -155,7 +155,7 @@ public class OpenEnderCommand implements CommandExecutor { openEnderHistory.put(player.getUniqueId(), target.getUniqueId()); // Get the inventory and open it - SpecialEnderChest enderChest = plugin.getPlayerEnderChest(target, true); + ISpecialEnderChest enderChest = plugin.getPlayerEnderChest(target, true); player.openInventory(enderChest.getBukkitInventory()); } } diff --git a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java similarity index 95% rename from src/main/java/com/lishid/openinv/commands/OpenInvCommand.java rename to plugin/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java index 49afd30..0b2e37a 100644 --- a/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java +++ b/plugin/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java @@ -20,20 +20,17 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.Permissions; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.utils.UUIDUtils; + import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; -import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.SpecialPlayerInventory; -import com.lishid.openinv.utils.UUIDUtils; public class OpenInvCommand implements CommandExecutor { @@ -153,7 +150,7 @@ public class OpenInvCommand implements CommandExecutor { openInvHistory.put(player.getUniqueId(), target.getUniqueId()); // Get the inventory and open it - SpecialPlayerInventory inventory = plugin.getPlayerInventory(target, true); + ISpecialPlayerInventory inventory = plugin.getPlayerInventory(target, true); player.openInventory(inventory.getBukkitInventory()); } } diff --git a/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java similarity index 100% rename from src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java rename to plugin/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java diff --git a/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java similarity index 100% rename from src/main/java/com/lishid/openinv/commands/SearchInvCommand.java rename to plugin/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java diff --git a/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java similarity index 100% rename from src/main/java/com/lishid/openinv/commands/SilentChestCommand.java rename to plugin/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java diff --git a/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java similarity index 100% rename from src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java rename to plugin/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java b/plugin/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java similarity index 100% rename from src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java rename to plugin/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java b/plugin/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java similarity index 100% rename from src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java rename to plugin/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java diff --git a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java b/plugin/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java similarity index 90% rename from src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java rename to plugin/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java index 22949a9..22495fa 100644 --- a/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java +++ b/plugin/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java @@ -16,6 +16,12 @@ package com.lishid.openinv.listeners; +import com.lishid.openinv.Configuration; +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.Permissions; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; + import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.block.Block; @@ -32,12 +38,6 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.scheduler.BukkitRunnable; -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.Configuration; -import com.lishid.openinv.internal.SpecialEnderChest; -import com.lishid.openinv.internal.SpecialPlayerInventory; - public class OpenInvPlayerListener implements Listener { private final OpenInv plugin; @@ -60,13 +60,13 @@ public class OpenInvPlayerListener implements Listener { return; } - SpecialPlayerInventory inventory = plugin.getPlayerInventory(player, false); + ISpecialPlayerInventory inventory = plugin.getPlayerInventory(player, false); if (inventory != null) { inventory.playerOnline(player); player.updateInventory(); } - SpecialEnderChest enderChest = plugin.getPlayerEnderChest(player, false); + ISpecialEnderChest enderChest = plugin.getPlayerEnderChest(player, false); if (enderChest != null) { enderChest.playerOnline(player); } @@ -78,16 +78,18 @@ public class OpenInvPlayerListener implements Listener { public void onPlayerQuit(PlayerQuitEvent event) { Player player = event.getPlayer(); - SpecialPlayerInventory inventory = plugin.getPlayerInventory(player, false); + ISpecialPlayerInventory inventory = plugin.getPlayerInventory(player, false); if (inventory != null) { - if (inventory.playerOffline()) { + inventory.playerOffline(); + if (inventory.isInUse()) { plugin.removeLoadedInventory(event.getPlayer()); } } - SpecialEnderChest enderChest = plugin.getPlayerEnderChest(player, false); + ISpecialEnderChest enderChest = plugin.getPlayerEnderChest(player, false); if (enderChest != null) { - if (enderChest.playerOffline()) { + enderChest.playerOffline(); + if (!enderChest.isInUse()) { plugin.removeLoadedEnderChest(event.getPlayer()); } } diff --git a/plugin/src/main/java/com/lishid/openinv/util/Cache.java b/plugin/src/main/java/com/lishid/openinv/util/Cache.java new file mode 100644 index 0000000..5a552b3 --- /dev/null +++ b/plugin/src/main/java/com/lishid/openinv/util/Cache.java @@ -0,0 +1,160 @@ +package com.lishid.openinv.util; + +import java.util.Comparator; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import com.google.common.collect.Multimap; +import com.google.common.collect.TreeMultimap; + +/** + * A minimal time-based cache implementation backed by a HashMap and TreeMultimap. + * + * @author Jikoo + */ +public class Cache { + + private final Map internal; + private final Multimap expiry; + private final long retention; + private final Function inUseCheck, postRemoval; + + /** + * Constructs a Cache with the specified retention duration, in use function, and post-removal function. + * + * @param retention duration after which keys are automatically invalidated if not in use + * @param inUseCheck Function used to check if a key is considered in use + * @param postRemoval Function used to perform any operations required when a key is invalidated + */ + public Cache(long retention, Function inUseCheck, Function postRemoval) { + this.internal = new HashMap(); + + this.expiry = TreeMultimap.create(new Comparator() { + @Override + public int compare(Long long1, Long long2) { + return long1.compareTo(long2); + } + }, + new Comparator() { + @Override + public int compare(K k1, K k2) { + return 0; + } + }); + + this.retention = retention; + this.inUseCheck = inUseCheck; + this.postRemoval = postRemoval; + } + + /** + * Set a key and value pair. Keys are unique. Using an existing key will cause the old value to + * be overwritten and the expiration timer to be reset. + * + * @param key key with which the specified value is to be associated + * @param value value to be associated with the specified key + */ + public void put(K key, V value) { + // Invalidate key - runs lazy check and ensures value won't be cleaned up early + invalidate(key); + + internal.put(key, value); + expiry.put(System.currentTimeMillis() + retention, key); + } + + /** + * Returns the value to which the specified key is mapped, or null if no value is mapped for the key. + * + * @param key the key whose associated value is to be returned + * @return the value to which the specified key is mapped, or null if no value is mapped for the key + */ + public V get(K key) { + // Run lazy check to clean cache + lazyCheck(); + + return internal.get(key); + } + + /** + * Returns true if the specified key is mapped to a value. + * + * @param key key to check if a mapping exists for + * @return true if a mapping exists for the specified key + */ + public boolean containsKey(K key) { + // Run lazy check to clean cache + lazyCheck(); + + return internal.containsKey(key); + } + + /** + * Forcibly invalidates a key, even if it is considered to be in use. + * + * @param key key to invalidate + */ + public void invalidate(K key) { + // Run lazy check to clean cache + lazyCheck(); + + if (!internal.containsKey(key)) { + // Value either not present or cleaned by lazy check. Either way, we're good + return; + } + + // Remove stored object + internal.remove(key); + + // Remove expiration entry - prevents more work later, plus prevents issues with values invalidating early + for (Iterator> iterator = expiry.entries().iterator(); iterator.hasNext();) { + if (key.equals(iterator.next().getValue())) { + iterator.remove(); + break; + } + } + } + + /** + * Forcibly invalidates all keys, even if they are considered to be in use. + */ + public void invalidateAll() { + for (V value : internal.values()) { + postRemoval.run(value); + } + expiry.clear(); + internal.clear(); + } + + /** + * Invalidate all expired keys that are not considered in use. If a key is expired but is + * considered in use by the provided Function, its expiration time is reset. + */ + private void lazyCheck() { + long now = System.currentTimeMillis(); + long nextExpiry = now + retention; + for (Iterator> iterator = expiry.entries().iterator(); iterator.hasNext();) { + Map.Entry entry = iterator.next(); + + if (entry.getKey() > now) { + break; + } + + iterator.remove(); + + if (inUseCheck.run(internal.get(entry.getValue()))) { + expiry.put(nextExpiry, entry.getValue()); + continue; + } + + V value = internal.remove(entry.getValue()); + + if (value == null) { + continue; + } + + postRemoval.run(value); + } + } + +} diff --git a/plugin/src/main/java/com/lishid/openinv/util/Function.java b/plugin/src/main/java/com/lishid/openinv/util/Function.java new file mode 100644 index 0000000..37894c1 --- /dev/null +++ b/plugin/src/main/java/com/lishid/openinv/util/Function.java @@ -0,0 +1,12 @@ +package com.lishid.openinv.util; + +/** + * Abstraction for some simple cache calls. + * + * @author Jikoo + */ +public abstract class Function { + + public abstract boolean run(V value); + +} diff --git a/src/main/java/com/lishid/openinv/utils/UUIDFetcher.java b/plugin/src/main/java/com/lishid/openinv/utils/UUIDFetcher.java similarity index 100% rename from src/main/java/com/lishid/openinv/utils/UUIDFetcher.java rename to plugin/src/main/java/com/lishid/openinv/utils/UUIDFetcher.java diff --git a/src/main/java/com/lishid/openinv/utils/UUIDUtils.java b/plugin/src/main/java/com/lishid/openinv/utils/UUIDUtils.java similarity index 100% rename from src/main/java/com/lishid/openinv/utils/UUIDUtils.java rename to plugin/src/main/java/com/lishid/openinv/utils/UUIDUtils.java diff --git a/src/main/resources/config.yml b/plugin/src/main/resources/config.yml similarity index 100% rename from src/main/resources/config.yml rename to plugin/src/main/resources/config.yml diff --git a/src/main/resources/plugin.yml b/plugin/src/main/resources/plugin.yml similarity index 96% rename from src/main/resources/plugin.yml rename to plugin/src/main/resources/plugin.yml index 78e279d..32c0457 100644 --- a/src/main/resources/plugin.yml +++ b/plugin/src/main/resources/plugin.yml @@ -1,45 +1,45 @@ -name: OpenInv -main: com.lishid.openinv.OpenInv -version: 2.4.0 -author: lishid -authors: [ShadowRanger] -description: > - This plugin allows you to open a player's inventory as a chest and interact with it in real time. -commands: - openinv: - aliases: [oi, inv, open] - description: Opens a player's inventory. - usage: | - / - Opens last person's inventory. - / - Opens a player's inventory. - openender: - aliases: [oe] - description: Opens a player's ender chest. - usage: | - / - Opens last person's ender chest. - / - Opens a player's ender chest. - searchinv: - aliases: [si] - description: Searches and lists players that have a specific item in their inventory. - usage: | - / [minAmount] - Item can be the Item ID or the CraftBukkit Item Name, minAmount is the minimum amount to be considered. - searchender: - aliases: [se] - description: Searches and lists players that have a specific item in their ender chest. - usage: | - / [minAmount] - Item can be the Item ID or the CraftBukkit Item Name, minAmount is the minimum amount to be considered. - toggleopeninv: - aliases: [toi, toggleoi, toggleinv] - description: Toggles the item openinv function. - usage: | - / [check] - Checks whether item openinv is enabled. - anychest: - aliases: [ac] - description: Toggles the any chest function, which allows opening of blocked chests. - usage: | - / [check] - Checks whether any chest is enabled. - silentchest: - aliases: [sc, silent] - description: Toggles the silent chest function, which hides the animation of a chest when opened or closed, and suppresses the sound. - usage: | - / [check] - Checks whether silent chest is enabled. \ No newline at end of file +name: OpenInv +main: com.lishid.openinv.OpenInv +version: ${openinv.version} +author: lishid +authors: [ShadowRanger] +description: > + This plugin allows you to open a player's inventory as a chest and interact with it in real time. +commands: + openinv: + aliases: [oi, inv, open] + description: Opens a player's inventory. + usage: | + / - Opens last person's inventory. + / - Opens a player's inventory. + openender: + aliases: [oe] + description: Opens a player's ender chest. + usage: | + / - Opens last person's ender chest. + / - Opens a player's ender chest. + searchinv: + aliases: [si] + description: Searches and lists players that have a specific item in their inventory. + usage: | + / [minAmount] - Item can be the Item ID or the CraftBukkit Item Name, minAmount is the minimum amount to be considered. + searchender: + aliases: [se] + description: Searches and lists players that have a specific item in their ender chest. + usage: | + / [minAmount] - Item can be the Item ID or the CraftBukkit Item Name, minAmount is the minimum amount to be considered. + toggleopeninv: + aliases: [toi, toggleoi, toggleinv] + description: Toggles the item openinv function. + usage: | + / [check] - Checks whether item openinv is enabled. + anychest: + aliases: [ac] + description: Toggles the any chest function, which allows opening of blocked chests. + usage: | + / [check] - Checks whether any chest is enabled. + silentchest: + aliases: [sc, silent] + description: Toggles the silent chest function, which hides the animation of a chest when opened or closed, and suppresses the sound. + usage: | + / [check] - Checks whether silent chest is enabled. diff --git a/pom.xml b/pom.xml index 647b723..8bd482c 100644 --- a/pom.xml +++ b/pom.xml @@ -1,55 +1,128 @@ - 4.0.0 - com.lishid - openinv - jar - 2.4.0 - OpenInv - http://dev.bukkit.org/bukkit-plugins/openinv/ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + com.lishid + openinv + pom + 1.0-SNAPSHOT + OpenInv + http://dev.bukkit.org/bukkit-plugins/openinv/ - - UTF-8 - + + UTF-8 + 3.0.0-SNAPSHOT + - - - bukkit-repo - https://hub.spigotmc.org/nexus/content/groups/public/ - - + - - - org.bukkit - craftbukkit - 1.11-R0.1-SNAPSHOT - provided - - + - - clean install - src/main/java - - - src/main/resources - true - - **/*.java - - - + + + reactorbuildfirst + + + !breakBuildProcess + + + + internal + plugin + + + + + latest + + + latest + true + + + + v1_11_R1 + + + + + all + + true + + + v1_11_R1 + + + + + + reactorbuildlast + + + !breakBuildProcess + + + + assembly + + + + + + + + spigot-repo + https://hub.spigotmc.org/nexus/content/groups/public/ + + + + + + + org.apache.maven.plugins + maven-shade-plugin + 2.4.3 + + + + *:* + + META-INF/maven/** + + + + + + package + + shade + + + + + + + maven-compiler-plugin + 3.5.1 + + 1.6 + 1.6 + + + + - - - maven-compiler-plugin - 2.3.2 - - 1.6 - 1.6 - - - - \ No newline at end of file diff --git a/v1_11_R1/pom.xml b/v1_11_R1/pom.xml new file mode 100644 index 0000000..bfbba58 --- /dev/null +++ b/v1_11_R1/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_11_R1 + OpenInvAdapter1_11_R1 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.spigotmc + spigot + 1.11-R0.1-SNAPSHOT + provided + + + + diff --git a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentChest.java similarity index 91% rename from src/main/java/com/lishid/openinv/internal/AnySilentChest.java rename to v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentChest.java index 27d86a9..ebe3624 100644 --- a/src/main/java/com/lishid/openinv/internal/AnySilentChest.java +++ b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentChest.java @@ -14,14 +14,14 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal; +package com.lishid.openinv.internal.v1_11_R1; import java.util.Iterator; -import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; -import org.bukkit.entity.Player; - import com.lishid.openinv.OpenInv; +import com.lishid.openinv.internal.IAnySilentChest; + +import org.bukkit.entity.Player; import net.minecraft.server.v1_11_R1.AxisAlignedBB; import net.minecraft.server.v1_11_R1.Block; @@ -38,7 +38,9 @@ import net.minecraft.server.v1_11_R1.TileEntity; import net.minecraft.server.v1_11_R1.TileEntityChest; import net.minecraft.server.v1_11_R1.World; -public class AnySilentChest { +import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; + +public class AnySilentChest implements IAnySilentChest { private final OpenInv plugin; @@ -46,7 +48,8 @@ public class AnySilentChest { this.plugin = plugin; } - public boolean isAnyChestNeeded(Player p, int x, int y, int z) { + @Override + public boolean isAnyChestNeeded(Player p, int x, int y, int z) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest BlockPosition position = new BlockPosition(x, y, z); EntityPlayer player = ((CraftPlayer) p).getHandle(); @@ -86,9 +89,9 @@ public class AnySilentChest { private boolean ocelotOnTop(World world, BlockPosition position) { Iterator iterator = world.a(EntityOcelot.class, - new AxisAlignedBB((double) position.getX(), (double) (position.getY() + 1), - (double) position.getZ(), (double) (position.getX() + 1), - (double) (position.getY() + 2), (double) (position.getZ() + 1))).iterator(); + new AxisAlignedBB(position.getX(), position.getY() + 1, + position.getZ(), position.getX() + 1, + position.getY() + 2, position.getZ() + 1)).iterator(); EntityOcelot entityOcelot; @@ -105,7 +108,8 @@ public class AnySilentChest { return true; } - public boolean activateChest(Player p, boolean anyChest, boolean silentChest, int x, int y, int z) { + @Override + public boolean activateChest(Player p, boolean anyChest, boolean silentChest, int x, int y, int z) { BlockPosition position = new BlockPosition(x, y, z); EntityPlayer player = ((CraftPlayer) p).getHandle(); World world = player.world; diff --git a/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/EnumDirectionList.java similarity index 92% rename from src/main/java/com/lishid/openinv/internal/EnumDirectionList.java rename to v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/EnumDirectionList.java index 36f19de..7236969 100644 --- a/src/main/java/com/lishid/openinv/internal/EnumDirectionList.java +++ b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/EnumDirectionList.java @@ -1,4 +1,4 @@ -package com.lishid.openinv.internal; +package com.lishid.openinv.internal.v1_11_R1; import java.util.Iterator; diff --git a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java similarity index 98% rename from src/main/java/com/lishid/openinv/internal/InventoryAccess.java rename to v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java index 2470e56..0dd1061 100644 --- a/src/main/java/com/lishid/openinv/internal/InventoryAccess.java +++ b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java @@ -14,7 +14,7 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal; +package com.lishid.openinv.internal.v1_11_R1; import java.lang.reflect.Field; diff --git a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java similarity index 97% rename from src/main/java/com/lishid/openinv/internal/PlayerDataManager.java rename to v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java index f764aed..0632b89 100644 --- a/src/main/java/com/lishid/openinv/internal/PlayerDataManager.java +++ b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java @@ -14,7 +14,7 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal; +package com.lishid.openinv.internal.v1_11_R1; import java.util.UUID; diff --git a/src/main/java/com/lishid/openinv/internal/SilentInventory.java b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentInventory.java similarity index 98% rename from src/main/java/com/lishid/openinv/internal/SilentInventory.java rename to v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentInventory.java index ea5020c..4786853 100644 --- a/src/main/java/com/lishid/openinv/internal/SilentInventory.java +++ b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentInventory.java @@ -1,4 +1,4 @@ -package com.lishid.openinv.internal; +package com.lishid.openinv.internal.v1_11_R1; import java.util.List; diff --git a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java similarity index 98% rename from src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java rename to v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java index 3b82d2f..45e53e2 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialEnderChest.java +++ b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java @@ -14,7 +14,7 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal; +package com.lishid.openinv.internal.v1_11_R1; import java.lang.reflect.Field; import java.util.List; diff --git a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java similarity index 99% rename from src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java rename to v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java index b857690..a19bfe4 100644 --- a/src/main/java/com/lishid/openinv/internal/SpecialPlayerInventory.java +++ b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java @@ -14,7 +14,7 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal; +package com.lishid.openinv.internal.v1_11_R1; import java.lang.reflect.Field; -- 2.49.1 From 4335b8dc2cbd2aeb4e97b84ba1c9144ef457c9d1 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 25 Nov 2016 16:42:06 -0500 Subject: [PATCH 069/253] Update plugin to jikoo/master - numerous fixes and changes * Added permissions to commands in plugin.yml * Removed item wand functionality - see 3549431fbc for reasoning * Changed a lot of player loading logic * Added config option DisableSaving - see Jikoo#6 * Fixed closing SilentChest not dropping item on cursor * Added SilentChest support for shulker boxes --- .../openinv/internal/IAnySilentChest.java | 40 -- .../openinv/internal/IAnySilentContainer.java | 3 +- .../openinv/internal/IInventoryAccess.java | 34 +- .../openinv/internal/IPlayerDataManager.java | 8 - .../openinv/internal/ISpecialEnderChest.java | 12 - .../internal/ISpecialPlayerInventory.java | 12 - .../openinv/internal/InternalAccessor.java | 47 +- .../com/lishid/openinv/ConfigUpdater.java | 163 ----- .../com/lishid/openinv/Configuration.java | 153 ---- .../main/java/com/lishid/openinv/OpenInv.java | 678 +++++++++++++----- .../openinv/OpenInvInventoryListener.java | 62 ++ .../lishid/openinv/OpenInvPlayerListener.java | 78 ++ .../java/com/lishid/openinv/Permissions.java | 47 +- .../openinv/commands/AnyChestCommand.java | 72 -- .../commands/AnyChestPluginCommand.java | 54 ++ .../openinv/commands/OpenEnderCommand.java | 161 ----- .../commands/OpenEnderPluginCommand.java | 132 ++++ .../openinv/commands/OpenInvCommand.java | 156 ---- .../commands/OpenInvPluginCommand.java | 145 ++++ .../openinv/commands/SearchEnderCommand.java | 66 -- .../openinv/commands/SearchInvCommand.java | 88 --- .../commands/SearchInvPluginCommand.java | 72 ++ .../openinv/commands/SilentChestCommand.java | 72 -- .../commands/SilentChestPluginCommand.java | 53 ++ .../commands/ToggleOpenInvCommand.java | 72 -- .../listeners/OpenInvEntityListener.java | 64 -- .../listeners/OpenInvInventoryListener.java | 44 -- .../listeners/OpenInvPlayerListener.java | 178 ----- .../com/lishid/openinv/utils/UUIDFetcher.java | 108 --- .../com/lishid/openinv/utils/UUIDUtils.java | 81 --- plugin/src/main/resources/config.yml | 6 - .../internal/v1_11_R1/AnySilentChest.java | 174 ----- .../internal/v1_11_R1/AnySilentContainer.java | 276 +++++++ .../internal/v1_11_R1/EnumDirectionList.java | 25 - .../internal/v1_11_R1/InventoryAccess.java | 95 +-- .../internal/v1_11_R1/PlayerDataManager.java | 69 +- .../v1_11_R1/SilentContainerChest.java | 47 ++ .../v1_11_R1/SilentContainerShulkerBox.java | 56 ++ .../internal/v1_11_R1/SilentInventory.java | 183 ----- .../internal/v1_11_R1/SpecialEnderChest.java | 98 ++- .../v1_11_R1/SpecialPlayerInventory.java | 321 ++++----- 41 files changed, 1829 insertions(+), 2476 deletions(-) delete mode 100644 internal/src/main/java/com/lishid/openinv/internal/IAnySilentChest.java delete mode 100644 plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java delete mode 100644 plugin/src/main/java/com/lishid/openinv/Configuration.java create mode 100644 plugin/src/main/java/com/lishid/openinv/OpenInvInventoryListener.java create mode 100644 plugin/src/main/java/com/lishid/openinv/OpenInvPlayerListener.java delete mode 100644 plugin/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java create mode 100644 plugin/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java delete mode 100644 plugin/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java create mode 100644 plugin/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java delete mode 100644 plugin/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java create mode 100644 plugin/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java delete mode 100644 plugin/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java delete mode 100644 plugin/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java create mode 100644 plugin/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java delete mode 100644 plugin/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java create mode 100644 plugin/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java delete mode 100644 plugin/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java delete mode 100644 plugin/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java delete mode 100644 plugin/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java delete mode 100644 plugin/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java delete mode 100644 plugin/src/main/java/com/lishid/openinv/utils/UUIDFetcher.java delete mode 100644 plugin/src/main/java/com/lishid/openinv/utils/UUIDUtils.java delete mode 100644 plugin/src/main/resources/config.yml delete mode 100644 v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentChest.java create mode 100644 v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java delete mode 100644 v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/EnumDirectionList.java create mode 100644 v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerChest.java create mode 100644 v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerShulkerBox.java delete mode 100644 v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentInventory.java diff --git a/internal/src/main/java/com/lishid/openinv/internal/IAnySilentChest.java b/internal/src/main/java/com/lishid/openinv/internal/IAnySilentChest.java deleted file mode 100644 index b109b12..0000000 --- a/internal/src/main/java/com/lishid/openinv/internal/IAnySilentChest.java +++ /dev/null @@ -1,40 +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; - -import org.bukkit.block.Block; -import org.bukkit.entity.Player; - -/** - * @deprecated Use {@link IAnySilentContainer} - */ -@Deprecated -public interface IAnySilentChest { - - /** - * @deprecated Use {@link IAnySilentContainer#activateContainer(Player, boolean, Block)}. - */ - @Deprecated - public boolean activateChest(Player player, boolean anychest, boolean silentchest, int x, int y, int z); - - /** - * @deprecated Use {@link IAnySilentContainer#isAnyContainerNeeded(Player, Block)}. - */ - @Deprecated - public boolean isAnyChestNeeded(Player player, int x, int y, int z); - -} diff --git a/internal/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java b/internal/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java index a7b6802..8f97e18 100644 --- a/internal/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java +++ b/internal/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java @@ -3,8 +3,7 @@ package com.lishid.openinv.internal; import org.bukkit.block.Block; import org.bukkit.entity.Player; -@SuppressWarnings("deprecation") -public interface IAnySilentContainer extends IAnySilentChest { +public interface IAnySilentContainer { /** * Checks if the given block is a container which can be unblocked or silenced. diff --git a/internal/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java b/internal/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java index 16ae2a4..f48381e 100644 --- a/internal/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java +++ b/internal/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java @@ -16,18 +16,42 @@ package com.lishid.openinv.internal; -import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.Inventory; public interface IInventoryAccess { /** - * Check if an entity has permission to modify the contents of an inventory. + * Check if an Inventory is an ISpecialPlayerInventory implementation. * * @param inventory the Inventory - * @param player the HumanEntity - * @return true if the HumanEntity can modify the Inventory + * @return true if the Inventory is backed by an ISpecialPlayerInventory */ - public boolean check(Inventory inventory, HumanEntity player); + public boolean isSpecialPlayerInventory(Inventory inventory); + + /** + * Gets an ISpecialPlayerInventory from an Inventory or null if the Inventory is not backed by + * an ISpecialPlayerInventory. + * + * @param inventory the Inventory + * @return the ISpecialPlayerInventory or null + */ + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory); + + /** + * Check if an Inventory is an ISpecialEnderChest implementation. + * + * @param inventory the Inventory + * @return true if the Inventory is backed by an ISpecialEnderChest + */ + public boolean isSpecialEnderChest(Inventory inventory); + + /** + * Gets an ISpecialEnderChest from an Inventory or null if the Inventory is not backed by an + * ISpecialEnderChest. + * + * @param inventory the Inventory + * @return the ISpecialEnderChest or null + */ + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory); } diff --git a/internal/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java b/internal/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java index d9738a6..bbcd68d 100644 --- a/internal/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java +++ b/internal/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java @@ -16,8 +16,6 @@ package com.lishid.openinv.internal; -import java.util.UUID; - import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; @@ -33,12 +31,6 @@ public interface IPlayerDataManager { */ public Player loadPlayer(OfflinePlayer offline); - /** - * @deprecated use {@link #loadPlayer(OfflinePlayer)} - */ - @Deprecated - public Player loadPlayer(UUID uuid); - /** * Gets a unique identifying string for an OfflinePlayer. * diff --git a/internal/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java b/internal/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java index 2b7c6cd..29489e1 100644 --- a/internal/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java +++ b/internal/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java @@ -35,23 +35,11 @@ public interface ISpecialEnderChest { */ public void setPlayerOnline(Player player); - /** - * @deprecated use {@link #setPlayerOnline(Player)} - */ - @Deprecated - public void playerOnline(Player player); - /** * Sets the Player associated with this ISpecialEnderChest offline. */ public void setPlayerOffline(); - /** - * @deprecated use {@link #setPlayerOffline()} - */ - @Deprecated - public void playerOffline(); - /** * Gets whether or not this ISpecialEnderChest is in use. * diff --git a/internal/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java b/internal/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java index 088ee5f..0ee9900 100644 --- a/internal/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java +++ b/internal/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java @@ -35,23 +35,11 @@ public interface ISpecialPlayerInventory { */ public void setPlayerOnline(Player player); - /** - * @deprecated use {@link #setPlayerOnline(Player)} - */ - @Deprecated - public void playerOnline(Player player); - /** * Sets the Player associated with this ISpecialPlayerInventory offline. */ public void setPlayerOffline(); - /** - * @deprecated use {@link #setPlayerOffline()} - */ - @Deprecated - public void playerOffline(); - /** * Gets whether or not this ISpecialPlayerInventory is in use. * diff --git a/internal/src/main/java/com/lishid/openinv/internal/InternalAccessor.java b/internal/src/main/java/com/lishid/openinv/internal/InternalAccessor.java index 01ea58d..5b4cbe5 100644 --- a/internal/src/main/java/com/lishid/openinv/internal/InternalAccessor.java +++ b/internal/src/main/java/com/lishid/openinv/internal/InternalAccessor.java @@ -17,8 +17,8 @@ package com.lishid.openinv.internal; import java.lang.reflect.Constructor; +import java.lang.reflect.Field; -import org.bukkit.Server; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; @@ -26,30 +26,19 @@ public class InternalAccessor { private final Plugin plugin; - private String version; + private final String version; private boolean supported = false; public InternalAccessor(Plugin 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 boolean initialize(Server server) { - String packageName = server.getClass().getPackage().getName(); + String packageName = plugin.getServer().getClass().getPackage().getName(); version = packageName.substring(packageName.lastIndexOf('.') + 1); try { Class.forName("com.lishid.openinv.internal." + version + ".PlayerDataManager"); - return (supported = true); - } catch (Exception e) { - return false; - } + supported = true; + } catch (Exception e) {} } /** @@ -101,15 +90,6 @@ public class InternalAccessor { return createObject(IAnySilentContainer.class, "AnySilentContainer"); } - /** - * @deprecated Use {@link #newAnySilentContainer()} - */ - @Deprecated - public IAnySilentChest newAnySilentChest() { - IAnySilentChest iAnySilentChest = createObject(IAnySilentChest.class, "AnySilentChest"); - return iAnySilentChest != null ? iAnySilentChest : newAnySilentContainer(); - } - /** * Creates an instance of the ISpecialPlayerInventory implementation for the given Player, or * null if the current version is unsupported. @@ -180,4 +160,21 @@ public class InternalAccessor { return null; } + public static T grabFieldOfTypeFromObject(Class type, Object object) { + // Use reflection to find the iinventory + Class clazz = object.getClass(); + T result = null; + for (Field f : clazz.getDeclaredFields()) { + f.setAccessible(true); + if (type.isAssignableFrom(f.getDeclaringClass())) { + try { + result = type.cast(f.get(object)); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + return result; + } + } diff --git a/plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java b/plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java deleted file mode 100644 index cf0772c..0000000 --- a/plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.lishid.openinv; - -import java.io.File; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; -import java.util.UUID; - -import org.bukkit.Material; -import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.configuration.file.FileConfiguration; - -import com.lishid.openinv.utils.UUIDUtils; - -public class ConfigUpdater { - - private final OpenInv plugin; - - private static final int CONFIG_VERSION = 2; - - public ConfigUpdater(OpenInv plugin) { - this.plugin = plugin; - } - - private int getConfigVersion() { - return plugin.getConfig().getInt("config-version", 1); - } - - private boolean isConfigOutdated() { - return getConfigVersion() < CONFIG_VERSION; - } - - public void checkForUpdates() { - if (isConfigOutdated()) { - plugin.getLogger().info("[Config] Update found! Performing update..."); - performUpdate(); - } else { - plugin.getLogger().info("[Config] Update not required."); - } - } - - private void performUpdate() { - // Update according to the right version - switch (getConfigVersion()) { - case 1: - updateConfig1To2(); - break; - } - } - - private void updateConfig1To2() { - FileConfiguration config = plugin.getConfig(); - - // Backup the old config file - File configFile = new File(plugin.getDataFolder(), "config.yml"); - File oldConfigFile = new File(plugin.getDataFolder(), "config_old.yml"); - - configFile.renameTo(oldConfigFile); - - if (configFile.exists()) { - configFile.delete(); - } - - plugin.getLogger().info("[Config] Backup of old config.yml file created."); - - // Get the old config settings - int itemOpenInvItemId = config.getInt("ItemOpenInvItemID", 280); - boolean notifySilentChest = config.getBoolean("NotifySilentChest", true); - boolean notifyAnyChest = config.getBoolean("NotifyAnyChest", true); - - Map anyChestToggles = null; - Map itemOpenInvToggles = null; - Map silentChestToggles = null; - - if (config.isSet("AnyChest")) { - anyChestToggles = updateToggles("AnyChest"); - } - - if (config.isSet("ItemOpenInv")) { - itemOpenInvToggles = updateToggles("ItemOpenInv"); - } - - if (config.isSet("SilentChest")) { - silentChestToggles = updateToggles("SilentChest"); - } - - // Clear the old config - for (String key : config.getKeys(false)) { - config.set(key, null); - } - - // Set the new config options - plugin.saveDefaultConfig(); - plugin.reloadConfig(); - - config = plugin.getConfig(); // Refresh the referenced plugin config - - config.set("config-version", 2); - config.set("items.open-inv", getMaterialById(itemOpenInvItemId).toString()); - config.set("notify.any-chest", notifyAnyChest); - config.set("notify.silent-chest", notifySilentChest); - - if (anyChestToggles != null && !anyChestToggles.isEmpty()) { - for (Map.Entry entry : anyChestToggles.entrySet()) { - config.set("toggles.any-chest." + entry.getKey(), entry.getValue()); - } - } - - if (itemOpenInvToggles != null && !itemOpenInvToggles.isEmpty()) { - for (Map.Entry entry : itemOpenInvToggles.entrySet()) { - config.set("toggles.items.open-inv." + entry.getKey(), entry.getValue()); - } - } - - if (silentChestToggles != null && !silentChestToggles.isEmpty()) { - for (Map.Entry entry : silentChestToggles.entrySet()) { - config.set("toggles.silent-chest." + entry.getKey(), entry.getValue()); - } - } - - // Save the new config - plugin.saveConfig(); - plugin.getLogger().info("[Config] Update complete."); - } - - private Map updateToggles(String sectionName) { - Map toggles = new HashMap(); - - ConfigurationSection section = plugin.getConfig().getConfigurationSection(sectionName); - Set keys = section.getKeys(false); - if (keys == null || keys.isEmpty()) { - return null; - } - - int total = keys.size(); - int converted = 0; - - for (String playerName : keys) { - UUID uuid = UUIDUtils.getPlayerUUID(playerName); - - if (uuid != null) { - boolean toggled = section.getBoolean(playerName + ".toggle", false); - toggles.put(uuid, toggled); - converted++; - } - } - - plugin.getLogger().info("[Config] Converted (" + converted + "/" + total + ") " + sectionName + " toggle player usernames to UUIDs."); - - return toggles; - } - - @SuppressWarnings("deprecation") - private Material getMaterialById(int id) { - Material material = Material.getMaterial(id); - - if (material == null) { - material = Material.STICK; - } - - return material; - } -} diff --git a/plugin/src/main/java/com/lishid/openinv/Configuration.java b/plugin/src/main/java/com/lishid/openinv/Configuration.java deleted file mode 100644 index 1a03d9a..0000000 --- a/plugin/src/main/java/com/lishid/openinv/Configuration.java +++ /dev/null @@ -1,153 +0,0 @@ -package com.lishid.openinv; - -import org.bukkit.Material; -import org.bukkit.entity.Player; - -public class Configuration { - - private final OpenInv plugin; - - private Material openInvItem; - private boolean notifySilentChest; - private boolean notifyAnyChest; - - public Configuration(OpenInv plugin) { - this.plugin = plugin; - - // Check for config updates - ConfigUpdater configUpdater = new ConfigUpdater(plugin); - configUpdater.checkForUpdates(); - - // Load the config settings - load(); - } - - /** - * Loads OpenInv's config settings. - */ - public void load() { - // OpenInv Item - if (!plugin.getConfig().isSet("items.open-inv")) { - saveToConfig("items.open-inv", "STICK"); - } - - String itemName = plugin.getConfig().getString("items.open-inv", "STICK"); - Material material = Material.getMaterial(itemName); - - if (material == null) { - plugin.getLogger().warning("OpenInv item '" + itemName + "' does not match to a valid item. Defaulting to stick."); - material = Material.STICK; - } - - openInvItem = material; - - // Other Values - notifySilentChest = plugin.getConfig().getBoolean("notify.silent-chest", true); - notifyAnyChest = plugin.getConfig().getBoolean("notify.any-chest", true); - } - - /** - * Reloads OpenInv's config settings. - */ - public void reload() { - load(); - } - - /** - * Saves a value to the plugin config at the specified path. - * - * @param path the path to set the value to - * @param value the value to set to the path - */ - private void saveToConfig(String path, Object value) { - plugin.getConfig().set(path, value); - plugin.saveConfig(); - } - - /** - * Returns the OpenInv item Material. - * - * @return the OpenInv item Material - */ - public Material getOpenInvItem() { - return openInvItem; - } - - /** - * Returns whether or not notify silent chest is enabled. - * - * @return true if notify silent chest is enabled; false otherwise - */ - public boolean notifySilentChest() { - return notifySilentChest; - } - - /** - * Returns whether or not notify any chest is enabled. - * - * @return true if notify any chest is enabled; false otherwise - */ - public boolean notifyAnyChest() { - return notifyAnyChest; - } - - /** - * Returns a player's item OpenInv status. - * - * @param player the player to get the item OpenInv status of - * @return the player's item OpenInv status - */ - public boolean getPlayerItemOpenInvStatus(Player player) { - return plugin.getConfig().getBoolean("toggles.items.open-inv." + player.getUniqueId(), false); - } - - /** - * Returns a player's any chest status. - * - * @param player the player to get the any chest status of - * @return the player's any chest status - */ - public boolean getPlayerAnyChestStatus(Player player) { - return plugin.getConfig().getBoolean("toggles.any-chest." + player.getUniqueId(), true); - } - - /** - * Sets a player's any chest status. - * - * @param player the player to set the any chest status of - * @param status the status to set with - */ - public void setPlayerAnyChestStatus(Player player, boolean status) { - saveToConfig("toggles.any-chest." + player.getUniqueId(), status); - } - - /** - * Sets a player's item OpenInv status. - * - * @param player the player to set the item OpenInv status of - * @param status the status to set with - */ - public void setPlayerItemOpenInvStatus(Player player, boolean status) { - saveToConfig("toggles.items.open-inv." + player.getUniqueId(), status); - } - - /** - * Returns a player's silent chest status. - * - * @param player the player to get the silent chest status of - * @return the player's silent chest status - */ - public boolean getPlayerSilentChestStatus(Player player) { - return plugin.getConfig().getBoolean("toggles.silent-chest." + player.getUniqueId(), false); - } - - /** - * Sets a player's silent chest status. - * - * @param player the player to set the silent chest status of - * @param status the status to set with - */ - public void setPlayerSilentChestStatus(Player player, boolean status) { - saveToConfig("toggles.silent-chest." + player.getUniqueId(), status); - } -} diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/src/main/java/com/lishid/openinv/OpenInv.java index 4474e2b..7bc80e5 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/src/main/java/com/lishid/openinv/OpenInv.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 lishid. All rights reserved. + * 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 @@ -17,57 +17,97 @@ package com.lishid.openinv; import java.util.HashMap; +import java.util.Iterator; +import java.util.List; import java.util.Map; -import java.util.UUID; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; -import com.lishid.openinv.commands.AnyChestCommand; -import com.lishid.openinv.commands.OpenEnderCommand; -import com.lishid.openinv.commands.OpenInvCommand; -import com.lishid.openinv.commands.SearchEnderCommand; -import com.lishid.openinv.commands.SearchInvCommand; -import com.lishid.openinv.commands.SilentChestCommand; -import com.lishid.openinv.commands.ToggleOpenInvCommand; -import com.lishid.openinv.internal.IAnySilentChest; +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.IAnySilentContainer; 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; -import com.lishid.openinv.listeners.OpenInvEntityListener; -import com.lishid.openinv.listeners.OpenInvInventoryListener; -import com.lishid.openinv.listeners.OpenInvPlayerListener; +import com.lishid.openinv.util.Cache; +import com.lishid.openinv.util.Function; -import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.command.PluginCommand; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.permissions.Permissible; +import org.bukkit.inventory.Inventory; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.scheduler.BukkitRunnable; +/** + * 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 final Map inventories = new HashMap(); + private final Map enderChests = new HashMap(); + private final Cache playerCache = new Cache(300000L, + new Function() { + @Override + public boolean run(Player value) { + String key = playerLoader.getPlayerDataID(value); + return inventories.containsKey(key) && inventories.get(key).isInUse() + || enderChests.containsKey(key) && enderChests.get(key).isInUse(); + } + }, + new Function() { + @Override + public boolean run(Player value) { + String key = playerLoader.getPlayerDataID(value); - private Configuration configuration; + // Check if inventory is stored, and if it is, remove it and eject all viewers + if (inventories.containsKey(key)) { + Inventory inv = inventories.remove(key).getBukkitInventory(); + for (HumanEntity entity : inv.getViewers()) { + entity.closeInventory(); + } + } + + // Check if ender chest is stored, and if it is, remove it and eject all viewers + if (enderChests.containsKey(key)) { + Inventory inv = enderChests.remove(key).getBukkitInventory(); + for (HumanEntity entity : inv.getViewers()) { + entity.closeInventory(); + } + } + + if (!OpenInv.this.disableSaving() && !value.isOnline()) { + value.saveData(); + } + return true; + } + }); private InternalAccessor accessor; private IPlayerDataManager playerLoader; private IInventoryAccess inventoryAccess; - private IAnySilentChest anySilentChest; + private IAnySilentContainer anySilentContainer; @Override public void onEnable() { - // Save the default config.yml if it doesn't already exist - saveDefaultConfig(); - - // Config - configuration = new Configuration(this); - + // Get plugin manager PluginManager pm = getServer().getPluginManager(); + accessor = new InternalAccessor(this); // Version check - if (!accessor.initialize(getServer())) { + if (!accessor.isSupported()) { getLogger().info("Your version of CraftBukkit (" + accessor.getVersion() + ") is not supported."); getLogger().info("Please look for an updated version of OpenInv."); pm.disablePlugin(this); @@ -76,195 +116,473 @@ public class OpenInv extends JavaPlugin { playerLoader = accessor.newPlayerDataManager(); inventoryAccess = accessor.newInventoryAccess(); - anySilentChest = accessor.newAnySilentChest(); + anySilentContainer = accessor.newAnySilentContainer(); + + FileConfiguration config = getConfig(); + boolean dirtyConfig = false; + if (!config.isBoolean("NotifySilentChest")) { + config.set("NotifySilentChest", true); + dirtyConfig = true; + } + if (!config.isBoolean("NotifyAnyChest")) { + config.set("NotifyAnyChest", true); + dirtyConfig = true; + } + if (!config.isBoolean("DisableSaving")) { + config.set("DisableSaving", false); + dirtyConfig = true; + } + config.addDefault("NotifySilentChest", true); + config.addDefault("NotifyAnyChest", true); + config.addDefault("DisableSaving", false); + config.options().copyDefaults(true); + if (dirtyConfig) { + saveConfig(); + } - // Register the plugin's events pm.registerEvents(new OpenInvPlayerListener(this), this); - pm.registerEvents(new OpenInvEntityListener(this), this); pm.registerEvents(new OpenInvInventoryListener(this), this); - // Register the plugin's commands - getCommand("openinv").setExecutor(new OpenInvCommand(this)); - getCommand("openender").setExecutor(new OpenEnderCommand(this)); - getCommand("searchinv").setExecutor(new SearchInvCommand(this)); - getCommand("searchender").setExecutor(new SearchEnderCommand()); - getCommand("toggleopeninv").setExecutor(new ToggleOpenInvCommand(this)); - getCommand("anychest").setExecutor(new AnyChestCommand(this)); - getCommand("silentchest").setExecutor(new SilentChestCommand(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)); + + } + + @Override + public void onDisable() { + + if (this.disableSaving()) { + return; + } + + this.playerCache.invalidateAll(); } /** - * Returns the plugin Configuration. - * - * @return the plugin Configuration + * Checks if the server version is supported by OpenInv. + * + * @return true if the server version is supported */ - public Configuration getConfiguration() { - return configuration; + public boolean isSupportedVersion() { + return accessor.isSupported(); } /** - * Returns an instance of PlayerDataManager. - * - * @return an instance of PlayerDataManager - */ - public IPlayerDataManager getPlayerLoader() { - return playerLoader; - } - - /** - * Returns an instance of InventoryAccess. - * - * @return an instance of InventoryAccess + * Gets the active IInventoryAccess implementation. May return null if the server version is + * unsupported. + * + * @return the IInventoryAccess */ public IInventoryAccess getInventoryAccess() { - return inventoryAccess; + return this.inventoryAccess; } /** - * Returns an instance of AnySilentChest. - * - * @return an instance of AnySilentChest + * Gets the active ISilentContainer implementation. May return null if the server version is + * unsupported. + * + * @return the ISilentContainer */ - public IAnySilentChest getAnySilentChest() { - return anySilentChest; + public IAnySilentContainer getAnySilentContainer() { + return this.anySilentContainer; } /** - * Returns a player's SpecialPlayerInventory. - * - * @param player the player to get the SpecialPlayerInventory of - * @param createIfNull whether or not to create it if it doesn't exist - * @return the player's SpecialPlayerInventory or null + * Gets an ISpecialPlayerInventory for the given Player. + * + * @param player the Player + * @param online true if the Player is currently online + * @return the ISpecialPlayerInventory */ - public ISpecialPlayerInventory getPlayerInventory(Player player, boolean createIfNull) { - ISpecialPlayerInventory inventory = inventories.get(player.getUniqueId()); + public ISpecialPlayerInventory getInventory(Player player, boolean online) { + String id = playerLoader.getPlayerDataID(player); + if (inventories.containsKey(id)) { + return inventories.get(id); + } + ISpecialPlayerInventory inv = accessor.newSpecialPlayerInventory(player, online); + inventories.put(id, inv); + playerCache.put(id, player); + return inv; + } - if (inventory == null && createIfNull) { - inventory = accessor.newSpecialPlayerInventory(player, !player.isOnline()); - inventories.put(player.getUniqueId(), inventory); + /** + * Gets an ISpecialEnderChest for the given Player. + * + * @param player the Player + * @param online true if the Player is currently online + * @return the ISpecialEnderChest + */ + public ISpecialEnderChest getEnderChest(Player player, boolean online) { + String id = playerLoader.getPlayerDataID(player); + if (enderChests.containsKey(id)) { + return enderChests.get(id); + } + ISpecialEnderChest inv = accessor.newSpecialEnderChest(player, online); + enderChests.put(id, inv); + playerCache.put(id, player); + return inv; + } + + /** + * Forcibly unload a cached Player's data. + * + * @param player the OfflinePlayer to unload + */ + public void unload(OfflinePlayer player) { + this.playerCache.invalidate(this.playerLoader.getPlayerDataID(player)); + } + + /** + * Check the configuration value for whether or not OpenInv saves player data when unloading + * players. This is exclusively for users who do not allow editing of inventories, only viewing, + * and wish to prevent any possibility of bugs such as lishid#40. If true, OpenInv will not ever + * save any edits made to players. + * + * @return false unless configured otherwise + */ + public boolean disableSaving() { + return getConfig().getBoolean("DisableSaving", false); + } + + /** + * Check the configuration value for whether or not OpenInv displays a notification to the user + * when a container is activated with SilentChest. + * + * @return true unless configured otherwise + */ + public boolean notifySilentChest() { + return getConfig().getBoolean("NotifySilentChest", true); + } + + /** + * Check the configuration value for whether or not OpenInv displays a notification to the user + * when a container is activated with AnyChest. + * + * @return true unless configured otherwise + */ + public boolean notifyAnyChest() { + return getConfig().getBoolean("NotifyAnyChest", true); + } + + /** + * Gets a player's SilentChest setting. + * + * @param player the OfflinePlayer + * @return true if SilentChest is enabled + */ + public boolean getPlayerSilentChestStatus(OfflinePlayer player) { + return getConfig().getBoolean("SilentChest." + playerLoader.getPlayerDataID(player) + ".toggle", false); + } + + /** + * Sets a player's SilentChest setting. + * + * @param player the OfflinePlayer + * @param status the status + */ + public void setPlayerSilentChestStatus(OfflinePlayer player, boolean status) { + getConfig().set("SilentChest." + playerLoader.getPlayerDataID(player) + ".toggle", status); + saveConfig(); + } + + /** + * Gets the provided player's AnyChest setting. + * + * @param player the OfflinePlayer + * @return true if AnyChest is enabled + */ + public boolean getPlayerAnyChestStatus(OfflinePlayer player) { + return getConfig().getBoolean("AnyChest." + playerLoader.getPlayerDataID(player) + ".toggle", true); + } + + /** + * Sets a player's AnyChest setting. + * + * @param player the OfflinePlayer + * @param status the status + */ + public void setPlayerAnyChestStatus(OfflinePlayer player, boolean status) { + getConfig().set("AnyChest." + playerLoader.getPlayerDataID(player) + ".toggle", status); + saveConfig(); + } + + /** + * Get an OfflinePlayer by name. + *

+ * Note: This method is potentially very heavily blocking. It should not ever be called on the + * main thread, and if it is, a stack trace will be displayed alerting server owners to the + * call. + * + * @param name the name of the Player + * @return the OfflinePlayer with the closest matching name or null if no players have ever logged in + */ + public OfflinePlayer matchPlayer(String name) { + + // Warn if called on the main thread - if we resort to searching offline players, this may take several seconds. + if (getServer().isPrimaryThread()) { + getLogger().warning("Call to OpenInv#matchPlayer made on the main thread!"); + getLogger().warning("This can cause the server to hang, potentially severely."); + getLogger().warning("Trace:"); + for (StackTraceElement element : new Throwable().fillInStackTrace().getStackTrace()) { + getLogger().warning(element.toString()); + } } - return inventory; - } - - /** - * Returns a player's SpecialEnderChest. - * - * @param player the player to get the SpecialEnderChest of - * @param createIfNull whether or not to create it if it doesn't exist - * @return the player's SpecialEnderChest or null - */ - public ISpecialEnderChest getPlayerEnderChest(Player player, boolean createIfNull) { - ISpecialEnderChest enderChest = enderChests.get(player.getUniqueId()); - - if (enderChest == null && createIfNull) { - enderChest = accessor.newSpecialEnderChest(player, player.isOnline()); - enderChests.put(player.getUniqueId(), enderChest); + // Ensure name is valid if server is in online mode to avoid unnecessary searching + if (getServer().getOnlineMode() && !name.matches("[a-zA-Z0-9_]{3,16}")) { + return null; } - return enderChest; - } + OfflinePlayer player = getServer().getPlayerExact(name); - /** - * Removes a player's loaded inventory if it exists. - * - * @param player the player to remove the loaded inventory of - */ - public void removeLoadedInventory(Player player) { - if (inventories.containsKey(player.getUniqueId())) { - inventories.remove(player.getUniqueId()); + if (player != null) { + return player; } - } - /** - * Removes a player's loaded ender chest if it exists. - * - * @param player the player to remove the loaded ender chest of - */ - public void removeLoadedEnderChest(Player player) { - if (enderChests.containsKey(player.getUniqueId())) { - enderChests.remove(player.getUniqueId()); + player = getServer().getOfflinePlayer(name); + + /* + * Compatibility: Pre-UUID, getOfflinePlayer always returns an OfflinePlayer. Post-UUID, + * getOfflinePlayer will return null if no matching player is found. To preserve + * compatibility, only return the player if they have played before. Ignoring current online + * status is fine, they'd have been found by getPlayerExact otherwise. + */ + if (player != null && player.hasPlayedBefore()) { + return player; } - } - /** - * Logs a message to console. - * - * @param text the message to log - */ - public void log(String text) { - getLogger().info(text); - } + player = getServer().getPlayer(name); - /** - * Logs a Throwable to console. - * - * @param e the Throwable to log - */ - public void log(Throwable e) { - getLogger().severe(e.toString()); - e.printStackTrace(); - } + if (player != null) { + return player; + } - /** - * Sends an OpenInv message to a player. - * - * @param sender the CommandSender to message - * @param message the message to send - */ - public static void sendMessage(CommandSender sender, String message) { - sender.sendMessage(ChatColor.AQUA + "[OpenInv] " + ChatColor.WHITE + message); - } - - /** - * Outputs OpenInv help information to a CommandSender. - * - * @param sender the CommandSender to show help to - */ - public static void showHelp(CommandSender sender) { - sender.sendMessage(ChatColor.GREEN + "/openinv - Opens a player's inventory."); - sender.sendMessage(ChatColor.GREEN + " (aliases: oi, inv, open)"); - - sender.sendMessage(ChatColor.GREEN + "/openender - Opens a player's ender chest."); - sender.sendMessage(ChatColor.GREEN + " (aliases: oe)"); - - sender.sendMessage(ChatColor.GREEN + "/searchinv [minAmount] -"); - sender.sendMessage(ChatColor.GREEN + " Searches and lists players that have a specific item in their inventory."); - sender.sendMessage(ChatColor.GREEN + " (aliases: si)"); - - sender.sendMessage(ChatColor.GREEN + "/searchender [minAmount] -"); - sender.sendMessage(ChatColor.GREEN + " Searches and lists players that have a specific item in their ender chest."); - sender.sendMessage(ChatColor.GREEN + " (aliases: se)"); - - sender.sendMessage(ChatColor.GREEN + "/toggleopeninv - Toggles the item openinv function."); - sender.sendMessage(ChatColor.GREEN + " (aliases: toi, toggleoi, toggleinv)"); - - sender.sendMessage(ChatColor.GREEN + "/anychest - Toggles the any chest function."); - sender.sendMessage(ChatColor.GREEN + " (aliases: ac)"); - - sender.sendMessage(ChatColor.GREEN + "/silentchest - Toggles the silent chest function."); - sender.sendMessage(ChatColor.GREEN + " (aliases: sc, silent)"); - } - - /** - * Returns whether or not a player has a permission. - * - * @param player the player to check - * @param permission the permission node to check for - * @return true if the player has the permission; false otherwise - */ - 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; + int bestMatch = Integer.MAX_VALUE; + for (OfflinePlayer offline : getServer().getOfflinePlayers()) { + if (offline.getName() == null) { + // Loaded by UUID only, name has never been looked up. + continue; } - perm += parts[i] + "."; + // Compatibility: Lang3 is only bundled with 1.8+ + int currentMatch = org.apache.commons.lang.StringUtils.getLevenshteinDistance(name, offline.getName()); + + if (currentMatch == 0) { + return offline; + } + + if (currentMatch < bestMatch) { + bestMatch = currentMatch; + player = offline; + } } - return player.hasPermission(permission); + // Only null if no players have played ever, otherwise even the worst match will do. + return player; } + + /** + * Load a Player from an OfflinePlayer. May return null under some circumstances. + * + * @param offline the OfflinePlayer to load a Player for + * @return the Player + */ + public Player loadPlayer(final OfflinePlayer offline) { + + if (offline == null) { + return null; + } + + String key = this.playerLoader.getPlayerDataID(offline); + if (this.playerCache.containsKey(key)) { + return this.playerCache.get(key); + } + + Player loaded; + + if (offline.isOnline()) { + loaded = offline.getPlayer(); + this.playerCache.put(key, loaded); + return loaded; + } + + if (Bukkit.isPrimaryThread()) { + return this.playerLoader.loadPlayer(offline); + } + + Future future = Bukkit.getScheduler().callSyncMethod(this, + new Callable() { + @Override + public Player call() throws Exception { + return playerLoader.loadPlayer(offline); + } + }); + + int ticks = 0; + while (!future.isDone() && !future.isCancelled() && ticks < 10) { + ++ticks; + try { + Thread.sleep(50L); + } catch (InterruptedException e) { + e.printStackTrace(); + return null; + } + } + + if (!future.isDone() || future.isCancelled()) { + return null; + } + + try { + loaded = future.get(); + } catch (InterruptedException e) { + e.printStackTrace(); + return null; + } catch (ExecutionException e) { + e.printStackTrace(); + return null; + } + + if (loaded != null) { + this.playerCache.put(key, loaded); + } + + return loaded; + } + + /** + * Method for handling a Player coming online. + * + * @param player the Player + */ + public void setPlayerOnline(final Player player) { + + String key = this.playerLoader.getPlayerDataID(player); + + // Check if the player is cached. If not, neither of their inventories is open. + if (!this.playerCache.containsKey(key)) { + return; + } + + this.playerCache.put(key, player); + + if (this.inventories.containsKey(key)) { + this.inventories.get(key).setPlayerOnline(player); + new BukkitRunnable() { + @Override + public void run() { + if (player.isOnline()) { + player.updateInventory(); + } + } + }.runTask(this); + } + + if (this.enderChests.containsKey(key)) { + this.enderChests.get(key).setPlayerOnline(player); + } + } + + /** + * Method for handling a Player going offline. + * + * @param player the Player + */ + public void setPlayerOffline(final Player player) { + + String key = this.playerLoader.getPlayerDataID(player); + + // Check if the player is cached. If not, neither of their inventories is open. + if (!this.playerCache.containsKey(key)) { + return; + } + + if (this.inventories.containsKey(key)) { + this.inventories.get(key).setPlayerOffline(); + } + + if (this.enderChests.containsKey(key)) { + this.enderChests.get(key).setPlayerOffline(); + } + } + + /** + * Evicts all viewers lacking cross-world permissions from a Player's inventory. + * + * @param player the Player + */ + public void changeWorld(final Player player) { + + String key = this.playerLoader.getPlayerDataID(player); + + // Check if the player is cached. If not, neither of their inventories is open. + if (!this.playerCache.containsKey(key)) { + return; + } + + if (this.inventories.containsKey(key)) { + Iterator iterator = this.inventories.get(key).getBukkitInventory().getViewers().iterator(); + while (iterator.hasNext()) { + HumanEntity human = iterator.next(); + // If player has permission or is in the same world, allow continued access + // Just in case, also allow null worlds. + if (Permissions.CROSSWORLD.hasPermission(human) || human.getWorld() == null + || human.getWorld().equals(player.getWorld())) { + continue; + } + human.closeInventory(); + } + } + + if (this.enderChests.containsKey(key)) { + Iterator iterator = this.enderChests.get(key).getBukkitInventory().getViewers().iterator(); + while (iterator.hasNext()) { + HumanEntity human = iterator.next(); + if (Permissions.CROSSWORLD.hasPermission(human) || human.getWorld() == null + || human.getWorld().equals(player.getWorld())) { + continue; + } + human.closeInventory(); + } + } + } + + /** + * Displays all applicable help for OpenInv commands. + * + * @param player the Player to help + */ + public void showHelp(Player player) { + // Get registered commands + for (String commandName : this.getDescription().getCommands().keySet()) { + PluginCommand command = this.getCommand(commandName); + + // Ensure command is successfully registered and player can use it + if (command == null || !command.testPermissionSilent(player)) { + continue; + } + + // Send usage + player.sendMessage(command.getUsage()); + + List aliases = command.getAliases(); + if (aliases.isEmpty()) { + continue; + } + + // Assemble alias list + StringBuilder aliasBuilder = new StringBuilder(" (aliases: "); + for (String alias : aliases) { + aliasBuilder.append(alias).append(", "); + } + aliasBuilder.delete(aliasBuilder.length() - 2, aliasBuilder.length()).append(')'); + + // Send all aliases + player.sendMessage(aliasBuilder.toString()); + } + } + } diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInvInventoryListener.java b/plugin/src/main/java/com/lishid/openinv/OpenInvInventoryListener.java new file mode 100644 index 0000000..f9eba2c --- /dev/null +++ b/plugin/src/main/java/com/lishid/openinv/OpenInvInventoryListener.java @@ -0,0 +1,62 @@ +/* + * 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 org.bukkit.entity.HumanEntity; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryDragEvent; +import org.bukkit.event.player.PlayerChangedWorldEvent; +import org.bukkit.inventory.Inventory; + +public class OpenInvInventoryListener implements Listener { + + private final OpenInv plugin; + + public OpenInvInventoryListener(OpenInv plugin) { + this.plugin = plugin; + } + + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + public void onInventoryClick(InventoryClickEvent event) { + if (cancelInteract(event.getWhoClicked(), event.getInventory())) { + event.setCancelled(true); + } + } + + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + public void onInventoryDrag(InventoryDragEvent event) { + if (cancelInteract(event.getWhoClicked(), event.getInventory())) { + event.setCancelled(true); + } + } + + private boolean cancelInteract(HumanEntity entity, Inventory inventory) { + return plugin.getInventoryAccess().isSpecialPlayerInventory(inventory) + && !Permissions.EDITINV.hasPermission(entity) + || plugin.getInventoryAccess().isSpecialEnderChest(inventory) + && !Permissions.EDITENDER.hasPermission(entity); + } + + @EventHandler + public void onWorldChange(PlayerChangedWorldEvent event) { + plugin.changeWorld(event.getPlayer()); + } + +} diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInvPlayerListener.java b/plugin/src/main/java/com/lishid/openinv/OpenInvPlayerListener.java new file mode 100644 index 0000000..d0c65ff --- /dev/null +++ b/plugin/src/main/java/com/lishid/openinv/OpenInvPlayerListener.java @@ -0,0 +1,78 @@ +/* + * 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 org.bukkit.entity.Player; +import org.bukkit.event.Event.Result; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +public class OpenInvPlayerListener implements Listener { + + private final OpenInv plugin; + + public OpenInvPlayerListener(OpenInv plugin) { + this.plugin = plugin; + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onPlayerJoin(final PlayerJoinEvent event) { + plugin.setPlayerOnline(event.getPlayer()); + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onPlayerQuit(PlayerQuitEvent event) { + plugin.setPlayerOffline(event.getPlayer()); + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onPlayerInteract(PlayerInteractEvent event) { + if (event.getAction() != Action.RIGHT_CLICK_BLOCK || event.getPlayer().isSneaking() + || event.useInteractedBlock() == Result.DENY + || !plugin.getAnySilentContainer().isAnySilentContainer(event.getClickedBlock())) { + return; + } + + Player player = event.getPlayer(); + boolean anychest = Permissions.ANYCHEST.hasPermission(player) && plugin.getPlayerAnyChestStatus(player); + boolean needsAnyChest = plugin.getAnySilentContainer().isAnyContainerNeeded(player, event.getClickedBlock()); + + if (!anychest && needsAnyChest) { + return; + } + + boolean silentchest = Permissions.SILENT.hasPermission(player) && plugin.getPlayerSilentChestStatus(player); + + // If anychest or silentchest is active + if ((anychest || silentchest) && plugin.getAnySilentContainer().activateContainer(player, silentchest, event.getClickedBlock())) { + if (silentchest && plugin.notifySilentChest() && needsAnyChest && plugin.notifyAnyChest()) { + player.sendMessage("You are opening a blocked container silently."); + } else if (silentchest && plugin.notifySilentChest()) { + player.sendMessage("You are opening a container silently."); + } else if (needsAnyChest && plugin.notifyAnyChest()) { + player.sendMessage("You are opening a blocked container."); + } + event.setCancelled(true); + } + } + +} diff --git a/plugin/src/main/java/com/lishid/openinv/Permissions.java b/plugin/src/main/java/com/lishid/openinv/Permissions.java index 0577a51..b08fc6a 100644 --- a/plugin/src/main/java/com/lishid/openinv/Permissions.java +++ b/plugin/src/main/java/com/lishid/openinv/Permissions.java @@ -1,19 +1,38 @@ package com.lishid.openinv; -public final class Permissions { +import org.bukkit.permissions.Permissible; - private Permissions() {} +public enum Permissions { + + OPENINV("OpenInv.openinv"), + OVERRIDE("OpenInv.override"), + EXEMPT("OpenInv.exempt"), + CROSSWORLD("OpenInv.crossworld"), + SILENT("OpenInv.silent"), + ANYCHEST("OpenInv.anychest"), + ENDERCHEST("OpenInv.openender"), + ENDERCHEST_ALL("OpenInv.openenderall"), + SEARCH("OpenInv.search"), + EDITINV("OpenInv.editinv"), + EDITENDER("OpenInv.editender"), + OPENSELF("OpenInv.openself"); + + private final String permission; + + private Permissions(String permission) { + this.permission = permission; + } + + public boolean hasPermission(Permissible permissible) { + String[] parts = permission.split("\\."); + String perm = ""; + for (int i = 0; i < parts.length; i++) { + if (permissible.hasPermission(perm + "*")) { + return true; + } + perm += parts[i] + "."; + } + return permissible.hasPermission(permission); + } - public static final String PERM_OPENINV = "OpenInv.openinv"; - public static final String PERM_OVERRIDE = "OpenInv.override"; - public static final String PERM_EXEMPT = "OpenInv.exempt"; - public static final String PERM_CROSSWORLD = "OpenInv.crossworld"; - public static final String PERM_SILENT = "OpenInv.silent"; - public static final String PERM_ANYCHEST = "OpenInv.anychest"; - public static final String PERM_ENDERCHEST = "OpenInv.openender"; - public static final String PERM_ENDERCHEST_ALL = "OpenInv.openenderall"; - public static final String PERM_SEARCH = "OpenInv.search"; - public static final String PERM_EDITINV = "OpenInv.editinv"; - public static final String PERM_EDITENDER = "OpenInv.editender"; - public static final String PERM_OPENSELF = "OpenInv.openself"; } diff --git a/plugin/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java deleted file mode 100644 index 1cfdd85..0000000 --- a/plugin/src/main/java/com/lishid/openinv/commands/AnyChestCommand.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (C) 2011-2016 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.commands; - -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.Configuration; - -public class AnyChestCommand implements CommandExecutor { - - private final OpenInv plugin; - private final Configuration configuration; - - public AnyChestCommand(OpenInv plugin) { - this.plugin = plugin; - configuration = plugin.getConfiguration(); - } - - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (command.getName().equalsIgnoreCase("anychest")) { - if (!(sender instanceof Player)) { - sender.sendMessage(ChatColor.RED + "You can't use this command from the console."); - return true; - } - - if (!OpenInv.hasPermission(sender, Permissions.PERM_ANYCHEST)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to use any chest."); - return true; - } - - Player player = (Player) sender; - - if (args.length > 0) { - if (args[0].equalsIgnoreCase("check")) { - String status = configuration.getPlayerAnyChestStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; - OpenInv.sendMessage(player, "Any Chest is " + status + ChatColor.RESET + "."); - return true; - } - } - - configuration.setPlayerAnyChestStatus(player, !configuration.getPlayerAnyChestStatus(player)); - - String status = configuration.getPlayerAnyChestStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; - OpenInv.sendMessage(player, "Any Chest is now " + status + ChatColor.RESET + "."); - - return true; - } - - return false; - } -} diff --git a/plugin/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java new file mode 100644 index 0000000..3036f30 --- /dev/null +++ b/plugin/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java @@ -0,0 +1,54 @@ +/* + * 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.commands; + +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import com.lishid.openinv.OpenInv; + +public class AnyChestPluginCommand implements CommandExecutor { + + private final OpenInv plugin; + + public AnyChestPluginCommand(OpenInv plugin) { + this.plugin = plugin; + } + + 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 && args[0].equalsIgnoreCase("check")) { + sender.sendMessage("AnyChest is " + (plugin.getPlayerAnyChestStatus(player) ? "ON" : "OFF") + "."); + return true; + } + + plugin.setPlayerAnyChestStatus(player, !plugin.getPlayerAnyChestStatus(player)); + sender.sendMessage("AnyChest is now " + (plugin.getPlayerAnyChestStatus(player) ? "ON" : "OFF") + "."); + + return true; + } + +} diff --git a/plugin/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java deleted file mode 100644 index aef46ca..0000000 --- a/plugin/src/main/java/com/lishid/openinv/commands/OpenEnderCommand.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright (C) 2011-2016 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.commands; - -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.utils.UUIDUtils; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class OpenEnderCommand implements CommandExecutor { - - private final OpenInv plugin; - private final Map openEnderHistory = new ConcurrentHashMap(); - - public OpenEnderCommand(OpenInv plugin) { - this.plugin = plugin; - } - - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (command.getName().equalsIgnoreCase("openender")) { - if (!(sender instanceof Player)) { - sender.sendMessage(ChatColor.RED + "You can't use this command from the console."); - return true; - } - - if (!OpenInv.hasPermission(sender, Permissions.PERM_ENDERCHEST)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to access player ender chests."); - return true; - } - - if (args.length > 0 && args[0].equalsIgnoreCase("?")) { - OpenInv.showHelp(sender); - return true; - } - - final Player player = (Player) sender; - - // History management - UUID history = openEnderHistory.get(player.getUniqueId()); - if (history == null) { - history = player.getUniqueId(); - openEnderHistory.put(player.getUniqueId(), history); - } - - final UUID uuid; - - // Read from history if target is not named - if (args.length < 1) { - if (history != null) { - uuid = history; - } else { - sender.sendMessage(ChatColor.RED + "OpenEnder history is empty!"); - return true; - } - } - else { - uuid = UUIDUtils.getPlayerUUID(args[0]); - if (uuid == null) { - player.sendMessage(ChatColor.RED + "Player not found!"); - return true; - } - } - - final UUID playerUUID = player.getUniqueId(); - - Player target = Bukkit.getPlayer(uuid); - if (target == null) { - // Targeted player was not found online, start asynchronous lookup in files - Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { - @Override - public void run() { - // Try loading the player's data asynchronously - final Player target = plugin.getPlayerLoader().loadPlayer(uuid); - if (target == null) { - player.sendMessage(ChatColor.RED + "Player not found!"); - return; - } - - // Open target's inventory synchronously - Bukkit.getScheduler().runTask(plugin, new Runnable() { - @Override - public void run() { - Player player = Bukkit.getPlayer(playerUUID); - // If sender is no longer online after loading the target, abort! - if (player == null) { - return; - } - - openInventory(player, target); - } - }); - } - }); - } else { - openInventory(player, target); - } - - return true; - } - - return false; - } - - private void openInventory(Player player, Player target) { - // Null target check - if (target == null) { - player.sendMessage(ChatColor.RED + "Player not found!"); - return; - } - - // Permissions checks - if (target != player && !OpenInv.hasPermission(player, Permissions.PERM_ENDERCHEST_ALL)) { - player.sendMessage(ChatColor.RED + "You do not have permission to access other player's ender chests."); - return; - } - - if (!OpenInv.hasPermission(player, Permissions.PERM_OVERRIDE) && OpenInv.hasPermission(target, Permissions.PERM_EXEMPT)) { - player.sendMessage(ChatColor.RED + target.getDisplayName() + "'s ender chest is protected!"); - return; - } - - // Crossworld 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!"); - return; - } - - // Record the target - openEnderHistory.put(player.getUniqueId(), target.getUniqueId()); - - // Get the inventory and open it - ISpecialEnderChest enderChest = plugin.getPlayerEnderChest(target, true); - player.openInventory(enderChest.getBukkitInventory()); - } -} diff --git a/plugin/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java new file mode 100644 index 0000000..96995e6 --- /dev/null +++ b/plugin/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -0,0 +1,132 @@ +/* + * 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.commands; + +import java.util.HashMap; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.Permissions; +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.ChatColor; +import org.bukkit.OfflinePlayer; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; + +public class OpenEnderPluginCommand implements CommandExecutor { + + private final OpenInv plugin; + private final HashMap openEnderHistory = new HashMap(); + + public OpenEnderPluginCommand(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; + } + + if (args.length > 0 && args[0].equalsIgnoreCase("?")) { + plugin.showHelp((Player) sender); + return true; + } + + final Player player = (Player) sender; + + // History management + String history = openEnderHistory.get(player); + + if (history == null || history == "") { + history = player.getName(); + openEnderHistory.put(player, history); + } + + final String name; + + // Read from history if target is not named + if (args.length < 1) { + name = history; + } else { + name = args[0]; + } + + new BukkitRunnable() { + @Override + public void run() { + final OfflinePlayer offlinePlayer = plugin.matchPlayer(name); + + if (offlinePlayer == null || !offlinePlayer.hasPlayedBefore() && !offlinePlayer.isOnline()) { + player.sendMessage(ChatColor.RED + "Player not found!"); + return; + } + + new BukkitRunnable() { + @Override + public void run() { + if (!player.isOnline()) { + return; + } + openInventory(player, offlinePlayer); + } + }.runTask(plugin); + + } + }.runTaskAsynchronously(plugin); + + return true; + } + + private void openInventory(Player player, OfflinePlayer target) { + + Player onlineTarget; + boolean online = target.isOnline(); + + if (!online) { + // Try loading the player's data + onlineTarget = plugin.loadPlayer(target); + + if (onlineTarget == null) { + player.sendMessage(ChatColor.RED + "Player not found!"); + return; + } + } else { + onlineTarget = target.getPlayer(); + } + + + if (!onlineTarget.equals(player) && !Permissions.ENDERCHEST_ALL.hasPermission(player)) { + player.sendMessage(ChatColor.RED + "You do not have permission to access other player's enderchest"); + return; + } + + // Record the target + openEnderHistory.put(player, onlineTarget.getName()); + + // Create the inventory + ISpecialEnderChest chest = plugin.getEnderChest(onlineTarget, online); + + // Open the inventory + player.openInventory(chest.getBukkitInventory()); + } + +} diff --git a/plugin/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java deleted file mode 100644 index 0b2e37a..0000000 --- a/plugin/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (C) 2011-2016 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.commands; - -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.utils.UUIDUtils; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class OpenInvCommand implements CommandExecutor { - - private final OpenInv plugin; - private final Map openInvHistory = new ConcurrentHashMap(); - - public OpenInvCommand(OpenInv plugin) { - this.plugin = plugin; - } - - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (command.getName().equalsIgnoreCase("openinv")) { - if (!(sender instanceof Player)) { - sender.sendMessage(ChatColor.RED + "You can't use this command from the console."); - return true; - } - - if (!OpenInv.hasPermission(sender, Permissions.PERM_OPENINV)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to access player inventories."); - return true; - } - - if (args.length > 0 && args[0].equalsIgnoreCase("?")) { - OpenInv.showHelp(sender); - return true; - } - - final Player player = (Player) sender; - - // History management - UUID history = openInvHistory.get(player.getUniqueId()); - if (history == null) { - history = player.getUniqueId(); - openInvHistory.put(player.getUniqueId(), history); - } - - final UUID uuid; - - // Read from history if target is not named - if (args.length < 1) { - uuid = history; - } else { - uuid = UUIDUtils.getPlayerUUID(args[0]); - if (uuid == null) { - player.sendMessage(ChatColor.RED + "Player not found!"); - return true; - } - } - - final UUID playerUUID = player.getUniqueId(); - - Player target = Bukkit.getPlayer(uuid); - if (target == null) { - // Targeted player was not found online, start asynchronous lookup in files - Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { - @Override - public void run() { - // Try loading the player's data asynchronously - final Player target = plugin.getPlayerLoader().loadPlayer(uuid); - if (target == null) { - player.sendMessage(ChatColor.RED + "Player not found!"); - return; - } - - // Open target's inventory synchronously - Bukkit.getScheduler().runTask(plugin, new Runnable() { - @Override - public void run() { - Player player = Bukkit.getPlayer(playerUUID); - // If sender is no longer online after loading the target, abort! - if (player == null) { - return; - } - - openInventory(player, target); - } - }); - } - }); - } else { - openInventory(player, target); - } - - return true; - } - - return false; - } - - private void openInventory(Player player, Player target) { - // Null target check - if (target == null) { - player.sendMessage(ChatColor.RED + "Player not found!"); - return; - } - - // 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!"); - return; - } - - // Crossworld 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!"); - return; - } - - // Self-open check - if (!OpenInv.hasPermission(player, Permissions.PERM_OPENSELF) && target.equals(player)) { - player.sendMessage(ChatColor.RED + "You're not allowed to openinv yourself."); - return; - } - - // Record the target - openInvHistory.put(player.getUniqueId(), target.getUniqueId()); - - // Get the inventory and open it - ISpecialPlayerInventory inventory = plugin.getPlayerInventory(target, true); - player.openInventory(inventory.getBukkitInventory()); - } -} diff --git a/plugin/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java new file mode 100644 index 0000000..4ac56f8 --- /dev/null +++ b/plugin/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -0,0 +1,145 @@ +/* + * 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.commands; + +import java.util.HashMap; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.Permissions; +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.ChatColor; +import org.bukkit.OfflinePlayer; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; + +public class OpenInvPluginCommand implements CommandExecutor { + + private final OpenInv plugin; + private final HashMap openInvHistory = new HashMap(); + + public OpenInvPluginCommand(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; + } + + if (args.length > 0 && args[0].equalsIgnoreCase("?")) { + plugin.showHelp((Player) sender); + return true; + } + + final Player player = (Player) sender; + + // History management + String history = openInvHistory.get(player); + + if (history == null || history == "") { + history = player.getName(); + openInvHistory.put(player, history); + } + + final String name; + + // Read from history if target is not named + if (args.length < 1) { + name = history; + } else { + name = args[0]; + } + + new BukkitRunnable() { + @Override + public void run() { + final OfflinePlayer offlinePlayer = plugin.matchPlayer(name); + + if (offlinePlayer == null || !offlinePlayer.hasPlayedBefore() && !offlinePlayer.isOnline()) { + player.sendMessage(ChatColor.RED + "Player not found!"); + return; + } + + new BukkitRunnable() { + @Override + public void run() { + if (!player.isOnline()) { + return; + } + openInventory(player, offlinePlayer); + } + }.runTask(plugin); + + } + }.runTaskAsynchronously(plugin); + + return true; + } + + private void openInventory(Player player, OfflinePlayer target) { + + + Player onlineTarget; + boolean online = target.isOnline(); + + if (!online) { + // Try loading the player's data + onlineTarget = plugin.loadPlayer(target); + + if (onlineTarget == null) { + player.sendMessage(ChatColor.RED + "Player not found!"); + return; + } + } else { + onlineTarget = target.getPlayer(); + } + + // Permissions checks + if (!Permissions.OVERRIDE.hasPermission(player) && Permissions.EXEMPT.hasPermission(onlineTarget)) { + player.sendMessage(ChatColor.RED + onlineTarget.getDisplayName() + "'s inventory is protected!"); + return; + } + + // Crosswork check + if ((!Permissions.CROSSWORLD.hasPermission(player) && !Permissions.OVERRIDE.hasPermission(player)) && onlineTarget.getWorld() != player.getWorld()) { + player.sendMessage(ChatColor.RED + onlineTarget.getDisplayName() + " is not in your world!"); + return; + } + + // Self-open check + if (!Permissions.OPENSELF.hasPermission(player) && onlineTarget.equals(player)) { + player.sendMessage(ChatColor.RED + "You're not allowed to openinv yourself."); + return; + } + + // Record the target + openInvHistory.put(player, onlineTarget.getName()); + + // Create the inventory + ISpecialPlayerInventory inv = plugin.getInventory(onlineTarget, online); + + // Open the inventory + player.openInventory(inv.getBukkitInventory()); + } + +} diff --git a/plugin/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java deleted file mode 100644 index aa30025..0000000 --- a/plugin/src/main/java/com/lishid/openinv/commands/SearchEnderCommand.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.lishid.openinv.commands; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; - -public class SearchEnderCommand implements CommandExecutor { - - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (command.getName().equalsIgnoreCase("searchender")) { - if (sender instanceof Player) { - if (!OpenInv.hasPermission(sender, Permissions.PERM_SEARCH)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to search player ender chests."); - return true; - } - } - - Material material = null; - int count = 1; - - if (args.length >= 1) { - String[] gData; - gData = args[0].split(":"); - material = Material.matchMaterial(gData[0]); - } - - if (args.length >= 2) { - try { - count = Integer.parseInt(args[1]); - } catch (NumberFormatException e) { - sender.sendMessage(ChatColor.RED + "'" + args[1] + "' is not a number!"); - return false; - } - } - - if (material == null) { - sender.sendMessage(ChatColor.RED + "Unknown item."); - return false; - } - - StringBuilder sb = new StringBuilder(); - - for (Player onlinePlayer : Bukkit.getServer().getOnlinePlayers()) { - if (onlinePlayer.getEnderChest().contains(material, count)) { - sb.append(onlinePlayer.getName()); - sb.append(" "); - } - } - - String playerList = sb.toString(); - sender.sendMessage("Players with the item " + ChatColor.GRAY + material.toString() + ChatColor.RESET + " in their ender chest: " + playerList); - - return true; - } - - return false; - } -} diff --git a/plugin/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java deleted file mode 100644 index 481b635..0000000 --- a/plugin/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (C) 2011-2016 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.commands; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; - -public class SearchInvCommand implements CommandExecutor { - - private final OpenInv plugin; - - public SearchInvCommand(OpenInv plugin) { - this.plugin = plugin; - } - - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (command.getName().equalsIgnoreCase("searchinv")) { - if (sender instanceof Player) { - if (!OpenInv.hasPermission(sender, Permissions.PERM_SEARCH)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to search player inventories."); - return true; - } - } - - Material material = null; - int count = 1; - - if (args.length >= 1) { - String[] gData; - gData = args[0].split(":"); - material = Material.matchMaterial(gData[0]); - } - - if (args.length >= 2) { - try { - count = Integer.parseInt(args[1]); - } catch (NumberFormatException e) { - sender.sendMessage(ChatColor.RED + "'" + args[1] + "' is not a number!"); - return false; - } - } - - if (material == null) { - sender.sendMessage(ChatColor.RED + "Unknown item."); - return false; - } - - StringBuilder sb = new StringBuilder(); - - for (Player onlinePlayer : Bukkit.getServer().getOnlinePlayers()) { - if (onlinePlayer.getInventory().contains(material, count)) { - sb.append(onlinePlayer.getName()); - sb.append(" "); - } - } - - String playerList = sb.toString(); - sender.sendMessage("Players with the item " + ChatColor.GRAY + material.toString() + ChatColor.RESET + " in their inventory: " + playerList); - - return true; - } - - return false; - } -} diff --git a/plugin/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java new file mode 100644 index 0000000..917d883 --- /dev/null +++ b/plugin/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java @@ -0,0 +1,72 @@ +/* + * 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.commands; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class SearchInvPluginCommand implements CommandExecutor { + + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + + Material material = null; + int count = 1; + + if (args.length >= 1) { + String[] gData = null; + gData = args[0].split(":"); + material = Material.matchMaterial(gData[0]); + } + + if (args.length >= 2) { + try { + count = Integer.parseInt(args[1]); + } catch (NumberFormatException ex) { + sender.sendMessage(ChatColor.RED + "'" + args[1] + "' is not a number!"); + return false; + } + } + + if (material == null) { + sender.sendMessage(ChatColor.RED + "Unknown item"); + return false; + } + + StringBuilder players = new StringBuilder(); + for (Player player : Bukkit.getServer().getOnlinePlayers()) { + if (player.getInventory().contains(material, count)) { + players.append(player.getName()).append(", "); + } + } + + // Matches found, delete trailing comma and space + if (players.length() > 0) { + players.delete(players.length() - 2, players.length()); + } else { + sender.sendMessage("No players found with " + material.toString()); + } + + sender.sendMessage("Players with the item " + material.toString() + ": " + players.toString()); + return true; + } + +} diff --git a/plugin/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java deleted file mode 100644 index 6b14379..0000000 --- a/plugin/src/main/java/com/lishid/openinv/commands/SilentChestCommand.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (C) 2011-2016 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.commands; - -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.Configuration; - -public class SilentChestCommand implements CommandExecutor { - - private final OpenInv plugin; - private final Configuration configuration; - - public SilentChestCommand(OpenInv plugin) { - this.plugin = plugin; - configuration = plugin.getConfiguration(); - } - - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (command.getName().equalsIgnoreCase("silentchest")) { - if (!(sender instanceof Player)) { - sender.sendMessage(ChatColor.RED + "You can't use this command from the console."); - return true; - } - - if (!OpenInv.hasPermission(sender, Permissions.PERM_SILENT)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to use silent chest."); - return true; - } - - Player player = (Player) sender; - - if (args.length > 0) { - if (args[0].equalsIgnoreCase("check")) { - String status = configuration.getPlayerSilentChestStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; - OpenInv.sendMessage(player, "Silent Chest is " + status + ChatColor.RESET + "."); - return true; - } - } - - configuration.setPlayerSilentChestStatus(player, !configuration.getPlayerSilentChestStatus(player)); - - String status = configuration.getPlayerSilentChestStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; - OpenInv.sendMessage(player, "Silent Chest is now " + status + ChatColor.RESET + "."); - - return true; - } - - return false; - } -} diff --git a/plugin/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java new file mode 100644 index 0000000..3710f6e --- /dev/null +++ b/plugin/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java @@ -0,0 +1,53 @@ +/* + * 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.commands; + +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import com.lishid.openinv.OpenInv; + +public class SilentChestPluginCommand implements CommandExecutor { + + private final OpenInv plugin; + + public SilentChestPluginCommand(OpenInv plugin) { + this.plugin = plugin; + } + + 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 && args[0].equalsIgnoreCase("check")) { + sender.sendMessage("SilentChest is " + (plugin.getPlayerAnyChestStatus(player) ? "ON" : "OFF") + "."); + return true; + } + + plugin.setPlayerSilentChestStatus(player, !plugin.getPlayerSilentChestStatus(player)); + sender.sendMessage("SilentChest is now " + (plugin.getPlayerSilentChestStatus(player) ? "ON" : "OFF") + "."); + + return true; + } +} diff --git a/plugin/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java deleted file mode 100644 index dcda462..0000000 --- a/plugin/src/main/java/com/lishid/openinv/commands/ToggleOpenInvCommand.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (C) 2011-2016 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.commands; - -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.Configuration; - -public class ToggleOpenInvCommand implements CommandExecutor { - - private final OpenInv plugin; - private final Configuration configuration; - - public ToggleOpenInvCommand(OpenInv plugin) { - this.plugin = plugin; - configuration = plugin.getConfiguration(); - } - - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (command.getName().equalsIgnoreCase("toggleopeninv")) { - if (!(sender instanceof Player)) { - sender.sendMessage(ChatColor.RED + "You can't use this command from the console."); - return true; - } - - if (!OpenInv.hasPermission(sender, Permissions.PERM_OPENINV)) { - sender.sendMessage(ChatColor.RED + "You do not have permission to access player inventories."); - return true; - } - - Player player = (Player) sender; - - if (args.length > 0) { - if (args[0].equalsIgnoreCase("check")) { - String status = configuration.getPlayerItemOpenInvStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; - OpenInv.sendMessage(player, "OpenInv with " + ChatColor.GRAY + configuration.getOpenInvItem() + ChatColor.RESET + status + ChatColor.RESET + "."); - return true; - } - } - - configuration.setPlayerItemOpenInvStatus(player, !configuration.getPlayerItemOpenInvStatus(player)); - - String status = configuration.getPlayerItemOpenInvStatus(player) ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF"; - OpenInv.sendMessage(player, "OpenInv with " + ChatColor.GRAY + configuration.getOpenInvItem() + ChatColor.RESET + " is now " + status + ChatColor.RESET + "."); - - return true; - } - - return false; - } -} diff --git a/plugin/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java b/plugin/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java deleted file mode 100644 index b01a9f4..0000000 --- a/plugin/src/main/java/com/lishid/openinv/listeners/OpenInvEntityListener.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2011-2016 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.listeners; - -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; -import org.bukkit.event.entity.EntityDamageByEntityEvent; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.Configuration; - -public class OpenInvEntityListener implements Listener { - - private final OpenInv plugin; - private final Configuration configuration; - - public OpenInvEntityListener(OpenInv plugin) { - this.plugin = plugin; - configuration = plugin.getConfiguration(); - } - - @EventHandler(priority = EventPriority.LOWEST) - public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { - Entity attacker = event.getDamager(); - Entity defender = event.getEntity(); - - if (!(attacker instanceof Player) || !(defender instanceof Player)) { - return; - } - - Player player = (Player) attacker; - - if (player.getInventory().getItemInMainHand().getType() == configuration.getOpenInvItem()) { - if (!configuration.getPlayerItemOpenInvStatus(player) || !OpenInv.hasPermission(player, Permissions.PERM_OPENINV)) { - return; - } - - Player target = (Player) defender; - - event.setDamage(0); - event.setCancelled(true); - - player.performCommand("openinv " + target.getName()); - } - } -} diff --git a/plugin/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java b/plugin/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java deleted file mode 100644 index efe92fe..0000000 --- a/plugin/src/main/java/com/lishid/openinv/listeners/OpenInvInventoryListener.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2011-2016 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.listeners; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.Inventory; - -import com.lishid.openinv.OpenInv; - -public class OpenInvInventoryListener implements Listener { - - private final OpenInv plugin; - - public OpenInvInventoryListener(OpenInv plugin) { - this.plugin = plugin; - } - - @EventHandler - public void onInventoryClick(InventoryClickEvent event) { - Inventory inventory = event.getInventory(); - HumanEntity player = event.getWhoClicked(); - - if (!plugin.getInventoryAccess().check(inventory, player)) { - event.setCancelled(true); - } - } -} \ No newline at end of file diff --git a/plugin/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java b/plugin/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java deleted file mode 100644 index 22495fa..0000000 --- a/plugin/src/main/java/com/lishid/openinv/listeners/OpenInvPlayerListener.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright (C) 2011-2016 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.listeners; - -import com.lishid.openinv.Configuration; -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.block.Block; -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; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.block.Action; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.scheduler.BukkitRunnable; - -public class OpenInvPlayerListener implements Listener { - - private final OpenInv plugin; - private final Configuration configuration; - - public OpenInvPlayerListener(OpenInv plugin) { - this.plugin = plugin; - configuration = plugin.getConfiguration(); - } - - @SuppressWarnings("deprecation") - @EventHandler(priority = EventPriority.MONITOR) - public void onPlayerJoin(PlayerJoinEvent event) { - final Player player = event.getPlayer(); - - new BukkitRunnable() { - @Override - public void run() { - if (!player.isOnline()) { - return; - } - - ISpecialPlayerInventory inventory = plugin.getPlayerInventory(player, false); - if (inventory != null) { - inventory.playerOnline(player); - player.updateInventory(); - } - - ISpecialEnderChest enderChest = plugin.getPlayerEnderChest(player, false); - if (enderChest != null) { - enderChest.playerOnline(player); - } - } - }.runTask(plugin); - } - - @EventHandler - public void onPlayerQuit(PlayerQuitEvent event) { - Player player = event.getPlayer(); - - ISpecialPlayerInventory inventory = plugin.getPlayerInventory(player, false); - if (inventory != null) { - inventory.playerOffline(); - if (inventory.isInUse()) { - plugin.removeLoadedInventory(event.getPlayer()); - } - } - - ISpecialEnderChest enderChest = plugin.getPlayerEnderChest(player, false); - if (enderChest != null) { - enderChest.playerOffline(); - if (!enderChest.isInUse()) { - plugin.removeLoadedEnderChest(event.getPlayer()); - } - } - } - - @EventHandler - public void onPlayerInteract(PlayerInteractEvent event) { - Player player = event.getPlayer(); - - if (player.isSneaking()) { - return; - } - - Action action = event.getAction(); - Block block = event.getClickedBlock(); - - switch (action) { - case RIGHT_CLICK_BLOCK: - if (event.useInteractedBlock() == Result.DENY) { - return; - } - - // Ender Chests - if (block.getType() == Material.ENDER_CHEST) { - if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && configuration.getPlayerSilentChestStatus(player)) { - event.setCancelled(true); - player.openInventory(player.getEnderChest()); - return; - } - } - - // Chests - if (block.getState() instanceof Chest) { - boolean silentChest = false; - boolean anyChest = false; - int x = block.getX(); - int y = block.getY(); - int z = block.getZ(); - - if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && configuration.getPlayerSilentChestStatus(player)) { - silentChest = true; - } - - if (OpenInv.hasPermission(player, Permissions.PERM_ANYCHEST) && configuration.getPlayerAnyChestStatus(player)) { - try { - anyChest = plugin.getAnySilentChest().isAnyChestNeeded(player, x, y, z); - } catch (Exception e) { - player.sendMessage(ChatColor.RED + "Error while executing openinv. Unsupported CraftBukkit."); - e.printStackTrace(); - } - } - - // If the anyChest or silentChest is active - if (anyChest || silentChest) { - if (!plugin.getAnySilentChest().activateChest(player, anyChest, silentChest, x, y, z)) { - event.setCancelled(true); - } - } - - return; - } - - // Signs - if (block.getState() instanceof Sign) { - try { - Sign sign = (Sign) block.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 e) { - player.sendMessage(ChatColor.RED + "An internal error occured."); - e.printStackTrace(); - } - - return; - } - case RIGHT_CLICK_AIR: - // OpenInv item - if (player.getInventory().getItemInMainHand().getType() == configuration.getOpenInvItem() && configuration.getPlayerItemOpenInvStatus(player) && OpenInv.hasPermission(player, Permissions.PERM_OPENINV)) { - player.performCommand("openinv"); - } - } - } -} diff --git a/plugin/src/main/java/com/lishid/openinv/utils/UUIDFetcher.java b/plugin/src/main/java/com/lishid/openinv/utils/UUIDFetcher.java deleted file mode 100644 index cc0499a..0000000 --- a/plugin/src/main/java/com/lishid/openinv/utils/UUIDFetcher.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.lishid.openinv.utils; - -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.net.HttpURLConnection; -import java.net.URL; -import java.nio.ByteBuffer; -import java.util.*; -import java.util.concurrent.Callable; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; - -import com.google.common.collect.ImmutableList; - -public class UUIDFetcher implements Callable> { - - private static final double PROFILES_PER_REQUEST = 100; - private static final String PROFILE_URL = "https://api.mojang.com/profiles/minecraft"; - private final JSONParser jsonParser = new JSONParser(); - private final List names; - private final boolean rateLimiting; - - public UUIDFetcher(List names, boolean rateLimiting) { - this.names = ImmutableList.copyOf(names); - this.rateLimiting = rateLimiting; - } - - public UUIDFetcher(List names) { - this(names, true); - } - - @Override - public Map call() throws Exception { - Map uuidMap = new HashMap(); - int requests = (int) Math.ceil(names.size() / PROFILES_PER_REQUEST); - - for (int i = 0; i < requests; i++) { - HttpURLConnection connection = createConnection(); - String body = JSONArray.toJSONString(names.subList(i * 100, Math.min((i + 1) * 100, names.size()))); - writeBody(connection, body); - JSONArray array = (JSONArray) jsonParser.parse(new InputStreamReader(connection.getInputStream())); - - for (Object profile : array) { - JSONObject jsonProfile = (JSONObject) profile; - String id = (String) jsonProfile.get("id"); - String name = (String) jsonProfile.get("name"); - UUID uuid = UUIDFetcher.getUUID(id); - uuidMap.put(name.toLowerCase(), uuid); - } - - if (rateLimiting && i != requests - 1) { - Thread.sleep(100L); - } - } - - return uuidMap; - } - - private static void writeBody(HttpURLConnection connection, String body) throws Exception { - OutputStream stream = connection.getOutputStream(); - stream.write(body.getBytes()); - stream.flush(); - stream.close(); - } - - private static HttpURLConnection createConnection() throws Exception { - URL url = new URL(PROFILE_URL); - - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setRequestMethod("POST"); - connection.setRequestProperty("Content-Type", "application/json"); - connection.setUseCaches(false); - connection.setDoInput(true); - connection.setDoOutput(true); - - return connection; - } - - private static UUID getUUID(String id) { - return UUID.fromString(id.substring(0, 8) + "-" + id.substring(8, 12) + "-" + id.substring(12, 16) + "-" + id.substring(16, 20) + "-" +id.substring(20, 32)); - } - - public static byte[] toBytes(UUID uuid) { - ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[16]); - byteBuffer.putLong(uuid.getMostSignificantBits()); - byteBuffer.putLong(uuid.getLeastSignificantBits()); - - return byteBuffer.array(); - } - - public static UUID fromBytes(byte[] array) { - if (array.length != 16) { - throw new IllegalArgumentException("Illegal byte array length: " + array.length); - } - - ByteBuffer byteBuffer = ByteBuffer.wrap(array); - long mostSignificant = byteBuffer.getLong(); - long leastSignificant = byteBuffer.getLong(); - - return new UUID(mostSignificant, leastSignificant); - } - - public static UUID getUUIDOf(String name) throws Exception { - return new UUIDFetcher(Arrays.asList(name)).call().get(name); - } -} diff --git a/plugin/src/main/java/com/lishid/openinv/utils/UUIDUtils.java b/plugin/src/main/java/com/lishid/openinv/utils/UUIDUtils.java deleted file mode 100644 index 0ac6aba..0000000 --- a/plugin/src/main/java/com/lishid/openinv/utils/UUIDUtils.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.lishid.openinv.utils; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Map; -import java.util.UUID; - -import org.apache.commons.lang.Validate; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.entity.Player; - -public final class UUIDUtils { - - private UUIDUtils() {} - - private static Player getPlayer(String name) { - Validate.notNull(name, "Name cannot be null"); - - Player found = null; - String lowerName = name.toLowerCase(); - int delta = Integer.MAX_VALUE; - - Collection players = Bukkit.getOnlinePlayers(); - for (Player player : players) { - if (player.getName().toLowerCase().startsWith(lowerName)) { - int curDelta = player.getName().length() - lowerName.length(); - - if (curDelta < delta) { - found = player; - delta = curDelta; - } - - if (curDelta == 0) break; - } - } - - return found; - } - - @SuppressWarnings("deprecation") - private static UUID getUUIDLocally(String name) { - OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name); - return offlinePlayer.hasPlayedBefore() ? offlinePlayer.getUniqueId() : null; - } - - /** - * Returns the UUID of a player by their name. - * - * @param name the name of the player to get the UUID of - * @return the player's UUID or null - */ - public static UUID getPlayerUUID(String name) { - UUID uuid; - Player player = getPlayer(name); - - if (player != null) { - uuid = player.getUniqueId(); - } else { - if (Bukkit.getServer().getOnlineMode()) { - if (!Bukkit.getServer().isPrimaryThread()) { - UUIDFetcher fetcher = new UUIDFetcher(Arrays.asList(name)); - Map response; - - try { - response = fetcher.call(); - uuid = response.get(name.toLowerCase()); - } catch (Exception e) { - uuid = getUUIDLocally(name); - } - } else { - uuid = getUUIDLocally(name); - } - } else { - uuid = getUUIDLocally(name); - } - } - - return uuid; - } -} diff --git a/plugin/src/main/resources/config.yml b/plugin/src/main/resources/config.yml deleted file mode 100644 index 50320d5..0000000 --- a/plugin/src/main/resources/config.yml +++ /dev/null @@ -1,6 +0,0 @@ -config-version: 2 -notify: - any-chest: true - silent-chest: true -items: - open-inv: STICK \ No newline at end of file diff --git a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentChest.java b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentChest.java deleted file mode 100644 index ebe3624..0000000 --- a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentChest.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright (C) 2011-2016 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_11_R1; - -import java.util.Iterator; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentChest; - -import org.bukkit.entity.Player; - -import net.minecraft.server.v1_11_R1.AxisAlignedBB; -import net.minecraft.server.v1_11_R1.Block; -import net.minecraft.server.v1_11_R1.BlockChest; -import net.minecraft.server.v1_11_R1.BlockChest.Type; -import net.minecraft.server.v1_11_R1.BlockPosition; -import net.minecraft.server.v1_11_R1.Entity; -import net.minecraft.server.v1_11_R1.EntityOcelot; -import net.minecraft.server.v1_11_R1.EntityPlayer; -import net.minecraft.server.v1_11_R1.EnumDirection; -import net.minecraft.server.v1_11_R1.ITileInventory; -import net.minecraft.server.v1_11_R1.InventoryLargeChest; -import net.minecraft.server.v1_11_R1.TileEntity; -import net.minecraft.server.v1_11_R1.TileEntityChest; -import net.minecraft.server.v1_11_R1.World; - -import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; - -public class AnySilentChest implements IAnySilentChest { - - private final OpenInv plugin; - - public AnySilentChest(OpenInv plugin) { - this.plugin = plugin; - } - - @Override - public boolean isAnyChestNeeded(Player p, int x, int y, int z) { - // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - BlockPosition position = new BlockPosition(x, y, z); - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - BlockChest chest = (BlockChest) (((BlockChest) world.getType(position).getBlock()).g == Type.TRAP ? - Block.getByName("trapped_chest") : Block.getByName("chest")); - - // If a block is on top - if (topBlocking(world, position)) { - return true; - } - - // If the block next to the chest is chest and has a block on top - for (EnumDirection direction : EnumDirectionList.HORIZONTAL) { - BlockPosition sidePosition = position.shift(direction); - Block block = world.getType(sidePosition).getBlock(); - - if (block == chest) { - if (this.topBlocking(world, sidePosition)) { - return true; - } - } - } - - return false; - } - - private boolean topBlocking(World world, BlockPosition position) { - return this.blockOnTop(world, position) || this.ocelotOnTop(world, position); - } - - @SuppressWarnings("deprecation") - private boolean blockOnTop(World world, BlockPosition position) { - Block block = world.getType(position.up()).getBlock(); - return block.isOccluding(block.getBlockData()); - } - - private boolean ocelotOnTop(World world, BlockPosition position) { - Iterator iterator = world.a(EntityOcelot.class, - new AxisAlignedBB(position.getX(), position.getY() + 1, - position.getZ(), position.getX() + 1, - position.getY() + 2, position.getZ() + 1)).iterator(); - - EntityOcelot entityOcelot; - - do { - if (!iterator.hasNext()) { - return false; - } - - Entity entity = (Entity) iterator.next(); - - entityOcelot = (EntityOcelot) entity; - } while (!entityOcelot.isSitting()); - - return true; - } - - @Override - public boolean activateChest(Player p, boolean anyChest, boolean silentChest, int x, int y, int z) { - BlockPosition position = new BlockPosition(x, y, z); - EntityPlayer player = ((CraftPlayer) p).getHandle(); - World world = player.world; - if (world.isClientSide) { - return true; - } - - BlockChest chest = (BlockChest) (((BlockChest) world.getType(position).getBlock()).g == Type.TRAP ? - Block.getByName("trapped_chest") : Block.getByName("chest")); - - TileEntity tileEntity = world.getTileEntity(position); - if (!(tileEntity instanceof TileEntityChest)) { - return true; - } - - ITileInventory tileInventory = (ITileInventory) tileEntity; - if (!anyChest && this.topBlocking(world, position)) { - return true; - } - - for (EnumDirection direction : EnumDirectionList.HORIZONTAL) { - BlockPosition side = position.shift(direction); - Block block = world.getType(side).getBlock(); - - if (block == chest) { - if (!anyChest && this.topBlocking(world, side)) { - return true; - } - - TileEntity sideTileEntity = world.getTileEntity(side); - - if (sideTileEntity instanceof TileEntityChest) { - if (direction != EnumDirection.WEST && direction != EnumDirection.NORTH) { - tileInventory = new InventoryLargeChest("container.chestDouble", tileInventory, (TileEntityChest) sideTileEntity); - } else { - tileInventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) sideTileEntity, tileInventory); - } - } - } - } - - boolean returnValue = true; - - if (silentChest) { - tileInventory = new SilentInventory(tileInventory); - - if (plugin.getConfiguration().notifySilentChest()) { - OpenInv.sendMessage(p, "You are opening a chest silently."); - } - - returnValue = false; - } - - player.openContainer(tileInventory); - - if (anyChest && plugin.getConfiguration().notifyAnyChest()) { - OpenInv.sendMessage(p, "You are opening a blocked chest."); - } - - return returnValue; - } -} diff --git a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java new file mode 100644 index 0000000..bd084ba --- /dev/null +++ b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java @@ -0,0 +1,276 @@ +/* + * 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_11_R1; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.block.BlockState; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; + +// Volatile +import net.minecraft.server.v1_11_R1.AxisAlignedBB; +import net.minecraft.server.v1_11_R1.Block; +import net.minecraft.server.v1_11_R1.BlockChest; +import net.minecraft.server.v1_11_R1.BlockChest.Type; +import net.minecraft.server.v1_11_R1.BlockEnderChest; +import net.minecraft.server.v1_11_R1.BlockPosition; +import net.minecraft.server.v1_11_R1.BlockShulkerBox; +import net.minecraft.server.v1_11_R1.Container; +import net.minecraft.server.v1_11_R1.Entity; +import net.minecraft.server.v1_11_R1.EntityOcelot; +import net.minecraft.server.v1_11_R1.EntityPlayer; +import net.minecraft.server.v1_11_R1.EnumDirection; +import net.minecraft.server.v1_11_R1.IBlockData; +import net.minecraft.server.v1_11_R1.IInventory; +import net.minecraft.server.v1_11_R1.ITileInventory; +import net.minecraft.server.v1_11_R1.InventoryEnderChest; +import net.minecraft.server.v1_11_R1.InventoryLargeChest; +import net.minecraft.server.v1_11_R1.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_11_R1.StatisticList; +import net.minecraft.server.v1_11_R1.TileEntity; +import net.minecraft.server.v1_11_R1.TileEntityChest; +import net.minecraft.server.v1_11_R1.TileEntityEnderChest; +import net.minecraft.server.v1_11_R1.TileEntityShulkerBox; +import net.minecraft.server.v1_11_R1.World; + +import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + if (block.getType() == Material.ENDER_CHEST) { + return true; + } + BlockState state = block.getState(); + return state instanceof org.bukkit.block.Chest || state instanceof org.bukkit.block.ShulkerBox; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + Block block = world.getType(blockPosition).getBlock(); + + if (block instanceof BlockShulkerBox) { + return isBlockedShulkerBox(world, blockPosition, block); + } + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.getType(blockPosition.up()).m(); + } + + // Check if chest is blocked or has an ocelot on top + if (isBlockedChest(world, blockPosition)) { + return true; + } + + // Check for matching adjacent chests that are blocked or have an ocelot on top + for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if (isBlockedChest(world, localBlockPosition)) { + return true; + } + } + + return false; + } + + private boolean isBlockedShulkerBox(World world, BlockPosition blockPosition, Block block) { + // For reference, look at net.minecraft.server.BlockShulkerBox + TileEntity tile = world.getTileEntity(blockPosition); + + if (!(tile instanceof TileEntityShulkerBox)) { + return false; + } + + IBlockData iBlockData = block.getBlockData(); + + EnumDirection enumDirection = iBlockData.get(BlockShulkerBox.a); + if (((TileEntityShulkerBox) tile).p() == TileEntityShulkerBox.AnimationPhase.CLOSED) { + AxisAlignedBB axisAlignedBB = BlockShulkerBox.j.b(0.5F * enumDirection.getAdjacentX(), + 0.5F * enumDirection.getAdjacentY(), 0.5F * enumDirection.getAdjacentZ()) + .a(enumDirection.getAdjacentX(), enumDirection.getAdjacentY(), + enumDirection.getAdjacentZ()); + + return world.b(axisAlignedBB.a(blockPosition.shift(enumDirection))); + } + + return false; + } + + private boolean isBlockedChest(World world, BlockPosition blockPosition) { + // For reference, loot at net.minecraft.server.BlockChest + return world.getType(blockPosition.up()).m() || hasOcelotOnTop(world, blockPosition); + } + + private boolean hasOcelotOnTop(World world, BlockPosition blockPosition) { + for (Entity localEntity : world.a(EntityOcelot.class, + new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, + blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, + blockPosition.getZ() + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is pretty much API-only + if (silentchest && b.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + player.b(StatisticList.X); + return true; + } + + final World world = player.world; + final BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + Object tile = world.getTileEntity(blockPosition); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + player.b(StatisticList.X); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + Block block = world.getType(blockPosition).getBlock(); + Container container = null; + + if (block instanceof BlockChest) { + BlockChest blockChest = (BlockChest) block; + + for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { + tile = new InventoryLargeChest("container.chestDouble", + (TileEntityChest) localTileEntity, (ITileInventory) tile); + } else { + tile = new InventoryLargeChest("container.chestDouble", + (ITileInventory) tile, (TileEntityChest) localTileEntity); + } + break; + } + + if (blockChest.g == Type.BASIC) + player.b(StatisticList.ac); + else if (blockChest.g == Type.TRAP) { + player.b(StatisticList.W); + } + + if (silentchest) { + container = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + } + } + + if (block instanceof BlockShulkerBox) { + player.b(StatisticList.ae); + + if (silentchest && tile instanceof TileEntityShulkerBox) { + // Set value to current + 1. Ensures consistency later when resetting. + SilentContainerShulkerBox.setOpenValue((TileEntityShulkerBox) tile, + SilentContainerShulkerBox.getOpenValue((TileEntityShulkerBox) tile) + 1); + + container = new SilentContainerShulkerBox(player.inventory, (IInventory) tile, player); + } + } + + boolean returnValue = false; + final IInventory iInventory = (IInventory) tile; + + if (!silentchest || container == null) { + player.openContainer(iInventory); + returnValue = true; + } else { + try { + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, iInventory.getName(), iInventory.getScoreboardDisplayName(), iInventory.getSize())); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + if (tile instanceof TileEntityShulkerBox) { + new BukkitRunnable() { + @Override + public void run() { + // TODO hacky + Object tile = world.getTileEntity(blockPosition); + if (!(tile instanceof TileEntityShulkerBox)) { + return; + } + TileEntityShulkerBox box = (TileEntityShulkerBox) tile; + // Reset back - we added 1, and calling TileEntityShulkerBox#startOpen adds 1 more. + SilentContainerShulkerBox.setOpenValue(box, + SilentContainerShulkerBox.getOpenValue((TileEntityShulkerBox) tile) - 2); + } + }.runTaskLater(Bukkit.getPluginManager().getPlugin("OpenInv"), 2); + } + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/EnumDirectionList.java b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/EnumDirectionList.java deleted file mode 100644 index 7236969..0000000 --- a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/EnumDirectionList.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.lishid.openinv.internal.v1_11_R1; - -import java.util.Iterator; - -import com.google.common.collect.Iterators; - -import net.minecraft.server.v1_11_R1.EnumDirection; -import net.minecraft.server.v1_11_R1.EnumDirection.EnumDirectionLimit; - -public enum EnumDirectionList implements Iterable { - - HORIZONTAL(EnumDirectionLimit.HORIZONTAL), - VERTICAL(EnumDirectionLimit.VERTICAL); - - private final EnumDirectionLimit list; - - EnumDirectionList(EnumDirectionLimit list) { - this.list = list; - } - - @Override - public Iterator iterator() { - return Iterators.forArray(list.a()); - } -} diff --git a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java index 0dd1061..3de2a2b 100644 --- a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java +++ b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 lishid. All rights reserved. + * 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 @@ -16,61 +16,64 @@ package com.lishid.openinv.internal.v1_11_R1; -import java.lang.reflect.Field; +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; -import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.Inventory; -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; - +// Volatile import net.minecraft.server.v1_11_R1.IInventory; -public class InventoryAccess { +import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; - private final OpenInv plugin; +public class InventoryAccess implements IInventoryAccess { - public InventoryAccess(OpenInv plugin) { - this.plugin = plugin; - } - - public boolean check(Inventory inventory, HumanEntity player) { - IInventory inv = grabInventory(inventory); - - if (inv instanceof SpecialPlayerInventory) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITINV)) { - return false; - } - } else if (inv instanceof SpecialEnderChest) { - if (!OpenInv.hasPermission(player, Permissions.PERM_EDITENDER)) { - return false; - } - } - - return true; - } - - private IInventory grabInventory(Inventory inventory) { + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory(); + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } - - // Use reflection to find the inventory - Class clazz = inventory.getClass(); - IInventory result = null; - for (Field f : clazz.getDeclaredFields()) { - f.setAccessible(true); - - if (IInventory.class.isAssignableFrom(f.getDeclaringClass())) { - try { - result = (IInventory) f.get(inventory); - } catch (Exception e) { - plugin.log(e); - } - } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); } - return result; + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + } diff --git a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java index 0632b89..760fe58 100644 --- a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java +++ b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 lishid. All rights reserved. + * 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 @@ -16,54 +16,49 @@ package com.lishid.openinv.internal.v1_11_R1; -import java.util.UUID; +import com.lishid.openinv.internal.IPlayerDataManager; + +import com.mojang.authlib.GameProfile; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; -import org.bukkit.craftbukkit.v1_11_R1.CraftServer; import org.bukkit.entity.Player; -import com.lishid.openinv.OpenInv; -import com.mojang.authlib.GameProfile; - +// Volatile import net.minecraft.server.v1_11_R1.EntityPlayer; import net.minecraft.server.v1_11_R1.MinecraftServer; import net.minecraft.server.v1_11_R1.PlayerInteractManager; -public class PlayerDataManager { +import org.bukkit.craftbukkit.v1_11_R1.CraftServer; - private final OpenInv plugin; +public class PlayerDataManager implements IPlayerDataManager { - public PlayerDataManager(OpenInv plugin) { - this.plugin = plugin; - } - - public Player loadPlayer(UUID uuid) { - try { - 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.getBukkitEntity(); - - if (target != null) { - // Load data - target.loadData(); - - // Return the entity - return target; - } - } catch (Exception e) { - plugin.log(e); + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; } - return null; + // Create a profile and entity to load the player data + GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + 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; } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getUniqueId().toString(); + } + } diff --git a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerChest.java b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerChest.java new file mode 100644 index 0000000..16c15a9 --- /dev/null +++ b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerChest.java @@ -0,0 +1,47 @@ +/* + * 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_11_R1; + +// Volatile +import net.minecraft.server.v1_11_R1.ContainerChest; +import net.minecraft.server.v1_11_R1.EntityHuman; +import net.minecraft.server.v1_11_R1.IInventory; +import net.minecraft.server.v1_11_R1.ItemStack; +import net.minecraft.server.v1_11_R1.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(PlayerInventory playerInventory, IInventory iInventory, + EntityHuman entityHuman) { + super(playerInventory, iInventory, entityHuman); + // Send close signal + iInventory.closeContainer(entityHuman); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != ItemStack.a) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(ItemStack.a); + entityHuman.drop(carried, false); + } + } + +} diff --git a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerShulkerBox.java b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerShulkerBox.java new file mode 100644 index 0000000..9fd4fbf --- /dev/null +++ b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerShulkerBox.java @@ -0,0 +1,56 @@ +package com.lishid.openinv.internal.v1_11_R1; + +import java.lang.reflect.Field; + +import net.minecraft.server.v1_11_R1.ContainerShulkerBox; +import net.minecraft.server.v1_11_R1.EntityHuman; +import net.minecraft.server.v1_11_R1.IInventory; +import net.minecraft.server.v1_11_R1.ItemStack; +import net.minecraft.server.v1_11_R1.PlayerInventory; +import net.minecraft.server.v1_11_R1.TileEntityShulkerBox; + +public class SilentContainerShulkerBox extends ContainerShulkerBox { + + private static Field fieldShulkerActionData; + + public SilentContainerShulkerBox(PlayerInventory playerInventory, IInventory iInventory, + EntityHuman entityHuman) { + super(playerInventory, iInventory, entityHuman); + } + + @Override + public void b(EntityHuman entityHuman) { + PlayerInventory playerinventory = entityHuman.inventory; + + if (!playerinventory.getCarried().isEmpty()) { + entityHuman.drop(playerinventory.getCarried(), false); + playerinventory.setCarried(ItemStack.a); + } + } + + private static Field exposeOpenStatus() throws NoSuchFieldException, SecurityException { + if (fieldShulkerActionData == null) { + fieldShulkerActionData = TileEntityShulkerBox.class.getDeclaredField("h"); + fieldShulkerActionData.setAccessible(true); + } + return fieldShulkerActionData; + } + + public static void setOpenValue(TileEntityShulkerBox tileShulkerBox, Object value) { + try { + exposeOpenStatus().set(tileShulkerBox, value); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static Integer getOpenValue(TileEntityShulkerBox tileShulkerBox) { + try { + return (Integer) exposeOpenStatus().get(tileShulkerBox); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + +} diff --git a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentInventory.java b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentInventory.java deleted file mode 100644 index 4786853..0000000 --- a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentInventory.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.lishid.openinv.internal.v1_11_R1; - -import java.util.List; - -import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_11_R1.entity.CraftHumanEntity; -import org.bukkit.entity.HumanEntity; -import org.bukkit.inventory.InventoryHolder; - -import net.minecraft.server.v1_11_R1.ChestLock; -import net.minecraft.server.v1_11_R1.Container; -import net.minecraft.server.v1_11_R1.ContainerChest; -import net.minecraft.server.v1_11_R1.EntityHuman; -import net.minecraft.server.v1_11_R1.IChatBaseComponent; -import net.minecraft.server.v1_11_R1.ITileInventory; -import net.minecraft.server.v1_11_R1.ItemStack; -import net.minecraft.server.v1_11_R1.PlayerInventory; - -public class SilentInventory implements ITileInventory { - - public ITileInventory inv; - - public SilentInventory(ITileInventory inv) { - this.inv = inv; - } - - @Override - public boolean isLocked() - { - return inv.isLocked(); - } - - @Override - public void a(ChestLock chestLock) { - inv.a(chestLock); - } - - @Override - public ChestLock getLock() { - return inv.getLock(); - } - - @Override - public int getSize() { - return inv.getSize(); - } - - @Override - public boolean w_() { - return inv.w_(); - } - - @Override - public ItemStack getItem(int i) { - return inv.getItem(i); - } - - @Override - public ItemStack splitStack(int i, int i1) { - return inv.splitStack(i, i1); - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - return inv.splitWithoutUpdate(i); - } - - @Override - public void setItem(int i, ItemStack itemStack) { - inv.setItem(i, itemStack); - } - - @Override - public int getMaxStackSize() { - return inv.getMaxStackSize(); - } - - @Override - public void update() { - inv.update(); - } - - @Override - public boolean a(EntityHuman entityHuman) { - return inv.a(entityHuman); - } - - @Override - public void startOpen(EntityHuman entityHuman) { - // Don't do anything - } - - @Override - public void closeContainer(EntityHuman entityHuman) { - // Don't do anything - } - - @Override - public boolean b(int i, ItemStack itemStack) { - return inv.b(i, itemStack); - } - - @Override - public int getProperty(int i) { - return inv.getProperty(i); - } - - @Override - public void setProperty(int i, int i1) { - inv.setProperty(i, i1); - } - - @Override - public int h() { - return inv.h(); - } - - @Override - public void clear() { - inv.clear(); - } - - @Override - public List getContents() { - return inv.getContents(); - } - - @Override - public void onOpen(CraftHumanEntity craftHumanEntity) { - inv.onOpen(craftHumanEntity); - } - - @Override - public void onClose(CraftHumanEntity craftHumanEntity) { - inv.onClose(craftHumanEntity); - } - - @Override - public List getViewers() { - return inv.getViewers(); - } - - @Override - public InventoryHolder getOwner() { - return inv.getOwner(); - } - - @Override - public void setMaxStackSize(int i) { - inv.setMaxStackSize(i); - } - - @Override - public Location getLocation() { - return inv.getLocation(); - } - - @Override - public String getName() { - return inv.getName(); - } - - @Override - public boolean hasCustomName() { - return inv.hasCustomName(); - } - - @Override - public IChatBaseComponent getScoreboardDisplayName() { - return inv.getScoreboardDisplayName(); - } - - @Override - public Container createContainer(PlayerInventory playerInventory, EntityHuman entityHuman) { - // Don't let the chest itself create the container. - return new ContainerChest(playerInventory, this, entityHuman); - } - - @Override - public String getContainerName() { - return inv.getContainerName(); - } -} diff --git a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java index 45e53e2..b533c20 100644 --- a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java +++ b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 lishid. All rights reserved. + * 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 @@ -17,50 +17,48 @@ package com.lishid.openinv.internal.v1_11_R1; import java.lang.reflect.Field; +import java.lang.reflect.Modifier; import java.util.List; -import net.minecraft.server.v1_11_R1.NonNullList; -import org.bukkit.craftbukkit.v1_11_R1.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; +import com.lishid.openinv.internal.ISpecialEnderChest; + import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; +// Volatile +import net.minecraft.server.v1_11_R1.IInventory; import net.minecraft.server.v1_11_R1.InventoryEnderChest; import net.minecraft.server.v1_11_R1.InventorySubcontainer; import net.minecraft.server.v1_11_R1.ItemStack; -public class SpecialEnderChest extends InventorySubcontainer { +import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - private final CraftInventory inventory = new CraftInventory(this); private final InventoryEnderChest enderChest; - private CraftPlayer owner; - private boolean playerOnline; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; - public SpecialEnderChest(Player p, boolean online) { - this(p, ((CraftPlayer) p).getHandle().getEnderChest(), online); + public SpecialEnderChest(Player player, Boolean online) { + super(((CraftPlayer) player).getHandle().getEnderChest().getName(), + ((CraftPlayer) player).getHandle().getEnderChest().hasCustomName(), + ((CraftPlayer) player).getHandle().getEnderChest().getSize()); + CraftPlayer craftPlayer = (CraftPlayer) player; + this.enderChest = craftPlayer.getHandle().getEnderChest(); + this.bukkitOwner = craftPlayer; + setItemLists(this, enderChest.getContents()); } - public SpecialEnderChest(Player p, InventoryEnderChest enderChest, boolean online) { - super(enderChest.getName(), enderChest.hasCustomName(), enderChest.getSize()); - this.owner = (CraftPlayer) p; - this.enderChest = enderChest; - this.playerOnline = online; - reflectContents(getClass().getSuperclass(), this, this.enderChest.getContents()); - } - - private void saveOnExit() { - if (transaction.isEmpty() && !playerOnline) { - owner.saveData(); - } - } - - private void reflectContents(Class clazz, InventorySubcontainer enderChest, List items) { + private void setItemLists(InventorySubcontainer subcontainer, List list) { try { - Field itemsField = clazz.getDeclaredField("items"); - itemsField.setAccessible(true); - itemsField.set(enderChest, items); + // Prepare to remove final modifier + Field modifiers = Field.class.getDeclaredField("modifiers"); + modifiers.setAccessible(true); + // Access and replace main inventory array + Field field = InventorySubcontainer.class.getField("items"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(subcontainer, list); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (SecurityException e) { @@ -72,46 +70,31 @@ public class SpecialEnderChest extends InventorySubcontainer { } } - private void linkInventory(InventoryEnderChest inventory) { - reflectContents(inventory.getClass(), inventory, this.items); - } - + @Override public Inventory getBukkitInventory() { return inventory; } - public boolean inventoryRemovalCheck(boolean save) { - boolean offline = transaction.isEmpty() && !playerOnline; - - if (offline && save) { - owner.saveData(); - } - - return offline; - } - - public void playerOnline(Player p) { + @Override + public void setPlayerOnline(Player player) { if (!playerOnline) { - owner = (CraftPlayer) p; - linkInventory(((CraftPlayer) p).getHandle().getEnderChest()); + try { + this.bukkitOwner = player; + CraftPlayer craftPlayer = (CraftPlayer) player; + setItemLists(craftPlayer.getHandle().getEnderChest(), this.items); + } catch (Exception e) {} playerOnline = true; } } - public boolean playerOffline() { + @Override + public void setPlayerOffline() { playerOnline = false; - return inventoryRemovalCheck(false); } @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - inventoryRemovalCheck(true); - } - - @Override - public InventoryHolder getOwner() { - return this.owner; + public boolean isInUse() { + return !this.getViewers().isEmpty(); } @Override @@ -119,4 +102,5 @@ public class SpecialEnderChest extends InventorySubcontainer { super.update(); enderChest.update(); } + } diff --git a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java index a19bfe4..dbd07ed 100644 --- a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java +++ b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 lishid. All rights reserved. + * 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 @@ -17,101 +17,94 @@ package com.lishid.openinv.internal.v1_11_R1; import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.Arrays; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; -import net.minecraft.server.v1_11_R1.*; -import org.bukkit.craftbukkit.v1_11_R1.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -public class SpecialPlayerInventory extends PlayerInventory { +import net.minecraft.server.v1_11_R1.ContainerUtil; +// Volatile +import net.minecraft.server.v1_11_R1.EntityHuman; +import net.minecraft.server.v1_11_R1.ItemStack; +import net.minecraft.server.v1_11_R1.NonNullList; +import net.minecraft.server.v1_11_R1.PlayerInventory; + +import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { private final CraftInventory inventory = new CraftInventory(this); - private final NonNullList extra = NonNullList.a(); - private CraftPlayer owner; - private NonNullList[] arrays; - private boolean playerOnline; + private boolean playerOnline = false; - public SpecialPlayerInventory(Player p, boolean online) { - super(((CraftPlayer) p).getHandle()); - this.owner = (CraftPlayer) p; + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); this.playerOnline = online; - reflectContents(getClass().getSuperclass(), player.inventory, this); + setItemArrays(this, player.inventory.items, player.inventory.armor, player.inventory.extraSlots); } - private void reflectContents(Class clazz, PlayerInventory src, PlayerInventory dest) { + private void setItemArrays(PlayerInventory inventory, NonNullList items, + NonNullList armor, NonNullList extraSlots) { try { - Field itemsField = clazz.getDeclaredField("items"); - itemsField.setAccessible(true); - itemsField.set(dest, src.items); + // Prepare to remove final modifier + Field modifiers = Field.class.getDeclaredField("modifiers"); + modifiers.setAccessible(true); - Field armorField = clazz.getDeclaredField("armor"); - armorField.setAccessible(true); - armorField.set(dest, src.armor); + // Access and replace main inventory array + Field field = PlayerInventory.class.getField("items"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, items); - Field extraSlotsField = clazz.getDeclaredField("extraSlots"); - extraSlotsField.setAccessible(true); - extraSlotsField.set(dest, src.extraSlots); + // Access and replace armor inventory array + field = PlayerInventory.class.getField("armor"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, armor); + + // Access and replace offhand inventory array + field = PlayerInventory.class.getField("extraSlots"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, extraSlots); + + // Access and replace array containing all inventory arrays + field = PlayerInventory.class.getDeclaredField("g"); + field.setAccessible(true); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, Arrays.asList(new NonNullList[] { items, armor, extraSlots })); } catch (NoSuchFieldException e) { - e.printStackTrace(); - } catch (SecurityException 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(); } - - //noinspection unchecked - arrays = new NonNullList[] { this.items, this.armor, this.extraSlots, this.extra }; - } - - private void linkInventory(PlayerInventory inventory) { - reflectContents(inventory.getClass(), inventory, this); } + @Override public Inventory getBukkitInventory() { return inventory; } - public boolean inventoryRemovalCheck(boolean save) { - boolean offline = transaction.isEmpty() && !playerOnline; - - if (offline && save) { - owner.saveData(); - } - - return offline; - } - - public void playerOnline(Player player) { + @Override + public void setPlayerOnline(Player player) { if (!playerOnline) { - owner = (CraftPlayer) player; - this.player = owner.getHandle(); - linkInventory(owner.getHandle().inventory); + this.player = ((CraftPlayer) player).getHandle(); + setItemArrays(this.player.inventory, items, armor, extraSlots); playerOnline = true; } } - public boolean playerOffline() { + @Override + public void setPlayerOffline() { playerOnline = false; - return inventoryRemovalCheck(false); } @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - inventoryRemovalCheck(true); - } - - @Override - public NonNullList getContents() { - NonNullList contents = NonNullList.a(); - contents.addAll(this.items); - contents.addAll(this.armor); - contents.addAll(this.extraSlots); - return contents; + public boolean isInUse() { + return !this.getViewers().isEmpty(); } @Override @@ -121,153 +114,142 @@ public class SpecialPlayerInventory extends PlayerInventory { @Override public ItemStack getItem(int i) { - NonNullList is = null; - NonNullList[] contents = this.arrays; - int j = contents.length; + NonNullList list = this.items; - for (int k = 0; k < j; ++k) { - NonNullList is2 = contents[k]; - - if (i < is2.size()) { - is = is2; - break; - } - - i -= is2.size(); - } - - if (is == this.items) { + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { i = getReversedItemSlotNum(i); - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } else if (is == this.extraSlots) { - // Do nothing - } else if (is == this.extra) { - // Do nothing } - return is == null ? ItemStack.a : is.get(i); + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + return list.get(i); } @Override public ItemStack splitStack(int i, int j) { - NonNullList is = null; - NonNullList[] contents = this.arrays; - int k = contents.length; + NonNullList list = this.items; - for (int l = 0; l < k; ++l) { - NonNullList is2 = contents[l]; - - if (i < is2.size()) { - is = is2; - break; - } - - i -= is2.size(); - } - - if (is == this.items) { + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { i = getReversedItemSlotNum(i); - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } else if (is == this.extraSlots) { - // Do nothing - } else if (is == this.extra) { - // Do nothing } - return is != null && !is.get(i).isEmpty() ? ContainerUtil.a(is, i, j) : ItemStack.a; + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + return list == null || list.get(i).isEmpty() ? ItemStack.a : ContainerUtil.a(list, i, j); } @Override public ItemStack splitWithoutUpdate(int i) { - NonNullList is = null; - NonNullList[] contents = this.arrays; - int j = contents.length; + NonNullList list = this.items; - for (int object = 0; object < j; ++object) { - NonNullList is2 = contents[object]; - - if (i < is2.size()) { - is = is2; - break; - } - - i -= is2.size(); + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = getReversedItemSlotNum(i); } - if (is != null && !is.get(i).isEmpty()) { - if (is == this.items) { - i = getReversedItemSlotNum(i); - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } else if (is == this.extraSlots) { - // Do nothing - } else if (is == this.extra) { - // Do nothing - } + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = getReversedArmorSlotNum(i); + } - Object object = is.get(i); - is.set(i, ItemStack.a); - return (ItemStack) object; - } else { + if (i >= list.size()) { return ItemStack.a; } + + if (list != null && !list.get(i).isEmpty()) { + ItemStack itemstack = list.get(i); + + list.set(i, ItemStack.a); + return itemstack; + } + + return ItemStack.a; } @Override - public void setItem(int i, ItemStack itemStack) { - NonNullList is = null; - NonNullList[] contents = this.arrays; - int j = contents.length; + public void setItem(int i, ItemStack itemstack) { + NonNullList list = this.items; - for (int k = 0; k < j; ++k) { - NonNullList is2 = contents[k]; - - if (i < is2.size()) { - is = is2; - break; - } - - i -= is2.size(); + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = getReversedItemSlotNum(i); } - if (is != null) { - if (is == this.items) { - i = getReversedItemSlotNum(i); - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } else if (is == this.extraSlots) { - // Do nothing - } else if (is == this.extra) { - owner.getHandle().drop(itemStack, true); - itemStack = ItemStack.a; - } + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = getReversedArmorSlotNum(i); + } - is.set(i, itemStack); + if (i >= list.size()) { + player.drop(itemstack, true); + return; + } - owner.getHandle().defaultContainer.b(); + if (list != null) { + list.set(i, itemstack); } } private int getReversedItemSlotNum(int i) { - return (i >= 27) ? (i - 27) : (i + 9); + if (i >= 27) { + return i - 27; + } + return i + 9; } private int getReversedArmorSlotNum(int i) { - if (i == 0) return 3; - if (i == 1) return 2; - if (i == 2) return 1; - return (i == 3) ? 0 : i; - } - - @Override - public boolean hasCustomName() { - return true; + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; } @Override public String getName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } return player.getName(); } @@ -276,9 +258,4 @@ public class SpecialPlayerInventory extends PlayerInventory { return true; } - @Override - public void update() { - super.update(); - player.inventory.update(); - } } -- 2.49.1 From 5c4886c66b4a242521ba8729859d4e8e92a97043 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 25 Nov 2016 16:59:41 -0500 Subject: [PATCH 070/253] Reimplement /searchender --- .../main/java/com/lishid/openinv/OpenInv.java | 6 +- .../commands/SearchInvPluginCommand.java | 5 +- plugin/src/main/resources/plugin.yml | 56 +++++++++---------- 3 files changed, 36 insertions(+), 31 deletions(-) diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/src/main/java/com/lishid/openinv/OpenInv.java index 7bc80e5..48b7637 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/src/main/java/com/lishid/openinv/OpenInv.java @@ -144,7 +144,9 @@ public class OpenInv extends JavaPlugin { pm.registerEvents(new OpenInvInventoryListener(this), this); getCommand("openinv").setExecutor(new OpenInvPluginCommand(this)); - getCommand("searchinv").setExecutor(new SearchInvPluginCommand()); + SearchInvPluginCommand searchInv = new SearchInvPluginCommand(); + getCommand("searchinv").setExecutor(searchInv); + getCommand("searchender").setExecutor(searchInv); getCommand("silentchest").setExecutor(new SilentChestPluginCommand(this)); getCommand("anychest").setExecutor(new AnyChestPluginCommand(this)); getCommand("openender").setExecutor(new OpenEnderPluginCommand(this)); @@ -566,7 +568,7 @@ public class OpenInv extends JavaPlugin { } // Send usage - player.sendMessage(command.getUsage()); + player.sendMessage(command.getUsage().replace("", commandName)); List aliases = command.getAliases(); if (aliases.isEmpty()) { diff --git a/plugin/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java index 917d883..04ee588 100644 --- a/plugin/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java +++ b/plugin/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java @@ -23,9 +23,11 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; public class SearchInvPluginCommand implements CommandExecutor { + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { Material material = null; @@ -53,7 +55,8 @@ public class SearchInvPluginCommand implements CommandExecutor { StringBuilder players = new StringBuilder(); for (Player player : Bukkit.getServer().getOnlinePlayers()) { - if (player.getInventory().contains(material, count)) { + Inventory inventory = command.getName().equals("searchinv") ? player.getInventory() : player.getEnderChest(); + if (inventory.contains(material, count)) { players.append(player.getName()).append(", "); } } diff --git a/plugin/src/main/resources/plugin.yml b/plugin/src/main/resources/plugin.yml index 32c0457..f1fed56 100644 --- a/plugin/src/main/resources/plugin.yml +++ b/plugin/src/main/resources/plugin.yml @@ -2,44 +2,44 @@ name: OpenInv main: com.lishid.openinv.OpenInv version: ${openinv.version} author: lishid -authors: [ShadowRanger] +authors: [Jikoo, ShadowRanger] description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. commands: openinv: aliases: [oi, inv, open] - description: Opens a player's inventory. - usage: | - / - Opens last person's inventory. - / - Opens a player's inventory. + description: Open a player's inventory + permission: OpenInv.*;OpenInv.openinv + usage: |- + / [Player] - Open a player's inventory openender: aliases: [oe] - description: Opens a player's ender chest. - usage: | - / - Opens last person's ender chest. - / - Opens a player's ender chest. + description: Opens the enderchest of a player + permission: OpenInv.*;OpenInv.openender + usage: |- + / [Player] - Open a player's enderchest searchinv: aliases: [si] - description: Searches and lists players that have a specific item in their inventory. - usage: | - / [minAmount] - Item can be the Item ID or the CraftBukkit Item Name, minAmount is the minimum amount to be considered. + description: Search and list players having a specific item + permission: OpenInv.*;OpenInv.search + usage: |- + / [MinAmount] - Item is the ID or the Bukkit Material, MinAmount is the minimum amount required searchender: aliases: [se] - description: Searches and lists players that have a specific item in their ender chest. - usage: | - / [minAmount] - Item can be the Item ID or the CraftBukkit Item Name, minAmount is the minimum amount to be considered. - toggleopeninv: - aliases: [toi, toggleoi, toggleinv] - description: Toggles the item openinv function. - usage: | - / [check] - Checks whether item openinv is enabled. - anychest: - aliases: [ac] - description: Toggles the any chest function, which allows opening of blocked chests. - usage: | - / [check] - Checks whether any chest is enabled. + permission: OpenInv.*;OpenInv.search + description: Searches and lists players having a specific item in their ender chest + usage: |- + / [minAmount] - Item is the ID or the Bukkit Material, MinAmount is the minimum amount required silentchest: aliases: [sc, silent] - description: Toggles the silent chest function, which hides the animation of a chest when opened or closed, and suppresses the sound. - usage: | - / [check] - Checks whether silent chest is enabled. + description: Toggle silent chest function, which stops sounds and animations when using containers. + permission: OpenInv.*;OpenInv.silent + usage: |- + / [Check] - Check or toggle silent chest + anychest: + aliases: [ac] + description: Toggle anychest function, which allows opening of blocked chests. + permission: OpenInv.*;OpenInv.anychest + usage: |- + / [Check] - Checks or toggle anychest + -- 2.49.1 From a10c61168ad158d352711e0cfbb3fc227bc5f309 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 25 Nov 2016 22:23:18 -0500 Subject: [PATCH 071/253] Add modules for 1.4.5 through 1.10, flesh out readme --- 1_4_5/pom.xml | 28 ++ .../internal/v1_4_5/AnySilentContainer.java | 168 ++++++++++ .../internal/v1_4_5/InventoryAccess.java | 79 +++++ .../internal/v1_4_5/PlayerDataManager.java | 62 ++++ .../internal/v1_4_5/SilentContainerChest.java | 46 +++ .../internal/v1_4_5/SpecialEnderChest.java | 128 ++++++++ .../v1_4_5/SpecialPlayerInventory.java | 237 ++++++++++++++ 1_4_6/pom.xml | 28 ++ .../internal/v1_4_6/AnySilentContainer.java | 168 ++++++++++ .../internal/v1_4_6/InventoryAccess.java | 79 +++++ .../internal/v1_4_6/PlayerDataManager.java | 62 ++++ .../internal/v1_4_6/SilentContainerChest.java | 46 +++ .../internal/v1_4_6/SpecialEnderChest.java | 128 ++++++++ .../v1_4_6/SpecialPlayerInventory.java | 229 ++++++++++++++ README | 13 - README.MD | 139 ++++++++ assembly/pom.xml | 131 ++++++++ pom.xml | 44 ++- v1_10_R1/pom.xml | 28 ++ .../internal/v1_10_R1/AnySilentContainer.java | 206 ++++++++++++ .../internal/v1_10_R1/InventoryAccess.java | 79 +++++ .../internal/v1_10_R1/PlayerDataManager.java | 64 ++++ .../v1_10_R1/SilentContainerChest.java | 46 +++ .../internal/v1_10_R1/SpecialEnderChest.java | 105 +++++++ .../v1_10_R1/SpecialPlayerInventory.java | 296 ++++++++++++++++++ v1_4_R1/pom.xml | 28 ++ .../internal/v1_4_R1/AnySilentContainer.java | 168 ++++++++++ .../internal/v1_4_R1/InventoryAccess.java | 79 +++++ .../internal/v1_4_R1/PlayerDataManager.java | 63 ++++ .../v1_4_R1/SilentContainerChest.java | 46 +++ .../internal/v1_4_R1/SpecialEnderChest.java | 128 ++++++++ .../v1_4_R1/SpecialPlayerInventory.java | 237 ++++++++++++++ v1_5_R2/pom.xml | 28 ++ .../internal/v1_5_R2/AnySilentContainer.java | 168 ++++++++++ .../internal/v1_5_R2/InventoryAccess.java | 79 +++++ .../internal/v1_5_R2/PlayerDataManager.java | 62 ++++ .../v1_5_R2/SilentContainerChest.java | 46 +++ .../internal/v1_5_R2/SpecialEnderChest.java | 129 ++++++++ .../v1_5_R2/SpecialPlayerInventory.java | 229 ++++++++++++++ v1_5_R3/pom.xml | 28 ++ .../internal/v1_5_R3/AnySilentContainer.java | 168 ++++++++++ .../internal/v1_5_R3/InventoryAccess.java | 79 +++++ .../internal/v1_5_R3/PlayerDataManager.java | 62 ++++ .../v1_5_R3/SilentContainerChest.java | 46 +++ .../internal/v1_5_R3/SpecialEnderChest.java | 129 ++++++++ .../v1_5_R3/SpecialPlayerInventory.java | 229 ++++++++++++++ v1_6_R1/pom.xml | 28 ++ .../internal/v1_6_R1/AnySilentContainer.java | 168 ++++++++++ .../internal/v1_6_R1/InventoryAccess.java | 79 +++++ .../internal/v1_6_R1/PlayerDataManager.java | 62 ++++ .../v1_6_R1/SilentContainerChest.java | 46 +++ .../internal/v1_6_R1/SpecialEnderChest.java | 129 ++++++++ .../v1_6_R1/SpecialPlayerInventory.java | 229 ++++++++++++++ v1_6_R2/pom.xml | 28 ++ .../internal/v1_6_R2/AnySilentContainer.java | 168 ++++++++++ .../internal/v1_6_R2/InventoryAccess.java | 79 +++++ .../internal/v1_6_R2/PlayerDataManager.java | 62 ++++ .../v1_6_R2/SilentContainerChest.java | 46 +++ .../internal/v1_6_R2/SpecialEnderChest.java | 129 ++++++++ .../v1_6_R2/SpecialPlayerInventory.java | 229 ++++++++++++++ v1_6_R3/pom.xml | 28 ++ .../internal/v1_6_R3/AnySilentContainer.java | 168 ++++++++++ .../internal/v1_6_R3/InventoryAccess.java | 79 +++++ .../internal/v1_6_R3/PlayerDataManager.java | 62 ++++ .../v1_6_R3/SilentContainerChest.java | 46 +++ .../internal/v1_6_R3/SpecialEnderChest.java | 129 ++++++++ .../v1_6_R3/SpecialPlayerInventory.java | 226 +++++++++++++ v1_7_R1/pom.xml | 28 ++ .../internal/v1_7_R1/AnySilentContainer.java | 169 ++++++++++ .../internal/v1_7_R1/InventoryAccess.java | 79 +++++ .../internal/v1_7_R1/PlayerDataManager.java | 63 ++++ .../v1_7_R1/SilentContainerChest.java | 46 +++ .../internal/v1_7_R1/SpecialEnderChest.java | 129 ++++++++ .../v1_7_R1/SpecialPlayerInventory.java | 229 ++++++++++++++ v1_7_R2/pom.xml | 28 ++ .../internal/v1_7_R2/AnySilentContainer.java | 169 ++++++++++ .../internal/v1_7_R2/InventoryAccess.java | 79 +++++ .../internal/v1_7_R2/PlayerDataManager.java | 64 ++++ .../v1_7_R2/SilentContainerChest.java | 46 +++ .../internal/v1_7_R2/SpecialEnderChest.java | 129 ++++++++ .../v1_7_R2/SpecialPlayerInventory.java | 229 ++++++++++++++ v1_7_R3/pom.xml | 28 ++ .../internal/v1_7_R3/AnySilentContainer.java | 169 ++++++++++ .../internal/v1_7_R3/InventoryAccess.java | 79 +++++ .../internal/v1_7_R3/PlayerDataManager.java | 63 ++++ .../v1_7_R3/SilentContainerChest.java | 45 +++ .../internal/v1_7_R3/SpecialEnderChest.java | 129 ++++++++ .../v1_7_R3/SpecialPlayerInventory.java | 229 ++++++++++++++ v1_7_R4/pom.xml | 28 ++ .../internal/v1_7_R4/AnySilentContainer.java | 169 ++++++++++ .../internal/v1_7_R4/InventoryAccess.java | 79 +++++ .../internal/v1_7_R4/PlayerDataManager.java | 63 ++++ .../v1_7_R4/SilentContainerChest.java | 46 +++ .../internal/v1_7_R4/SpecialEnderChest.java | 129 ++++++++ .../v1_7_R4/SpecialPlayerInventory.java | 229 ++++++++++++++ v1_8_R1/pom.xml | 28 ++ .../internal/v1_8_R1/AnySilentContainer.java | 205 ++++++++++++ .../internal/v1_8_R1/InventoryAccess.java | 79 +++++ .../internal/v1_8_R1/PlayerDataManager.java | 64 ++++ .../v1_8_R1/SilentContainerChest.java | 46 +++ .../internal/v1_8_R1/SpecialEnderChest.java | 86 +++++ .../v1_8_R1/SpecialPlayerInventory.java | 229 ++++++++++++++ v1_8_R2/pom.xml | 28 ++ .../internal/v1_8_R2/AnySilentContainer.java | 205 ++++++++++++ .../internal/v1_8_R2/InventoryAccess.java | 79 +++++ .../internal/v1_8_R2/PlayerDataManager.java | 64 ++++ .../v1_8_R2/SilentContainerChest.java | 46 +++ .../internal/v1_8_R2/SpecialEnderChest.java | 86 +++++ .../v1_8_R2/SpecialPlayerInventory.java | 229 ++++++++++++++ v1_8_R3/pom.xml | 28 ++ .../internal/v1_8_R3/AnySilentContainer.java | 205 ++++++++++++ .../internal/v1_8_R3/InventoryAccess.java | 79 +++++ .../internal/v1_8_R3/PlayerDataManager.java | 64 ++++ .../v1_8_R3/SilentContainerChest.java | 46 +++ .../internal/v1_8_R3/SpecialEnderChest.java | 86 +++++ .../v1_8_R3/SpecialPlayerInventory.java | 229 ++++++++++++++ v1_9_R1/pom.xml | 27 ++ .../internal/v1_9_R1/AnySilentContainer.java | 205 ++++++++++++ .../internal/v1_9_R1/InventoryAccess.java | 79 +++++ .../internal/v1_9_R1/PlayerDataManager.java | 64 ++++ .../v1_9_R1/SilentContainerChest.java | 46 +++ .../internal/v1_9_R1/SpecialEnderChest.java | 86 +++++ .../v1_9_R1/SpecialPlayerInventory.java | 290 +++++++++++++++++ v1_9_R2/pom.xml | 28 ++ .../internal/v1_9_R2/AnySilentContainer.java | 205 ++++++++++++ .../internal/v1_9_R2/InventoryAccess.java | 79 +++++ .../internal/v1_9_R2/PlayerDataManager.java | 64 ++++ .../v1_9_R2/SilentContainerChest.java | 46 +++ .../internal/v1_9_R2/SpecialEnderChest.java | 86 +++++ .../v1_9_R2/SpecialPlayerInventory.java | 296 ++++++++++++++++++ 130 files changed, 13859 insertions(+), 15 deletions(-) create mode 100644 1_4_5/pom.xml create mode 100644 1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java create mode 100644 1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java create mode 100644 1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java create mode 100644 1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java create mode 100644 1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java create mode 100644 1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java create mode 100644 1_4_6/pom.xml create mode 100644 1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java create mode 100644 1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java create mode 100644 1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java create mode 100644 1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java create mode 100644 1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java create mode 100644 1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java delete mode 100644 README create mode 100644 README.MD create mode 100644 v1_10_R1/pom.xml create mode 100644 v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java create mode 100644 v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java create mode 100644 v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java create mode 100644 v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SilentContainerChest.java create mode 100644 v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java create mode 100644 v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java create mode 100644 v1_4_R1/pom.xml create mode 100644 v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java create mode 100644 v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java create mode 100644 v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java create mode 100644 v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java create mode 100644 v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java create mode 100644 v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java create mode 100644 v1_5_R2/pom.xml create mode 100644 v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java create mode 100644 v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java create mode 100644 v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java create mode 100644 v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java create mode 100644 v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java create mode 100644 v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java create mode 100644 v1_5_R3/pom.xml create mode 100644 v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java create mode 100644 v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java create mode 100644 v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java create mode 100644 v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java create mode 100644 v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java create mode 100644 v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java create mode 100644 v1_6_R1/pom.xml create mode 100644 v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java create mode 100644 v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java create mode 100644 v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java create mode 100644 v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java create mode 100644 v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java create mode 100644 v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java create mode 100644 v1_6_R2/pom.xml create mode 100644 v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java create mode 100644 v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java create mode 100644 v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java create mode 100644 v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java create mode 100644 v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java create mode 100644 v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java create mode 100644 v1_6_R3/pom.xml create mode 100644 v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java create mode 100644 v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java create mode 100644 v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java create mode 100644 v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java create mode 100644 v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java create mode 100644 v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java create mode 100644 v1_7_R1/pom.xml create mode 100644 v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java create mode 100644 v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java create mode 100644 v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java create mode 100644 v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java create mode 100644 v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java create mode 100644 v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java create mode 100644 v1_7_R2/pom.xml create mode 100644 v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java create mode 100644 v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java create mode 100644 v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java create mode 100644 v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java create mode 100644 v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java create mode 100644 v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java create mode 100644 v1_7_R3/pom.xml create mode 100644 v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java create mode 100644 v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java create mode 100644 v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java create mode 100644 v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java create mode 100644 v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java create mode 100644 v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java create mode 100644 v1_7_R4/pom.xml create mode 100644 v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java create mode 100644 v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java create mode 100644 v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java create mode 100644 v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java create mode 100644 v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java create mode 100644 v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java create mode 100644 v1_8_R1/pom.xml create mode 100644 v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java create mode 100644 v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java create mode 100644 v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java create mode 100644 v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java create mode 100644 v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java create mode 100644 v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java create mode 100644 v1_8_R2/pom.xml create mode 100644 v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java create mode 100644 v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java create mode 100644 v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java create mode 100644 v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java create mode 100644 v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java create mode 100644 v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java create mode 100644 v1_8_R3/pom.xml create mode 100644 v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java create mode 100644 v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java create mode 100644 v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java create mode 100644 v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java create mode 100644 v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java create mode 100644 v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java create mode 100644 v1_9_R1/pom.xml create mode 100644 v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java create mode 100644 v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java create mode 100644 v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java create mode 100644 v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java create mode 100644 v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java create mode 100644 v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java create mode 100644 v1_9_R2/pom.xml create mode 100644 v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java create mode 100644 v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java create mode 100644 v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java create mode 100644 v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SilentContainerChest.java create mode 100644 v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java create mode 100644 v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java diff --git a/1_4_5/pom.xml b/1_4_5/pom.xml new file mode 100644 index 0000000..0abd40e --- /dev/null +++ b/1_4_5/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_4_5 + OpenInvAdapter1_4_5 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.bukkit + craftbukkit + 1.4.5-R1.0 + provided + + + + diff --git a/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java b/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java new file mode 100644 index 0000000..f084a76 --- /dev/null +++ b/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java @@ -0,0 +1,168 @@ +/* + * 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_4_5; + +import java.lang.reflect.Field; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_4_5.AxisAlignedBB; +import net.minecraft.server.v1_4_5.BlockEnderChest; +import net.minecraft.server.v1_4_5.EntityOcelot; +import net.minecraft.server.v1_4_5.EntityPlayer; +import net.minecraft.server.v1_4_5.IInventory; +import net.minecraft.server.v1_4_5.InventoryEnderChest; +import net.minecraft.server.v1_4_5.InventoryLargeChest; +import net.minecraft.server.v1_4_5.Packet100OpenWindow; +import net.minecraft.server.v1_4_5.TileEntityChest; +import net.minecraft.server.v1_4_5.TileEntityEnderChest; +import net.minecraft.server.v1_4_5.World; + +import org.bukkit.craftbukkit.v1_4_5.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.t(block.getX(), block.getY() + 1, block.getZ()); + } + + // If block or ocelot on top + if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + return true; + } + + int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + + // If block next to chest is chest and has a block or ocelot on top + if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); + } else if(world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); + } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { + return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); + } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { + return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + } + + return false; + } + + private boolean isBlockedChest(World world, int x, int y, int z) { + return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); + } + + private boolean hasOcelotOnTop(World world, int x, int y, int z) { + for (Object localEntity : world.a(EntityOcelot.class, + AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is API-only + if (silentchest && block.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + return true; + } + + World world = player.world; + Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + + if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + } + + boolean returnValue = false; + if (!silentchest) { + player.openContainer((IInventory) tile); + returnValue = true; + } else { + try { + int windowId = 0; + try { + Field windowID = player.getClass().getDeclaredField("containerCounter"); + windowID.setAccessible(true); + windowId = windowID.getInt(player); + windowId = windowId % 100 + 1; + windowID.setInt(player, windowId); + } catch (NoSuchFieldException e) {} + + player.netServerHandler.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize())); + player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java b/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java new file mode 100644 index 0000000..4b61708 --- /dev/null +++ b/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java @@ -0,0 +1,79 @@ +/* + * 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_4_5; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_4_5.IInventory; + +import org.bukkit.craftbukkit.v1_4_5.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + +} diff --git a/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java b/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java new file mode 100644 index 0000000..08500e7 --- /dev/null +++ b/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java @@ -0,0 +1,62 @@ +/* + * 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_4_5; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_4_5.EntityPlayer; +import net.minecraft.server.v1_4_5.ItemInWorldManager; +import net.minecraft.server.v1_4_5.MinecraftServer; + +import org.bukkit.craftbukkit.v1_4_5.CraftServer; + +public class PlayerDataManager implements IPlayerDataManager { + + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure the player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + + // Create an entity to load the player data + EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), offline.getName(), + new ItemInWorldManager(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; + } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getName(); + } + +} diff --git a/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java b/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java new file mode 100644 index 0000000..0405f7a --- /dev/null +++ b/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java @@ -0,0 +1,46 @@ +/* + * 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_4_5; + +// Volatile +import net.minecraft.server.v1_4_5.ContainerChest; +import net.minecraft.server.v1_4_5.EntityHuman; +import net.minecraft.server.v1_4_5.IInventory; +import net.minecraft.server.v1_4_5.ItemStack; +import net.minecraft.server.v1_4_5.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(IInventory i1, IInventory i2) { + super(i1, i2); + // Send close signal + i2.f(); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != null) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(null); + entityHuman.drop(carried); + } + } + +} diff --git a/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java b/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java new file mode 100644 index 0000000..abedc51 --- /dev/null +++ b/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java @@ -0,0 +1,128 @@ +/* + * 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_4_5; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +// Volatile +import net.minecraft.server.v1_4_5.IInventory; +import net.minecraft.server.v1_4_5.InventoryEnderChest; +import net.minecraft.server.v1_4_5.InventorySubcontainer; +import net.minecraft.server.v1_4_5.ItemStack; + +import org.bukkit.craftbukkit.v1_4_5.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_4_5.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_4_5.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private final List transaction = new ArrayList(); + private boolean playerOnline = false; + private CraftPlayer owner; + private int maxStack = MAX_STACK; + + public SpecialEnderChest(Player p, Boolean online) { + super(((CraftPlayer) p).getHandle().getEnderChest().getName(), + ((CraftPlayer) p).getHandle().getEnderChest().getSize()); + CraftPlayer player = (CraftPlayer) p; + this.enderChest = player.getHandle().getEnderChest(); + this.owner = player; + this.items = enderChest.getContents(); + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + try { + owner = (CraftPlayer) player; + InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } catch (Exception e) {} + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + return this.items; + } + + @Override + public void onOpen(CraftHumanEntity who) { + transaction.add(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + transaction.remove(who); + } + + @Override + public List getViewers() { + return transaction; + } + + @Override + public InventoryHolder getOwner() { + return this.owner; + } + + @Override + public void setMaxStackSize(int size) { + maxStack = size; + } + + @Override + public int getMaxStackSize() { + return maxStack; + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } + +} diff --git a/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java b/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java new file mode 100644 index 0000000..b989c48 --- /dev/null +++ b/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java @@ -0,0 +1,237 @@ +/* + * 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_4_5; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_4_5.ItemStack; +import net.minecraft.server.v1_4_5.PlayerInventory; + +import org.bukkit.craftbukkit.v1_4_5.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_4_5.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final ItemStack[] extra = new ItemStack[5]; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); + this.playerOnline = online; + this.items = player.inventory.items; + this.armor = player.inventory.armor; + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + this.player = ((CraftPlayer) player).getHandle(); + this.player.inventory.items = this.items; + this.player.inventory.armor = this.armor; + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(items, 0, contents, 0, items.length); + System.arraycopy(armor, 0, contents, items.length, armor.length); + return contents; + } + + @Override + public int getSize() { + return super.getSize() + 5; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } + else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } + else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } + else { + itemstack = is[i].a(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + else { + return null; + } + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } + else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + else { + return null; + } + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } + else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + // Effects + if (is == this.extra) { + player.drop(itemstack); + itemstack = null; + } + + is[i] = itemstack; + + player.defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) + return i - 27; + else + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) + return 3; + if (i == 1) + return 2; + if (i == 2) + return 1; + if (i == 3) + return 0; + else + return i; + } + + @Override + public String getName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + +} diff --git a/1_4_6/pom.xml b/1_4_6/pom.xml new file mode 100644 index 0000000..fb3c735 --- /dev/null +++ b/1_4_6/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_4_6 + OpenInvAdapter1_4_6 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.bukkit + craftbukkit + 1.4.6-R0.3 + provided + + + + diff --git a/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java b/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java new file mode 100644 index 0000000..9e899a2 --- /dev/null +++ b/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java @@ -0,0 +1,168 @@ +/* + * 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_4_6; + +import java.lang.reflect.Field; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_4_6.AxisAlignedBB; +import net.minecraft.server.v1_4_6.BlockEnderChest; +import net.minecraft.server.v1_4_6.EntityOcelot; +import net.minecraft.server.v1_4_6.EntityPlayer; +import net.minecraft.server.v1_4_6.IInventory; +import net.minecraft.server.v1_4_6.InventoryEnderChest; +import net.minecraft.server.v1_4_6.InventoryLargeChest; +import net.minecraft.server.v1_4_6.Packet100OpenWindow; +import net.minecraft.server.v1_4_6.TileEntityChest; +import net.minecraft.server.v1_4_6.TileEntityEnderChest; +import net.minecraft.server.v1_4_6.World; + +import org.bukkit.craftbukkit.v1_4_6.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.t(block.getX(), block.getY() + 1, block.getZ()); + } + + // If block or ocelot on top + if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + return true; + } + + int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + + // If block next to chest is chest and has a block or ocelot on top + if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); + } else if(world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); + } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { + return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); + } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { + return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + } + + return false; + } + + private boolean isBlockedChest(World world, int x, int y, int z) { + return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); + } + + private boolean hasOcelotOnTop(World world, int x, int y, int z) { + for (Object localEntity : world.a(EntityOcelot.class, + AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is API-only + if (silentchest && block.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + return true; + } + + World world = player.world; + Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + + if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + } + + boolean returnValue = false; + if (!silentchest) { + player.openContainer((IInventory) tile); + returnValue = true; + } else { + try { + int windowId = 0; + try { + Field windowID = player.getClass().getDeclaredField("containerCounter"); + windowID.setAccessible(true); + windowId = windowID.getInt(player); + windowId = windowId % 100 + 1; + windowID.setInt(player, windowId); + } catch (NoSuchFieldException e) {} + + player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize())); + player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java b/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java new file mode 100644 index 0000000..69a3374 --- /dev/null +++ b/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java @@ -0,0 +1,79 @@ +/* + * 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_4_6; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_4_6.IInventory; + +import org.bukkit.craftbukkit.v1_4_6.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + +} diff --git a/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java b/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java new file mode 100644 index 0000000..b768876 --- /dev/null +++ b/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java @@ -0,0 +1,62 @@ +/* + * 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_4_6; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_4_6.EntityPlayer; +import net.minecraft.server.v1_4_6.MinecraftServer; +import net.minecraft.server.v1_4_6.PlayerInteractManager; + +import org.bukkit.craftbukkit.v1_4_6.CraftServer; + +public class PlayerDataManager implements IPlayerDataManager { + + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure the player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + + // Create an entity to load the player data + EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), offline.getName(), + 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; + } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getName(); + } + +} diff --git a/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java b/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java new file mode 100644 index 0000000..c613a7b --- /dev/null +++ b/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java @@ -0,0 +1,46 @@ +/* + * 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_4_6; + +// Volatile +import net.minecraft.server.v1_4_6.ContainerChest; +import net.minecraft.server.v1_4_6.EntityHuman; +import net.minecraft.server.v1_4_6.IInventory; +import net.minecraft.server.v1_4_6.ItemStack; +import net.minecraft.server.v1_4_6.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(IInventory i1, IInventory i2) { + super(i1, i2); + // Send close signal + i2.f(); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != null) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(null); + entityHuman.drop(carried); + } + } + +} diff --git a/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java b/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java new file mode 100644 index 0000000..b863941 --- /dev/null +++ b/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java @@ -0,0 +1,128 @@ +/* + * 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_4_6; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +// Volatile +import net.minecraft.server.v1_4_6.IInventory; +import net.minecraft.server.v1_4_6.InventoryEnderChest; +import net.minecraft.server.v1_4_6.InventorySubcontainer; +import net.minecraft.server.v1_4_6.ItemStack; + +import org.bukkit.craftbukkit.v1_4_6.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_4_6.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_4_6.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private final List transaction = new ArrayList(); + private boolean playerOnline = false; + private CraftPlayer owner; + private int maxStack = MAX_STACK; + + public SpecialEnderChest(Player p, Boolean online) { + super(((CraftPlayer) p).getHandle().getEnderChest().getName(), + ((CraftPlayer) p).getHandle().getEnderChest().getSize()); + CraftPlayer player = (CraftPlayer) p; + this.enderChest = player.getHandle().getEnderChest(); + this.owner = player; + this.items = enderChest.getContents(); + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + try { + owner = (CraftPlayer) player; + InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } catch (Exception e) {} + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + return this.items; + } + + @Override + public void onOpen(CraftHumanEntity who) { + transaction.add(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + transaction.remove(who); + } + + @Override + public List getViewers() { + return transaction; + } + + @Override + public InventoryHolder getOwner() { + return this.owner; + } + + @Override + public void setMaxStackSize(int size) { + maxStack = size; + } + + @Override + public int getMaxStackSize() { + return maxStack; + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } + +} diff --git a/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java b/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java new file mode 100644 index 0000000..42fa710 --- /dev/null +++ b/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java @@ -0,0 +1,229 @@ +/* + * 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_4_6; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_4_6.ItemStack; +import net.minecraft.server.v1_4_6.PlayerInventory; + +import org.bukkit.craftbukkit.v1_4_6.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_4_6.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final ItemStack[] extra = new ItemStack[5]; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); + this.playerOnline = online; + this.items = player.inventory.items; + this.armor = player.inventory.armor; + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + this.player = ((CraftPlayer) player).getHandle(); + this.player.inventory.items = this.items; + this.player.inventory.armor = this.armor; + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(items, 0, contents, 0, items.length); + System.arraycopy(armor, 0, contents, items.length, armor.length); + return contents; + } + + @Override + public int getSize() { + return super.getSize() + 5; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } else { + itemstack = is[i].a(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + + return null; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + + return null; + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + // Effects + if (is == this.extra) { + player.drop(itemstack); + itemstack = null; + } + + is[i] = itemstack; + + player.defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + @Override + public String getName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + +} diff --git a/README b/README deleted file mode 100644 index ebd75f3..0000000 --- a/README +++ /dev/null @@ -1,13 +0,0 @@ -Copyright (C) 2011-2016 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 . \ No newline at end of file diff --git a/README.MD b/README.MD new file mode 100644 index 0000000..dcd7296 --- /dev/null +++ b/README.MD @@ -0,0 +1,139 @@ +## About +OpenInv is a [Bukkit plugin](https://dev.bukkit.org/bukkit-plugins/openinv/) which allows users to open and edit anyone's inventory or ender chest - online or not! + +## Features +- **OpenInv**: Open anyone's inventory, even if they're offline. + - Read-only mode! No edits allowed! Don't grant the permission `OpenInv.editinv` + - Cross-world support! Don't grant `OpenInv.crossworld` + - No self-opening! Don't grant `OpenInv.openself` + - Drop items as the player! Place items in the unused slots to the right of the armor to drop them +- **OpenEnder**: Open anyone's inventory, even if they're offline. + - Read-only mode! No edits allowed! Don't grant `OpenInv.editender` + - Cross-world support! Don't grant `OpenInv.crossworld` + - No self-opening! Don't grant `OpenInv.openself` +- **SilentChest**: Open containers without displaying an animation or making sound. +- **AnyChest**: Open containers, even if blocked by ocelots or blocks. + +## Commands + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CommandAliasesDescription
/openinv [player]oi, inv, openOpen a player's inventory. If unspecified, will select last player opened or own if none opened previously.
/openender [player]oeOpen a player's ender chest. If unspecified, will select last player opened or own if none opened previously.
/searchinv <item> [minAmount]siLists all online players that have a certain item in their inventory.
/searchender <item> [minAmount]seLists all online players that have a certain item in their ender chest.
/anychest [check]acCheck or toggle the AnyChest function, allowing opening blocked containers.
/silentchest [check]scCheck or toggle the SilentChest function, allowing opening containers silently.
+ +## Permissions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NodeDescription
OpenInv.*Gives permission to use all of OpenInv.
OpenInv.openinvRequired to use /openinv.
OpenInv.openselfRequired to open own inventory.
OpenInv.editinvRequired to make changes to open inventories.
OpenInv.openenderRequired to use /openender.
OpenInv.editinvRequired to make changes to open ender chests.
OpenInv.openenderallAllows users to open others' ender chests. Without it, users can only open their own.
OpenInv.exemptPrevents the player's inventory being opened by others.
OpenInv.overrideAllows bypassing of the exempt permission.
OpenInv.crossworldAllows cross-world usage of /openinv and /openender.
OpenInv.searchRequired to use /searchinv and /searchender.
OpenInv.anychestRequired to use /anychest.
OpenInv.silentRequired to use /silentchest.
+ +## For Developers +To compile, the relevant Craftbukkit/Spigot jars must be installed in your local repository using the install plugin. +Ex: `mvn install:install-file -Dpackaging=jar -Dfile=spigot-1.11-R0.1-SNAPSHOT.jar -DgroupId=org.spigotmc -DartifactId=spigot -Dversion=1.11-R0.1-SNAPSHOT` + +Compiling OpenInv for a specific version is very easy - just compile the correct module. + +Compiling for a set of versions is slightly more complex. You'll need to use a profile for the versions you want to compile. Provided profiles are latest, modern (versions 1.8+), and all. For more information, check out the [official guide](http://maven.apache.org/guides/introduction/introduction-to-profiles.html). + +## License +``` +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 . +``` \ No newline at end of file diff --git a/assembly/pom.xml b/assembly/pom.xml index 86563e3..17e12af 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -24,9 +24,140 @@ + + modern + + + com.lishid + openinvadapter1_8_R1 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_8_R2 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_8_R3 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_9_R1 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_9_R2 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_10_R1 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_11_R1 + 1.0-SNAPSHOT + + + + all + + com.lishid + openinvadapter1_4_5 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_4_6 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_4_R1 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_5_R2 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_5_R3 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_6_R1 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_6_R2 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_6_R3 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_7_R1 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_7_R2 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_7_R3 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_7_R4 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_8_R1 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_8_R2 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_8_R3 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_9_R1 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_9_R2 + 1.0-SNAPSHOT + + + com.lishid + openinvadapter1_10_R1 + 1.0-SNAPSHOT + com.lishid openinvadapter1_11_R1 diff --git a/pom.xml b/pom.xml index 8bd482c..97b1381 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,5 @@ - + + 4.0.0 com.lishid openinv @@ -54,12 +54,52 @@ + + modern + + + modern + true + + + + v1_8_R1 + v1_8_R2 + v1_8_R3 + v1_9_R1 + v1_9_R2 + v1_10_R1 + v1_11_R1 + + + all true + 1_4_5 + 1_4_6 + v1_4_R1 + + v1_5_R2 + v1_5_R3 + + v1_6_R1 + v1_6_R2 + v1_6_R3 + + v1_7_R1 + v1_7_R2 + v1_7_R3 + v1_7_R4 + v1_8_R1 + v1_8_R2 + v1_8_R3 + v1_9_R1 + v1_9_R2 + v1_10_R1 v1_11_R1 diff --git a/v1_10_R1/pom.xml b/v1_10_R1/pom.xml new file mode 100644 index 0000000..bf3d81b --- /dev/null +++ b/v1_10_R1/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_10_R1 + OpenInvAdapter1_10_R1 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.spigotmc + spigot + 1.10-R0.1-SNAPSHOT + provided + + + + diff --git a/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java b/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java new file mode 100644 index 0000000..8e3a01c --- /dev/null +++ b/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java @@ -0,0 +1,206 @@ +/* + * 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_10_R1; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_10_R1.AxisAlignedBB; +import net.minecraft.server.v1_10_R1.Block; +import net.minecraft.server.v1_10_R1.BlockChest; +import net.minecraft.server.v1_10_R1.BlockChest.Type; +import net.minecraft.server.v1_10_R1.BlockEnderChest; +import net.minecraft.server.v1_10_R1.BlockPosition; +import net.minecraft.server.v1_10_R1.Entity; +import net.minecraft.server.v1_10_R1.EntityOcelot; +import net.minecraft.server.v1_10_R1.EntityPlayer; +import net.minecraft.server.v1_10_R1.EnumDirection; +import net.minecraft.server.v1_10_R1.IInventory; +import net.minecraft.server.v1_10_R1.ITileInventory; +import net.minecraft.server.v1_10_R1.InventoryEnderChest; +import net.minecraft.server.v1_10_R1.InventoryLargeChest; +import net.minecraft.server.v1_10_R1.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_10_R1.StatisticList; +import net.minecraft.server.v1_10_R1.TileEntity; +import net.minecraft.server.v1_10_R1.TileEntityChest; +import net.minecraft.server.v1_10_R1.TileEntityEnderChest; +import net.minecraft.server.v1_10_R1.World; + +import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + Block block = world.getType(blockPosition).getBlock(); + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.getType(blockPosition.up()).m(); + } + + // Check if chest is blocked or has an ocelot on top + if (isBlockedChest(world, blockPosition)) { + return true; + } + + // Check for matching adjacent chests that are blocked or have an ocelot on top + for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if (isBlockedChest(world, localBlockPosition)) { + return true; + } + } + + return false; + } + + private boolean isBlockedChest(World world, BlockPosition blockPosition) { + // For reference, loot at net.minecraft.server.BlockChest + return world.getType(blockPosition.up()).l() || hasOcelotOnTop(world, blockPosition); + } + + private boolean hasOcelotOnTop(World world, BlockPosition blockPosition) { + for (Entity localEntity : world.a(EntityOcelot.class, + new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, + blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, + blockPosition.getZ() + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is pretty much API-only + if (silentchest && b.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + player.b(StatisticList.X); + return true; + } + + World world = player.world; + BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + Object tile = world.getTileEntity(blockPosition); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + player.b(StatisticList.X); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + Block block = world.getType(blockPosition).getBlock(); + + if (block instanceof BlockChest) { + for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { + tile = new InventoryLargeChest("container.chestDouble", + (TileEntityChest) localTileEntity, (ITileInventory) tile); + } else { + tile = new InventoryLargeChest("container.chestDouble", + (ITileInventory) tile, (TileEntityChest) localTileEntity); + } + break; + } + + if (silentchest) { + tile = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + } + + if (((BlockChest) block).g == Type.BASIC) + player.b(StatisticList.ac); + else if (((BlockChest) block).g == Type.TRAP) { + player.b(StatisticList.W); + } + } + + boolean returnValue = false; + if (!silentchest) { + player.openContainer((IInventory) tile); + returnValue = true; + } else { + try { + SilentContainerChest silentContainerChest = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, "minecraft:chest", ((IInventory) tile).getScoreboardDisplayName(), ((IInventory) tile).getSize())); + player.activeContainer = silentContainerChest; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java b/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java new file mode 100644 index 0000000..a827864 --- /dev/null +++ b/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java @@ -0,0 +1,79 @@ +/* + * 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_10_R1; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_10_R1.IInventory; + +import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + +} diff --git a/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java b/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java new file mode 100644 index 0000000..cecd3c7 --- /dev/null +++ b/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java @@ -0,0 +1,64 @@ +/* + * 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_10_R1; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import com.mojang.authlib.GameProfile; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_10_R1.EntityPlayer; +import net.minecraft.server.v1_10_R1.MinecraftServer; +import net.minecraft.server.v1_10_R1.PlayerInteractManager; + +import org.bukkit.craftbukkit.v1_10_R1.CraftServer; + +public class PlayerDataManager implements IPlayerDataManager { + + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + // Create a profile and entity to load the player data + GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + 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; + } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getUniqueId().toString(); + } + +} diff --git a/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SilentContainerChest.java b/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SilentContainerChest.java new file mode 100644 index 0000000..0185618 --- /dev/null +++ b/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SilentContainerChest.java @@ -0,0 +1,46 @@ +/* + * 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_10_R1; + +// Volatile +import net.minecraft.server.v1_10_R1.ContainerChest; +import net.minecraft.server.v1_10_R1.EntityHuman; +import net.minecraft.server.v1_10_R1.IInventory; +import net.minecraft.server.v1_10_R1.ItemStack; +import net.minecraft.server.v1_10_R1.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman e1) { + super(i1, i2, e1); + // Send close signal + i2.closeContainer(e1); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != null) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(null); + entityHuman.drop(carried, false); + } + } + +} diff --git a/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java b/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java new file mode 100644 index 0000000..aabdde3 --- /dev/null +++ b/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java @@ -0,0 +1,105 @@ +/* + * 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_10_R1; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_10_R1.IInventory; +import net.minecraft.server.v1_10_R1.InventoryEnderChest; +import net.minecraft.server.v1_10_R1.InventorySubcontainer; +import net.minecraft.server.v1_10_R1.ItemStack; + +import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialEnderChest(Player player, Boolean online) { + super(((CraftPlayer) player).getHandle().getEnderChest().getName(), + ((CraftPlayer) player).getHandle().getEnderChest().hasCustomName(), + ((CraftPlayer) player).getHandle().getEnderChest().getSize()); + CraftPlayer craftPlayer = (CraftPlayer) player; + this.enderChest = craftPlayer.getHandle().getEnderChest(); + this.bukkitOwner = craftPlayer; + setItemArrays(this, enderChest.getContents()); + } + + private void setItemArrays(InventorySubcontainer subcontainer, ItemStack[] items) { + try { + // Prepare to remove final modifier + Field modifiers = Field.class.getDeclaredField("modifiers"); + modifiers.setAccessible(true); + // Access and replace main inventory array + Field field = InventorySubcontainer.class.getField("items"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(subcontainer, items); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + try { + this.bukkitOwner = player; + CraftPlayer craftPlayer = (CraftPlayer) player; + setItemArrays(craftPlayer.getHandle().getEnderChest(), this.items); + } catch (Exception e) {} + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } + +} diff --git a/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java b/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java new file mode 100644 index 0000000..db86309 --- /dev/null +++ b/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java @@ -0,0 +1,296 @@ +/* + * 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_10_R1; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_10_R1.EntityHuman; +import net.minecraft.server.v1_10_R1.ItemStack; +import net.minecraft.server.v1_10_R1.PlayerInventory; + +import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final ItemStack[] extra = new ItemStack[4]; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); + this.playerOnline = online; + setItemArrays(this, player.inventory.items, player.inventory.armor, player.inventory.extraSlots); + } + + private void setItemArrays(PlayerInventory inventory, ItemStack[] items, ItemStack[] armor, + ItemStack[] extraSlots) { + try { + // Prepare to remove final modifier + Field modifiers = Field.class.getDeclaredField("modifiers"); + modifiers.setAccessible(true); + + // Access and replace main inventory array + Field field = PlayerInventory.class.getField("items"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, items); + + // Access and replace armor inventory array + field = PlayerInventory.class.getField("armor"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, armor); + + // Access and replace offhand inventory array + field = PlayerInventory.class.getField("extraSlots"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, extraSlots); + + // Access and replace array containing all inventory arrays + field = PlayerInventory.class.getDeclaredField("g"); + field.setAccessible(true); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, new ItemStack[][] { items, armor, extraSlots }); + } 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 setPlayerOnline(Player player) { + if (!playerOnline) { + this.player = ((CraftPlayer) player).getHandle(); + setItemArrays(this.player.inventory, items, armor, extraSlots); + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(items, 0, contents, 0, items.length); + System.arraycopy(armor, 0, contents, items.length, armor.length); + System.arraycopy(extraSlots, 0, contents, items.length + armor.length, extraSlots.length); + return contents; + } + + @Override + public int getSize() { + return super.getSize() + 4; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extraSlots; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + + // extraSlots is, for now, just an array with length 1. No need for special handling. + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extraSlots; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } else { + itemstack = is[i].cloneAndSubtract(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + + return null; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extraSlots; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + + return null; + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extraSlots; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + + // Effects + if (is == this.extra) { + player.drop(itemstack, true); + itemstack = null; + } + + is[i] = itemstack; + + player.defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + @Override + public String getName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + + @Override + public boolean a(EntityHuman entityhuman) { + return true; + } + +} diff --git a/v1_4_R1/pom.xml b/v1_4_R1/pom.xml new file mode 100644 index 0000000..0976b7e --- /dev/null +++ b/v1_4_R1/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_4_R1 + OpenInvAdapter1_4_R1 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.bukkit + craftbukkit + 1.4.7-R1.0 + provided + + + + diff --git a/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java b/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java new file mode 100644 index 0000000..1d0bee0 --- /dev/null +++ b/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java @@ -0,0 +1,168 @@ +/* + * 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_4_R1; + +import java.lang.reflect.Field; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_4_R1.AxisAlignedBB; +import net.minecraft.server.v1_4_R1.BlockEnderChest; +import net.minecraft.server.v1_4_R1.EntityOcelot; +import net.minecraft.server.v1_4_R1.EntityPlayer; +import net.minecraft.server.v1_4_R1.IInventory; +import net.minecraft.server.v1_4_R1.InventoryEnderChest; +import net.minecraft.server.v1_4_R1.InventoryLargeChest; +import net.minecraft.server.v1_4_R1.Packet100OpenWindow; +import net.minecraft.server.v1_4_R1.TileEntityChest; +import net.minecraft.server.v1_4_R1.TileEntityEnderChest; +import net.minecraft.server.v1_4_R1.World; + +import org.bukkit.craftbukkit.v1_4_R1.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.t(block.getX(), block.getY() + 1, block.getZ()); + } + + // If block or ocelot on top + if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + return true; + } + + int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + + // If block next to chest is chest and has a block or ocelot on top + if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); + } else if(world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); + } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { + return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); + } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { + return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + } + + return false; + } + + private boolean isBlockedChest(World world, int x, int y, int z) { + return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); + } + + private boolean hasOcelotOnTop(World world, int x, int y, int z) { + for (Object localEntity : world.a(EntityOcelot.class, + AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is API-only + if (silentchest && block.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + return true; + } + + World world = player.world; + Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + + if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + } + + boolean returnValue = false; + if (!silentchest) { + player.openContainer((IInventory) tile); + returnValue = true; + } else { + try { + int windowId = 0; + try { + Field windowID = player.getClass().getDeclaredField("containerCounter"); + windowID.setAccessible(true); + windowId = windowID.getInt(player); + windowId = windowId % 100 + 1; + windowID.setInt(player, windowId); + } catch (NoSuchFieldException e) {} + + player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize())); + player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java b/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java new file mode 100644 index 0000000..0fd5d00 --- /dev/null +++ b/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java @@ -0,0 +1,79 @@ +/* + * 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_4_R1; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_4_R1.IInventory; + +import org.bukkit.craftbukkit.v1_4_R1.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + +} diff --git a/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java b/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java new file mode 100644 index 0000000..e92f7a2 --- /dev/null +++ b/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java @@ -0,0 +1,63 @@ +/* + * 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_4_R1; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +import net.minecraft.server.v1_4_R1.EntityPlayer; +import net.minecraft.server.v1_4_R1.MinecraftServer; +import net.minecraft.server.v1_4_R1.PlayerInteractManager; + +// Volatile +import org.bukkit.craftbukkit.v1_4_R1.CraftServer; + + +public class PlayerDataManager implements IPlayerDataManager { + + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure the player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + + // Create an entity to load the player data + EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), offline.getName(), + 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; + } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getName(); + } + +} diff --git a/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java b/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java new file mode 100644 index 0000000..24c4018 --- /dev/null +++ b/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java @@ -0,0 +1,46 @@ +/* + * 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_4_R1; + +// Volatile +import net.minecraft.server.v1_4_R1.ContainerChest; +import net.minecraft.server.v1_4_R1.EntityHuman; +import net.minecraft.server.v1_4_R1.IInventory; +import net.minecraft.server.v1_4_R1.ItemStack; +import net.minecraft.server.v1_4_R1.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(IInventory i1, IInventory i2) { + super(i1, i2); + // Send close signal + i2.f(); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != null) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(null); + entityHuman.drop(carried); + } + } + +} diff --git a/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java b/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java new file mode 100644 index 0000000..ff5e70c --- /dev/null +++ b/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java @@ -0,0 +1,128 @@ +/* + * 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_4_R1; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +// Volatile +import net.minecraft.server.v1_4_R1.IInventory; +import net.minecraft.server.v1_4_R1.InventoryEnderChest; +import net.minecraft.server.v1_4_R1.InventorySubcontainer; +import net.minecraft.server.v1_4_R1.ItemStack; + +import org.bukkit.craftbukkit.v1_4_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_4_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_4_R1.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private final List transaction = new ArrayList(); + private boolean playerOnline = false; + private CraftPlayer owner; + private int maxStack = MAX_STACK; + + public SpecialEnderChest(Player p, Boolean online) { + super(((CraftPlayer) p).getHandle().getEnderChest().getName(), + ((CraftPlayer) p).getHandle().getEnderChest().getSize()); + CraftPlayer player = (CraftPlayer) p; + this.enderChest = player.getHandle().getEnderChest(); + this.owner = player; + this.items = enderChest.getContents(); + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + try { + owner = (CraftPlayer) player; + InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } catch (Exception e) {} + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + return this.items; + } + + @Override + public void onOpen(CraftHumanEntity who) { + transaction.add(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + transaction.remove(who); + } + + @Override + public List getViewers() { + return transaction; + } + + @Override + public InventoryHolder getOwner() { + return this.owner; + } + + @Override + public void setMaxStackSize(int size) { + maxStack = size; + } + + @Override + public int getMaxStackSize() { + return maxStack; + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } + +} diff --git a/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java b/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java new file mode 100644 index 0000000..e3c760e --- /dev/null +++ b/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java @@ -0,0 +1,237 @@ +/* + * 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_4_R1; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_4_R1.ItemStack; +import net.minecraft.server.v1_4_R1.PlayerInventory; + +import org.bukkit.craftbukkit.v1_4_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_4_R1.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final ItemStack[] extra = new ItemStack[5]; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); + this.playerOnline = online; + this.items = player.inventory.items; + this.armor = player.inventory.armor; + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + this.player = ((CraftPlayer) player).getHandle(); + this.player.inventory.items = this.items; + this.player.inventory.armor = this.armor; + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(items, 0, contents, 0, items.length); + System.arraycopy(armor, 0, contents, items.length, armor.length); + return contents; + } + + @Override + public int getSize() { + return super.getSize() + 5; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } + else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } + else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } + else { + itemstack = is[i].a(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + else { + return null; + } + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } + else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + else { + return null; + } + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } + else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + // Effects + if (is == this.extra) { + player.drop(itemstack); + itemstack = null; + } + + is[i] = itemstack; + + player.defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) + return i - 27; + else + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) + return 3; + if (i == 1) + return 2; + if (i == 2) + return 1; + if (i == 3) + return 0; + else + return i; + } + + @Override + public String getName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + +} diff --git a/v1_5_R2/pom.xml b/v1_5_R2/pom.xml new file mode 100644 index 0000000..e596180 --- /dev/null +++ b/v1_5_R2/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_5_R2 + OpenInvAdapter1_5_R2 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.bukkit + craftbukkit + 1.5.1-R0.2 + provided + + + + diff --git a/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java b/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java new file mode 100644 index 0000000..d9137be --- /dev/null +++ b/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java @@ -0,0 +1,168 @@ +/* + * 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_5_R2; + +import java.lang.reflect.Field; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_5_R2.AxisAlignedBB; +import net.minecraft.server.v1_5_R2.BlockEnderChest; +import net.minecraft.server.v1_5_R2.EntityOcelot; +import net.minecraft.server.v1_5_R2.EntityPlayer; +import net.minecraft.server.v1_5_R2.IInventory; +import net.minecraft.server.v1_5_R2.InventoryEnderChest; +import net.minecraft.server.v1_5_R2.InventoryLargeChest; +import net.minecraft.server.v1_5_R2.Packet100OpenWindow; +import net.minecraft.server.v1_5_R2.TileEntityChest; +import net.minecraft.server.v1_5_R2.TileEntityEnderChest; +import net.minecraft.server.v1_5_R2.World; + +import org.bukkit.craftbukkit.v1_5_R2.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.t(block.getX(), block.getY() + 1, block.getZ()); + } + + // If block or ocelot on top + if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + return true; + } + + int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + + // If block next to chest is chest and has a block or ocelot on top + if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); + } else if(world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); + } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { + return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); + } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { + return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + } + + return false; + } + + private boolean isBlockedChest(World world, int x, int y, int z) { + return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); + } + + private boolean hasOcelotOnTop(World world, int x, int y, int z) { + for (Object localEntity : world.a(EntityOcelot.class, + AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is API-only + if (silentchest && block.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + return true; + } + + World world = player.world; + Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + + if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + } + + boolean returnValue = false; + if (!silentchest) { + player.openContainer((IInventory) tile); + returnValue = true; + } else { + try { + int windowId = 0; + try { + Field windowID = player.getClass().getDeclaredField("containerCounter"); + windowID.setAccessible(true); + windowId = windowID.getInt(player); + windowId = windowId % 100 + 1; + windowID.setInt(player, windowId); + } catch (NoSuchFieldException e) {} + + player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize(), true)); + player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java b/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java new file mode 100644 index 0000000..b61d7ee --- /dev/null +++ b/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java @@ -0,0 +1,79 @@ +/* + * 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_5_R2; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_5_R2.IInventory; + +import org.bukkit.craftbukkit.v1_5_R2.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + +} diff --git a/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java b/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java new file mode 100644 index 0000000..a6e8e7d --- /dev/null +++ b/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java @@ -0,0 +1,62 @@ +/* + * 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_5_R2; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_5_R2.EntityPlayer; +import net.minecraft.server.v1_5_R2.MinecraftServer; +import net.minecraft.server.v1_5_R2.PlayerInteractManager; + +import org.bukkit.craftbukkit.v1_5_R2.CraftServer; + +public class PlayerDataManager implements IPlayerDataManager { + + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure the player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + + // Create an entity to load the player data + EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), offline.getName(), + 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; + } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getName(); + } + +} diff --git a/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java b/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java new file mode 100644 index 0000000..60e085b --- /dev/null +++ b/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java @@ -0,0 +1,46 @@ +/* + * 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_5_R2; + +// Volatile +import net.minecraft.server.v1_5_R2.ContainerChest; +import net.minecraft.server.v1_5_R2.EntityHuman; +import net.minecraft.server.v1_5_R2.IInventory; +import net.minecraft.server.v1_5_R2.ItemStack; +import net.minecraft.server.v1_5_R2.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(IInventory i1, IInventory i2) { + super(i1, i2); + // Send close signal + i2.g(); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != null) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(null); + entityHuman.drop(carried); + } + } + +} diff --git a/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java b/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java new file mode 100644 index 0000000..50355b7 --- /dev/null +++ b/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java @@ -0,0 +1,129 @@ +/* + * 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_5_R2; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +// Volatile +import net.minecraft.server.v1_5_R2.IInventory; +import net.minecraft.server.v1_5_R2.InventoryEnderChest; +import net.minecraft.server.v1_5_R2.InventorySubcontainer; +import net.minecraft.server.v1_5_R2.ItemStack; + +import org.bukkit.craftbukkit.v1_5_R2.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_5_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_5_R2.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private final List transaction = new ArrayList(); + private boolean playerOnline = false; + private CraftPlayer owner; + private int maxStack = MAX_STACK; + + public SpecialEnderChest(Player p, Boolean online) { + super(((CraftPlayer) p).getHandle().getEnderChest().getName(), + ((CraftPlayer) p).getHandle().getEnderChest().c(), + ((CraftPlayer) p).getHandle().getEnderChest().getSize()); + CraftPlayer player = (CraftPlayer) p; + this.enderChest = player.getHandle().getEnderChest(); + this.owner = player; + this.items = enderChest.getContents(); + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + try { + owner = (CraftPlayer) player; + InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } catch (Exception e) {} + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + return this.items; + } + + @Override + public void onOpen(CraftHumanEntity who) { + transaction.add(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + transaction.remove(who); + } + + @Override + public List getViewers() { + return transaction; + } + + @Override + public InventoryHolder getOwner() { + return this.owner; + } + + @Override + public void setMaxStackSize(int size) { + maxStack = size; + } + + @Override + public int getMaxStackSize() { + return maxStack; + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } + +} diff --git a/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java b/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java new file mode 100644 index 0000000..81c949e --- /dev/null +++ b/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java @@ -0,0 +1,229 @@ +/* + * 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_5_R2; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_5_R2.ItemStack; +import net.minecraft.server.v1_5_R2.PlayerInventory; + +import org.bukkit.craftbukkit.v1_5_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_5_R2.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final ItemStack[] extra = new ItemStack[5]; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); + this.playerOnline = online; + this.items = player.inventory.items; + this.armor = player.inventory.armor; + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + this.player = ((CraftPlayer) player).getHandle(); + this.player.inventory.items = this.items; + this.player.inventory.armor = this.armor; + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(items, 0, contents, 0, items.length); + System.arraycopy(armor, 0, contents, items.length, armor.length); + return contents; + } + + @Override + public int getSize() { + return super.getSize() + 5; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } else { + itemstack = is[i].a(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + + return null; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + + return null; + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + // Effects + if (is == this.extra) { + player.drop(itemstack); + itemstack = null; + } + + is[i] = itemstack; + + player.defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + @Override + public String getName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + +} diff --git a/v1_5_R3/pom.xml b/v1_5_R3/pom.xml new file mode 100644 index 0000000..4b2e345 --- /dev/null +++ b/v1_5_R3/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_5_R3 + OpenInvAdapter1_5_R3 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.bukkit + craftbukkit + 1.5.2-R1.0 + provided + + + + diff --git a/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java b/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java new file mode 100644 index 0000000..ccc0490 --- /dev/null +++ b/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java @@ -0,0 +1,168 @@ +/* + * 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_5_R3; + +import java.lang.reflect.Field; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +//Volatile +import net.minecraft.server.v1_5_R3.AxisAlignedBB; +import net.minecraft.server.v1_5_R3.BlockEnderChest; +import net.minecraft.server.v1_5_R3.EntityOcelot; +import net.minecraft.server.v1_5_R3.EntityPlayer; +import net.minecraft.server.v1_5_R3.IInventory; +import net.minecraft.server.v1_5_R3.InventoryEnderChest; +import net.minecraft.server.v1_5_R3.InventoryLargeChest; +import net.minecraft.server.v1_5_R3.Packet100OpenWindow; +import net.minecraft.server.v1_5_R3.TileEntityChest; +import net.minecraft.server.v1_5_R3.TileEntityEnderChest; +import net.minecraft.server.v1_5_R3.World; + +import org.bukkit.craftbukkit.v1_5_R3.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.t(block.getX(), block.getY() + 1, block.getZ()); + } + + // If block or ocelot on top + if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + return true; + } + + int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + + // If block next to chest is chest and has a block or ocelot on top + if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); + } else if(world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); + } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { + return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); + } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { + return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + } + + return false; + } + + private boolean isBlockedChest(World world, int x, int y, int z) { + return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); + } + + private boolean hasOcelotOnTop(World world, int x, int y, int z) { + for (Object localEntity : world.a(EntityOcelot.class, + AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is API-only + if (silentchest && block.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + return true; + } + + World world = player.world; + Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + + if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + } + + boolean returnValue = false; + if (!silentchest) { + player.openContainer((IInventory) tile); + returnValue = true; + } else { + try { + int windowId = 0; + try { + Field windowID = player.getClass().getDeclaredField("containerCounter"); + windowID.setAccessible(true); + windowId = windowID.getInt(player); + windowId = windowId % 100 + 1; + windowID.setInt(player, windowId); + } catch (NoSuchFieldException e) {} + + player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize(), true)); + player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java b/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java new file mode 100644 index 0000000..1a0df32 --- /dev/null +++ b/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java @@ -0,0 +1,79 @@ +/* + * 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_5_R3; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_5_R3.IInventory; + +import org.bukkit.craftbukkit.v1_5_R3.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + +} diff --git a/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java b/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java new file mode 100644 index 0000000..f77b8fd --- /dev/null +++ b/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java @@ -0,0 +1,62 @@ +/* + * 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_5_R3; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_5_R3.EntityPlayer; +import net.minecraft.server.v1_5_R3.MinecraftServer; +import net.minecraft.server.v1_5_R3.PlayerInteractManager; + +import org.bukkit.craftbukkit.v1_5_R3.CraftServer; + +public class PlayerDataManager implements IPlayerDataManager { + + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure the player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + + // Create an entity to load the player data + EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), offline.getName(), + 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; + } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getName(); + } + +} diff --git a/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java b/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java new file mode 100644 index 0000000..59c452e --- /dev/null +++ b/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java @@ -0,0 +1,46 @@ +/* + * 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_5_R3; + +// Volatile +import net.minecraft.server.v1_5_R3.ContainerChest; +import net.minecraft.server.v1_5_R3.EntityHuman; +import net.minecraft.server.v1_5_R3.IInventory; +import net.minecraft.server.v1_5_R3.ItemStack; +import net.minecraft.server.v1_5_R3.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { public IInventory inv; + + public SilentContainerChest(IInventory i1, IInventory i2) { + super(i1, i2); + // Send close signal + i2.g(); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != null) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(null); + entityHuman.drop(carried); + } + } + +} diff --git a/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java b/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java new file mode 100644 index 0000000..06c52b7 --- /dev/null +++ b/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java @@ -0,0 +1,129 @@ +/* + * 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_5_R3; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +// Volatile +import net.minecraft.server.v1_5_R3.IInventory; +import net.minecraft.server.v1_5_R3.InventoryEnderChest; +import net.minecraft.server.v1_5_R3.InventorySubcontainer; +import net.minecraft.server.v1_5_R3.ItemStack; + +import org.bukkit.craftbukkit.v1_5_R3.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_5_R3.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_5_R3.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private final List transaction = new ArrayList(); + private boolean playerOnline = false; + private CraftPlayer owner; + private int maxStack = MAX_STACK; + + public SpecialEnderChest(Player p, Boolean online) { + super(((CraftPlayer) p).getHandle().getEnderChest().getName(), + ((CraftPlayer) p).getHandle().getEnderChest().c(), + ((CraftPlayer) p).getHandle().getEnderChest().getSize()); + CraftPlayer player = (CraftPlayer) p; + this.enderChest = player.getHandle().getEnderChest(); + this.owner = player; + this.items = enderChest.getContents(); + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + try { + owner = (CraftPlayer) player; + InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } catch (Exception e) {} + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + return this.items; + } + + @Override + public void onOpen(CraftHumanEntity who) { + transaction.add(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + transaction.remove(who); + } + + @Override + public List getViewers() { + return transaction; + } + + @Override + public InventoryHolder getOwner() { + return this.owner; + } + + @Override + public void setMaxStackSize(int size) { + maxStack = size; + } + + @Override + public int getMaxStackSize() { + return maxStack; + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } + +} diff --git a/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java b/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java new file mode 100644 index 0000000..f4668b9 --- /dev/null +++ b/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java @@ -0,0 +1,229 @@ +/* + * 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_5_R3; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_5_R3.ItemStack; +import net.minecraft.server.v1_5_R3.PlayerInventory; + +import org.bukkit.craftbukkit.v1_5_R3.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_5_R3.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final ItemStack[] extra = new ItemStack[5]; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); + this.playerOnline = online; + this.items = player.inventory.items; + this.armor = player.inventory.armor; + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + this.player = ((CraftPlayer) player).getHandle(); + this.player.inventory.items = this.items; + this.player.inventory.armor = this.armor; + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(items, 0, contents, 0, items.length); + System.arraycopy(armor, 0, contents, items.length, armor.length); + return contents; + } + + @Override + public int getSize() { + return super.getSize() + 5; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } else { + itemstack = is[i].a(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + + return null; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + + return null; + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + // Effects + if (is == this.extra) { + player.drop(itemstack); + itemstack = null; + } + + is[i] = itemstack; + + player.defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + @Override + public String getName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + +} diff --git a/v1_6_R1/pom.xml b/v1_6_R1/pom.xml new file mode 100644 index 0000000..fa9b987 --- /dev/null +++ b/v1_6_R1/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_6_R1 + OpenInvAdapter1_6_R1 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.bukkit + craftbukkit + 1.6.1-R0.1-SNAPSHOT + provided + + + + diff --git a/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java b/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java new file mode 100644 index 0000000..f685648 --- /dev/null +++ b/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java @@ -0,0 +1,168 @@ +/* + * 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_6_R1; + +import java.lang.reflect.Field; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_6_R1.AxisAlignedBB; +import net.minecraft.server.v1_6_R1.BlockEnderChest; +import net.minecraft.server.v1_6_R1.EntityOcelot; +import net.minecraft.server.v1_6_R1.EntityPlayer; +import net.minecraft.server.v1_6_R1.IInventory; +import net.minecraft.server.v1_6_R1.InventoryEnderChest; +import net.minecraft.server.v1_6_R1.InventoryLargeChest; +import net.minecraft.server.v1_6_R1.Packet100OpenWindow; +import net.minecraft.server.v1_6_R1.TileEntityChest; +import net.minecraft.server.v1_6_R1.TileEntityEnderChest; +import net.minecraft.server.v1_6_R1.World; + +import org.bukkit.craftbukkit.v1_6_R1.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.t(block.getX(), block.getY() + 1, block.getZ()); + } + + // If block or ocelot on top + if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + return true; + } + + int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + + // If block next to chest is chest and has a block or ocelot on top + if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); + } else if(world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); + } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { + return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); + } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { + return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + } + + return false; + } + + private boolean isBlockedChest(World world, int x, int y, int z) { + return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); + } + + private boolean hasOcelotOnTop(World world, int x, int y, int z) { + for (Object localEntity : world.a(EntityOcelot.class, + AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is API-only + if (silentchest && block.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + return true; + } + + World world = player.world; + Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + + if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + } + + boolean returnValue = false; + if (!silentchest) { + player.openContainer((IInventory) tile); + returnValue = true; + } else { + try { + int windowId = 0; + try { + Field windowID = player.getClass().getDeclaredField("containerCounter"); + windowID.setAccessible(true); + windowId = windowID.getInt(player); + windowId = windowId % 100 + 1; + windowID.setInt(player, windowId); + } catch (NoSuchFieldException e) {} + + player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize(), true)); + player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java b/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java new file mode 100644 index 0000000..8d6dc65 --- /dev/null +++ b/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java @@ -0,0 +1,79 @@ +/* + * 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_6_R1; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_6_R1.IInventory; + +import org.bukkit.craftbukkit.v1_6_R1.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + +} diff --git a/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java b/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java new file mode 100644 index 0000000..a7359c2 --- /dev/null +++ b/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java @@ -0,0 +1,62 @@ +/* + * 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_6_R1; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_6_R1.EntityPlayer; +import net.minecraft.server.v1_6_R1.MinecraftServer; +import net.minecraft.server.v1_6_R1.PlayerInteractManager; + +import org.bukkit.craftbukkit.v1_6_R1.CraftServer; + +public class PlayerDataManager implements IPlayerDataManager { + + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure the player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + + // Create an entity to load the player data + EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), offline.getName(), + 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; + } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getName(); + } + +} diff --git a/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java b/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java new file mode 100644 index 0000000..92c910f --- /dev/null +++ b/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java @@ -0,0 +1,46 @@ +/* + * 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_6_R1; + +// Volatile +import net.minecraft.server.v1_6_R1.ContainerChest; +import net.minecraft.server.v1_6_R1.EntityHuman; +import net.minecraft.server.v1_6_R1.IInventory; +import net.minecraft.server.v1_6_R1.ItemStack; +import net.minecraft.server.v1_6_R1.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(IInventory i1, IInventory i2) { + super(i1, i2); + // Send close signal + i2.g(); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != null) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(null); + entityHuman.drop(carried); + } + } + +} diff --git a/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java b/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java new file mode 100644 index 0000000..d10b591 --- /dev/null +++ b/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java @@ -0,0 +1,129 @@ +/* + * 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_6_R1; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +// Volatile +import net.minecraft.server.v1_6_R1.IInventory; +import net.minecraft.server.v1_6_R1.InventoryEnderChest; +import net.minecraft.server.v1_6_R1.InventorySubcontainer; +import net.minecraft.server.v1_6_R1.ItemStack; + +import org.bukkit.craftbukkit.v1_6_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_6_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_6_R1.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private final List transaction = new ArrayList(); + private boolean playerOnline = false; + private CraftPlayer owner; + private int maxStack = MAX_STACK; + + public SpecialEnderChest(Player p, Boolean online) { + super(((CraftPlayer) p).getHandle().getEnderChest().getName(), + ((CraftPlayer) p).getHandle().getEnderChest().c(), + ((CraftPlayer) p).getHandle().getEnderChest().getSize()); + CraftPlayer player = (CraftPlayer) p; + this.enderChest = player.getHandle().getEnderChest(); + this.owner = player; + this.items = enderChest.getContents(); + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + try { + owner = (CraftPlayer) player; + InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } catch (Exception e) {} + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + return this.items; + } + + @Override + public void onOpen(CraftHumanEntity who) { + transaction.add(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + transaction.remove(who); + } + + @Override + public List getViewers() { + return transaction; + } + + @Override + public InventoryHolder getOwner() { + return this.owner; + } + + @Override + public void setMaxStackSize(int size) { + maxStack = size; + } + + @Override + public int getMaxStackSize() { + return maxStack; + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } + +} diff --git a/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java b/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java new file mode 100644 index 0000000..dc397e4 --- /dev/null +++ b/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java @@ -0,0 +1,229 @@ +/* + * 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_6_R1; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_6_R1.ItemStack; +import net.minecraft.server.v1_6_R1.PlayerInventory; + +import org.bukkit.craftbukkit.v1_6_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_6_R1.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final ItemStack[] extra = new ItemStack[5]; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); + this.playerOnline = online; + this.items = player.inventory.items; + this.armor = player.inventory.armor; + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + this.player = ((CraftPlayer) player).getHandle(); + this.player.inventory.items = this.items; + this.player.inventory.armor = this.armor; + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(items, 0, contents, 0, items.length); + System.arraycopy(armor, 0, contents, items.length, armor.length); + return contents; + } + + @Override + public int getSize() { + return super.getSize() + 5; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } else { + itemstack = is[i].a(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + + return null; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + + return null; + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + // Effects + if (is == this.extra) { + player.drop(itemstack); + itemstack = null; + } + + is[i] = itemstack; + + player.defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + @Override + public String getName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + +} diff --git a/v1_6_R2/pom.xml b/v1_6_R2/pom.xml new file mode 100644 index 0000000..3f4670e --- /dev/null +++ b/v1_6_R2/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_6_R2 + OpenInvAdapter1_6_R2 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.bukkit + craftbukkit + 1.6.2-R1.0 + provided + + + + diff --git a/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java b/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java new file mode 100644 index 0000000..d39d49e --- /dev/null +++ b/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java @@ -0,0 +1,168 @@ +/* + * 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_6_R2; + +import java.lang.reflect.Field; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_6_R2.AxisAlignedBB; +import net.minecraft.server.v1_6_R2.BlockEnderChest; +import net.minecraft.server.v1_6_R2.EntityOcelot; +import net.minecraft.server.v1_6_R2.EntityPlayer; +import net.minecraft.server.v1_6_R2.IInventory; +import net.minecraft.server.v1_6_R2.InventoryEnderChest; +import net.minecraft.server.v1_6_R2.InventoryLargeChest; +import net.minecraft.server.v1_6_R2.Packet100OpenWindow; +import net.minecraft.server.v1_6_R2.TileEntityChest; +import net.minecraft.server.v1_6_R2.TileEntityEnderChest; +import net.minecraft.server.v1_6_R2.World; + +import org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.t(block.getX(), block.getY() + 1, block.getZ()); + } + + // If block or ocelot on top + if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + return true; + } + + int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + + // If block next to chest is chest and has a block or ocelot on top + if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); + } else if(world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); + } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { + return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); + } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { + return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + } + + return false; + } + + private boolean isBlockedChest(World world, int x, int y, int z) { + return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); + } + + private boolean hasOcelotOnTop(World world, int x, int y, int z) { + for (Object localEntity : world.a(EntityOcelot.class, + AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is API-only + if (silentchest && block.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + return true; + } + + World world = player.world; + Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + + if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + } + + boolean returnValue = false; + if (!silentchest) { + player.openContainer((IInventory) tile); + returnValue = true; + } else { + try { + int windowId = 0; + try { + Field windowID = player.getClass().getDeclaredField("containerCounter"); + windowID.setAccessible(true); + windowId = windowID.getInt(player); + windowId = windowId % 100 + 1; + windowID.setInt(player, windowId); + } catch (NoSuchFieldException e) {} + + player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize(), true)); + player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java b/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java new file mode 100644 index 0000000..265202b --- /dev/null +++ b/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java @@ -0,0 +1,79 @@ +/* + * 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_6_R2; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_6_R2.IInventory; + +import org.bukkit.craftbukkit.v1_6_R2.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + +} diff --git a/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java b/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java new file mode 100644 index 0000000..8401f1f --- /dev/null +++ b/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java @@ -0,0 +1,62 @@ +/* + * 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_6_R2; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_6_R2.EntityPlayer; +import net.minecraft.server.v1_6_R2.MinecraftServer; +import net.minecraft.server.v1_6_R2.PlayerInteractManager; + +import org.bukkit.craftbukkit.v1_6_R2.CraftServer; + +public class PlayerDataManager implements IPlayerDataManager { + + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure the player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + + // Create an entity to load the player data + EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), offline.getName(), + 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; + } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getName(); + } + +} diff --git a/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java b/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java new file mode 100644 index 0000000..b8cb9dc --- /dev/null +++ b/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java @@ -0,0 +1,46 @@ +/* + * 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_6_R2; + +// Volatile +import net.minecraft.server.v1_6_R2.ContainerChest; +import net.minecraft.server.v1_6_R2.EntityHuman; +import net.minecraft.server.v1_6_R2.IInventory; +import net.minecraft.server.v1_6_R2.ItemStack; +import net.minecraft.server.v1_6_R2.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(IInventory i1, IInventory i2) { + super(i1, i2); + // Send close signal + i2.g(); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != null) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(null); + entityHuman.drop(carried); + } + } + +} diff --git a/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java b/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java new file mode 100644 index 0000000..b7216ec --- /dev/null +++ b/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java @@ -0,0 +1,129 @@ +/* + * 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_6_R2; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +// Volatile +import net.minecraft.server.v1_6_R2.IInventory; +import net.minecraft.server.v1_6_R2.InventoryEnderChest; +import net.minecraft.server.v1_6_R2.InventorySubcontainer; +import net.minecraft.server.v1_6_R2.ItemStack; + +import org.bukkit.craftbukkit.v1_6_R2.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_6_R2.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private final List transaction = new ArrayList(); + private boolean playerOnline = false; + private CraftPlayer owner; + private int maxStack = MAX_STACK; + + public SpecialEnderChest(Player p, Boolean online) { + super(((CraftPlayer) p).getHandle().getEnderChest().getName(), + ((CraftPlayer) p).getHandle().getEnderChest().c(), + ((CraftPlayer) p).getHandle().getEnderChest().getSize()); + CraftPlayer player = (CraftPlayer) p; + this.enderChest = player.getHandle().getEnderChest(); + this.owner = player; + this.items = enderChest.getContents(); + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + try { + owner = (CraftPlayer) player; + InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } catch (Exception e) {} + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + return this.items; + } + + @Override + public void onOpen(CraftHumanEntity who) { + transaction.add(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + transaction.remove(who); + } + + @Override + public List getViewers() { + return transaction; + } + + @Override + public InventoryHolder getOwner() { + return this.owner; + } + + @Override + public void setMaxStackSize(int size) { + maxStack = size; + } + + @Override + public int getMaxStackSize() { + return maxStack; + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } + +} diff --git a/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java b/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java new file mode 100644 index 0000000..3e766da --- /dev/null +++ b/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java @@ -0,0 +1,229 @@ +/* + * 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_6_R2; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_6_R2.ItemStack; +import net.minecraft.server.v1_6_R2.PlayerInventory; + +import org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_6_R2.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final ItemStack[] extra = new ItemStack[5]; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); + this.playerOnline = online; + this.items = player.inventory.items; + this.armor = player.inventory.armor; + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + this.player = ((CraftPlayer) player).getHandle(); + this.player.inventory.items = this.items; + this.player.inventory.armor = this.armor; + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(items, 0, contents, 0, items.length); + System.arraycopy(armor, 0, contents, items.length, armor.length); + return contents; + } + + @Override + public int getSize() { + return super.getSize() + 5; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } else { + itemstack = is[i].a(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + + return null; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + + return null; + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + // Effects + if (is == this.extra) { + player.drop(itemstack); + itemstack = null; + } + + is[i] = itemstack; + + player.defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + @Override + public String getName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + +} diff --git a/v1_6_R3/pom.xml b/v1_6_R3/pom.xml new file mode 100644 index 0000000..53b3b79 --- /dev/null +++ b/v1_6_R3/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_6_R3 + OpenInvAdapter1_6_R3 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.bukkit + craftbukkit + 1.6.4-R2.0 + provided + + + + diff --git a/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java b/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java new file mode 100644 index 0000000..2f9455e --- /dev/null +++ b/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java @@ -0,0 +1,168 @@ +/* + * 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_6_R3; + +import java.lang.reflect.Field; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_6_R3.AxisAlignedBB; +import net.minecraft.server.v1_6_R3.BlockEnderChest; +import net.minecraft.server.v1_6_R3.EntityOcelot; +import net.minecraft.server.v1_6_R3.EntityPlayer; +import net.minecraft.server.v1_6_R3.IInventory; +import net.minecraft.server.v1_6_R3.InventoryEnderChest; +import net.minecraft.server.v1_6_R3.InventoryLargeChest; +import net.minecraft.server.v1_6_R3.Packet100OpenWindow; +import net.minecraft.server.v1_6_R3.TileEntityChest; +import net.minecraft.server.v1_6_R3.TileEntityEnderChest; +import net.minecraft.server.v1_6_R3.World; + +import org.bukkit.craftbukkit.v1_6_R3.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.t(block.getX(), block.getY() + 1, block.getZ()); + } + + // If block or ocelot on top + if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + return true; + } + + int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + + // If block next to chest is chest and has a block or ocelot on top + if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); + } else if(world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); + } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { + return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); + } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { + return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + } + + return false; + } + + private boolean isBlockedChest(World world, int x, int y, int z) { + return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); + } + + private boolean hasOcelotOnTop(World world, int x, int y, int z) { + for (Object localEntity : world.a(EntityOcelot.class, + AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is API-only + if (silentchest && block.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + return true; + } + + World world = player.world; + Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + + if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + } + + boolean returnValue = false; + if (!silentchest) { + player.openContainer((IInventory) tile); + returnValue = true; + } else { + try { + int windowId = 0; + try { + Field windowID = player.getClass().getDeclaredField("containerCounter"); + windowID.setAccessible(true); + windowId = windowID.getInt(player); + windowId = windowId % 100 + 1; + windowID.setInt(player, windowId); + } catch (NoSuchFieldException e) {} + + player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize(), true)); + player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java b/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java new file mode 100644 index 0000000..536887a --- /dev/null +++ b/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java @@ -0,0 +1,79 @@ +/* + * 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_6_R3; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_6_R3.IInventory; + +import org.bukkit.craftbukkit.v1_6_R3.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + +} diff --git a/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java b/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java new file mode 100644 index 0000000..4e38815 --- /dev/null +++ b/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java @@ -0,0 +1,62 @@ +/* + * 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_6_R3; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_6_R3.EntityPlayer; +import net.minecraft.server.v1_6_R3.MinecraftServer; +import net.minecraft.server.v1_6_R3.PlayerInteractManager; + +import org.bukkit.craftbukkit.v1_6_R3.CraftServer; + +public class PlayerDataManager implements IPlayerDataManager { + + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure the player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + + // Create an entity to load the player data + EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), offline.getName(), + 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; + } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getName(); + } + +} diff --git a/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java b/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java new file mode 100644 index 0000000..57675ba --- /dev/null +++ b/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java @@ -0,0 +1,46 @@ +/* + * 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_6_R3; + +// Volatile +import net.minecraft.server.v1_6_R3.ContainerChest; +import net.minecraft.server.v1_6_R3.EntityHuman; +import net.minecraft.server.v1_6_R3.IInventory; +import net.minecraft.server.v1_6_R3.ItemStack; +import net.minecraft.server.v1_6_R3.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(IInventory i1, IInventory i2) { + super(i1, i2); + // Send close signal + i2.g(); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != null) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(null); + entityHuman.drop(carried); + } + } + +} diff --git a/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java b/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java new file mode 100644 index 0000000..ef0a51e --- /dev/null +++ b/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java @@ -0,0 +1,129 @@ +/* + * 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_6_R3; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +// Volatile +import net.minecraft.server.v1_6_R3.IInventory; +import net.minecraft.server.v1_6_R3.InventoryEnderChest; +import net.minecraft.server.v1_6_R3.InventorySubcontainer; +import net.minecraft.server.v1_6_R3.ItemStack; + +import org.bukkit.craftbukkit.v1_6_R3.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_6_R3.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_6_R3.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private final List transaction = new ArrayList(); + private boolean playerOnline = false; + private CraftPlayer owner; + private int maxStack = MAX_STACK; + + public SpecialEnderChest(Player p, Boolean online) { + super(((CraftPlayer) p).getHandle().getEnderChest().getName(), + ((CraftPlayer) p).getHandle().getEnderChest().c(), + ((CraftPlayer) p).getHandle().getEnderChest().getSize()); + CraftPlayer player = (CraftPlayer) p; + this.enderChest = player.getHandle().getEnderChest(); + this.owner = player; + this.items = enderChest.getContents(); + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + try { + owner = (CraftPlayer) player; + InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } catch (Exception e) {} + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + return this.items; + } + + @Override + public void onOpen(CraftHumanEntity who) { + transaction.add(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + transaction.remove(who); + } + + @Override + public List getViewers() { + return transaction; + } + + @Override + public InventoryHolder getOwner() { + return this.owner; + } + + @Override + public void setMaxStackSize(int size) { + maxStack = size; + } + + @Override + public int getMaxStackSize() { + return maxStack; + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } + +} diff --git a/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java b/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java new file mode 100644 index 0000000..9031b60 --- /dev/null +++ b/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java @@ -0,0 +1,226 @@ +/* + * 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_6_R3; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_6_R3.ItemStack; +import net.minecraft.server.v1_6_R3.PlayerInventory; + +import org.bukkit.craftbukkit.v1_6_R3.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_6_R3.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final ItemStack[] extra = new ItemStack[5]; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); + this.playerOnline = online; + this.items = player.inventory.items; + this.armor = player.inventory.armor; + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + this.player = ((CraftPlayer) player).getHandle(); + this.player.inventory.items = this.items; + this.player.inventory.armor = this.armor; + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(items, 0, contents, 0, items.length); + System.arraycopy(armor, 0, contents, items.length, armor.length); + return contents; + } + + @Override + public int getSize() { + return super.getSize() + 5; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } else { + itemstack = is[i].a(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + + return null; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + + return null; + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + // Effects + if (is == this.extra) { + player.drop(itemstack); + itemstack = null; + } + + is[i] = itemstack; + + player.defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) + return i - 27; + else + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) + return 3; + if (i == 1) + return 2; + if (i == 2) + return 1; + if (i == 3) + return 0; + else + return i; + } + + @Override + public String getName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + +} diff --git a/v1_7_R1/pom.xml b/v1_7_R1/pom.xml new file mode 100644 index 0000000..21f2942 --- /dev/null +++ b/v1_7_R1/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_7_R1 + OpenInvAdapter1_7_R1 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.bukkit + craftbukkit + 1.7.2-R0.4 + provided + + + + diff --git a/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java b/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java new file mode 100644 index 0000000..94a2046 --- /dev/null +++ b/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java @@ -0,0 +1,169 @@ +/* + * 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_7_R1; + +import java.lang.reflect.Field; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +//Volatile +import net.minecraft.server.v1_7_R1.AxisAlignedBB; +import net.minecraft.server.v1_7_R1.Block; +import net.minecraft.server.v1_7_R1.BlockEnderChest; +import net.minecraft.server.v1_7_R1.EntityOcelot; +import net.minecraft.server.v1_7_R1.EntityPlayer; +import net.minecraft.server.v1_7_R1.IInventory; +import net.minecraft.server.v1_7_R1.InventoryEnderChest; +import net.minecraft.server.v1_7_R1.InventoryLargeChest; +import net.minecraft.server.v1_7_R1.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_7_R1.TileEntityChest; +import net.minecraft.server.v1_7_R1.TileEntityEnderChest; +import net.minecraft.server.v1_7_R1.World; + +import org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.t(block.getX(), block.getY() + 1, block.getZ()); + } + + // If block or ocelot on top + if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + return true; + } + + int id = Block.b(world.getType(block.getX(), block.getY(), block.getZ())); + + // If block next to chest is chest and has a block or ocelot on top + if (Block.b(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); + } else if(Block.b(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); + } else if (Block.b(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { + return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); + } else if (Block.b(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { + return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + } + + return false; + } + + private boolean isBlockedChest(World world, int x, int y, int z) { + return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); + } + + private boolean hasOcelotOnTop(World world, int x, int y, int z) { + for (Object localEntity : world.a(EntityOcelot.class, + AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is API-only + if (silentchest && block.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + return true; + } + + World world = player.world; + Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + int id = Block.b(world.getType(block.getX(), block.getY(), block.getZ())); + + if (Block.b(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + } else if(Block.b(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + } else if (Block.b(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + } else if (Block.b(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + } + + boolean returnValue = false; + if (!silentchest) { + player.openContainer((IInventory) tile); + returnValue = true; + } else { + try { + int windowId = 0; + try { + Field windowID = player.getClass().getDeclaredField("containerCounter"); + windowID.setAccessible(true); + windowId = windowID.getInt(player); + windowId = windowId % 100 + 1; + windowID.setInt(player, windowId); + } catch (NoSuchFieldException e) {} + + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) tile).getInventoryName(), ((IInventory) tile).getSize(), true)); + player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java b/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java new file mode 100644 index 0000000..c0f8de9 --- /dev/null +++ b/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java @@ -0,0 +1,79 @@ +/* + * 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_7_R1; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_7_R1.IInventory; + +import org.bukkit.craftbukkit.v1_7_R1.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + +} diff --git a/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java b/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java new file mode 100644 index 0000000..499bc18 --- /dev/null +++ b/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java @@ -0,0 +1,63 @@ +/* + * 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_7_R1; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_7_R1.EntityPlayer; +import net.minecraft.server.v1_7_R1.MinecraftServer; +import net.minecraft.server.v1_7_R1.PlayerInteractManager; +import net.minecraft.util.com.mojang.authlib.GameProfile; + +import org.bukkit.craftbukkit.v1_7_R1.CraftServer; + +public class PlayerDataManager implements IPlayerDataManager { + + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure the player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + // Create a profile and entity to load the player data + GameProfile profile = new GameProfile(null, offline.getName()); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + 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; + } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getName(); + } + +} diff --git a/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java b/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java new file mode 100644 index 0000000..232c4b7 --- /dev/null +++ b/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java @@ -0,0 +1,46 @@ +/* + * 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_7_R1; + +// Volatile +import net.minecraft.server.v1_7_R1.ContainerChest; +import net.minecraft.server.v1_7_R1.EntityHuman; +import net.minecraft.server.v1_7_R1.IInventory; +import net.minecraft.server.v1_7_R1.ItemStack; +import net.minecraft.server.v1_7_R1.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(IInventory i1, IInventory i2) { + super(i1, i2); + // Send close signal + i2.l_(); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != null) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(null); + entityHuman.drop(carried, false); + } + } + +} diff --git a/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java b/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java new file mode 100644 index 0000000..2d0cac5 --- /dev/null +++ b/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java @@ -0,0 +1,129 @@ +/* + * 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_7_R1; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +// Volatile +import net.minecraft.server.v1_7_R1.IInventory; +import net.minecraft.server.v1_7_R1.InventoryEnderChest; +import net.minecraft.server.v1_7_R1.InventorySubcontainer; +import net.minecraft.server.v1_7_R1.ItemStack; + +import org.bukkit.craftbukkit.v1_7_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_7_R1.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private final List transaction = new ArrayList(); + private boolean playerOnline = false; + private CraftPlayer owner; + private int maxStack = MAX_STACK; + + public SpecialEnderChest(Player p, Boolean online) { + super(((CraftPlayer) p).getHandle().getEnderChest().getInventoryName(), + ((CraftPlayer) p).getHandle().getEnderChest().k_(), + ((CraftPlayer) p).getHandle().getEnderChest().getSize()); + CraftPlayer player = (CraftPlayer) p; + this.enderChest = player.getHandle().getEnderChest(); + this.owner = player; + this.items = enderChest.getContents(); + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + try { + owner = (CraftPlayer) player; + InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } catch (Exception e) {} + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + return this.items; + } + + @Override + public void onOpen(CraftHumanEntity who) { + transaction.add(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + transaction.remove(who); + } + + @Override + public List getViewers() { + return transaction; + } + + @Override + public InventoryHolder getOwner() { + return this.owner; + } + + @Override + public void setMaxStackSize(int size) { + maxStack = size; + } + + @Override + public int getMaxStackSize() { + return maxStack; + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } + +} diff --git a/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java b/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java new file mode 100644 index 0000000..885369a --- /dev/null +++ b/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java @@ -0,0 +1,229 @@ +/* + * 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_7_R1; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_7_R1.ItemStack; +import net.minecraft.server.v1_7_R1.PlayerInventory; + +import org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_7_R1.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final ItemStack[] extra = new ItemStack[5]; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); + this.playerOnline = online; + this.items = player.inventory.items; + this.armor = player.inventory.armor; + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + this.player = ((CraftPlayer) player).getHandle(); + this.player.inventory.items = this.items; + this.player.inventory.armor = this.armor; + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(items, 0, contents, 0, items.length); + System.arraycopy(armor, 0, contents, items.length, armor.length); + return contents; + } + + @Override + public int getSize() { + return super.getSize() + 5; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } else { + itemstack = is[i].a(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + + return null; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + + return null; + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + // Effects + if (is == this.extra) { + player.drop(itemstack, true); + itemstack = null; + } + + is[i] = itemstack; + + player.defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + @Override + public String getInventoryName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + +} diff --git a/v1_7_R2/pom.xml b/v1_7_R2/pom.xml new file mode 100644 index 0000000..a100986 --- /dev/null +++ b/v1_7_R2/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_7_R2 + OpenInvAdapter1_7_R2 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.bukkit + craftbukkit + 1.7.5-R0.1 + provided + + + + diff --git a/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java b/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java new file mode 100644 index 0000000..d894316 --- /dev/null +++ b/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java @@ -0,0 +1,169 @@ +/* + * 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_7_R2; + +import java.lang.reflect.Field; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +//Volatile +import net.minecraft.server.v1_7_R2.AxisAlignedBB; +import net.minecraft.server.v1_7_R2.Block; +import net.minecraft.server.v1_7_R2.BlockEnderChest; +import net.minecraft.server.v1_7_R2.EntityOcelot; +import net.minecraft.server.v1_7_R2.EntityPlayer; +import net.minecraft.server.v1_7_R2.IInventory; +import net.minecraft.server.v1_7_R2.InventoryEnderChest; +import net.minecraft.server.v1_7_R2.InventoryLargeChest; +import net.minecraft.server.v1_7_R2.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_7_R2.TileEntityChest; +import net.minecraft.server.v1_7_R2.TileEntityEnderChest; +import net.minecraft.server.v1_7_R2.World; + +import org.bukkit.craftbukkit.v1_7_R2.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.t(block.getX(), block.getY() + 1, block.getZ()); + } + + // If block or ocelot on top + if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + return true; + } + + int id = Block.b(world.getType(block.getX(), block.getY(), block.getZ())); + + // If block next to chest is chest and has a block or ocelot on top + if (Block.b(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); + } else if(Block.b(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); + } else if (Block.b(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { + return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); + } else if (Block.b(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { + return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + } + + return false; + } + + private boolean isBlockedChest(World world, int x, int y, int z) { + return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); + } + + private boolean hasOcelotOnTop(World world, int x, int y, int z) { + for (Object localEntity : world.a(EntityOcelot.class, + AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is API-only + if (silentchest && block.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + return true; + } + + World world = player.world; + Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + int id = Block.b(world.getType(block.getX(), block.getY(), block.getZ())); + + if (Block.b(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + } else if(Block.b(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + } else if (Block.b(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + } else if (Block.b(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + } + + boolean returnValue = false; + if (!silentchest) { + player.openContainer((IInventory) tile); + returnValue = true; + } else { + try { + int windowId = 0; + try { + Field windowID = player.getClass().getDeclaredField("containerCounter"); + windowID.setAccessible(true); + windowId = windowID.getInt(player); + windowId = windowId % 100 + 1; + windowID.setInt(player, windowId); + } catch (NoSuchFieldException e) {} + + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) tile).getInventoryName(), ((IInventory) tile).getSize(), true)); + player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java b/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java new file mode 100644 index 0000000..c982a30 --- /dev/null +++ b/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java @@ -0,0 +1,79 @@ +/* + * 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_7_R2; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_7_R2.IInventory; + +import org.bukkit.craftbukkit.v1_7_R2.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + +} diff --git a/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java b/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java new file mode 100644 index 0000000..eda1ce4 --- /dev/null +++ b/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java @@ -0,0 +1,64 @@ +/* + * 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_7_R2; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +//Volatile +import net.minecraft.server.v1_7_R2.EntityPlayer; +import net.minecraft.server.v1_7_R2.MinecraftServer; +import net.minecraft.server.v1_7_R2.PlayerInteractManager; +import net.minecraft.util.com.mojang.authlib.GameProfile; + +import org.bukkit.craftbukkit.v1_7_R2.CraftServer; + +@SuppressWarnings("deprecation") // Deprecated methods are used properly and will not change. +public class PlayerDataManager implements IPlayerDataManager { + + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure the player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + // Create a profile and entity to load the player data + GameProfile profile = new GameProfile(null, offline.getName()); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + 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; + } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getName(); + } + +} diff --git a/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java b/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java new file mode 100644 index 0000000..7a9ce16 --- /dev/null +++ b/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java @@ -0,0 +1,46 @@ +/* + * 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_7_R2; + +// Volatile +import net.minecraft.server.v1_7_R2.ContainerChest; +import net.minecraft.server.v1_7_R2.EntityHuman; +import net.minecraft.server.v1_7_R2.IInventory; +import net.minecraft.server.v1_7_R2.ItemStack; +import net.minecraft.server.v1_7_R2.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(IInventory i1, IInventory i2) { + super(i1, i2); + // Send close signal + i2.l_(); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != null) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(null); + entityHuman.drop(carried, false); + } + } + +} diff --git a/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java b/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java new file mode 100644 index 0000000..0bd4456 --- /dev/null +++ b/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java @@ -0,0 +1,129 @@ +/* + * 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_7_R2; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +// Volatile +import net.minecraft.server.v1_7_R2.IInventory; +import net.minecraft.server.v1_7_R2.InventoryEnderChest; +import net.minecraft.server.v1_7_R2.InventorySubcontainer; +import net.minecraft.server.v1_7_R2.ItemStack; + +import org.bukkit.craftbukkit.v1_7_R2.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_7_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_7_R2.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private final List transaction = new ArrayList(); + private boolean playerOnline = false; + private CraftPlayer owner; + private int maxStack = MAX_STACK; + + public SpecialEnderChest(Player p, Boolean online) { + super(((CraftPlayer) p).getHandle().getEnderChest().getInventoryName(), + ((CraftPlayer) p).getHandle().getEnderChest().k_(), + ((CraftPlayer) p).getHandle().getEnderChest().getSize()); + CraftPlayer player = (CraftPlayer) p; + this.enderChest = player.getHandle().getEnderChest(); + this.owner = player; + this.items = enderChest.getContents(); + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + try { + owner = (CraftPlayer) player; + InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } catch (Exception e) {} + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + return this.items; + } + + @Override + public void onOpen(CraftHumanEntity who) { + transaction.add(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + transaction.remove(who); + } + + @Override + public List getViewers() { + return transaction; + } + + @Override + public InventoryHolder getOwner() { + return this.owner; + } + + @Override + public void setMaxStackSize(int size) { + maxStack = size; + } + + @Override + public int getMaxStackSize() { + return maxStack; + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } + +} diff --git a/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java b/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java new file mode 100644 index 0000000..c08d9e0 --- /dev/null +++ b/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java @@ -0,0 +1,229 @@ +/* + * 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_7_R2; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_7_R2.ItemStack; +import net.minecraft.server.v1_7_R2.PlayerInventory; + +import org.bukkit.craftbukkit.v1_7_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_7_R2.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final ItemStack[] extra = new ItemStack[5]; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); + this.playerOnline = online; + this.items = player.inventory.items; + this.armor = player.inventory.armor; + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + this.player = ((CraftPlayer) player).getHandle(); + this.player.inventory.items = this.items; + this.player.inventory.armor = this.armor; + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(items, 0, contents, 0, items.length); + System.arraycopy(armor, 0, contents, items.length, armor.length); + return contents; + } + + @Override + public int getSize() { + return super.getSize() + 5; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } else { + itemstack = is[i].a(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + + return null; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + + return null; + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + // Effects + if (is == this.extra) { + player.drop(itemstack, true); + itemstack = null; + } + + is[i] = itemstack; + + player.defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + @Override + public String getInventoryName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + +} diff --git a/v1_7_R3/pom.xml b/v1_7_R3/pom.xml new file mode 100644 index 0000000..af3d2df --- /dev/null +++ b/v1_7_R3/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_7_R3 + OpenInvAdapter1_7_R3 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.bukkit + craftbukkit + 1.7.9-R0.2-SNAPSHOT + provided + + + + diff --git a/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java b/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java new file mode 100644 index 0000000..173c8da --- /dev/null +++ b/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java @@ -0,0 +1,169 @@ +/* + * 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_7_R3; + +import java.lang.reflect.Field; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_7_R3.AxisAlignedBB; +import net.minecraft.server.v1_7_R3.Block; +import net.minecraft.server.v1_7_R3.BlockEnderChest; +import net.minecraft.server.v1_7_R3.EntityOcelot; +import net.minecraft.server.v1_7_R3.EntityPlayer; +import net.minecraft.server.v1_7_R3.IInventory; +import net.minecraft.server.v1_7_R3.InventoryEnderChest; +import net.minecraft.server.v1_7_R3.InventoryLargeChest; +import net.minecraft.server.v1_7_R3.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_7_R3.TileEntityChest; +import net.minecraft.server.v1_7_R3.TileEntityEnderChest; +import net.minecraft.server.v1_7_R3.World; + +import org.bukkit.craftbukkit.v1_7_R3.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.t(block.getX(), block.getY() + 1, block.getZ()); + } + + // If block or ocelot on top + if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + return true; + } + + int id = Block.b(world.getType(block.getX(), block.getY(), block.getZ())); + + // If block next to chest is chest and has a block or ocelot on top + if (Block.b(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); + } else if(Block.b(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); + } else if (Block.b(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { + return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); + } else if (Block.b(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { + return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + } + + return false; + } + + private boolean isBlockedChest(World world, int x, int y, int z) { + return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); + } + + private boolean hasOcelotOnTop(World world, int x, int y, int z) { + for (Object localEntity : world.a(EntityOcelot.class, + AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is API-only + if (silentchest && block.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + return true; + } + + World world = player.world; + Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + int id = Block.b(world.getType(block.getX(), block.getY(), block.getZ())); + + if (Block.b(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + } else if(Block.b(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + } else if (Block.b(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + } else if (Block.b(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + } + + boolean returnValue = false; + if (!silentchest) { + player.openContainer((IInventory) tile); + returnValue = true; + } else { + try { + int windowId = 0; + try { + Field windowID = player.getClass().getDeclaredField("containerCounter"); + windowID.setAccessible(true); + windowId = windowID.getInt(player); + windowId = windowId % 100 + 1; + windowID.setInt(player, windowId); + } catch (NoSuchFieldException e) {} + + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) tile).getInventoryName(), ((IInventory) tile).getSize(), true)); + player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java b/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java new file mode 100644 index 0000000..f8b23a8 --- /dev/null +++ b/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java @@ -0,0 +1,79 @@ +/* + * 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_7_R3; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_7_R3.IInventory; + +import org.bukkit.craftbukkit.v1_7_R3.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + +} diff --git a/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java b/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java new file mode 100644 index 0000000..7f17bc0 --- /dev/null +++ b/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java @@ -0,0 +1,63 @@ +/* + * 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_7_R3; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_7_R3.EntityPlayer; +import net.minecraft.server.v1_7_R3.MinecraftServer; +import net.minecraft.server.v1_7_R3.PlayerInteractManager; +import net.minecraft.util.com.mojang.authlib.GameProfile; + +import org.bukkit.craftbukkit.v1_7_R3.CraftServer; + +public class PlayerDataManager implements IPlayerDataManager { + + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure the player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + // Create a profile and entity to load the player data + GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + 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; + } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getUniqueId().toString(); + } + +} diff --git a/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java b/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java new file mode 100644 index 0000000..cc1a746 --- /dev/null +++ b/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java @@ -0,0 +1,45 @@ +/* + * 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_7_R3; + +// Volatile +import net.minecraft.server.v1_7_R3.ContainerChest; +import net.minecraft.server.v1_7_R3.EntityHuman; +import net.minecraft.server.v1_7_R3.IInventory; +import net.minecraft.server.v1_7_R3.ItemStack; +import net.minecraft.server.v1_7_R3.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(IInventory i1, IInventory i2) { + super(i1, i2); + i2.l_(); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != null) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(null); + entityHuman.drop(carried, false); + } + } + +} diff --git a/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java b/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java new file mode 100644 index 0000000..60d5e4e --- /dev/null +++ b/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java @@ -0,0 +1,129 @@ +/* + * 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_7_R3; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +// Volatile +import net.minecraft.server.v1_7_R3.IInventory; +import net.minecraft.server.v1_7_R3.InventoryEnderChest; +import net.minecraft.server.v1_7_R3.InventorySubcontainer; +import net.minecraft.server.v1_7_R3.ItemStack; + +import org.bukkit.craftbukkit.v1_7_R3.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_7_R3.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_7_R3.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private final List transaction = new ArrayList(); + private boolean playerOnline = false; + private CraftPlayer owner; + private int maxStack = MAX_STACK; + + public SpecialEnderChest(Player p, Boolean online) { + super(((CraftPlayer) p).getHandle().getEnderChest().getInventoryName(), + ((CraftPlayer) p).getHandle().getEnderChest().k_(), + ((CraftPlayer) p).getHandle().getEnderChest().getSize()); + CraftPlayer player = (CraftPlayer) p; + this.enderChest = player.getHandle().getEnderChest(); + this.owner = player; + this.items = enderChest.getContents(); + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + try { + owner = (CraftPlayer) player; + InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } catch (Exception e) {} + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + return this.items; + } + + @Override + public void onOpen(CraftHumanEntity who) { + transaction.add(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + transaction.remove(who); + } + + @Override + public List getViewers() { + return transaction; + } + + @Override + public InventoryHolder getOwner() { + return this.owner; + } + + @Override + public void setMaxStackSize(int size) { + maxStack = size; + } + + @Override + public int getMaxStackSize() { + return maxStack; + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } + +} diff --git a/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java b/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java new file mode 100644 index 0000000..af2b6d3 --- /dev/null +++ b/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java @@ -0,0 +1,229 @@ +/* + * 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_7_R3; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_7_R3.ItemStack; +import net.minecraft.server.v1_7_R3.PlayerInventory; + +import org.bukkit.craftbukkit.v1_7_R3.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_7_R3.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final ItemStack[] extra = new ItemStack[5]; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); + this.playerOnline = online; + this.items = player.inventory.items; + this.armor = player.inventory.armor; + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + this.player = ((CraftPlayer) player).getHandle(); + this.player.inventory.items = this.items; + this.player.inventory.armor = this.armor; + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(items, 0, contents, 0, items.length); + System.arraycopy(armor, 0, contents, items.length, armor.length); + return contents; + } + + @Override + public int getSize() { + return super.getSize() + 5; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } else { + itemstack = is[i].a(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + + return null; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + + return null; + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + // Effects + if (is == this.extra) { + player.drop(itemstack, true); + itemstack = null; + } + + is[i] = itemstack; + + player.defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + @Override + public String getInventoryName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + +} diff --git a/v1_7_R4/pom.xml b/v1_7_R4/pom.xml new file mode 100644 index 0000000..ae32c7e --- /dev/null +++ b/v1_7_R4/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_7_R4 + OpenInvAdapter1_7_R4 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.bukkit + craftbukkit + 1.7.10-R0.1 + provided + + + + diff --git a/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java b/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java new file mode 100644 index 0000000..cf86d73 --- /dev/null +++ b/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java @@ -0,0 +1,169 @@ +/* + * 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_7_R4; + +import java.lang.reflect.Field; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_7_R4.AxisAlignedBB; +import net.minecraft.server.v1_7_R4.Block; +import net.minecraft.server.v1_7_R4.BlockEnderChest; +import net.minecraft.server.v1_7_R4.EntityOcelot; +import net.minecraft.server.v1_7_R4.EntityPlayer; +import net.minecraft.server.v1_7_R4.IInventory; +import net.minecraft.server.v1_7_R4.InventoryEnderChest; +import net.minecraft.server.v1_7_R4.InventoryLargeChest; +import net.minecraft.server.v1_7_R4.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_7_R4.TileEntityChest; +import net.minecraft.server.v1_7_R4.TileEntityEnderChest; +import net.minecraft.server.v1_7_R4.World; + +import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.t(block.getX(), block.getY() + 1, block.getZ()); + } + + // If block or ocelot on top + if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + return true; + } + + int id = Block.getId(world.getType(block.getX(), block.getY(), block.getZ())); + + // If block next to chest is chest and has a block or ocelot on top + if (Block.getId(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); + } else if(Block.getId(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { + return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); + } else if (Block.getId(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { + return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); + } else if (Block.getId(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { + return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + } + + return false; + } + + private boolean isBlockedChest(World world, int x, int y, int z) { + return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); + } + + private boolean hasOcelotOnTop(World world, int x, int y, int z) { + for (Object localEntity : world.a(EntityOcelot.class, + AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is API-only + if (silentchest && block.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + return true; + } + + World world = player.world; + Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + int id = Block.getId(world.getType(block.getX(), block.getY(), block.getZ())); + + if (Block.getId(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + } else if(Block.getId(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + } else if (Block.getId(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { + tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + } else if (Block.getId(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { + tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + } + + boolean returnValue = false; + if (!silentchest) { + player.openContainer((IInventory) tile); + returnValue = true; + } else { + try { + int windowId = 0; + try { + Field windowID = player.getClass().getDeclaredField("containerCounter"); + windowID.setAccessible(true); + windowId = windowID.getInt(player); + windowId = windowId % 100 + 1; + windowID.setInt(player, windowId); + } catch (NoSuchFieldException e) {} + + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) tile).getInventoryName(), ((IInventory) tile).getSize(), true)); + player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java b/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java new file mode 100644 index 0000000..b41fd40 --- /dev/null +++ b/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java @@ -0,0 +1,79 @@ +/* + * 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_7_R4; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_7_R4.IInventory; + +import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + +} diff --git a/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java b/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java new file mode 100644 index 0000000..b26947d --- /dev/null +++ b/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java @@ -0,0 +1,63 @@ +/* + * 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_7_R4; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_7_R4.EntityPlayer; +import net.minecraft.server.v1_7_R4.MinecraftServer; +import net.minecraft.server.v1_7_R4.PlayerInteractManager; +import net.minecraft.util.com.mojang.authlib.GameProfile; + +import org.bukkit.craftbukkit.v1_7_R4.CraftServer; + +public class PlayerDataManager implements IPlayerDataManager { + + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure the player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + // Create a profile and entity to load the player data + GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + 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; + } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getUniqueId().toString(); + } + +} diff --git a/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java b/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java new file mode 100644 index 0000000..b816cee --- /dev/null +++ b/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java @@ -0,0 +1,46 @@ +/* + * 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_7_R4; + +// Volatile +import net.minecraft.server.v1_7_R4.ContainerChest; +import net.minecraft.server.v1_7_R4.EntityHuman; +import net.minecraft.server.v1_7_R4.IInventory; +import net.minecraft.server.v1_7_R4.ItemStack; +import net.minecraft.server.v1_7_R4.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(IInventory i1, IInventory i2) { + super(i1, i2); + // Send close signal + i2.closeContainer(); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != null) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(null); + entityHuman.drop(carried, false); + } + } + +} diff --git a/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java b/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java new file mode 100644 index 0000000..3ff6db5 --- /dev/null +++ b/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java @@ -0,0 +1,129 @@ +/* + * 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_7_R4; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +//Volatile +import net.minecraft.server.v1_7_R4.IInventory; +import net.minecraft.server.v1_7_R4.InventoryEnderChest; +import net.minecraft.server.v1_7_R4.InventorySubcontainer; +import net.minecraft.server.v1_7_R4.ItemStack; + +import org.bukkit.craftbukkit.v1_7_R4.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + public List transaction = new ArrayList(); + private boolean playerOnline = false; + private CraftPlayer owner; + private int maxStack = MAX_STACK; + + public SpecialEnderChest(Player p, Boolean online) { + super(((CraftPlayer) p).getHandle().getEnderChest().getInventoryName(), + ((CraftPlayer) p).getHandle().getEnderChest().k_(), + ((CraftPlayer) p).getHandle().getEnderChest().getSize()); + CraftPlayer player = (CraftPlayer) p; + this.enderChest = player.getHandle().getEnderChest(); + this.owner = player; + this.items = enderChest.getContents(); + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + try { + owner = (CraftPlayer) player; + InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } catch (Exception e) {} + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + return this.items; + } + + @Override + public void onOpen(CraftHumanEntity who) { + transaction.add(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + transaction.remove(who); + } + + @Override + public List getViewers() { + return transaction; + } + + @Override + public InventoryHolder getOwner() { + return this.owner; + } + + @Override + public void setMaxStackSize(int size) { + maxStack = size; + } + + @Override + public int getMaxStackSize() { + return maxStack; + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } + +} diff --git a/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java b/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java new file mode 100644 index 0000000..1283d4e --- /dev/null +++ b/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java @@ -0,0 +1,229 @@ +/* + * 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_7_R4; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_7_R4.ItemStack; +import net.minecraft.server.v1_7_R4.PlayerInventory; + +import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final ItemStack[] extra = new ItemStack[5]; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); + this.playerOnline = online; + this.items = player.inventory.items; + this.armor = player.inventory.armor; + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + this.player = ((CraftPlayer) player).getHandle(); + this.player.inventory.items = this.items; + this.player.inventory.armor = this.armor; + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(items, 0, contents, 0, items.length); + System.arraycopy(armor, 0, contents, items.length, armor.length); + return contents; + } + + @Override + public int getSize() { + return super.getSize() + 5; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } else { + itemstack = is[i].a(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + + return null; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + + return null; + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + // Effects + if (is == this.extra) { + player.drop(itemstack, true); + itemstack = null; + } + + is[i] = itemstack; + + player.defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + @Override + public String getInventoryName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + +} diff --git a/v1_8_R1/pom.xml b/v1_8_R1/pom.xml new file mode 100644 index 0000000..8864486 --- /dev/null +++ b/v1_8_R1/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_8_R1 + OpenInvAdapter1_8_R1 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.spigotmc + spigot + 1.8-R0.1-SNAPSHOT + provided + + + + diff --git a/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java b/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java new file mode 100644 index 0000000..6968d2d --- /dev/null +++ b/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java @@ -0,0 +1,205 @@ +/* + * 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_8_R1; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +//Volatile +import net.minecraft.server.v1_8_R1.AxisAlignedBB; +import net.minecraft.server.v1_8_R1.Block; +import net.minecraft.server.v1_8_R1.BlockChest; +import net.minecraft.server.v1_8_R1.BlockEnderChest; +import net.minecraft.server.v1_8_R1.BlockPosition; +import net.minecraft.server.v1_8_R1.EntityOcelot; +import net.minecraft.server.v1_8_R1.EntityPlayer; +import net.minecraft.server.v1_8_R1.EnumDirection; +import net.minecraft.server.v1_8_R1.IInventory; +import net.minecraft.server.v1_8_R1.ITileInventory; +import net.minecraft.server.v1_8_R1.InventoryEnderChest; +import net.minecraft.server.v1_8_R1.InventoryLargeChest; +import net.minecraft.server.v1_8_R1.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_8_R1.TileEntity; +import net.minecraft.server.v1_8_R1.TileEntityChest; +import net.minecraft.server.v1_8_R1.TileEntityEnderChest; +import net.minecraft.server.v1_8_R1.World; + +import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + Block block = world.getType(blockPosition).getBlock(); + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.getType(blockPosition.up()).getBlock().c(); + } + + // Check if chest is blocked or has an ocelot on top + if (isBlockedChest(world, blockPosition)) { + return true; + } + + // Check for matching adjacent chests that are blocked or have an ocelot on top + for (EnumDirection localEnumDirection : EnumDirection.values()) { + if (!localEnumDirection.k().c()) { + // Not horizontal + continue; + } + + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if (isBlockedChest(world, localBlockPosition)) { + return true; + } + } + + return false; + } + + private boolean isBlockedChest(World world, BlockPosition blockPosition) { + // For reference, loot at net.minecraft.server.BlockChest + return world.getType(blockPosition.up()).getBlock().c() || hasOcelotOnTop(world, blockPosition); + } + + private boolean hasOcelotOnTop(World world, BlockPosition blockPosition) { + for (Object localEntity : world.a(EntityOcelot.class, + new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, + blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, + blockPosition.getZ() + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is API-only + if (silentchest && b.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + return true; + } + + World world = player.world; + BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + Object tile = world.getTileEntity(blockPosition); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + Block block = world.getType(blockPosition).getBlock(); + + if (block instanceof BlockChest) { + for (EnumDirection localEnumDirection : EnumDirection.values()) { + if (!localEnumDirection.k().c()) { + // Not horizontal + continue; + } + + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { + tile = new InventoryLargeChest("container.chestDouble", + (TileEntityChest) localTileEntity, (ITileInventory) tile); + } else { + tile = new InventoryLargeChest("container.chestDouble", + (ITileInventory) tile, (TileEntityChest) localTileEntity); + } + break; + } + + if (silentchest) { + tile = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + } + } + + boolean returnValue = false; + if (!silentchest) { + player.openContainer((IInventory) tile); + returnValue = true; + } else { + try { + SilentContainerChest silentContainerChest = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, "minecraft:chest", ((IInventory) tile).getScoreboardDisplayName(), ((IInventory) tile).getSize())); + player.activeContainer = silentContainerChest; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java b/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java new file mode 100644 index 0000000..20e6d09 --- /dev/null +++ b/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java @@ -0,0 +1,79 @@ +/* + * 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_8_R1; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_8_R1.IInventory; + +import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + +} diff --git a/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java b/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java new file mode 100644 index 0000000..1b45d27 --- /dev/null +++ b/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java @@ -0,0 +1,64 @@ +/* + * 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_8_R1; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import com.mojang.authlib.GameProfile; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +import net.minecraft.server.v1_8_R1.EntityPlayer; +import net.minecraft.server.v1_8_R1.MinecraftServer; +import net.minecraft.server.v1_8_R1.PlayerInteractManager; + +//Volatile +import org.bukkit.craftbukkit.v1_8_R1.CraftServer; + +public class PlayerDataManager implements IPlayerDataManager { + + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure the player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + // Create a profile and entity to load the player data + GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + 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; + } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getUniqueId().toString(); + } + +} diff --git a/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java b/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java new file mode 100644 index 0000000..5a5a8af --- /dev/null +++ b/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java @@ -0,0 +1,46 @@ +/* + * 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_8_R1; + +//Volatile +import net.minecraft.server.v1_8_R1.ContainerChest; +import net.minecraft.server.v1_8_R1.EntityHuman; +import net.minecraft.server.v1_8_R1.IInventory; +import net.minecraft.server.v1_8_R1.ItemStack; +import net.minecraft.server.v1_8_R1.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman e1) { + super(i1, i2, e1); + // Send close signal + i2.closeContainer(e1); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != null) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(null); + entityHuman.drop(carried, false); + } + } + +} diff --git a/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java b/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java new file mode 100644 index 0000000..9c2283f --- /dev/null +++ b/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java @@ -0,0 +1,86 @@ +/* + * 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_8_R1; + +import java.lang.reflect.Field; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +//Volatile +import net.minecraft.server.v1_8_R1.IInventory; +import net.minecraft.server.v1_8_R1.InventoryEnderChest; +import net.minecraft.server.v1_8_R1.InventorySubcontainer; + +import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialEnderChest(Player player, Boolean online) { + super(((CraftPlayer) player).getHandle().getEnderChest().getName(), + ((CraftPlayer) player).getHandle().getEnderChest().hasCustomName(), + ((CraftPlayer) player).getHandle().getEnderChest().getSize()); + CraftPlayer craftPlayer = (CraftPlayer) player; + this.enderChest = craftPlayer.getHandle().getEnderChest(); + this.bukkitOwner = craftPlayer; + this.items = enderChest.getContents(); + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + try { + this.bukkitOwner = player; + CraftPlayer craftPlayer = (CraftPlayer) player; + InventoryEnderChest playerEnderChest = craftPlayer.getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } catch (Exception e) {} + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } + +} diff --git a/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java b/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java new file mode 100644 index 0000000..0ba51a6 --- /dev/null +++ b/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java @@ -0,0 +1,229 @@ +/* + * 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_8_R1; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +//Volatile +import net.minecraft.server.v1_8_R1.ItemStack; +import net.minecraft.server.v1_8_R1.PlayerInventory; + +import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final ItemStack[] extra = new ItemStack[5]; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); + this.playerOnline = online; + this.items = player.inventory.items; + this.armor = player.inventory.armor; + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + this.player = ((CraftPlayer) player).getHandle(); + this.player.inventory.items = this.items; + this.player.inventory.armor = this.armor; + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(items, 0, contents, 0, items.length); + System.arraycopy(armor, 0, contents, items.length, armor.length); + return contents; + } + + @Override + public int getSize() { + return super.getSize() + 5; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } else { + itemstack = is[i].a(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + + return null; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + + return null; + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + // Effects + if (is == this.extra) { + player.drop(itemstack, true); + itemstack = null; + } + + is[i] = itemstack; + + player.defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + @Override + public String getName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + +} diff --git a/v1_8_R2/pom.xml b/v1_8_R2/pom.xml new file mode 100644 index 0000000..a002526 --- /dev/null +++ b/v1_8_R2/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_8_R2 + OpenInvAdapter1_8_R2 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.spigotmc + spigot + 1.8.3-R0.1-SNAPSHOT + provided + + + + diff --git a/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java b/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java new file mode 100644 index 0000000..ebf2042 --- /dev/null +++ b/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java @@ -0,0 +1,205 @@ +/* + * 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_8_R2; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +//Volatile +import net.minecraft.server.v1_8_R2.AxisAlignedBB; +import net.minecraft.server.v1_8_R2.Block; +import net.minecraft.server.v1_8_R2.BlockChest; +import net.minecraft.server.v1_8_R2.BlockEnderChest; +import net.minecraft.server.v1_8_R2.BlockPosition; +import net.minecraft.server.v1_8_R2.Entity; +import net.minecraft.server.v1_8_R2.EntityOcelot; +import net.minecraft.server.v1_8_R2.EntityPlayer; +import net.minecraft.server.v1_8_R2.EnumDirection; +import net.minecraft.server.v1_8_R2.IInventory; +import net.minecraft.server.v1_8_R2.ITileInventory; +import net.minecraft.server.v1_8_R2.InventoryEnderChest; +import net.minecraft.server.v1_8_R2.InventoryLargeChest; +import net.minecraft.server.v1_8_R2.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_8_R2.StatisticList; +import net.minecraft.server.v1_8_R2.TileEntity; +import net.minecraft.server.v1_8_R2.TileEntityChest; +import net.minecraft.server.v1_8_R2.TileEntityEnderChest; +import net.minecraft.server.v1_8_R2.World; + +import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + Block block = world.getType(blockPosition).getBlock(); + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.getType(blockPosition.up()).getBlock().c(); + } + + // Check if chest is blocked or has an ocelot on top + if (isBlockedChest(world, blockPosition)) { + return true; + } + + // Check for matching adjacent chests that are blocked or have an ocelot on top + for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if (isBlockedChest(world, localBlockPosition)) { + return true; + } + } + + return false; + } + + private boolean isBlockedChest(World world, BlockPosition blockPosition) { + // For reference, loot at net.minecraft.server.BlockChest + return world.getType(blockPosition.up()).getBlock().c() || hasOcelotOnTop(world, blockPosition); + } + + private boolean hasOcelotOnTop(World world, BlockPosition blockPosition) { + for (Entity localEntity : world.a(EntityOcelot.class, + new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, + blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, + blockPosition.getZ() + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is pretty much API-only + if (silentchest && b.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + player.b(StatisticList.V); + return true; + } + + World world = player.world; + BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + Object tile = world.getTileEntity(blockPosition); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + player.b(StatisticList.V); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + Block block = world.getType(blockPosition).getBlock(); + + if (block instanceof BlockChest) { + for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { + tile = new InventoryLargeChest("container.chestDouble", + (TileEntityChest) localTileEntity, (ITileInventory) tile); + } else { + tile = new InventoryLargeChest("container.chestDouble", + (ITileInventory) tile, (TileEntityChest) localTileEntity); + } + break; + } + + if (silentchest) { + tile = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + } + + if (((BlockChest) block).b == 0) + player.b(StatisticList.aa); + else if (((BlockChest) block).b == 1) { + player.b(StatisticList.U); + } + } + + boolean returnValue = false; + if (!silentchest) { + player.openContainer((IInventory) tile); + returnValue = true; + } else { + try { + SilentContainerChest silentContainerChest = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, "minecraft:chest", ((IInventory) tile).getScoreboardDisplayName(), ((IInventory) tile).getSize())); + player.activeContainer = silentContainerChest; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java b/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java new file mode 100644 index 0000000..6d3e6ff --- /dev/null +++ b/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java @@ -0,0 +1,79 @@ +/* + * 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_8_R2; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_8_R2.IInventory; + +import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + +} diff --git a/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java b/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java new file mode 100644 index 0000000..d79bb09 --- /dev/null +++ b/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java @@ -0,0 +1,64 @@ +/* + * 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_8_R2; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import com.mojang.authlib.GameProfile; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_8_R2.EntityPlayer; +import net.minecraft.server.v1_8_R2.MinecraftServer; +import net.minecraft.server.v1_8_R2.PlayerInteractManager; + +import org.bukkit.craftbukkit.v1_8_R2.CraftServer; + +public class PlayerDataManager implements IPlayerDataManager { + + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure the player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + // Create a profile and entity to load the player data + GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + 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; + } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getUniqueId().toString(); + } + +} diff --git a/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java b/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java new file mode 100644 index 0000000..d7e1196 --- /dev/null +++ b/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java @@ -0,0 +1,46 @@ +/* + * 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_8_R2; + +// Volatile +import net.minecraft.server.v1_8_R2.ContainerChest; +import net.minecraft.server.v1_8_R2.EntityHuman; +import net.minecraft.server.v1_8_R2.IInventory; +import net.minecraft.server.v1_8_R2.ItemStack; +import net.minecraft.server.v1_8_R2.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman e1) { + super(i1, i2, e1); + // Send close signal + i2.closeContainer(e1); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != null) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(null); + entityHuman.drop(carried, false); + } + } + +} diff --git a/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java b/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java new file mode 100644 index 0000000..e353cd9 --- /dev/null +++ b/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java @@ -0,0 +1,86 @@ +/* + * 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_8_R2; + +import java.lang.reflect.Field; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_8_R2.IInventory; +import net.minecraft.server.v1_8_R2.InventoryEnderChest; +import net.minecraft.server.v1_8_R2.InventorySubcontainer; + +import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialEnderChest(Player player, Boolean online) { + super(((CraftPlayer) player).getHandle().getEnderChest().getName(), + ((CraftPlayer) player).getHandle().getEnderChest().hasCustomName(), + ((CraftPlayer) player).getHandle().getEnderChest().getSize()); + CraftPlayer craftPlayer = (CraftPlayer) player; + this.enderChest = craftPlayer.getHandle().getEnderChest(); + this.bukkitOwner = craftPlayer; + this.items = enderChest.getContents(); + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + try { + this.bukkitOwner = player; + CraftPlayer craftPlayer = (CraftPlayer) player; + InventoryEnderChest playerEnderChest = craftPlayer.getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } catch (Exception e) {} + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } + +} diff --git a/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java b/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java new file mode 100644 index 0000000..34bd8ab --- /dev/null +++ b/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java @@ -0,0 +1,229 @@ +/* + * 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_8_R2; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_8_R2.ItemStack; +import net.minecraft.server.v1_8_R2.PlayerInventory; + +import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final ItemStack[] extra = new ItemStack[5]; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); + this.playerOnline = online; + this.items = player.inventory.items; + this.armor = player.inventory.armor; + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + this.player = ((CraftPlayer) player).getHandle(); + this.player.inventory.items = this.items; + this.player.inventory.armor = this.armor; + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(items, 0, contents, 0, items.length); + System.arraycopy(armor, 0, contents, items.length, armor.length); + return contents; + } + + @Override + public int getSize() { + return super.getSize() + 5; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } else { + itemstack = is[i].a(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + + return null; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + + return null; + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + // Effects + if (is == this.extra) { + player.drop(itemstack, true); + itemstack = null; + } + + is[i] = itemstack; + + player.defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + @Override + public String getName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + +} diff --git a/v1_8_R3/pom.xml b/v1_8_R3/pom.xml new file mode 100644 index 0000000..972b9ae --- /dev/null +++ b/v1_8_R3/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_8_R3 + OpenInvAdapter1_8_R3 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.spigotmc + spigot + 1.8.8-R0.1-SNAPSHOT + provided + + + + diff --git a/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java b/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java new file mode 100644 index 0000000..ec13927 --- /dev/null +++ b/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java @@ -0,0 +1,205 @@ +/* + * 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_8_R3; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +//Volatile +import net.minecraft.server.v1_8_R3.AxisAlignedBB; +import net.minecraft.server.v1_8_R3.Block; +import net.minecraft.server.v1_8_R3.BlockChest; +import net.minecraft.server.v1_8_R3.BlockEnderChest; +import net.minecraft.server.v1_8_R3.BlockPosition; +import net.minecraft.server.v1_8_R3.Entity; +import net.minecraft.server.v1_8_R3.EntityOcelot; +import net.minecraft.server.v1_8_R3.EntityPlayer; +import net.minecraft.server.v1_8_R3.EnumDirection; +import net.minecraft.server.v1_8_R3.IInventory; +import net.minecraft.server.v1_8_R3.ITileInventory; +import net.minecraft.server.v1_8_R3.InventoryEnderChest; +import net.minecraft.server.v1_8_R3.InventoryLargeChest; +import net.minecraft.server.v1_8_R3.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_8_R3.StatisticList; +import net.minecraft.server.v1_8_R3.TileEntity; +import net.minecraft.server.v1_8_R3.TileEntityChest; +import net.minecraft.server.v1_8_R3.TileEntityEnderChest; +import net.minecraft.server.v1_8_R3.World; + +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + Block block = world.getType(blockPosition).getBlock(); + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.getType(blockPosition.up()).getBlock().c(); + } + + // Check if chest is blocked or has an ocelot on top + if (isBlockedChest(world, blockPosition)) { + return true; + } + + // Check for matching adjacent chests that are blocked or have an ocelot on top + for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if (isBlockedChest(world, localBlockPosition)) { + return true; + } + } + + return false; + } + + private boolean isBlockedChest(World world, BlockPosition blockPosition) { + // For reference, loot at net.minecraft.server.BlockChest + return world.getType(blockPosition.up()).getBlock().c() || hasOcelotOnTop(world, blockPosition); + } + + private boolean hasOcelotOnTop(World world, BlockPosition blockPosition) { + for (Entity localEntity : world.a(EntityOcelot.class, + new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, + blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, + blockPosition.getZ() + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is pretty much API-only + if (silentchest && b.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + player.b(StatisticList.V); + return true; + } + + World world = player.world; + BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + Object tile = world.getTileEntity(blockPosition); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + player.b(StatisticList.V); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + Block block = world.getType(blockPosition).getBlock(); + + if (block instanceof BlockChest) { + for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { + tile = new InventoryLargeChest("container.chestDouble", + (TileEntityChest) localTileEntity, (ITileInventory) tile); + } else { + tile = new InventoryLargeChest("container.chestDouble", + (ITileInventory) tile, (TileEntityChest) localTileEntity); + } + break; + } + + if (silentchest) { + tile = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + } + + if (((BlockChest) block).b == 0) + player.b(StatisticList.aa); + else if (((BlockChest) block).b == 1) { + player.b(StatisticList.U); + } + } + + boolean returnValue = false; + if (!silentchest) { + player.openContainer((IInventory) tile); + returnValue = true; + } else { + try { + SilentContainerChest silentContainerChest = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, "minecraft:chest", ((IInventory) tile).getScoreboardDisplayName(), ((IInventory) tile).getSize())); + player.activeContainer = silentContainerChest; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java b/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java new file mode 100644 index 0000000..82d9d3e --- /dev/null +++ b/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java @@ -0,0 +1,79 @@ +/* + * 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_8_R3; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_8_R3.IInventory; + +import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + +} diff --git a/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java b/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java new file mode 100644 index 0000000..818e703 --- /dev/null +++ b/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java @@ -0,0 +1,64 @@ +/* + * 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_8_R3; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import com.mojang.authlib.GameProfile; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +import net.minecraft.server.v1_8_R3.EntityPlayer; +import net.minecraft.server.v1_8_R3.MinecraftServer; +import net.minecraft.server.v1_8_R3.PlayerInteractManager; + +//Volatile +import org.bukkit.craftbukkit.v1_8_R3.CraftServer; + +public class PlayerDataManager implements IPlayerDataManager { + + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure the player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + // Create a profile and entity to load the player data + GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + 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; + } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getUniqueId().toString(); + } + +} diff --git a/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java b/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java new file mode 100644 index 0000000..24c4288 --- /dev/null +++ b/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java @@ -0,0 +1,46 @@ +/* + * 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_8_R3; + +// Volatile +import net.minecraft.server.v1_8_R3.ContainerChest; +import net.minecraft.server.v1_8_R3.EntityHuman; +import net.minecraft.server.v1_8_R3.IInventory; +import net.minecraft.server.v1_8_R3.ItemStack; +import net.minecraft.server.v1_8_R3.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman e1) { + super(i1, i2, e1); + // close signal + i2.closeContainer(e1); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != null) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(null); + entityHuman.drop(carried, false); + } + } + +} diff --git a/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java b/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java new file mode 100644 index 0000000..a8780c5 --- /dev/null +++ b/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java @@ -0,0 +1,86 @@ +/* + * 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_8_R3; + +import java.lang.reflect.Field; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_8_R3.IInventory; +import net.minecraft.server.v1_8_R3.InventoryEnderChest; +import net.minecraft.server.v1_8_R3.InventorySubcontainer; + +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialEnderChest(Player player, Boolean online) { + super(((CraftPlayer) player).getHandle().getEnderChest().getName(), + ((CraftPlayer) player).getHandle().getEnderChest().hasCustomName(), + ((CraftPlayer) player).getHandle().getEnderChest().getSize()); + CraftPlayer craftPlayer = (CraftPlayer) player; + this.enderChest = craftPlayer.getHandle().getEnderChest(); + this.bukkitOwner = craftPlayer; + this.items = enderChest.getContents(); + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + try { + this.bukkitOwner = player; + CraftPlayer craftPlayer = (CraftPlayer) player; + InventoryEnderChest playerEnderChest = craftPlayer.getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } catch (Exception e) {} + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } + +} diff --git a/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java b/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java new file mode 100644 index 0000000..25d0536 --- /dev/null +++ b/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java @@ -0,0 +1,229 @@ +/* + * 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_8_R3; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +//Volatile +import net.minecraft.server.v1_8_R3.ItemStack; +import net.minecraft.server.v1_8_R3.PlayerInventory; + +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final ItemStack[] extra = new ItemStack[5]; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); + this.playerOnline = online; + this.items = player.inventory.items; + this.armor = player.inventory.armor; + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + this.player = ((CraftPlayer) player).getHandle(); + this.player.inventory.items = this.items; + this.player.inventory.armor = this.armor; + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(items, 0, contents, 0, items.length); + System.arraycopy(armor, 0, contents, items.length, armor.length); + return contents; + } + + @Override + public int getSize() { + return super.getSize() + 5; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } else { + itemstack = is[i].cloneAndSubtract(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + + return null; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + + return null; + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + // Effects + if (is == this.extra) { + player.drop(itemstack, true); + itemstack = null; + } + + is[i] = itemstack; + + player.defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + @Override + public String getName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + +} diff --git a/v1_9_R1/pom.xml b/v1_9_R1/pom.xml new file mode 100644 index 0000000..07e89da --- /dev/null +++ b/v1_9_R1/pom.xml @@ -0,0 +1,27 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_9_R1 + OpenInvAdapter1_9_R1 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.spigotmc + spigot + 1.9-R0.1-SNAPSHOT + provided + + + diff --git a/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java b/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java new file mode 100644 index 0000000..eaf4f2f --- /dev/null +++ b/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java @@ -0,0 +1,205 @@ +/* + * 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 com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_9_R1.AxisAlignedBB; +import net.minecraft.server.v1_9_R1.Block; +import net.minecraft.server.v1_9_R1.BlockChest; +import net.minecraft.server.v1_9_R1.BlockEnderChest; +import net.minecraft.server.v1_9_R1.BlockPosition; +import net.minecraft.server.v1_9_R1.Entity; +import net.minecraft.server.v1_9_R1.EntityOcelot; +import net.minecraft.server.v1_9_R1.EntityPlayer; +import net.minecraft.server.v1_9_R1.EnumDirection; +import net.minecraft.server.v1_9_R1.IInventory; +import net.minecraft.server.v1_9_R1.ITileInventory; +import net.minecraft.server.v1_9_R1.InventoryEnderChest; +import net.minecraft.server.v1_9_R1.InventoryLargeChest; +import net.minecraft.server.v1_9_R1.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_9_R1.StatisticList; +import net.minecraft.server.v1_9_R1.TileEntity; +import net.minecraft.server.v1_9_R1.TileEntityChest; +import net.minecraft.server.v1_9_R1.TileEntityEnderChest; +import net.minecraft.server.v1_9_R1.World; + +import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + Block block = world.getType(blockPosition).getBlock(); + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.getType(blockPosition.up()).m(); + } + + // Check if chest is blocked or has an ocelot on top + if (isBlockedChest(world, blockPosition)) { + return true; + } + + // Check for matching adjacent chests that are blocked or have an ocelot on top + for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if (isBlockedChest(world, localBlockPosition)) { + return true; + } + } + + return false; + } + + private boolean isBlockedChest(World world, BlockPosition blockPosition) { + // For reference, loot at net.minecraft.server.BlockChest + return world.getType(blockPosition.up()).l() || hasOcelotOnTop(world, blockPosition); + } + + private boolean hasOcelotOnTop(World world, BlockPosition blockPosition) { + for (Entity localEntity : world.a(EntityOcelot.class, + new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, + blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, + blockPosition.getZ() + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is pretty much API-only + if (silentchest && b.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + player.b(StatisticList.X); + return true; + } + + World world = player.world; + BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + Object tile = world.getTileEntity(blockPosition); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + player.b(StatisticList.X); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + Block block = world.getType(blockPosition).getBlock(); + + if (block instanceof BlockChest) { + for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { + tile = new InventoryLargeChest("container.chestDouble", + (TileEntityChest) localTileEntity, (ITileInventory) tile); + } else { + tile = new InventoryLargeChest("container.chestDouble", + (ITileInventory) tile, (TileEntityChest) localTileEntity); + } + break; + } + + if (silentchest) { + tile = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + } + + if (((BlockChest) block).g == BlockChest.Type.BASIC) + player.b(StatisticList.ac); + else if (((BlockChest) block).g == BlockChest.Type.TRAP) { + player.b(StatisticList.W); + } + } + + boolean returnValue = false; + if (!silentchest) { + player.openContainer((IInventory) tile); + returnValue = true; + } else { + try { + SilentContainerChest silentContainerChest = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, "minecraft:chest", ((IInventory) tile).getScoreboardDisplayName(), ((IInventory) tile).getSize())); + player.activeContainer = silentContainerChest; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java b/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java new file mode 100644 index 0000000..c9d48f8 --- /dev/null +++ b/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java @@ -0,0 +1,79 @@ +/* + * 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 com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_9_R1.IInventory; + +import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + +} diff --git a/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java b/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java new file mode 100644 index 0000000..0166f62 --- /dev/null +++ b/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java @@ -0,0 +1,64 @@ +/* + * 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 com.lishid.openinv.internal.IPlayerDataManager; + +import com.mojang.authlib.GameProfile; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_9_R1.EntityPlayer; +import net.minecraft.server.v1_9_R1.MinecraftServer; +import net.minecraft.server.v1_9_R1.PlayerInteractManager; + +import org.bukkit.craftbukkit.v1_9_R1.CraftServer; + +public class PlayerDataManager implements IPlayerDataManager { + + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure the player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + // Create a profile and entity to load the player data + GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + 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; + } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getUniqueId().toString(); + } + +} diff --git a/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java b/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java new file mode 100644 index 0000000..3a25cf6 --- /dev/null +++ b/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java @@ -0,0 +1,46 @@ +/* + * 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; + +// Volatile +import net.minecraft.server.v1_9_R1.ContainerChest; +import net.minecraft.server.v1_9_R1.EntityHuman; +import net.minecraft.server.v1_9_R1.IInventory; +import net.minecraft.server.v1_9_R1.ItemStack; +import net.minecraft.server.v1_9_R1.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman e1) { + super(i1, i2, e1); + // Send close signal + i2.closeContainer(e1); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != null) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(null); + entityHuman.drop(carried, false); + } + } + +} diff --git a/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java b/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java new file mode 100644 index 0000000..2306fca --- /dev/null +++ b/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java @@ -0,0 +1,86 @@ +/* + * 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.lang.reflect.Field; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_9_R1.IInventory; +import net.minecraft.server.v1_9_R1.InventoryEnderChest; +import net.minecraft.server.v1_9_R1.InventorySubcontainer; + +import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialEnderChest(Player player, Boolean online) { + super(((CraftPlayer) player).getHandle().getEnderChest().getName(), + ((CraftPlayer) player).getHandle().getEnderChest().hasCustomName(), + ((CraftPlayer) player).getHandle().getEnderChest().getSize()); + CraftPlayer craftPlayer = (CraftPlayer) player; + this.enderChest = craftPlayer.getHandle().getEnderChest(); + this.bukkitOwner = craftPlayer; + this.items = enderChest.getContents(); + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + try { + this.bukkitOwner = player; + CraftPlayer craftPlayer = (CraftPlayer) player; + InventoryEnderChest playerEnderChest = craftPlayer.getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } catch (Exception e) {} + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } + +} diff --git a/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java b/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java new file mode 100644 index 0000000..1b61828 --- /dev/null +++ b/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java @@ -0,0 +1,290 @@ +/* + * 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.lang.reflect.Field; +import java.lang.reflect.Modifier; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_9_R1.ItemStack; +import net.minecraft.server.v1_9_R1.PlayerInventory; + +import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final ItemStack[] extra = new ItemStack[4]; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); + this.playerOnline = online; + setItemArrays(this, player.inventory.items, player.inventory.armor, player.inventory.extraSlots); + } + + private void setItemArrays(PlayerInventory inventory, ItemStack[] items, ItemStack[] armor, + ItemStack[] extraSlots) { + try { + // Prepare to remove final modifier + Field modifiers = Field.class.getDeclaredField("modifiers"); + modifiers.setAccessible(true); + + // Access and replace main inventory array + Field field = PlayerInventory.class.getField("items"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, items); + + // Access and replace armor inventory array + field = PlayerInventory.class.getField("armor"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, armor); + + // Access and replace offhand inventory array + field = PlayerInventory.class.getField("extraSlots"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, extraSlots); + + // Access and replace array containing all inventory arrays + field = PlayerInventory.class.getDeclaredField("g"); + field.setAccessible(true); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, new ItemStack[][] { items, armor, extraSlots }); + } 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 setPlayerOnline(Player player) { + if (!playerOnline) { + this.player = ((CraftPlayer) player).getHandle(); + setItemArrays(this.player.inventory, items, armor, extraSlots); + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(items, 0, contents, 0, items.length); + System.arraycopy(armor, 0, contents, items.length, armor.length); + System.arraycopy(extraSlots, 0, contents, items.length + armor.length, extraSlots.length); + return contents; + } + + @Override + public int getSize() { + return super.getSize() + 4; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extraSlots; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + + // extraSlots is, for now, just an array with length 1. No need for special handling. + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extraSlots; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } else { + itemstack = is[i].cloneAndSubtract(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + + return null; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extraSlots; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + + return null; + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extraSlots; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + + // Effects + if (is == this.extra) { + player.drop(itemstack, true); + itemstack = null; + } + + is[i] = itemstack; + + player.defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + + return i; + } + + @Override + public String getName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + +} diff --git a/v1_9_R2/pom.xml b/v1_9_R2/pom.xml new file mode 100644 index 0000000..d4693b7 --- /dev/null +++ b/v1_9_R2/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinv + 1.0-SNAPSHOT + + + openinvadapter1_9_R2 + OpenInvaAdapter1_9_R2 + + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + org.spigotmc + spigot + 1.9.4-R0.1-SNAPSHOT + provided + + + + diff --git a/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java b/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java new file mode 100644 index 0000000..5adea2e --- /dev/null +++ b/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java @@ -0,0 +1,205 @@ +/* + * 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_R2; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_9_R2.AxisAlignedBB; +import net.minecraft.server.v1_9_R2.Block; +import net.minecraft.server.v1_9_R2.BlockChest; +import net.minecraft.server.v1_9_R2.BlockEnderChest; +import net.minecraft.server.v1_9_R2.BlockPosition; +import net.minecraft.server.v1_9_R2.Entity; +import net.minecraft.server.v1_9_R2.EntityOcelot; +import net.minecraft.server.v1_9_R2.EntityPlayer; +import net.minecraft.server.v1_9_R2.EnumDirection; +import net.minecraft.server.v1_9_R2.IInventory; +import net.minecraft.server.v1_9_R2.ITileInventory; +import net.minecraft.server.v1_9_R2.InventoryEnderChest; +import net.minecraft.server.v1_9_R2.InventoryLargeChest; +import net.minecraft.server.v1_9_R2.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_9_R2.StatisticList; +import net.minecraft.server.v1_9_R2.TileEntity; +import net.minecraft.server.v1_9_R2.TileEntityChest; +import net.minecraft.server.v1_9_R2.TileEntityEnderChest; +import net.minecraft.server.v1_9_R2.World; + +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean isAnySilentContainer(org.bukkit.block.Block block) { + return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + } + + @Override + public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { + EntityPlayer player = ((CraftPlayer) p).getHandle(); + World world = player.world; + BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + Block block = world.getType(blockPosition).getBlock(); + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.getType(blockPosition.up()).m(); + } + + // Check if chest is blocked or has an ocelot on top + if (isBlockedChest(world, blockPosition)) { + return true; + } + + // Check for matching adjacent chests that are blocked or have an ocelot on top + for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if (isBlockedChest(world, localBlockPosition)) { + return true; + } + } + + return false; + } + + private boolean isBlockedChest(World world, BlockPosition blockPosition) { + // For reference, loot at net.minecraft.server.BlockChest + return world.getType(blockPosition.up()).l() || hasOcelotOnTop(world, blockPosition); + } + + private boolean hasOcelotOnTop(World world, BlockPosition blockPosition) { + for (Entity localEntity : world.a(EntityOcelot.class, + new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, + blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, + blockPosition.getZ() + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { + + EntityPlayer player = ((CraftPlayer) p).getHandle(); + + // Silent ender chest is pretty much API-only + if (silentchest && b.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + player.b(StatisticList.X); + return true; + } + + World world = player.world; + BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + Object tile = world.getTileEntity(blockPosition); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + player.b(StatisticList.X); + return true; + } + + if (!(tile instanceof IInventory)) { + return false; + } + + Block block = world.getType(blockPosition).getBlock(); + + if (block instanceof BlockChest) { + for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { + tile = new InventoryLargeChest("container.chestDouble", + (TileEntityChest) localTileEntity, (ITileInventory) tile); + } else { + tile = new InventoryLargeChest("container.chestDouble", + (ITileInventory) tile, (TileEntityChest) localTileEntity); + } + break; + } + + if (silentchest) { + tile = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + } + + if (((BlockChest) block).g == BlockChest.Type.BASIC) + player.b(StatisticList.ac); + else if (((BlockChest) block).g == BlockChest.Type.TRAP) { + player.b(StatisticList.W); + } + } + + boolean returnValue = false; + if (!silentchest) { + player.openContainer((IInventory) tile); + returnValue = true; + } else { + try { + SilentContainerChest silentContainerChest = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, "minecraft:chest", ((IInventory) tile).getScoreboardDisplayName(), ((IInventory) tile).getSize())); + player.activeContainer = silentContainerChest; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + returnValue = true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + } + } + + return returnValue; + } + +} diff --git a/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java b/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java new file mode 100644 index 0000000..0f09b1c --- /dev/null +++ b/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java @@ -0,0 +1,79 @@ +/* + * 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_R2; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_9_R2.IInventory; + +import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public boolean isSpecialPlayerInventory(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + +} diff --git a/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java b/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java new file mode 100644 index 0000000..3678093 --- /dev/null +++ b/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java @@ -0,0 +1,64 @@ +/* + * 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_R2; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import com.mojang.authlib.GameProfile; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +// Volatile +import net.minecraft.server.v1_9_R2.EntityPlayer; +import net.minecraft.server.v1_9_R2.MinecraftServer; +import net.minecraft.server.v1_9_R2.PlayerInteractManager; + +import org.bukkit.craftbukkit.v1_9_R2.CraftServer; + +public class PlayerDataManager implements IPlayerDataManager { + + @Override + public Player loadPlayer(OfflinePlayer offline) { + // Ensure player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + // Create a profile and entity to load the player data + GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + 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; + } + + @Override + public String getPlayerDataID(OfflinePlayer player) { + return player.getUniqueId().toString(); + } + +} diff --git a/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SilentContainerChest.java b/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SilentContainerChest.java new file mode 100644 index 0000000..d0fba74 --- /dev/null +++ b/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SilentContainerChest.java @@ -0,0 +1,46 @@ +/* + * 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_R2; + +// Volatile +import net.minecraft.server.v1_9_R2.ContainerChest; +import net.minecraft.server.v1_9_R2.EntityHuman; +import net.minecraft.server.v1_9_R2.IInventory; +import net.minecraft.server.v1_9_R2.ItemStack; +import net.minecraft.server.v1_9_R2.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman e1) { + super(i1, i2, e1); + // Send close signal + i2.closeContainer(e1); + } + + @Override + public void b(EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != null) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(null); + entityHuman.drop(carried, false); + } + } + +} diff --git a/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java b/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java new file mode 100644 index 0000000..01c4be5 --- /dev/null +++ b/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java @@ -0,0 +1,86 @@ +/* + * 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_R2; + +import java.lang.reflect.Field; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_9_R2.IInventory; +import net.minecraft.server.v1_9_R2.InventoryEnderChest; +import net.minecraft.server.v1_9_R2.InventorySubcontainer; + +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialEnderChest(Player player, Boolean online) { + super(((CraftPlayer) player).getHandle().getEnderChest().getName(), + ((CraftPlayer) player).getHandle().getEnderChest().hasCustomName(), + ((CraftPlayer) player).getHandle().getEnderChest().getSize()); + CraftPlayer craftPlayer = (CraftPlayer) player; + this.enderChest = craftPlayer.getHandle().getEnderChest(); + this.bukkitOwner = craftPlayer; + this.items = enderChest.getContents(); + } + + @Override + public Inventory getBukkitInventory() { + return inventory; + } + + @Override + public void setPlayerOnline(Player player) { + if (!playerOnline) { + try { + this.bukkitOwner = player; + CraftPlayer craftPlayer = (CraftPlayer) player; + InventoryEnderChest playerEnderChest = craftPlayer.getHandle().getEnderChest(); + Field field = playerEnderChest.getClass().getField("items"); + field.setAccessible(true); + field.set(playerEnderChest, this.items); + } catch (Exception e) {} + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public void update() { + super.update(); + enderChest.update(); + } + +} diff --git a/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java b/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java new file mode 100644 index 0000000..4682171 --- /dev/null +++ b/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java @@ -0,0 +1,296 @@ +/* + * 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_R2; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +// Volatile +import net.minecraft.server.v1_9_R2.ItemStack; +import net.minecraft.server.v1_9_R2.PlayerInventory; + +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final ItemStack[] extra = new ItemStack[4]; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { + super(((CraftPlayer) bukkitPlayer).getHandle()); + this.playerOnline = online; + setItemArrays(this, player.inventory.items, player.inventory.armor, player.inventory.extraSlots); + } + + private void setItemArrays(PlayerInventory inventory, ItemStack[] items, ItemStack[] armor, + ItemStack[] extraSlots) { + try { + // Prepare to remove final modifier + Field modifiers = Field.class.getDeclaredField("modifiers"); + modifiers.setAccessible(true); + + // Access and replace main inventory array + Field field = PlayerInventory.class.getField("items"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, items); + + // Access and replace armor inventory array + field = PlayerInventory.class.getField("armor"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, armor); + + // Access and replace offhand inventory array + field = PlayerInventory.class.getField("extraSlots"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, extraSlots); + + // Access and replace array containing all inventory arrays + field = PlayerInventory.class.getDeclaredField("g"); + field.setAccessible(true); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, new ItemStack[][] { items, armor, extraSlots }); + } 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 setPlayerOnline(Player player) { + if (!playerOnline) { + this.player = ((CraftPlayer) player).getHandle(); + setItemArrays(this.player.inventory, items, armor, extraSlots); + playerOnline = true; + } + } + + @Override + public void setPlayerOffline() { + playerOnline = false; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public void onClose(CraftHumanEntity who) { + super.onClose(who); + } + + @Override + public ItemStack[] getContents() { + ItemStack[] contents = new ItemStack[getSize()]; + System.arraycopy(items, 0, contents, 0, items.length); + System.arraycopy(armor, 0, contents, items.length, armor.length); + System.arraycopy(extraSlots, 0, contents, items.length + armor.length, extraSlots.length); + return contents; + } + + @Override + public int getSize() { + return super.getSize() + 4; + } + + @Override + public ItemStack getItem(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extraSlots; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + + // extraSlots is, for now, just an array with length 1. No need for special handling. + return is[i]; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extraSlots; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + + if (is[i] != null) { + ItemStack itemstack; + + if (is[i].count <= j) { + itemstack = is[i]; + is[i] = null; + return itemstack; + } else { + itemstack = is[i].cloneAndSubtract(j); + if (is[i].count == 0) { + is[i] = null; + } + + return itemstack; + } + } + + return null; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extraSlots; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + + if (is[i] != null) { + ItemStack itemstack = is[i]; + + is[i] = null; + return itemstack; + } + + return null; + } + + @Override + public void setItem(int i, ItemStack itemstack) { + ItemStack[] is = this.items; + + if (i >= is.length) { + i -= is.length; + is = this.armor; + } else { + i = getReversedItemSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extraSlots; + } else if (is == this.armor) { + i = getReversedArmorSlotNum(i); + } + + if (i >= is.length) { + i -= is.length; + is = this.extra; + } + + // Effects + if (is == this.extra) { + player.drop(itemstack, true); + itemstack = null; + } + + is[i] = itemstack; + + player.defaultContainer.b(); + } + + private int getReversedItemSlotNum(int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + private int getReversedArmorSlotNum(int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + + return i; + } + + @Override + public String getName() { + if (player.getName().length() > 16) { + return player.getName().substring(0, 16); + } + return player.getName(); + } + +} -- 2.49.1 From d7eec528e43e8638cfd87461ce093c0c4f291790 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 25 Nov 2016 22:26:25 -0500 Subject: [PATCH 072/253] Fix OpenInv/OpenEnder permissions logic a little bit /openender should respect exempt and crossworld permissions /openinv should allow opening of own inventory if exempt without override --- .../commands/OpenEnderPluginCommand.java | 17 +++++++--- .../commands/OpenInvPluginCommand.java | 31 ++++++++++--------- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/plugin/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java index 96995e6..7e8df21 100644 --- a/plugin/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/plugin/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -113,10 +113,19 @@ public class OpenEnderPluginCommand implements CommandExecutor { onlineTarget = target.getPlayer(); } - - if (!onlineTarget.equals(player) && !Permissions.ENDERCHEST_ALL.hasPermission(player)) { - player.sendMessage(ChatColor.RED + "You do not have permission to access other player's enderchest"); - return; + if (!onlineTarget.equals(player)) { + if (!Permissions.ENDERCHEST_ALL.hasPermission(player)) { + player.sendMessage(ChatColor.RED + "You do not have permission to access other players' enderchests."); + return; + } + if (!Permissions.CROSSWORLD.hasPermission(player) && !player.getWorld().equals(onlineTarget.getWorld())) { + player.sendMessage(ChatColor.RED + onlineTarget.getDisplayName() + " is not in your world!"); + return; + } + if (!Permissions.OVERRIDE.hasPermission(player) && Permissions.EXEMPT.hasPermission(onlineTarget)) { + player.sendMessage(ChatColor.RED + onlineTarget.getDisplayName() + "'s inventory is protected!"); + return; + } } // Record the target diff --git a/plugin/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java index 4ac56f8..9b4d351 100644 --- a/plugin/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/plugin/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -115,21 +115,24 @@ public class OpenInvPluginCommand implements CommandExecutor { } // Permissions checks - if (!Permissions.OVERRIDE.hasPermission(player) && Permissions.EXEMPT.hasPermission(onlineTarget)) { - player.sendMessage(ChatColor.RED + onlineTarget.getDisplayName() + "'s inventory is protected!"); - return; - } + if (onlineTarget.equals(player)) { + // Self-open check + if (!Permissions.OPENSELF.hasPermission(player)) { + player.sendMessage(ChatColor.RED + "You're not allowed to openinv yourself."); + return; + } + } else { + // Protected check + if (!Permissions.OVERRIDE.hasPermission(player) && Permissions.EXEMPT.hasPermission(onlineTarget)) { + player.sendMessage(ChatColor.RED + onlineTarget.getDisplayName() + "'s inventory is protected!"); + return; + } - // Crosswork check - if ((!Permissions.CROSSWORLD.hasPermission(player) && !Permissions.OVERRIDE.hasPermission(player)) && onlineTarget.getWorld() != player.getWorld()) { - player.sendMessage(ChatColor.RED + onlineTarget.getDisplayName() + " is not in your world!"); - return; - } - - // Self-open check - if (!Permissions.OPENSELF.hasPermission(player) && onlineTarget.equals(player)) { - player.sendMessage(ChatColor.RED + "You're not allowed to openinv yourself."); - return; + // Crossworld check + if ((!Permissions.CROSSWORLD.hasPermission(player) && !Permissions.OVERRIDE.hasPermission(player)) && onlineTarget.getWorld() != player.getWorld()) { + player.sendMessage(ChatColor.RED + onlineTarget.getDisplayName() + " is not in your world!"); + return; + } } // Record the target -- 2.49.1 From 8a6b98614fcacf920259f7093923e3ba6f2a099e Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sat, 26 Nov 2016 15:31:53 -0500 Subject: [PATCH 073/253] Added support for UUID-based player lookups in 1.7.5+ You could argue that ShadowRanger's conversion of everything to UUID is better, but that would result in us having to contact Mojang's servers simply to fetch a player by UUID for versions < 1.7.5. It seems excessive (not to mention that uncached contact can result in rate limiting) when the server itself will not remember who they are across name changes. If they can re-obtain everything in their inventory, they can re-run /ac. --- .../internal/v1_4_5/PlayerDataManager.java | 10 ++++++++++ .../internal/v1_4_6/PlayerDataManager.java | 10 ++++++++++ .../openinv/internal/IPlayerDataManager.java | 8 ++++++++ .../main/java/com/lishid/openinv/OpenInv.java | 18 ++++++++++++++++-- .../internal/v1_10_R1/PlayerDataManager.java | 18 ++++++++++++++++++ .../internal/v1_11_R1/PlayerDataManager.java | 18 ++++++++++++++++++ .../internal/v1_4_R1/PlayerDataManager.java | 10 ++++++++++ .../internal/v1_5_R2/PlayerDataManager.java | 10 ++++++++++ .../internal/v1_5_R3/PlayerDataManager.java | 10 ++++++++++ .../internal/v1_6_R1/PlayerDataManager.java | 10 ++++++++++ .../internal/v1_6_R2/PlayerDataManager.java | 10 ++++++++++ .../internal/v1_6_R3/PlayerDataManager.java | 10 ++++++++++ .../internal/v1_7_R1/PlayerDataManager.java | 10 ++++++++++ .../internal/v1_7_R2/PlayerDataManager.java | 10 ++++++++++ .../internal/v1_7_R3/PlayerDataManager.java | 18 ++++++++++++++++++ .../internal/v1_7_R4/PlayerDataManager.java | 18 ++++++++++++++++++ .../internal/v1_8_R1/PlayerDataManager.java | 18 ++++++++++++++++++ .../internal/v1_8_R2/PlayerDataManager.java | 18 ++++++++++++++++++ .../internal/v1_8_R3/PlayerDataManager.java | 18 ++++++++++++++++++ .../internal/v1_9_R1/PlayerDataManager.java | 18 ++++++++++++++++++ .../internal/v1_9_R2/PlayerDataManager.java | 18 ++++++++++++++++++ 21 files changed, 286 insertions(+), 2 deletions(-) diff --git a/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java b/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java index 08500e7..e3a8ea5 100644 --- a/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java +++ b/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java @@ -59,4 +59,14 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getName(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } + } diff --git a/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java b/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java index b768876..0c09f7b 100644 --- a/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java +++ b/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java @@ -59,4 +59,14 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getName(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } + } diff --git a/internal/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java b/internal/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java index bbcd68d..cddf6a5 100644 --- a/internal/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java +++ b/internal/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java @@ -39,4 +39,12 @@ public interface IPlayerDataManager { */ public String getPlayerDataID(OfflinePlayer player); + /** + * Gets an OfflinePlayer by the given unique identifier. + * + * @param identifier the unique identifier + * @return the OfflinePlayer, or null if no exact match was found + */ + public OfflinePlayer getPlayerByID(String identifier); + } diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/src/main/java/com/lishid/openinv/OpenInv.java index 48b7637..2cb85c9 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/src/main/java/com/lishid/openinv/OpenInv.java @@ -169,7 +169,7 @@ public class OpenInv extends JavaPlugin { * @return true if the server version is supported */ public boolean isSupportedVersion() { - return accessor.isSupported(); + return this.accessor.isSupported(); } /** @@ -311,6 +311,17 @@ public class OpenInv extends JavaPlugin { saveConfig(); } + /** + * Gets a unique identifier by which the OfflinePlayer can be referenced. Using the value + * returned to look up a Player will generally be much faster for later implementations. + * + * @param offline the OfflinePlayer + * @return the identifier + */ + public String getPlayerID(OfflinePlayer offline) { + return this.playerLoader.getPlayerDataID(offline); + } + /** * Get an OfflinePlayer by name. *

@@ -333,12 +344,15 @@ public class OpenInv extends JavaPlugin { } } + // Attempt exact offline match first - adds UUID support for later versions + OfflinePlayer player = this.playerLoader.getPlayerByID(name); + // Ensure name is valid if server is in online mode to avoid unnecessary searching if (getServer().getOnlineMode() && !name.matches("[a-zA-Z0-9_]{3,16}")) { return null; } - OfflinePlayer player = getServer().getPlayerExact(name); + player = getServer().getPlayerExact(name); if (player != null) { return player; diff --git a/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java b/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java index cecd3c7..3909151 100644 --- a/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java +++ b/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java @@ -16,6 +16,8 @@ package com.lishid.openinv.internal.v1_10_R1; +import java.util.UUID; + import com.lishid.openinv.internal.IPlayerDataManager; import com.mojang.authlib.GameProfile; @@ -61,4 +63,20 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getUniqueId().toString(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + try { + UUID uuid = UUID.fromString(identifier); + OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } catch (IllegalArgumentException e) { + // Not a UUID + return null; + } + } + } diff --git a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java index 760fe58..30bb00e 100644 --- a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java +++ b/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java @@ -16,6 +16,8 @@ package com.lishid.openinv.internal.v1_11_R1; +import java.util.UUID; + import com.lishid.openinv.internal.IPlayerDataManager; import com.mojang.authlib.GameProfile; @@ -61,4 +63,20 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getUniqueId().toString(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + try { + UUID uuid = UUID.fromString(identifier); + OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } catch (IllegalArgumentException e) { + // Not a UUID + return null; + } + } + } diff --git a/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java b/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java index e92f7a2..f88713c 100644 --- a/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java +++ b/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java @@ -60,4 +60,14 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getName(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } + } diff --git a/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java b/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java index a6e8e7d..1bea276 100644 --- a/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java +++ b/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java @@ -59,4 +59,14 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getName(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } + } diff --git a/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java b/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java index f77b8fd..fbe6646 100644 --- a/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java +++ b/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java @@ -59,4 +59,14 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getName(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } + } diff --git a/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java b/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java index a7359c2..3429d10 100644 --- a/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java +++ b/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java @@ -59,4 +59,14 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getName(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } + } diff --git a/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java b/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java index 8401f1f..03f50fa 100644 --- a/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java +++ b/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java @@ -59,4 +59,14 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getName(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } + } diff --git a/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java b/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java index 4e38815..b0abe80 100644 --- a/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java +++ b/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java @@ -59,4 +59,14 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getName(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } + } diff --git a/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java b/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java index 499bc18..aa3795a 100644 --- a/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java +++ b/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java @@ -60,4 +60,14 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getName(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } + } diff --git a/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java b/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java index eda1ce4..d30a20c 100644 --- a/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java +++ b/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java @@ -61,4 +61,14 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getName(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } + } diff --git a/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java b/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java index 7f17bc0..8569033 100644 --- a/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java +++ b/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java @@ -16,6 +16,8 @@ package com.lishid.openinv.internal.v1_7_R3; +import java.util.UUID; + import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; @@ -60,4 +62,20 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getUniqueId().toString(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + try { + UUID uuid = UUID.fromString(identifier); + OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } catch (IllegalArgumentException e) { + // Not a UUID + return null; + } + } + } diff --git a/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java b/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java index b26947d..5209859 100644 --- a/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java +++ b/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java @@ -16,6 +16,8 @@ package com.lishid.openinv.internal.v1_7_R4; +import java.util.UUID; + import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; @@ -60,4 +62,20 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getUniqueId().toString(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + try { + UUID uuid = UUID.fromString(identifier); + OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } catch (IllegalArgumentException e) { + // Not a UUID + return null; + } + } + } diff --git a/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java b/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java index 1b45d27..bbd9e26 100644 --- a/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java +++ b/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java @@ -16,6 +16,8 @@ package com.lishid.openinv.internal.v1_8_R1; +import java.util.UUID; + import com.lishid.openinv.internal.IPlayerDataManager; import com.mojang.authlib.GameProfile; @@ -61,4 +63,20 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getUniqueId().toString(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + try { + UUID uuid = UUID.fromString(identifier); + OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } catch (IllegalArgumentException e) { + // Not a UUID + return null; + } + } + } diff --git a/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java b/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java index d79bb09..6e9d1de 100644 --- a/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java +++ b/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java @@ -16,6 +16,8 @@ package com.lishid.openinv.internal.v1_8_R2; +import java.util.UUID; + import com.lishid.openinv.internal.IPlayerDataManager; import com.mojang.authlib.GameProfile; @@ -61,4 +63,20 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getUniqueId().toString(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + try { + UUID uuid = UUID.fromString(identifier); + OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } catch (IllegalArgumentException e) { + // Not a UUID + return null; + } + } + } diff --git a/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java b/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java index 818e703..e7e6a4e 100644 --- a/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java +++ b/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java @@ -16,6 +16,8 @@ package com.lishid.openinv.internal.v1_8_R3; +import java.util.UUID; + import com.lishid.openinv.internal.IPlayerDataManager; import com.mojang.authlib.GameProfile; @@ -61,4 +63,20 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getUniqueId().toString(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + try { + UUID uuid = UUID.fromString(identifier); + OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } catch (IllegalArgumentException e) { + // Not a UUID + return null; + } + } + } diff --git a/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java b/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java index 0166f62..7e2cd46 100644 --- a/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java +++ b/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java @@ -16,6 +16,8 @@ package com.lishid.openinv.internal.v1_9_R1; +import java.util.UUID; + import com.lishid.openinv.internal.IPlayerDataManager; import com.mojang.authlib.GameProfile; @@ -61,4 +63,20 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getUniqueId().toString(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + try { + UUID uuid = UUID.fromString(identifier); + OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } catch (IllegalArgumentException e) { + // Not a UUID + return null; + } + } + } diff --git a/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java b/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java index 3678093..fa8d3d8 100644 --- a/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java +++ b/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java @@ -16,6 +16,8 @@ package com.lishid.openinv.internal.v1_9_R2; +import java.util.UUID; + import com.lishid.openinv.internal.IPlayerDataManager; import com.mojang.authlib.GameProfile; @@ -61,4 +63,20 @@ public class PlayerDataManager implements IPlayerDataManager { return player.getUniqueId().toString(); } + @Override + public OfflinePlayer getPlayerByID(String identifier) { + try { + UUID uuid = UUID.fromString(identifier); + OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } catch (IllegalArgumentException e) { + // Not a UUID + return null; + } + } + } -- 2.49.1 From f11d60f78c925b583ab9500dd76368a7560286e2 Mon Sep 17 00:00:00 2001 From: ShadowRanger Date: Sat, 26 Nov 2016 16:57:03 -0500 Subject: [PATCH 074/253] Reimplement ShadowRanger's configuration updater and path changes Bumped version for release --- .../com/lishid/openinv/ConfigUpdater.java | 125 ++++++++++++++++++ .../main/java/com/lishid/openinv/OpenInv.java | 35 +---- pom.xml | 2 +- 3 files changed, 133 insertions(+), 29 deletions(-) create mode 100644 plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java diff --git a/plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java b/plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java new file mode 100644 index 0000000..2f520cc --- /dev/null +++ b/plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java @@ -0,0 +1,125 @@ +package com.lishid.openinv; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +import org.bukkit.Material; +import org.bukkit.OfflinePlayer; +import org.bukkit.configuration.ConfigurationSection; + +public class ConfigUpdater { + + private static final int CONFIG_VERSION = 2; + + private final OpenInv plugin; + + public ConfigUpdater(OpenInv plugin) { + this.plugin = plugin; + } + + private int getConfigVersion() { + return plugin.getConfig().getInt("config-version", 1); + } + + private boolean isConfigOutdated() { + return getConfigVersion() < CONFIG_VERSION; + } + + public void checkForUpdates() { + if (isConfigOutdated()) { + plugin.getLogger().info("Configuration update found! Performing update..."); + performUpdate(); + plugin.getLogger().info("Configuration update complete!"); + } + } + + private void performUpdate() { + // Update according to the right version + switch (getConfigVersion()) { + case 1: + updateConfig1To2(); + break; + } + } + + private void updateConfig1To2() { + // Backup the old config file + try { + plugin.getConfig().save(new File(plugin.getDataFolder(), "config_old.yml")); + plugin.getLogger().info("Backed up config.yml to config_old.yml before updating."); + } catch (IOException e) { + plugin.getLogger().warning("Could not back up config.yml before updating!"); + } + + // Get the old config settings + int itemOpenInvItemId = plugin.getConfig().getInt("ItemOpenInvItemID", 280); + plugin.getConfig().set("ItemOpenInvItemID", null); + boolean notifySilentChest = plugin.getConfig().getBoolean("NotifySilentChest", true); + plugin.getConfig().set("NotifySilentChest", null); + boolean notifyAnyChest = plugin.getConfig().getBoolean("NotifyAnyChest", true); + plugin.getConfig().set("NotifyAnyChest", null); + + updateToggles("AnyChest", ".toggle", "toggles.any-chest"); + updateToggles("ItemOpenInv", ".toggle", "toggles.items.open-inv"); + updateToggles("SilentChest", ".toggle", "toggles.silent-chest"); + + plugin.getConfig().set("config-version", 2); + plugin.getConfig().set("items.open-inv", getMaterialById(itemOpenInvItemId).toString()); + plugin.getConfig().set("notify.any-chest", notifyAnyChest); + plugin.getConfig().set("notify.silent-chest", notifySilentChest); + + // Save the new config + plugin.saveConfig(); + } + + private void updateToggles(String sectionName, String suffix, String newSectionName) { + // Ensure section exists + if (!plugin.getConfig().isConfigurationSection(sectionName)) { + return; + } + + ConfigurationSection section = plugin.getConfig().getConfigurationSection(sectionName); + Set keys = section.getKeys(false); + + // Ensure section has content + if (keys == null || keys.isEmpty()) { + return; + } + + Map toggles = new HashMap(); + + for (String playerName : keys) { + OfflinePlayer player = plugin.matchPlayer(playerName); + String dataID = plugin.getPlayerID(player); + toggles.put(dataID, section.getBoolean(playerName + suffix, false)); + } + + // Wipe old ConfigurationSection + plugin.getConfig().set(sectionName, null); + // Prepare new ConfigurationSection + if (plugin.getConfig().isConfigurationSection(newSectionName)) { + section = plugin.getConfig().getConfigurationSection(newSectionName); + } else { + section = plugin.getConfig().createSection(newSectionName); + } + + // Set new values + for (Map.Entry entry : toggles.entrySet()) { + section.set(entry.getKey(), entry.getValue()); + } + } + + @SuppressWarnings("deprecation") + private Material getMaterialById(int id) { + Material material = Material.getMaterial(id); + + if (material == null) { + material = Material.STICK; + } + + return material; + } +} diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/src/main/java/com/lishid/openinv/OpenInv.java index 2cb85c9..ed7dcce 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/src/main/java/com/lishid/openinv/OpenInv.java @@ -41,7 +41,6 @@ import com.lishid.openinv.util.Function; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.PluginCommand; -import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; @@ -118,27 +117,7 @@ public class OpenInv extends JavaPlugin { inventoryAccess = accessor.newInventoryAccess(); anySilentContainer = accessor.newAnySilentContainer(); - FileConfiguration config = getConfig(); - boolean dirtyConfig = false; - if (!config.isBoolean("NotifySilentChest")) { - config.set("NotifySilentChest", true); - dirtyConfig = true; - } - if (!config.isBoolean("NotifyAnyChest")) { - config.set("NotifyAnyChest", true); - dirtyConfig = true; - } - if (!config.isBoolean("DisableSaving")) { - config.set("DisableSaving", false); - dirtyConfig = true; - } - config.addDefault("NotifySilentChest", true); - config.addDefault("NotifyAnyChest", true); - config.addDefault("DisableSaving", false); - config.options().copyDefaults(true); - if (dirtyConfig) { - saveConfig(); - } + new ConfigUpdater(this).checkForUpdates(); pm.registerEvents(new OpenInvPlayerListener(this), this); pm.registerEvents(new OpenInvInventoryListener(this), this); @@ -256,7 +235,7 @@ public class OpenInv extends JavaPlugin { * @return true unless configured otherwise */ public boolean notifySilentChest() { - return getConfig().getBoolean("NotifySilentChest", true); + return getConfig().getBoolean("notify.silent-chest", true); } /** @@ -266,7 +245,7 @@ public class OpenInv extends JavaPlugin { * @return true unless configured otherwise */ public boolean notifyAnyChest() { - return getConfig().getBoolean("NotifyAnyChest", true); + return getConfig().getBoolean("notify.any-chest", true); } /** @@ -276,7 +255,7 @@ public class OpenInv extends JavaPlugin { * @return true if SilentChest is enabled */ public boolean getPlayerSilentChestStatus(OfflinePlayer player) { - return getConfig().getBoolean("SilentChest." + playerLoader.getPlayerDataID(player) + ".toggle", false); + return getConfig().getBoolean("toggles.silent-chest." + playerLoader.getPlayerDataID(player), false); } /** @@ -286,7 +265,7 @@ public class OpenInv extends JavaPlugin { * @param status the status */ public void setPlayerSilentChestStatus(OfflinePlayer player, boolean status) { - getConfig().set("SilentChest." + playerLoader.getPlayerDataID(player) + ".toggle", status); + getConfig().set("toggles.silent-chest." + playerLoader.getPlayerDataID(player), status); saveConfig(); } @@ -297,7 +276,7 @@ public class OpenInv extends JavaPlugin { * @return true if AnyChest is enabled */ public boolean getPlayerAnyChestStatus(OfflinePlayer player) { - return getConfig().getBoolean("AnyChest." + playerLoader.getPlayerDataID(player) + ".toggle", true); + return getConfig().getBoolean("toggles.any-chest." + playerLoader.getPlayerDataID(player), false); } /** @@ -307,7 +286,7 @@ public class OpenInv extends JavaPlugin { * @param status the status */ public void setPlayerAnyChestStatus(OfflinePlayer player, boolean status) { - getConfig().set("AnyChest." + playerLoader.getPlayerDataID(player) + ".toggle", status); + getConfig().set("toggles.silent-chest." + playerLoader.getPlayerDataID(player), status); saveConfig(); } diff --git a/pom.xml b/pom.xml index 97b1381..8bd49bd 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ UTF-8 - 3.0.0-SNAPSHOT + 3.0.1 -- 2.49.1 From 0bbcf6cdb2288621c4c3414431727f0c90aeba8b Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sat, 26 Nov 2016 17:05:06 -0500 Subject: [PATCH 075/253] Strip removed config options, add DisableSaving and bump config version --- .../java/com/lishid/openinv/ConfigUpdater.java | 14 +++++++++++++- .../src/main/java/com/lishid/openinv/OpenInv.java | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java b/plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java index 2f520cc..ba299a8 100644 --- a/plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java +++ b/plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java @@ -12,7 +12,7 @@ import org.bukkit.configuration.ConfigurationSection; public class ConfigUpdater { - private static final int CONFIG_VERSION = 2; + private static final int CONFIG_VERSION = 3; private final OpenInv plugin; @@ -41,10 +41,22 @@ public class ConfigUpdater { switch (getConfigVersion()) { case 1: updateConfig1To2(); + case 2: + updateConfig2To3(); break; } } + private void updateConfig2To3() { + plugin.getConfig().set("config-version", 3); + plugin.getConfig().set("items.open-inv", null); + plugin.getConfig().set("toggles.items.open-inv", null); + plugin.getConfig().set("settings.disable-saving", plugin.getConfig().getBoolean("DisableSaving", false)); + plugin.getConfig().set("DisableSaving", null); + // Save the new config + plugin.saveConfig(); + } + private void updateConfig1To2() { // Backup the old config file try { diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/src/main/java/com/lishid/openinv/OpenInv.java index ed7dcce..6490af8 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/src/main/java/com/lishid/openinv/OpenInv.java @@ -225,7 +225,7 @@ public class OpenInv extends JavaPlugin { * @return false unless configured otherwise */ public boolean disableSaving() { - return getConfig().getBoolean("DisableSaving", false); + return getConfig().getBoolean("settings.disable-saving", false); } /** -- 2.49.1 From 6aa25dd2dc7f92f5711d78440a88c2d5f77529e8 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 27 Nov 2016 06:13:17 -0500 Subject: [PATCH 076/253] Don't use reflection to increment container counter Fixes #53 (pretty please with a cherry on top) --- .../openinv/internal/v1_4_5/AnySilentContainer.java | 12 +----------- .../openinv/internal/v1_4_6/AnySilentContainer.java | 12 +----------- pom.xml | 2 +- .../openinv/internal/v1_4_R1/AnySilentContainer.java | 12 +----------- .../openinv/internal/v1_5_R2/AnySilentContainer.java | 12 +----------- .../openinv/internal/v1_5_R3/AnySilentContainer.java | 12 +----------- .../openinv/internal/v1_6_R1/AnySilentContainer.java | 12 +----------- .../openinv/internal/v1_6_R2/AnySilentContainer.java | 12 +----------- .../openinv/internal/v1_6_R3/AnySilentContainer.java | 12 +----------- .../openinv/internal/v1_7_R1/AnySilentContainer.java | 12 +----------- .../openinv/internal/v1_7_R2/AnySilentContainer.java | 12 +----------- .../openinv/internal/v1_7_R3/AnySilentContainer.java | 12 +----------- .../openinv/internal/v1_7_R4/AnySilentContainer.java | 12 +----------- 13 files changed, 13 insertions(+), 133 deletions(-) diff --git a/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java b/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java index f084a76..3032f6f 100644 --- a/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java +++ b/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java @@ -16,8 +16,6 @@ package com.lishid.openinv.internal.v1_4_5; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; import org.bukkit.ChatColor; @@ -142,15 +140,7 @@ public class AnySilentContainer implements IAnySilentContainer { returnValue = true; } else { try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } catch (NoSuchFieldException e) {} - + int windowId = player.nextContainerCounter(); player.netServerHandler.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize())); player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); player.activeContainer.windowId = windowId; diff --git a/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java b/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java index 9e899a2..e0f7696 100644 --- a/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java +++ b/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java @@ -16,8 +16,6 @@ package com.lishid.openinv.internal.v1_4_6; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; import org.bukkit.ChatColor; @@ -142,15 +140,7 @@ public class AnySilentContainer implements IAnySilentContainer { returnValue = true; } else { try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } catch (NoSuchFieldException e) {} - + int windowId = player.nextContainerCounter(); player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize())); player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); player.activeContainer.windowId = windowId; diff --git a/pom.xml b/pom.xml index 8bd49bd..8ca9425 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ UTF-8 - 3.0.1 + 3.0.1-SNAPSHOT diff --git a/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java b/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java index 1d0bee0..b08e28d 100644 --- a/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java +++ b/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java @@ -16,8 +16,6 @@ package com.lishid.openinv.internal.v1_4_R1; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; import org.bukkit.ChatColor; @@ -142,15 +140,7 @@ public class AnySilentContainer implements IAnySilentContainer { returnValue = true; } else { try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } catch (NoSuchFieldException e) {} - + int windowId = player.nextContainerCounter(); player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize())); player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); player.activeContainer.windowId = windowId; diff --git a/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java b/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java index d9137be..c08b41c 100644 --- a/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java +++ b/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java @@ -16,8 +16,6 @@ package com.lishid.openinv.internal.v1_5_R2; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; import org.bukkit.ChatColor; @@ -142,15 +140,7 @@ public class AnySilentContainer implements IAnySilentContainer { returnValue = true; } else { try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } catch (NoSuchFieldException e) {} - + int windowId = player.nextContainerCounter(); player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize(), true)); player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); player.activeContainer.windowId = windowId; diff --git a/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java b/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java index ccc0490..ee10a6f 100644 --- a/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java +++ b/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java @@ -16,8 +16,6 @@ package com.lishid.openinv.internal.v1_5_R3; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; import org.bukkit.ChatColor; @@ -142,15 +140,7 @@ public class AnySilentContainer implements IAnySilentContainer { returnValue = true; } else { try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } catch (NoSuchFieldException e) {} - + int windowId = player.nextContainerCounter(); player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize(), true)); player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); player.activeContainer.windowId = windowId; diff --git a/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java b/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java index f685648..87c46d6 100644 --- a/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java +++ b/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java @@ -16,8 +16,6 @@ package com.lishid.openinv.internal.v1_6_R1; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; import org.bukkit.ChatColor; @@ -142,15 +140,7 @@ public class AnySilentContainer implements IAnySilentContainer { returnValue = true; } else { try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } catch (NoSuchFieldException e) {} - + int windowId = player.nextContainerCounter(); player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize(), true)); player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); player.activeContainer.windowId = windowId; diff --git a/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java b/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java index d39d49e..acdef19 100644 --- a/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java +++ b/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java @@ -16,8 +16,6 @@ package com.lishid.openinv.internal.v1_6_R2; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; import org.bukkit.ChatColor; @@ -142,15 +140,7 @@ public class AnySilentContainer implements IAnySilentContainer { returnValue = true; } else { try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } catch (NoSuchFieldException e) {} - + int windowId = player.nextContainerCounter(); player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize(), true)); player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); player.activeContainer.windowId = windowId; diff --git a/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java b/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java index 2f9455e..ce37031 100644 --- a/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java +++ b/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java @@ -16,8 +16,6 @@ package com.lishid.openinv.internal.v1_6_R3; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; import org.bukkit.ChatColor; @@ -142,15 +140,7 @@ public class AnySilentContainer implements IAnySilentContainer { returnValue = true; } else { try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } catch (NoSuchFieldException e) {} - + int windowId = player.nextContainerCounter(); player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize(), true)); player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); player.activeContainer.windowId = windowId; diff --git a/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java b/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java index 94a2046..33d70e7 100644 --- a/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java +++ b/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java @@ -16,8 +16,6 @@ package com.lishid.openinv.internal.v1_7_R1; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; import org.bukkit.ChatColor; @@ -143,15 +141,7 @@ public class AnySilentContainer implements IAnySilentContainer { returnValue = true; } else { try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } catch (NoSuchFieldException e) {} - + int windowId = player.nextContainerCounter(); player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) tile).getInventoryName(), ((IInventory) tile).getSize(), true)); player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); player.activeContainer.windowId = windowId; diff --git a/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java b/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java index d894316..886fa11 100644 --- a/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java +++ b/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java @@ -16,8 +16,6 @@ package com.lishid.openinv.internal.v1_7_R2; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; import org.bukkit.ChatColor; @@ -143,15 +141,7 @@ public class AnySilentContainer implements IAnySilentContainer { returnValue = true; } else { try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } catch (NoSuchFieldException e) {} - + int windowId = player.nextContainerCounter(); player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) tile).getInventoryName(), ((IInventory) tile).getSize(), true)); player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); player.activeContainer.windowId = windowId; diff --git a/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java b/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java index 173c8da..3b9c651 100644 --- a/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java +++ b/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java @@ -16,8 +16,6 @@ package com.lishid.openinv.internal.v1_7_R3; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; import org.bukkit.ChatColor; @@ -143,15 +141,7 @@ public class AnySilentContainer implements IAnySilentContainer { returnValue = true; } else { try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } catch (NoSuchFieldException e) {} - + int windowId = player.nextContainerCounter(); player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) tile).getInventoryName(), ((IInventory) tile).getSize(), true)); player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); player.activeContainer.windowId = windowId; diff --git a/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java b/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java index cf86d73..7f804ed 100644 --- a/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java +++ b/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java @@ -16,8 +16,6 @@ package com.lishid.openinv.internal.v1_7_R4; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; import org.bukkit.ChatColor; @@ -143,15 +141,7 @@ public class AnySilentContainer implements IAnySilentContainer { returnValue = true; } else { try { - int windowId = 0; - try { - Field windowID = player.getClass().getDeclaredField("containerCounter"); - windowID.setAccessible(true); - windowId = windowID.getInt(player); - windowId = windowId % 100 + 1; - windowID.setInt(player, windowId); - } catch (NoSuchFieldException e) {} - + int windowId = player.nextContainerCounter(); player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) tile).getInventoryName(), ((IInventory) tile).getSize(), true)); player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); player.activeContainer.windowId = windowId; -- 2.49.1 From 718b4bb5ddf0e500a89a10a73442365233eebee7 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 27 Nov 2016 06:20:44 -0500 Subject: [PATCH 077/253] Added /searchenchant, fixed a couple little mistakes Mistakes being breaking UUID-based lookups and /anychest's toggle. MY BAD, SORRY. --- .../main/java/com/lishid/openinv/OpenInv.java | 10 +- .../commands/SearchEnchantPluginCommand.java | 111 ++++++++++++++++++ .../commands/SearchInvPluginCommand.java | 2 +- plugin/src/main/resources/plugin.yml | 9 +- pom.xml | 2 +- 5 files changed, 128 insertions(+), 6 deletions(-) create mode 100644 plugin/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/src/main/java/com/lishid/openinv/OpenInv.java index 6490af8..57b034c 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/src/main/java/com/lishid/openinv/OpenInv.java @@ -27,6 +27,7 @@ import java.util.concurrent.Future; import com.lishid.openinv.commands.AnyChestPluginCommand; import com.lishid.openinv.commands.OpenEnderPluginCommand; import com.lishid.openinv.commands.OpenInvPluginCommand; +import com.lishid.openinv.commands.SearchEnchantPluginCommand; import com.lishid.openinv.commands.SearchInvPluginCommand; import com.lishid.openinv.commands.SilentChestPluginCommand; import com.lishid.openinv.internal.IAnySilentContainer; @@ -123,12 +124,13 @@ public class OpenInv extends JavaPlugin { pm.registerEvents(new OpenInvInventoryListener(this), this); getCommand("openinv").setExecutor(new OpenInvPluginCommand(this)); + getCommand("openender").setExecutor(new OpenEnderPluginCommand(this)); SearchInvPluginCommand searchInv = new SearchInvPluginCommand(); getCommand("searchinv").setExecutor(searchInv); getCommand("searchender").setExecutor(searchInv); + getCommand("searchenchant").setExecutor(new SearchEnchantPluginCommand()); getCommand("silentchest").setExecutor(new SilentChestPluginCommand(this)); getCommand("anychest").setExecutor(new AnyChestPluginCommand(this)); - getCommand("openender").setExecutor(new OpenEnderPluginCommand(this)); } @@ -286,7 +288,7 @@ public class OpenInv extends JavaPlugin { * @param status the status */ public void setPlayerAnyChestStatus(OfflinePlayer player, boolean status) { - getConfig().set("toggles.silent-chest." + playerLoader.getPlayerDataID(player), status); + getConfig().set("toggles.any-chest." + playerLoader.getPlayerDataID(player), status); saveConfig(); } @@ -326,6 +328,10 @@ public class OpenInv extends JavaPlugin { // Attempt exact offline match first - adds UUID support for later versions OfflinePlayer player = this.playerLoader.getPlayerByID(name); + if (player != null) { + return player; + } + // Ensure name is valid if server is in online mode to avoid unnecessary searching if (getServer().getOnlineMode() && !name.matches("[a-zA-Z0-9_]{3,16}")) { return null; diff --git a/plugin/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java new file mode 100644 index 0000000..4e8a16d --- /dev/null +++ b/plugin/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java @@ -0,0 +1,111 @@ +package com.lishid.openinv.commands; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +/** + * Command adding the ability to search online players' inventories for enchantments of a specific + * type at or above the level specified. + * + * @author Jikoo + */ +public class SearchEnchantPluginCommand implements CommandExecutor { + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (args.length == 0) { + return false; + } + + Enchantment enchant = null; + int level = 0; + + for (String argument : args) { + Enchantment localEnchant = Enchantment.getByName(argument.toUpperCase()); + if (localEnchant != null) { + enchant = localEnchant; + continue; + } + try { + level = Integer.parseInt(argument); + } catch (NumberFormatException ignored) {} + } + + // Arguments not set correctly + if (level == 0 && enchant == null) { + return false; + } + + StringBuilder players = new StringBuilder(); + for (Player player : Bukkit.getServer().getOnlinePlayers()) { + boolean flagInventory = containsEnchantment(player.getInventory(), enchant, level); + boolean flagEnder = containsEnchantment(player.getEnderChest(), enchant, level); + + // No matches, continue + if (!flagInventory && !flagEnder) { + continue; + } + + // Matches, append details + players.append(player.getName()).append(" ("); + if (flagInventory) { + players.append("inv"); + } + if (flagEnder) { + if (flagInventory) { + players.append(','); + } + players.append("ender"); + } + players.append("), "); + } + + if (players.length() > 0) { + // Matches found, delete trailing comma and space + players.delete(players.length() - 2, players.length()); + } else { + sender.sendMessage("No players found with " + (enchant == null ? "any enchant" : enchant.getName()) + + " of level " + level + " or higher."); + return true; + } + + sender.sendMessage("Players: " + players.toString()); + return true; + } + + private boolean containsEnchantment(Inventory inventory, Enchantment enchant, int minLevel) { + for (ItemStack item : inventory.getContents()) { + if (item == null || item.getType() == Material.AIR) { + continue; + } + if (enchant != null) { + if (item.containsEnchantment(enchant) && item.getEnchantmentLevel(enchant) >= minLevel) { + return true; + } + } else { + if (!item.hasItemMeta()) { + continue; + } + ItemMeta meta = item.getItemMeta(); + if (!meta.hasEnchants()) { + continue; + } + for (int enchLevel : meta.getEnchants().values()) { + if (enchLevel >= minLevel) { + return true; + } + } + } + } + return false; + } + +} diff --git a/plugin/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java index 04ee588..9dc2966 100644 --- a/plugin/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java +++ b/plugin/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java @@ -68,7 +68,7 @@ public class SearchInvPluginCommand implements CommandExecutor { sender.sendMessage("No players found with " + material.toString()); } - sender.sendMessage("Players with the item " + material.toString() + ": " + players.toString()); + sender.sendMessage("Players with the item " + material.toString() + ": " + players.toString()); return true; } diff --git a/plugin/src/main/resources/plugin.yml b/plugin/src/main/resources/plugin.yml index f1fed56..cd626ba 100644 --- a/plugin/src/main/resources/plugin.yml +++ b/plugin/src/main/resources/plugin.yml @@ -29,7 +29,7 @@ commands: permission: OpenInv.*;OpenInv.search description: Searches and lists players having a specific item in their ender chest usage: |- - / [minAmount] - Item is the ID or the Bukkit Material, MinAmount is the minimum amount required + / [MinAmount] - Item is the ID or the Bukkit Material, MinAmount is the minimum amount required silentchest: aliases: [sc, silent] description: Toggle silent chest function, which stops sounds and animations when using containers. @@ -42,4 +42,9 @@ commands: permission: OpenInv.*;OpenInv.anychest usage: |- / [Check] - Checks or toggle anychest - + searchenchant: + aliases: [searchenchants] + description: Search and list players with a specific enchantment. + permission: OpenInv.*;OpenInv.searchenchant + usage: |- + / <[enchantment] [MinLevel]> - Enchantment is the enchantment type, MinLevel is the minimum level. One is optional diff --git a/pom.xml b/pom.xml index 8ca9425..86e93ae 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ UTF-8 - 3.0.1-SNAPSHOT + 3.0.2 -- 2.49.1 From db2cade4e2355e64d4e2b5f6c105abe917139ba3 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 27 Nov 2016 17:30:39 -0500 Subject: [PATCH 078/253] Don't convert names in config to UUIDs on the main thread This is pretty messy, but I can't think of a better way to avoid saving about 5 times in a row. Then again, I did just wake up, so my brain may not be on point yet. --- .../com/lishid/openinv/ConfigUpdater.java | 142 ++++++++++-------- pom.xml | 2 +- 2 files changed, 80 insertions(+), 64 deletions(-) diff --git a/plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java b/plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java index ba299a8..ee0a826 100644 --- a/plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java +++ b/plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java @@ -9,6 +9,7 @@ import java.util.Set; import org.bukkit.Material; import org.bukkit.OfflinePlayer; import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.scheduler.BukkitRunnable; public class ConfigUpdater { @@ -20,44 +21,14 @@ public class ConfigUpdater { this.plugin = plugin; } - private int getConfigVersion() { - return plugin.getConfig().getInt("config-version", 1); - } - - private boolean isConfigOutdated() { - return getConfigVersion() < CONFIG_VERSION; - } - public void checkForUpdates() { - if (isConfigOutdated()) { - plugin.getLogger().info("Configuration update found! Performing update..."); - performUpdate(); - plugin.getLogger().info("Configuration update complete!"); + final int version = plugin.getConfig().getInt("config-version", 1); + if (version >= CONFIG_VERSION) { + return; } - } - private void performUpdate() { - // Update according to the right version - switch (getConfigVersion()) { - case 1: - updateConfig1To2(); - case 2: - updateConfig2To3(); - break; - } - } + plugin.getLogger().info("Configuration update found! Performing update..."); - private void updateConfig2To3() { - plugin.getConfig().set("config-version", 3); - plugin.getConfig().set("items.open-inv", null); - plugin.getConfig().set("toggles.items.open-inv", null); - plugin.getConfig().set("settings.disable-saving", plugin.getConfig().getBoolean("DisableSaving", false)); - plugin.getConfig().set("DisableSaving", null); - // Save the new config - plugin.saveConfig(); - } - - private void updateConfig1To2() { // Backup the old config file try { plugin.getConfig().save(new File(plugin.getDataFolder(), "config_old.yml")); @@ -66,28 +37,67 @@ public class ConfigUpdater { plugin.getLogger().warning("Could not back up config.yml before updating!"); } - // Get the old config settings - int itemOpenInvItemId = plugin.getConfig().getInt("ItemOpenInvItemID", 280); - plugin.getConfig().set("ItemOpenInvItemID", null); - boolean notifySilentChest = plugin.getConfig().getBoolean("NotifySilentChest", true); - plugin.getConfig().set("NotifySilentChest", null); - boolean notifyAnyChest = plugin.getConfig().getBoolean("NotifyAnyChest", true); - plugin.getConfig().set("NotifyAnyChest", null); + new BukkitRunnable() { + @Override + public void run() { + switch (version) { + case 1: + updateConfig1To2(); + case 2: + updateConfig2To3(); + break; + } + + new BukkitRunnable() { + @Override + public void run() { + plugin.saveConfig(); + plugin.getLogger().info("Configuration update complete!"); + } + }.runTaskLater(plugin, 1L); // Run on 1 tick delay; on older versions Bukkit's scheduler is not guaranteed FIFO + } + }.runTaskAsynchronously(plugin); + } + + private void updateConfig2To3() { + new BukkitRunnable() { + @Override + public void run() { + plugin.getConfig().set("config-version", 3); + plugin.getConfig().set("items.open-inv", null); + plugin.getConfig().set("toggles.items.open-inv", null); + plugin.getConfig().set("settings.disable-saving", + plugin.getConfig().getBoolean("DisableSaving", false)); + plugin.getConfig().set("DisableSaving", null); + } + }.runTask(plugin); + } + + private void updateConfig1To2() { + new BukkitRunnable() { + @Override + public void run() { + // Get the old config settings + int itemOpenInvItemId = plugin.getConfig().getInt("ItemOpenInvItemID", 280); + boolean notifySilentChest = plugin.getConfig().getBoolean("NotifySilentChest", true); + boolean notifyAnyChest = plugin.getConfig().getBoolean("NotifyAnyChest", true); + plugin.getConfig().set("ItemOpenInvItemID", null); + plugin.getConfig().set("NotifySilentChest", null); + plugin.getConfig().set("NotifyAnyChest", null); + plugin.getConfig().set("config-version", 2); + plugin.getConfig().set("items.open-inv", + getMaterialById(itemOpenInvItemId).toString()); + plugin.getConfig().set("notify.any-chest", notifyAnyChest); + plugin.getConfig().set("notify.silent-chest", notifySilentChest); + } + }.runTask(plugin); updateToggles("AnyChest", ".toggle", "toggles.any-chest"); updateToggles("ItemOpenInv", ".toggle", "toggles.items.open-inv"); updateToggles("SilentChest", ".toggle", "toggles.silent-chest"); - - plugin.getConfig().set("config-version", 2); - plugin.getConfig().set("items.open-inv", getMaterialById(itemOpenInvItemId).toString()); - plugin.getConfig().set("notify.any-chest", notifyAnyChest); - plugin.getConfig().set("notify.silent-chest", notifySilentChest); - - // Save the new config - plugin.saveConfig(); } - private void updateToggles(String sectionName, String suffix, String newSectionName) { + private void updateToggles(final String sectionName, String suffix, final String newSectionName) { // Ensure section exists if (!plugin.getConfig().isConfigurationSection(sectionName)) { return; @@ -101,7 +111,7 @@ public class ConfigUpdater { return; } - Map toggles = new HashMap(); + final Map toggles = new HashMap(); for (String playerName : keys) { OfflinePlayer player = plugin.matchPlayer(playerName); @@ -109,19 +119,25 @@ public class ConfigUpdater { toggles.put(dataID, section.getBoolean(playerName + suffix, false)); } - // Wipe old ConfigurationSection - plugin.getConfig().set(sectionName, null); - // Prepare new ConfigurationSection - if (plugin.getConfig().isConfigurationSection(newSectionName)) { - section = plugin.getConfig().getConfigurationSection(newSectionName); - } else { - section = plugin.getConfig().createSection(newSectionName); - } + new BukkitRunnable() { + @Override + public void run() { + // Wipe old ConfigurationSection + plugin.getConfig().set(sectionName, null); - // Set new values - for (Map.Entry entry : toggles.entrySet()) { - section.set(entry.getKey(), entry.getValue()); - } + // Prepare new ConfigurationSection + ConfigurationSection newSection; + if (plugin.getConfig().isConfigurationSection(newSectionName)) { + newSection = plugin.getConfig().getConfigurationSection(newSectionName); + } else { + newSection = plugin.getConfig().createSection(newSectionName); + } + // Set new values + for (Map.Entry entry : toggles.entrySet()) { + newSection.set(entry.getKey(), entry.getValue()); + } + } + }.runTask(plugin); } @SuppressWarnings("deprecation") diff --git a/pom.xml b/pom.xml index 86e93ae..9214a37 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ UTF-8 - 3.0.2 + 3.0.3-SNAPSHOT -- 2.49.1 From 7942466863e3b8aeb0f27c32a05505a16a71501e Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 30 Nov 2016 21:26:56 -0500 Subject: [PATCH 079/253] Maven cleanliness and API progress The project was very messy and due to older Bukkit packaging conventions, 1_4_5 and 1_4_6 were sorted away from the rest of the versioned code. All of the versioned internals are now submodules of the internal module. Rather than use the hackish existing method of abusing the shade plugin to combine "dependencies" for a dummy assembly project, we're actually using the assembly plugin. Profiles are still split up between the parent pom and the internal module pom, but they're much more clean. The API is now its own module and can be compiled and released as a separate file for developers. Soon, Bukkit ticket 20, you'll be closed. --- README.MD | 4 +- api/pom.xml | 23 +++ .../java/com/lishid/openinv/IOpenInv.java | 155 ++++++++++++++ .../openinv/internal/IAnySilentContainer.java | 0 .../openinv/internal/IInventoryAccess.java | 0 .../openinv/internal/IPlayerDataManager.java | 0 .../openinv/internal/ISpecialEnderChest.java | 0 .../internal/ISpecialPlayerInventory.java | 0 assembly/pom.xml | 192 ++---------------- assembly/src/assembly/reactor-uberjar.xml | 28 +++ common/pom.xml | 29 +++ .../java/com/lishid/openinv/util/Cache.java | 0 .../com/lishid/openinv/util/Function.java | 0 .../openinv/util}/InternalAccessor.java | 8 +- .../com/lishid/openinv/util}/Permissions.java | 2 +- {1_4_5 => internal/1_4_5}/pom.xml | 4 +- .../internal/v1_4_5/AnySilentContainer.java | 0 .../internal/v1_4_5/InventoryAccess.java | 2 +- .../internal/v1_4_5/PlayerDataManager.java | 0 .../internal/v1_4_5/SilentContainerChest.java | 0 .../internal/v1_4_5/SpecialEnderChest.java | 0 .../v1_4_5/SpecialPlayerInventory.java | 0 {1_4_6 => internal/1_4_6}/pom.xml | 4 +- .../internal/v1_4_6/AnySilentContainer.java | 0 .../internal/v1_4_6/InventoryAccess.java | 2 +- .../internal/v1_4_6/PlayerDataManager.java | 0 .../internal/v1_4_6/SilentContainerChest.java | 0 .../internal/v1_4_6/SpecialEnderChest.java | 0 .../v1_4_6/SpecialPlayerInventory.java | 0 internal/pom.xml | 63 +++++- {v1_10_R1 => internal/v1_10_R1}/pom.xml | 4 +- .../internal/v1_10_R1/AnySilentContainer.java | 0 .../internal/v1_10_R1/InventoryAccess.java | 2 +- .../internal/v1_10_R1/PlayerDataManager.java | 0 .../v1_10_R1/SilentContainerChest.java | 0 .../internal/v1_10_R1/SpecialEnderChest.java | 0 .../v1_10_R1/SpecialPlayerInventory.java | 0 {v1_11_R1 => internal/v1_11_R1}/pom.xml | 4 +- .../internal/v1_11_R1/AnySilentContainer.java | 0 .../internal/v1_11_R1/InventoryAccess.java | 2 +- .../internal/v1_11_R1/PlayerDataManager.java | 0 .../v1_11_R1/SilentContainerChest.java | 0 .../v1_11_R1/SilentContainerShulkerBox.java | 0 .../internal/v1_11_R1/SpecialEnderChest.java | 0 .../v1_11_R1/SpecialPlayerInventory.java | 0 {v1_4_R1 => internal/v1_4_R1}/pom.xml | 4 +- .../internal/v1_4_R1/AnySilentContainer.java | 0 .../internal/v1_4_R1/InventoryAccess.java | 2 +- .../internal/v1_4_R1/PlayerDataManager.java | 0 .../v1_4_R1/SilentContainerChest.java | 0 .../internal/v1_4_R1/SpecialEnderChest.java | 0 .../v1_4_R1/SpecialPlayerInventory.java | 0 {v1_5_R2 => internal/v1_5_R2}/pom.xml | 4 +- .../internal/v1_5_R2/AnySilentContainer.java | 0 .../internal/v1_5_R2/InventoryAccess.java | 2 +- .../internal/v1_5_R2/PlayerDataManager.java | 0 .../v1_5_R2/SilentContainerChest.java | 0 .../internal/v1_5_R2/SpecialEnderChest.java | 0 .../v1_5_R2/SpecialPlayerInventory.java | 0 {v1_5_R3 => internal/v1_5_R3}/pom.xml | 4 +- .../internal/v1_5_R3/AnySilentContainer.java | 0 .../internal/v1_5_R3/InventoryAccess.java | 2 +- .../internal/v1_5_R3/PlayerDataManager.java | 0 .../v1_5_R3/SilentContainerChest.java | 0 .../internal/v1_5_R3/SpecialEnderChest.java | 0 .../v1_5_R3/SpecialPlayerInventory.java | 0 {v1_6_R1 => internal/v1_6_R1}/pom.xml | 4 +- .../internal/v1_6_R1/AnySilentContainer.java | 0 .../internal/v1_6_R1/InventoryAccess.java | 2 +- .../internal/v1_6_R1/PlayerDataManager.java | 0 .../v1_6_R1/SilentContainerChest.java | 0 .../internal/v1_6_R1/SpecialEnderChest.java | 0 .../v1_6_R1/SpecialPlayerInventory.java | 0 {v1_6_R2 => internal/v1_6_R2}/pom.xml | 4 +- .../internal/v1_6_R2/AnySilentContainer.java | 0 .../internal/v1_6_R2/InventoryAccess.java | 2 +- .../internal/v1_6_R2/PlayerDataManager.java | 0 .../v1_6_R2/SilentContainerChest.java | 0 .../internal/v1_6_R2/SpecialEnderChest.java | 0 .../v1_6_R2/SpecialPlayerInventory.java | 0 {v1_6_R3 => internal/v1_6_R3}/pom.xml | 4 +- .../internal/v1_6_R3/AnySilentContainer.java | 0 .../internal/v1_6_R3/InventoryAccess.java | 2 +- .../internal/v1_6_R3/PlayerDataManager.java | 0 .../v1_6_R3/SilentContainerChest.java | 0 .../internal/v1_6_R3/SpecialEnderChest.java | 0 .../v1_6_R3/SpecialPlayerInventory.java | 0 {v1_7_R1 => internal/v1_7_R1}/pom.xml | 4 +- .../internal/v1_7_R1/AnySilentContainer.java | 0 .../internal/v1_7_R1/InventoryAccess.java | 2 +- .../internal/v1_7_R1/PlayerDataManager.java | 0 .../v1_7_R1/SilentContainerChest.java | 0 .../internal/v1_7_R1/SpecialEnderChest.java | 0 .../v1_7_R1/SpecialPlayerInventory.java | 0 {v1_7_R2 => internal/v1_7_R2}/pom.xml | 4 +- .../internal/v1_7_R2/AnySilentContainer.java | 0 .../internal/v1_7_R2/InventoryAccess.java | 2 +- .../internal/v1_7_R2/PlayerDataManager.java | 0 .../v1_7_R2/SilentContainerChest.java | 0 .../internal/v1_7_R2/SpecialEnderChest.java | 0 .../v1_7_R2/SpecialPlayerInventory.java | 0 {v1_7_R3 => internal/v1_7_R3}/pom.xml | 4 +- .../internal/v1_7_R3/AnySilentContainer.java | 0 .../internal/v1_7_R3/InventoryAccess.java | 2 +- .../internal/v1_7_R3/PlayerDataManager.java | 0 .../v1_7_R3/SilentContainerChest.java | 0 .../internal/v1_7_R3/SpecialEnderChest.java | 0 .../v1_7_R3/SpecialPlayerInventory.java | 0 {v1_7_R4 => internal/v1_7_R4}/pom.xml | 4 +- .../internal/v1_7_R4/AnySilentContainer.java | 0 .../internal/v1_7_R4/InventoryAccess.java | 2 +- .../internal/v1_7_R4/PlayerDataManager.java | 0 .../v1_7_R4/SilentContainerChest.java | 0 .../internal/v1_7_R4/SpecialEnderChest.java | 0 .../v1_7_R4/SpecialPlayerInventory.java | 0 {v1_8_R1 => internal/v1_8_R1}/pom.xml | 4 +- .../internal/v1_8_R1/AnySilentContainer.java | 0 .../internal/v1_8_R1/InventoryAccess.java | 2 +- .../internal/v1_8_R1/PlayerDataManager.java | 0 .../v1_8_R1/SilentContainerChest.java | 0 .../internal/v1_8_R1/SpecialEnderChest.java | 0 .../v1_8_R1/SpecialPlayerInventory.java | 0 {v1_8_R2 => internal/v1_8_R2}/pom.xml | 4 +- .../internal/v1_8_R2/AnySilentContainer.java | 0 .../internal/v1_8_R2/InventoryAccess.java | 2 +- .../internal/v1_8_R2/PlayerDataManager.java | 0 .../v1_8_R2/SilentContainerChest.java | 0 .../internal/v1_8_R2/SpecialEnderChest.java | 0 .../v1_8_R2/SpecialPlayerInventory.java | 0 {v1_8_R3 => internal/v1_8_R3}/pom.xml | 4 +- .../internal/v1_8_R3/AnySilentContainer.java | 0 .../internal/v1_8_R3/InventoryAccess.java | 2 +- .../internal/v1_8_R3/PlayerDataManager.java | 0 .../v1_8_R3/SilentContainerChest.java | 0 .../internal/v1_8_R3/SpecialEnderChest.java | 0 .../v1_8_R3/SpecialPlayerInventory.java | 0 {v1_9_R1 => internal/v1_9_R1}/pom.xml | 4 +- .../internal/v1_9_R1/AnySilentContainer.java | 0 .../internal/v1_9_R1/InventoryAccess.java | 2 +- .../internal/v1_9_R1/PlayerDataManager.java | 0 .../v1_9_R1/SilentContainerChest.java | 0 .../internal/v1_9_R1/SpecialEnderChest.java | 0 .../v1_9_R1/SpecialPlayerInventory.java | 0 {v1_9_R2 => internal/v1_9_R2}/pom.xml | 6 +- .../internal/v1_9_R2/AnySilentContainer.java | 0 .../internal/v1_9_R2/InventoryAccess.java | 2 +- .../internal/v1_9_R2/PlayerDataManager.java | 0 .../v1_9_R2/SilentContainerChest.java | 0 .../internal/v1_9_R2/SpecialEnderChest.java | 0 .../v1_9_R2/SpecialPlayerInventory.java | 0 plugin/plugin-core/pom.xml | 42 ++++ .../main/java/com/lishid/openinv/OpenInv.java | 36 +++- .../commands/AnyChestPluginCommand.java | 0 .../commands/OpenEnderPluginCommand.java | 2 +- .../commands/OpenInvPluginCommand.java | 2 +- .../commands/SearchEnchantPluginCommand.java | 0 .../commands/SearchInvPluginCommand.java | 0 .../commands/SilentChestPluginCommand.java | 0 .../listeners/InventoryClickListener.java} | 39 ++-- .../openinv/listeners/PlayerListener.java} | 15 +- .../lishid/openinv/util}/ConfigUpdater.java | 5 +- .../src/main/resources/plugin.yml | 0 plugin/plugin-v1_10_R1/pom.xml | 28 +++ .../listeners/InventoryDragListener.java | 38 ++++ plugin/pom.xml | 29 +-- pom.xml | 98 ++------- 166 files changed, 563 insertions(+), 391 deletions(-) create mode 100644 api/pom.xml create mode 100644 api/src/main/java/com/lishid/openinv/IOpenInv.java rename {internal => api}/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java (100%) rename {internal => api}/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java (100%) rename {internal => api}/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java (100%) rename {internal => api}/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java (100%) rename {internal => api}/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java (100%) create mode 100644 assembly/src/assembly/reactor-uberjar.xml create mode 100644 common/pom.xml rename {plugin => common}/src/main/java/com/lishid/openinv/util/Cache.java (100%) rename {plugin => common}/src/main/java/com/lishid/openinv/util/Function.java (100%) rename {internal/src/main/java/com/lishid/openinv/internal => common/src/main/java/com/lishid/openinv/util}/InternalAccessor.java (95%) rename {plugin/src/main/java/com/lishid/openinv => common/src/main/java/com/lishid/openinv/util}/Permissions.java (96%) rename {1_4_5 => internal/1_4_5}/pom.xml (89%) rename {1_4_5 => internal/1_4_5}/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java (100%) rename {1_4_5 => internal/1_4_5}/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java (98%) rename {1_4_5 => internal/1_4_5}/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java (100%) rename {1_4_5 => internal/1_4_5}/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java (100%) rename {1_4_5 => internal/1_4_5}/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java (100%) rename {1_4_5 => internal/1_4_5}/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java (100%) rename {1_4_6 => internal/1_4_6}/pom.xml (89%) rename {1_4_6 => internal/1_4_6}/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java (100%) rename {1_4_6 => internal/1_4_6}/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java (98%) rename {1_4_6 => internal/1_4_6}/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java (100%) rename {1_4_6 => internal/1_4_6}/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java (100%) rename {1_4_6 => internal/1_4_6}/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java (100%) rename {1_4_6 => internal/1_4_6}/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java (100%) rename {v1_10_R1 => internal/v1_10_R1}/pom.xml (89%) rename {v1_10_R1 => internal/v1_10_R1}/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java (100%) rename {v1_10_R1 => internal/v1_10_R1}/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java (98%) rename {v1_10_R1 => internal/v1_10_R1}/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java (100%) rename {v1_10_R1 => internal/v1_10_R1}/src/main/java/com/lishid/openinv/internal/v1_10_R1/SilentContainerChest.java (100%) rename {v1_10_R1 => internal/v1_10_R1}/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java (100%) rename {v1_10_R1 => internal/v1_10_R1}/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java (100%) rename {v1_11_R1 => internal/v1_11_R1}/pom.xml (89%) rename {v1_11_R1 => internal/v1_11_R1}/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java (100%) rename {v1_11_R1 => internal/v1_11_R1}/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java (98%) rename {v1_11_R1 => internal/v1_11_R1}/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java (100%) rename {v1_11_R1 => internal/v1_11_R1}/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerChest.java (100%) rename {v1_11_R1 => internal/v1_11_R1}/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerShulkerBox.java (100%) rename {v1_11_R1 => internal/v1_11_R1}/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java (100%) rename {v1_11_R1 => internal/v1_11_R1}/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java (100%) rename {v1_4_R1 => internal/v1_4_R1}/pom.xml (89%) rename {v1_4_R1 => internal/v1_4_R1}/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java (100%) rename {v1_4_R1 => internal/v1_4_R1}/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java (98%) rename {v1_4_R1 => internal/v1_4_R1}/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java (100%) rename {v1_4_R1 => internal/v1_4_R1}/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java (100%) rename {v1_4_R1 => internal/v1_4_R1}/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java (100%) rename {v1_4_R1 => internal/v1_4_R1}/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java (100%) rename {v1_5_R2 => internal/v1_5_R2}/pom.xml (89%) rename {v1_5_R2 => internal/v1_5_R2}/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java (100%) rename {v1_5_R2 => internal/v1_5_R2}/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java (98%) rename {v1_5_R2 => internal/v1_5_R2}/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java (100%) rename {v1_5_R2 => internal/v1_5_R2}/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java (100%) rename {v1_5_R2 => internal/v1_5_R2}/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java (100%) rename {v1_5_R2 => internal/v1_5_R2}/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java (100%) rename {v1_5_R3 => internal/v1_5_R3}/pom.xml (89%) rename {v1_5_R3 => internal/v1_5_R3}/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java (100%) rename {v1_5_R3 => internal/v1_5_R3}/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java (98%) rename {v1_5_R3 => internal/v1_5_R3}/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java (100%) rename {v1_5_R3 => internal/v1_5_R3}/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java (100%) rename {v1_5_R3 => internal/v1_5_R3}/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java (100%) rename {v1_5_R3 => internal/v1_5_R3}/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java (100%) rename {v1_6_R1 => internal/v1_6_R1}/pom.xml (89%) rename {v1_6_R1 => internal/v1_6_R1}/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java (100%) rename {v1_6_R1 => internal/v1_6_R1}/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java (98%) rename {v1_6_R1 => internal/v1_6_R1}/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java (100%) rename {v1_6_R1 => internal/v1_6_R1}/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java (100%) rename {v1_6_R1 => internal/v1_6_R1}/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java (100%) rename {v1_6_R1 => internal/v1_6_R1}/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java (100%) rename {v1_6_R2 => internal/v1_6_R2}/pom.xml (89%) rename {v1_6_R2 => internal/v1_6_R2}/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java (100%) rename {v1_6_R2 => internal/v1_6_R2}/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java (98%) rename {v1_6_R2 => internal/v1_6_R2}/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java (100%) rename {v1_6_R2 => internal/v1_6_R2}/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java (100%) rename {v1_6_R2 => internal/v1_6_R2}/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java (100%) rename {v1_6_R2 => internal/v1_6_R2}/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java (100%) rename {v1_6_R3 => internal/v1_6_R3}/pom.xml (89%) rename {v1_6_R3 => internal/v1_6_R3}/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java (100%) rename {v1_6_R3 => internal/v1_6_R3}/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java (98%) rename {v1_6_R3 => internal/v1_6_R3}/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java (100%) rename {v1_6_R3 => internal/v1_6_R3}/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java (100%) rename {v1_6_R3 => internal/v1_6_R3}/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java (100%) rename {v1_6_R3 => internal/v1_6_R3}/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java (100%) rename {v1_7_R1 => internal/v1_7_R1}/pom.xml (89%) rename {v1_7_R1 => internal/v1_7_R1}/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java (100%) rename {v1_7_R1 => internal/v1_7_R1}/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java (98%) rename {v1_7_R1 => internal/v1_7_R1}/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java (100%) rename {v1_7_R1 => internal/v1_7_R1}/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java (100%) rename {v1_7_R1 => internal/v1_7_R1}/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java (100%) rename {v1_7_R1 => internal/v1_7_R1}/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java (100%) rename {v1_7_R2 => internal/v1_7_R2}/pom.xml (89%) rename {v1_7_R2 => internal/v1_7_R2}/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java (100%) rename {v1_7_R2 => internal/v1_7_R2}/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java (98%) rename {v1_7_R2 => internal/v1_7_R2}/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java (100%) rename {v1_7_R2 => internal/v1_7_R2}/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java (100%) rename {v1_7_R2 => internal/v1_7_R2}/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java (100%) rename {v1_7_R2 => internal/v1_7_R2}/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java (100%) rename {v1_7_R3 => internal/v1_7_R3}/pom.xml (89%) rename {v1_7_R3 => internal/v1_7_R3}/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java (100%) rename {v1_7_R3 => internal/v1_7_R3}/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java (98%) rename {v1_7_R3 => internal/v1_7_R3}/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java (100%) rename {v1_7_R3 => internal/v1_7_R3}/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java (100%) rename {v1_7_R3 => internal/v1_7_R3}/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java (100%) rename {v1_7_R3 => internal/v1_7_R3}/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java (100%) rename {v1_7_R4 => internal/v1_7_R4}/pom.xml (89%) rename {v1_7_R4 => internal/v1_7_R4}/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java (100%) rename {v1_7_R4 => internal/v1_7_R4}/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java (98%) rename {v1_7_R4 => internal/v1_7_R4}/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java (100%) rename {v1_7_R4 => internal/v1_7_R4}/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java (100%) rename {v1_7_R4 => internal/v1_7_R4}/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java (100%) rename {v1_7_R4 => internal/v1_7_R4}/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java (100%) rename {v1_8_R1 => internal/v1_8_R1}/pom.xml (89%) rename {v1_8_R1 => internal/v1_8_R1}/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java (100%) rename {v1_8_R1 => internal/v1_8_R1}/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java (98%) rename {v1_8_R1 => internal/v1_8_R1}/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java (100%) rename {v1_8_R1 => internal/v1_8_R1}/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java (100%) rename {v1_8_R1 => internal/v1_8_R1}/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java (100%) rename {v1_8_R1 => internal/v1_8_R1}/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java (100%) rename {v1_8_R2 => internal/v1_8_R2}/pom.xml (89%) rename {v1_8_R2 => internal/v1_8_R2}/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java (100%) rename {v1_8_R2 => internal/v1_8_R2}/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java (98%) rename {v1_8_R2 => internal/v1_8_R2}/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java (100%) rename {v1_8_R2 => internal/v1_8_R2}/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java (100%) rename {v1_8_R2 => internal/v1_8_R2}/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java (100%) rename {v1_8_R2 => internal/v1_8_R2}/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java (100%) rename {v1_8_R3 => internal/v1_8_R3}/pom.xml (89%) rename {v1_8_R3 => internal/v1_8_R3}/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java (100%) rename {v1_8_R3 => internal/v1_8_R3}/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java (98%) rename {v1_8_R3 => internal/v1_8_R3}/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java (100%) rename {v1_8_R3 => internal/v1_8_R3}/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java (100%) rename {v1_8_R3 => internal/v1_8_R3}/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java (100%) rename {v1_8_R3 => internal/v1_8_R3}/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java (100%) rename {v1_9_R1 => internal/v1_9_R1}/pom.xml (89%) rename {v1_9_R1 => internal/v1_9_R1}/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java (100%) rename {v1_9_R1 => internal/v1_9_R1}/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java (98%) rename {v1_9_R1 => internal/v1_9_R1}/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java (100%) rename {v1_9_R1 => internal/v1_9_R1}/src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java (100%) rename {v1_9_R1 => internal/v1_9_R1}/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java (100%) rename {v1_9_R1 => internal/v1_9_R1}/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java (100%) rename {v1_9_R2 => internal/v1_9_R2}/pom.xml (85%) rename {v1_9_R2 => internal/v1_9_R2}/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java (100%) rename {v1_9_R2 => internal/v1_9_R2}/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java (98%) rename {v1_9_R2 => internal/v1_9_R2}/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java (100%) rename {v1_9_R2 => internal/v1_9_R2}/src/main/java/com/lishid/openinv/internal/v1_9_R2/SilentContainerChest.java (100%) rename {v1_9_R2 => internal/v1_9_R2}/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java (100%) rename {v1_9_R2 => internal/v1_9_R2}/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java (100%) create mode 100644 plugin/plugin-core/pom.xml rename plugin/{ => plugin-core}/src/main/java/com/lishid/openinv/OpenInv.java (94%) rename plugin/{ => plugin-core}/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java (100%) rename plugin/{ => plugin-core}/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java (99%) rename plugin/{ => plugin-core}/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java (99%) rename plugin/{ => plugin-core}/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java (100%) rename plugin/{ => plugin-core}/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java (100%) rename plugin/{ => plugin-core}/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java (100%) rename plugin/{src/main/java/com/lishid/openinv/OpenInvInventoryListener.java => plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryClickListener.java} (58%) rename plugin/{src/main/java/com/lishid/openinv/OpenInvPlayerListener.java => plugin-core/src/main/java/com/lishid/openinv/listeners/PlayerListener.java} (88%) rename plugin/{src/main/java/com/lishid/openinv => plugin-core/src/main/java/com/lishid/openinv/util}/ConfigUpdater.java (98%) rename plugin/{ => plugin-core}/src/main/resources/plugin.yml (100%) create mode 100644 plugin/plugin-v1_10_R1/pom.xml create mode 100644 plugin/plugin-v1_10_R1/src/main/java/com/lishid/openinv/listeners/InventoryDragListener.java diff --git a/README.MD b/README.MD index dcd7296..2014cf4 100644 --- a/README.MD +++ b/README.MD @@ -117,9 +117,9 @@ OpenInv is a [Bukkit plugin](https://dev.bukkit.org/bukkit-plugins/openinv/) whi To compile, the relevant Craftbukkit/Spigot jars must be installed in your local repository using the install plugin. Ex: `mvn install:install-file -Dpackaging=jar -Dfile=spigot-1.11-R0.1-SNAPSHOT.jar -DgroupId=org.spigotmc -DartifactId=spigot -Dversion=1.11-R0.1-SNAPSHOT` -Compiling OpenInv for a specific version is very easy - just compile the correct module. +To compile for a specific version or set of versions, you'll need to use a profile. Provided profiles are `latest`, `modern` (versions 1.8+), and `all`. Select an existing profile using the `-P` argument (ex: `mvn clean package -am -P all`) or make your own. For more information, check out the [official guide](http://maven.apache.org/guides/introduction/introduction-to-profiles.html). -Compiling for a set of versions is slightly more complex. You'll need to use a profile for the versions you want to compile. Provided profiles are latest, modern (versions 1.8+), and all. For more information, check out the [official guide](http://maven.apache.org/guides/introduction/introduction-to-profiles.html). +The final file is target/OpenInv.jar ## License ``` diff --git a/api/pom.xml b/api/pom.xml new file mode 100644 index 0000000..1e84cc6 --- /dev/null +++ b/api/pom.xml @@ -0,0 +1,23 @@ + + 4.0.0 + + + com.lishid + openinvparent + 1.0-SNAPSHOT + + + openinvapi + OpenInvAPI + + + + org.bukkit + bukkit + 1.4.5-R1.0 + provided + + + + diff --git a/api/src/main/java/com/lishid/openinv/IOpenInv.java b/api/src/main/java/com/lishid/openinv/IOpenInv.java new file mode 100644 index 0000000..8eee839 --- /dev/null +++ b/api/src/main/java/com/lishid/openinv/IOpenInv.java @@ -0,0 +1,155 @@ +package com.lishid.openinv; + +import com.lishid.openinv.internal.IAnySilentContainer; +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +/** + * Interface defining behavior for the OpenInv plugin. + * + * @author Jikoo + */ +public interface IOpenInv { + + + + /** + * Checks if the server version is supported by OpenInv. + * + * @return true if the server version is supported + */ + public boolean isSupportedVersion(); + + /** + * Gets the active IInventoryAccess implementation. May return null if the server version is + * unsupported. + * + * @return the IInventoryAccess + */ + public IInventoryAccess getInventoryAccess(); + + /** + * Gets the active ISilentContainer implementation. May return null if the server version is + * unsupported. + * + * @return the ISilentContainer + */ + public IAnySilentContainer getAnySilentContainer(); + + /** + * Gets an ISpecialPlayerInventory for the given Player. + * + * @param player the Player + * @param online true if the Player is currently online + * @return the ISpecialPlayerInventory + */ + public ISpecialPlayerInventory getInventory(Player player, boolean online); + + /** + * Gets an ISpecialEnderChest for the given Player. + * + * @param player the Player + * @param online true if the Player is currently online + * @return the ISpecialEnderChest + */ + public ISpecialEnderChest getEnderChest(Player player, boolean online); + + /** + * Forcibly unload a cached Player's data. + * + * @param player the OfflinePlayer to unload + */ + public void unload(OfflinePlayer player); + + /** + * Check the configuration value for whether or not OpenInv saves player data when unloading + * players. This is exclusively for users who do not allow editing of inventories, only viewing, + * and wish to prevent any possibility of bugs such as lishid#40. If true, OpenInv will not ever + * save any edits made to players. + * + * @return false unless configured otherwise + */ + public boolean disableSaving(); + + /** + * Check the configuration value for whether or not OpenInv displays a notification to the user + * when a container is activated with SilentChest. + * + * @return true unless configured otherwise + */ + public boolean notifySilentChest(); + + /** + * Check the configuration value for whether or not OpenInv displays a notification to the user + * when a container is activated with AnyChest. + * + * @return true unless configured otherwise + */ + public boolean notifyAnyChest(); + + /** + * Gets a player's SilentChest setting. + * + * @param player the OfflinePlayer + * @return true if SilentChest is enabled + */ + public boolean getPlayerSilentChestStatus(OfflinePlayer player); + + /** + * Sets a player's SilentChest setting. + * + * @param player the OfflinePlayer + * @param status the status + */ + public void setPlayerSilentChestStatus(OfflinePlayer player, boolean status); + + /** + * Gets the provided player's AnyChest setting. + * + * @param player the OfflinePlayer + * @return true if AnyChest is enabled + */ + public boolean getPlayerAnyChestStatus(OfflinePlayer player); + + /** + * Sets a player's AnyChest setting. + * + * @param player the OfflinePlayer + * @param status the status + */ + public void setPlayerAnyChestStatus(OfflinePlayer player, boolean status); + + /** + * Gets a unique identifier by which the OfflinePlayer can be referenced. Using the value + * returned to look up a Player will generally be much faster for later implementations. + * + * @param offline the OfflinePlayer + * @return the identifier + */ + public String getPlayerID(OfflinePlayer offline); + + /** + * Get an OfflinePlayer by name. + *

+ * Note: This method is potentially very heavily blocking. It should not ever be called on the + * main thread, and if it is, a stack trace will be displayed alerting server owners to the + * call. + * + * @param name the name of the Player + * @return the OfflinePlayer with the closest matching name or null if no players have ever logged in + */ + public OfflinePlayer matchPlayer(String name); + + /** + * Load a Player from an OfflinePlayer. May return null under some circumstances. + * + * @param offline the OfflinePlayer to load a Player for + * @return the Player + */ + public Player loadPlayer(final OfflinePlayer offline); + +} diff --git a/internal/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java b/api/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java similarity index 100% rename from internal/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java rename to api/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java diff --git a/internal/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java b/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java similarity index 100% rename from internal/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java rename to api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java diff --git a/internal/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java b/api/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java similarity index 100% rename from internal/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java rename to api/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java diff --git a/internal/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java b/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java similarity index 100% rename from internal/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java rename to api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java diff --git a/internal/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java b/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java similarity index 100% rename from internal/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java rename to api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java diff --git a/assembly/pom.xml b/assembly/pom.xml index 17e12af..1247798 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -4,205 +4,39 @@ com.lishid - openinv + openinvparent 1.0-SNAPSHOT openinvassembly OpenInvAssembly - - - - latest - - - com.lishid - openinvadapter1_11_R1 - 1.0-SNAPSHOT - - - - - - modern - - - com.lishid - openinvadapter1_8_R1 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_8_R2 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_8_R3 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_9_R1 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_9_R2 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_10_R1 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_11_R1 - 1.0-SNAPSHOT - - - - - - all - - - com.lishid - openinvadapter1_4_5 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_4_6 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_4_R1 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_5_R2 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_5_R3 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_6_R1 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_6_R2 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_6_R3 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_7_R1 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_7_R2 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_7_R3 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_7_R4 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_8_R1 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_8_R2 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_8_R3 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_9_R1 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_9_R2 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_10_R1 - 1.0-SNAPSHOT - - - com.lishid - openinvadapter1_11_R1 - 1.0-SNAPSHOT - - - - - - ../target OpenInv - org.apache.maven.plugins - maven-shade-plugin - 2.4.3 - - - true - - - com.lishid:* - - com/lishid/openinv/**/* - plugin.yml - - - - + maven-assembly-plugin + 3.0.0 + reactor-uberjar package - shade + single + + false + + src/assembly/reactor-uberjar.xml + + + - \ No newline at end of file + diff --git a/assembly/src/assembly/reactor-uberjar.xml b/assembly/src/assembly/reactor-uberjar.xml new file mode 100644 index 0000000..200bc85 --- /dev/null +++ b/assembly/src/assembly/reactor-uberjar.xml @@ -0,0 +1,28 @@ + + + reactor-uberjar + + + jar + + + false + + + + + true + + + / + true + + + + + + + + diff --git a/common/pom.xml b/common/pom.xml new file mode 100644 index 0000000..bf47814 --- /dev/null +++ b/common/pom.xml @@ -0,0 +1,29 @@ + + 4.0.0 + + + com.lishid + openinvparent + 1.0-SNAPSHOT + + + openinvcommon + OpenInvCommon + + + + org.bukkit + bukkit + 1.4.5-R1.0 + provided + + + + com.lishid + openinvapi + 1.0-SNAPSHOT + + + + diff --git a/plugin/src/main/java/com/lishid/openinv/util/Cache.java b/common/src/main/java/com/lishid/openinv/util/Cache.java similarity index 100% rename from plugin/src/main/java/com/lishid/openinv/util/Cache.java rename to common/src/main/java/com/lishid/openinv/util/Cache.java diff --git a/plugin/src/main/java/com/lishid/openinv/util/Function.java b/common/src/main/java/com/lishid/openinv/util/Function.java similarity index 100% rename from plugin/src/main/java/com/lishid/openinv/util/Function.java rename to common/src/main/java/com/lishid/openinv/util/Function.java diff --git a/internal/src/main/java/com/lishid/openinv/internal/InternalAccessor.java b/common/src/main/java/com/lishid/openinv/util/InternalAccessor.java similarity index 95% rename from internal/src/main/java/com/lishid/openinv/internal/InternalAccessor.java rename to common/src/main/java/com/lishid/openinv/util/InternalAccessor.java index 5b4cbe5..cc8a8b4 100644 --- a/internal/src/main/java/com/lishid/openinv/internal/InternalAccessor.java +++ b/common/src/main/java/com/lishid/openinv/util/InternalAccessor.java @@ -14,11 +14,17 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal; +package com.lishid.openinv.util; import java.lang.reflect.Constructor; import java.lang.reflect.Field; +import com.lishid.openinv.internal.IAnySilentContainer; +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 org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; diff --git a/plugin/src/main/java/com/lishid/openinv/Permissions.java b/common/src/main/java/com/lishid/openinv/util/Permissions.java similarity index 96% rename from plugin/src/main/java/com/lishid/openinv/Permissions.java rename to common/src/main/java/com/lishid/openinv/util/Permissions.java index b08fc6a..8fdf8a6 100644 --- a/plugin/src/main/java/com/lishid/openinv/Permissions.java +++ b/common/src/main/java/com/lishid/openinv/util/Permissions.java @@ -1,4 +1,4 @@ -package com.lishid.openinv; +package com.lishid.openinv.util; import org.bukkit.permissions.Permissible; diff --git a/1_4_5/pom.xml b/internal/1_4_5/pom.xml similarity index 89% rename from 1_4_5/pom.xml rename to internal/1_4_5/pom.xml index 0abd40e..2655295 100644 --- a/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -4,7 +4,7 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT @@ -14,7 +14,7 @@ com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java similarity index 100% rename from 1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java rename to internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java diff --git a/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java similarity index 98% rename from 1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java rename to internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java index 4b61708..802b914 100644 --- a/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_4_5; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java similarity index 100% rename from 1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java rename to internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java diff --git a/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java similarity index 100% rename from 1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java rename to internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java diff --git a/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java similarity index 100% rename from 1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java rename to internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java diff --git a/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java similarity index 100% rename from 1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java rename to internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java diff --git a/1_4_6/pom.xml b/internal/1_4_6/pom.xml similarity index 89% rename from 1_4_6/pom.xml rename to internal/1_4_6/pom.xml index fb3c735..b330a80 100644 --- a/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -4,7 +4,7 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT @@ -14,7 +14,7 @@ com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java similarity index 100% rename from 1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java rename to internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java diff --git a/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java similarity index 98% rename from 1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java rename to internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java index 69a3374..5d0e844 100644 --- a/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_4_6; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java similarity index 100% rename from 1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java rename to internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java diff --git a/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java similarity index 100% rename from 1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java rename to internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java diff --git a/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java similarity index 100% rename from 1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java rename to internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java diff --git a/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java similarity index 100% rename from 1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java rename to internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java diff --git a/internal/pom.xml b/internal/pom.xml index ce65e5c..07aa5f7 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -4,20 +4,65 @@ com.lishid - openinv + openinvparent 1.0-SNAPSHOT openinvinternal OpenInvInternal - - - org.bukkit - bukkit - 1.4.5-R1.0 - provided - - + pom + + + + + latest + + v1_11_R1 + + + + + modern + + v1_8_R1 + v1_8_R2 + v1_8_R3 + v1_9_R1 + v1_9_R2 + v1_10_R1 + v1_11_R1 + + + + + all + + 1_4_5 + 1_4_6 + v1_4_R1 + + v1_5_R2 + v1_5_R3 + + v1_6_R1 + v1_6_R2 + v1_6_R3 + + v1_7_R1 + v1_7_R2 + v1_7_R3 + v1_7_R4 + v1_8_R1 + v1_8_R2 + v1_8_R3 + v1_9_R1 + v1_9_R2 + v1_10_R1 + v1_11_R1 + + + + diff --git a/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml similarity index 89% rename from v1_10_R1/pom.xml rename to internal/v1_10_R1/pom.xml index bf3d81b..265446e 100644 --- a/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -4,7 +4,7 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT @@ -14,7 +14,7 @@ com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java similarity index 100% rename from v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java rename to internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java diff --git a/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java similarity index 98% rename from v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java rename to internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java index a827864..8e7e028 100644 --- a/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_10_R1; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java similarity index 100% rename from v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java rename to internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java diff --git a/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SilentContainerChest.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SilentContainerChest.java similarity index 100% rename from v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SilentContainerChest.java rename to internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SilentContainerChest.java diff --git a/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java similarity index 100% rename from v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java rename to internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java diff --git a/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java similarity index 100% rename from v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java rename to internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java diff --git a/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml similarity index 89% rename from v1_11_R1/pom.xml rename to internal/v1_11_R1/pom.xml index bfbba58..208245c 100644 --- a/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -4,7 +4,7 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT @@ -14,7 +14,7 @@ com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java similarity index 100% rename from v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java rename to internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java diff --git a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java similarity index 98% rename from v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java rename to internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java index 3de2a2b..346d82b 100644 --- a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_11_R1; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java similarity index 100% rename from v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java rename to internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java diff --git a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerChest.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerChest.java similarity index 100% rename from v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerChest.java rename to internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerChest.java diff --git a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerShulkerBox.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerShulkerBox.java similarity index 100% rename from v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerShulkerBox.java rename to internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerShulkerBox.java diff --git a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java similarity index 100% rename from v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java rename to internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java diff --git a/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java similarity index 100% rename from v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java rename to internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java diff --git a/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml similarity index 89% rename from v1_4_R1/pom.xml rename to internal/v1_4_R1/pom.xml index 0976b7e..006ec96 100644 --- a/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -4,7 +4,7 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT @@ -14,7 +14,7 @@ com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java similarity index 100% rename from v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java rename to internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java diff --git a/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java similarity index 98% rename from v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java rename to internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java index 0fd5d00..78b42b5 100644 --- a/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_4_R1; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java similarity index 100% rename from v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java rename to internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java diff --git a/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java similarity index 100% rename from v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java rename to internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java diff --git a/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java similarity index 100% rename from v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java rename to internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java diff --git a/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java similarity index 100% rename from v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java rename to internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java diff --git a/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml similarity index 89% rename from v1_5_R2/pom.xml rename to internal/v1_5_R2/pom.xml index e596180..8b255b9 100644 --- a/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -4,7 +4,7 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT @@ -14,7 +14,7 @@ com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java similarity index 100% rename from v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java rename to internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java diff --git a/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java similarity index 98% rename from v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java rename to internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java index b61d7ee..932bf21 100644 --- a/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_5_R2; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java similarity index 100% rename from v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java rename to internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java diff --git a/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java similarity index 100% rename from v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java rename to internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java diff --git a/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java similarity index 100% rename from v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java rename to internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java diff --git a/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java similarity index 100% rename from v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java rename to internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java diff --git a/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml similarity index 89% rename from v1_5_R3/pom.xml rename to internal/v1_5_R3/pom.xml index 4b2e345..7a5148a 100644 --- a/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -4,7 +4,7 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT @@ -14,7 +14,7 @@ com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java similarity index 100% rename from v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java rename to internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java diff --git a/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java similarity index 98% rename from v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java rename to internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java index 1a0df32..aa09220 100644 --- a/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_5_R3; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java similarity index 100% rename from v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java rename to internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java diff --git a/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java similarity index 100% rename from v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java rename to internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java diff --git a/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java similarity index 100% rename from v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java rename to internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java diff --git a/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java similarity index 100% rename from v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java rename to internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java diff --git a/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml similarity index 89% rename from v1_6_R1/pom.xml rename to internal/v1_6_R1/pom.xml index fa9b987..652702e 100644 --- a/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -4,7 +4,7 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT @@ -14,7 +14,7 @@ com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java similarity index 100% rename from v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java rename to internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java diff --git a/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java similarity index 98% rename from v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java rename to internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java index 8d6dc65..aa3b591 100644 --- a/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_6_R1; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java similarity index 100% rename from v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java rename to internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java diff --git a/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java similarity index 100% rename from v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java rename to internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java diff --git a/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java similarity index 100% rename from v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java rename to internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java diff --git a/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java similarity index 100% rename from v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java rename to internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java diff --git a/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml similarity index 89% rename from v1_6_R2/pom.xml rename to internal/v1_6_R2/pom.xml index 3f4670e..708b4ad 100644 --- a/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -4,7 +4,7 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT @@ -14,7 +14,7 @@ com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java similarity index 100% rename from v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java rename to internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java diff --git a/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java similarity index 98% rename from v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java rename to internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java index 265202b..25f85bc 100644 --- a/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_6_R2; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java similarity index 100% rename from v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java rename to internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java diff --git a/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java similarity index 100% rename from v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java rename to internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java diff --git a/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java similarity index 100% rename from v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java rename to internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java diff --git a/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java similarity index 100% rename from v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java rename to internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java diff --git a/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml similarity index 89% rename from v1_6_R3/pom.xml rename to internal/v1_6_R3/pom.xml index 53b3b79..9f66d53 100644 --- a/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -4,7 +4,7 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT @@ -14,7 +14,7 @@ com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java similarity index 100% rename from v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java rename to internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java diff --git a/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java similarity index 98% rename from v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java rename to internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java index 536887a..9bb400f 100644 --- a/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_6_R3; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java similarity index 100% rename from v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java rename to internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java diff --git a/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java similarity index 100% rename from v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java rename to internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java diff --git a/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java similarity index 100% rename from v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java rename to internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java diff --git a/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java similarity index 100% rename from v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java rename to internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java diff --git a/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml similarity index 89% rename from v1_7_R1/pom.xml rename to internal/v1_7_R1/pom.xml index 21f2942..a8ed017 100644 --- a/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -4,7 +4,7 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT @@ -14,7 +14,7 @@ com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java similarity index 100% rename from v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java rename to internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java diff --git a/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java similarity index 98% rename from v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java rename to internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java index c0f8de9..372a2b9 100644 --- a/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_7_R1; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java similarity index 100% rename from v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java rename to internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java diff --git a/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java similarity index 100% rename from v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java rename to internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java diff --git a/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java similarity index 100% rename from v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java rename to internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java diff --git a/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java similarity index 100% rename from v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java rename to internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java diff --git a/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml similarity index 89% rename from v1_7_R2/pom.xml rename to internal/v1_7_R2/pom.xml index a100986..31a98d2 100644 --- a/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -4,7 +4,7 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT @@ -14,7 +14,7 @@ com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java similarity index 100% rename from v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java rename to internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java diff --git a/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java similarity index 98% rename from v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java rename to internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java index c982a30..1012348 100644 --- a/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_7_R2; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java similarity index 100% rename from v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java rename to internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java diff --git a/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java similarity index 100% rename from v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java rename to internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java diff --git a/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java similarity index 100% rename from v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java rename to internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java diff --git a/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java similarity index 100% rename from v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java rename to internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java diff --git a/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml similarity index 89% rename from v1_7_R3/pom.xml rename to internal/v1_7_R3/pom.xml index af3d2df..09e82e4 100644 --- a/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -4,7 +4,7 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT @@ -14,7 +14,7 @@ com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java similarity index 100% rename from v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java rename to internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java diff --git a/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java similarity index 98% rename from v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java rename to internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java index f8b23a8..41ff36f 100644 --- a/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_7_R3; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java similarity index 100% rename from v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java rename to internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java diff --git a/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java similarity index 100% rename from v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java rename to internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java diff --git a/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java similarity index 100% rename from v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java rename to internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java diff --git a/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java similarity index 100% rename from v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java rename to internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java diff --git a/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml similarity index 89% rename from v1_7_R4/pom.xml rename to internal/v1_7_R4/pom.xml index ae32c7e..50ec61f 100644 --- a/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -4,7 +4,7 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT @@ -14,7 +14,7 @@ com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java similarity index 100% rename from v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java rename to internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java diff --git a/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java similarity index 98% rename from v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java rename to internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java index b41fd40..dc7b7c1 100644 --- a/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_7_R4; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java similarity index 100% rename from v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java rename to internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java diff --git a/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java similarity index 100% rename from v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java rename to internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java diff --git a/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java similarity index 100% rename from v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java rename to internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java diff --git a/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java similarity index 100% rename from v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java rename to internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java diff --git a/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml similarity index 89% rename from v1_8_R1/pom.xml rename to internal/v1_8_R1/pom.xml index 8864486..dcbf5c4 100644 --- a/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -4,7 +4,7 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT @@ -14,7 +14,7 @@ com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java similarity index 100% rename from v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java rename to internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java diff --git a/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java similarity index 98% rename from v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java rename to internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java index 20e6d09..d348ca5 100644 --- a/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_8_R1; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java similarity index 100% rename from v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java rename to internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java diff --git a/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java similarity index 100% rename from v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java rename to internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java diff --git a/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java similarity index 100% rename from v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java rename to internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java diff --git a/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java similarity index 100% rename from v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java rename to internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java diff --git a/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml similarity index 89% rename from v1_8_R2/pom.xml rename to internal/v1_8_R2/pom.xml index a002526..80fafd5 100644 --- a/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -4,7 +4,7 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT @@ -14,7 +14,7 @@ com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java similarity index 100% rename from v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java rename to internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java diff --git a/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java similarity index 98% rename from v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java rename to internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java index 6d3e6ff..fdeb50a 100644 --- a/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_8_R2; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java similarity index 100% rename from v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java rename to internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java diff --git a/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java similarity index 100% rename from v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java rename to internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java diff --git a/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java similarity index 100% rename from v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java rename to internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java diff --git a/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java similarity index 100% rename from v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java rename to internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java diff --git a/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml similarity index 89% rename from v1_8_R3/pom.xml rename to internal/v1_8_R3/pom.xml index 972b9ae..7d78fdf 100644 --- a/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -4,7 +4,7 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT @@ -14,7 +14,7 @@ com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java similarity index 100% rename from v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java rename to internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java diff --git a/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java similarity index 98% rename from v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java rename to internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java index 82d9d3e..5b18964 100644 --- a/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_8_R3; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java similarity index 100% rename from v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java rename to internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java diff --git a/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java similarity index 100% rename from v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java rename to internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java diff --git a/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java similarity index 100% rename from v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java rename to internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java diff --git a/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java similarity index 100% rename from v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java rename to internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java diff --git a/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml similarity index 89% rename from v1_9_R1/pom.xml rename to internal/v1_9_R1/pom.xml index 07e89da..13d1c3a 100644 --- a/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -4,7 +4,7 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT @@ -14,7 +14,7 @@ com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java similarity index 100% rename from v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java rename to internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java diff --git a/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java similarity index 98% rename from v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java rename to internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java index c9d48f8..8b2c196 100644 --- a/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_9_R1; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java similarity index 100% rename from v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java rename to internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java diff --git a/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java similarity index 100% rename from v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java rename to internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java diff --git a/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java similarity index 100% rename from v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java rename to internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java diff --git a/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java similarity index 100% rename from v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java rename to internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java diff --git a/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml similarity index 85% rename from v1_9_R2/pom.xml rename to internal/v1_9_R2/pom.xml index d4693b7..b04cc62 100644 --- a/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -4,17 +4,17 @@ com.lishid - openinv + openinvinternal 1.0-SNAPSHOT openinvadapter1_9_R2 - OpenInvaAdapter1_9_R2 + OpenInvAdapter1_9_R2 com.lishid - openinvplugin + openinvcommon 1.0-SNAPSHOT diff --git a/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java similarity index 100% rename from v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java rename to internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java diff --git a/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java similarity index 98% rename from v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java rename to internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java index 0f09b1c..0f00bc8 100644 --- a/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java @@ -19,7 +19,7 @@ package com.lishid.openinv.internal.v1_9_R2; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.internal.InternalAccessor; +import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; diff --git a/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java similarity index 100% rename from v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java rename to internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java diff --git a/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SilentContainerChest.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SilentContainerChest.java similarity index 100% rename from v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SilentContainerChest.java rename to internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SilentContainerChest.java diff --git a/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java similarity index 100% rename from v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java rename to internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java diff --git a/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java similarity index 100% rename from v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java rename to internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml new file mode 100644 index 0000000..dce3c3e --- /dev/null +++ b/plugin/plugin-core/pom.xml @@ -0,0 +1,42 @@ + + 4.0.0 + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + openinvplugincore + OpenInvPluginCore + + + + org.bukkit + bukkit + 1.4.5-R1.0 + provided + + + com.lishid + openinvcommon + 1.0-SNAPSHOT + + + com.lishid + openinvpluginv1_10_r1 + 1.0-SNAPSHOT + + + + + + + src/main/resources + true + + + + + \ No newline at end of file diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java similarity index 94% rename from plugin/src/main/java/com/lishid/openinv/OpenInv.java rename to plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java index 57b034c..60f4733 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java @@ -35,9 +35,14 @@ 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; +import com.lishid.openinv.listeners.InventoryClickListener; +import com.lishid.openinv.listeners.InventoryDragListener; +import com.lishid.openinv.listeners.PlayerListener; import com.lishid.openinv.util.Cache; +import com.lishid.openinv.util.ConfigUpdater; import com.lishid.openinv.util.Function; +import com.lishid.openinv.util.InternalAccessor; +import com.lishid.openinv.util.Permissions; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; @@ -54,7 +59,7 @@ import org.bukkit.scheduler.BukkitRunnable; * * @author lishid */ -public class OpenInv extends JavaPlugin { +public class OpenInv extends JavaPlugin implements IOpenInv { private final Map inventories = new HashMap(); private final Map enderChests = new HashMap(); @@ -120,9 +125,13 @@ public class OpenInv extends JavaPlugin { new ConfigUpdater(this).checkForUpdates(); - pm.registerEvents(new OpenInvPlayerListener(this), this); - pm.registerEvents(new OpenInvInventoryListener(this), this); + // Register listeners + pm.registerEvents(new PlayerListener(this), this); + pm.registerEvents(new InventoryClickListener(this), this); + // Bukkit will handle missing events for us, attempt to register InventoryDragEvent without a version check + pm.registerEvents(new InventoryDragListener(this), this); + // Register commands to their executors getCommand("openinv").setExecutor(new OpenInvPluginCommand(this)); getCommand("openender").setExecutor(new OpenEnderPluginCommand(this)); SearchInvPluginCommand searchInv = new SearchInvPluginCommand(); @@ -149,8 +158,9 @@ public class OpenInv extends JavaPlugin { * * @return true if the server version is supported */ + @Override public boolean isSupportedVersion() { - return this.accessor.isSupported(); + return this.accessor != null && this.accessor.isSupported(); } /** @@ -159,6 +169,7 @@ public class OpenInv extends JavaPlugin { * * @return the IInventoryAccess */ + @Override public IInventoryAccess getInventoryAccess() { return this.inventoryAccess; } @@ -169,6 +180,7 @@ public class OpenInv extends JavaPlugin { * * @return the ISilentContainer */ + @Override public IAnySilentContainer getAnySilentContainer() { return this.anySilentContainer; } @@ -180,6 +192,7 @@ public class OpenInv extends JavaPlugin { * @param online true if the Player is currently online * @return the ISpecialPlayerInventory */ + @Override public ISpecialPlayerInventory getInventory(Player player, boolean online) { String id = playerLoader.getPlayerDataID(player); if (inventories.containsKey(id)) { @@ -198,6 +211,7 @@ public class OpenInv extends JavaPlugin { * @param online true if the Player is currently online * @return the ISpecialEnderChest */ + @Override public ISpecialEnderChest getEnderChest(Player player, boolean online) { String id = playerLoader.getPlayerDataID(player); if (enderChests.containsKey(id)) { @@ -214,6 +228,7 @@ public class OpenInv extends JavaPlugin { * * @param player the OfflinePlayer to unload */ + @Override public void unload(OfflinePlayer player) { this.playerCache.invalidate(this.playerLoader.getPlayerDataID(player)); } @@ -226,6 +241,7 @@ public class OpenInv extends JavaPlugin { * * @return false unless configured otherwise */ + @Override public boolean disableSaving() { return getConfig().getBoolean("settings.disable-saving", false); } @@ -236,6 +252,7 @@ public class OpenInv extends JavaPlugin { * * @return true unless configured otherwise */ + @Override public boolean notifySilentChest() { return getConfig().getBoolean("notify.silent-chest", true); } @@ -246,6 +263,7 @@ public class OpenInv extends JavaPlugin { * * @return true unless configured otherwise */ + @Override public boolean notifyAnyChest() { return getConfig().getBoolean("notify.any-chest", true); } @@ -256,6 +274,7 @@ public class OpenInv extends JavaPlugin { * @param player the OfflinePlayer * @return true if SilentChest is enabled */ + @Override public boolean getPlayerSilentChestStatus(OfflinePlayer player) { return getConfig().getBoolean("toggles.silent-chest." + playerLoader.getPlayerDataID(player), false); } @@ -266,6 +285,7 @@ public class OpenInv extends JavaPlugin { * @param player the OfflinePlayer * @param status the status */ + @Override public void setPlayerSilentChestStatus(OfflinePlayer player, boolean status) { getConfig().set("toggles.silent-chest." + playerLoader.getPlayerDataID(player), status); saveConfig(); @@ -277,6 +297,7 @@ public class OpenInv extends JavaPlugin { * @param player the OfflinePlayer * @return true if AnyChest is enabled */ + @Override public boolean getPlayerAnyChestStatus(OfflinePlayer player) { return getConfig().getBoolean("toggles.any-chest." + playerLoader.getPlayerDataID(player), false); } @@ -287,6 +308,7 @@ public class OpenInv extends JavaPlugin { * @param player the OfflinePlayer * @param status the status */ + @Override public void setPlayerAnyChestStatus(OfflinePlayer player, boolean status) { getConfig().set("toggles.any-chest." + playerLoader.getPlayerDataID(player), status); saveConfig(); @@ -299,6 +321,7 @@ public class OpenInv extends JavaPlugin { * @param offline the OfflinePlayer * @return the identifier */ + @Override public String getPlayerID(OfflinePlayer offline) { return this.playerLoader.getPlayerDataID(offline); } @@ -313,6 +336,7 @@ public class OpenInv extends JavaPlugin { * @param name the name of the Player * @return the OfflinePlayer with the closest matching name or null if no players have ever logged in */ + @Override public OfflinePlayer matchPlayer(String name) { // Warn if called on the main thread - if we resort to searching offline players, this may take several seconds. @@ -391,6 +415,7 @@ public class OpenInv extends JavaPlugin { * @param offline the OfflinePlayer to load a Player for * @return the Player */ + @Override public Player loadPlayer(final OfflinePlayer offline) { if (offline == null) { @@ -473,6 +498,7 @@ public class OpenInv extends JavaPlugin { if (this.inventories.containsKey(key)) { this.inventories.get(key).setPlayerOnline(player); new BukkitRunnable() { + @SuppressWarnings("deprecation") // Unlikely to ever be a viable alternative, Spigot un-deprecated. @Override public void run() { if (player.isOnline()) { diff --git a/plugin/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java similarity index 100% rename from plugin/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java rename to plugin/plugin-core/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java diff --git a/plugin/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java similarity index 99% rename from plugin/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java rename to plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java index 7e8df21..2c1ae54 100644 --- a/plugin/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -19,8 +19,8 @@ package com.lishid.openinv.commands; import java.util.HashMap; import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.util.Permissions; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; diff --git a/plugin/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java similarity index 99% rename from plugin/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java rename to plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java index 9b4d351..8f91596 100644 --- a/plugin/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -19,8 +19,8 @@ package com.lishid.openinv.commands; import java.util.HashMap; import com.lishid.openinv.OpenInv; -import com.lishid.openinv.Permissions; import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.util.Permissions; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; diff --git a/plugin/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java similarity index 100% rename from plugin/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java rename to plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java diff --git a/plugin/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java similarity index 100% rename from plugin/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java rename to plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java diff --git a/plugin/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java similarity index 100% rename from plugin/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java rename to plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInvInventoryListener.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryClickListener.java similarity index 58% rename from plugin/src/main/java/com/lishid/openinv/OpenInvInventoryListener.java rename to plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryClickListener.java index f9eba2c..f9b4fe7 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInvInventoryListener.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryClickListener.java @@ -14,49 +14,36 @@ * along with this program. If not, see . */ -package com.lishid.openinv; +package com.lishid.openinv.listeners; + +import com.lishid.openinv.IOpenInv; +import com.lishid.openinv.util.Permissions; import org.bukkit.entity.HumanEntity; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.inventory.InventoryDragEvent; -import org.bukkit.event.player.PlayerChangedWorldEvent; import org.bukkit.inventory.Inventory; -public class OpenInvInventoryListener implements Listener { +public class InventoryClickListener implements Listener { - private final OpenInv plugin; + private final IOpenInv plugin; - public OpenInvInventoryListener(OpenInv plugin) { + public InventoryClickListener(IOpenInv plugin) { this.plugin = plugin; } @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) public void onInventoryClick(InventoryClickEvent event) { - if (cancelInteract(event.getWhoClicked(), event.getInventory())) { - event.setCancelled(true); - } - } - - @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) - public void onInventoryDrag(InventoryDragEvent event) { - if (cancelInteract(event.getWhoClicked(), event.getInventory())) { - event.setCancelled(true); - } - } - - private boolean cancelInteract(HumanEntity entity, Inventory inventory) { - return plugin.getInventoryAccess().isSpecialPlayerInventory(inventory) + HumanEntity entity = event.getWhoClicked(); + Inventory inventory = event.getInventory(); + if (plugin.getInventoryAccess().isSpecialPlayerInventory(inventory) && !Permissions.EDITINV.hasPermission(entity) || plugin.getInventoryAccess().isSpecialEnderChest(inventory) - && !Permissions.EDITENDER.hasPermission(entity); - } - - @EventHandler - public void onWorldChange(PlayerChangedWorldEvent event) { - plugin.changeWorld(event.getPlayer()); + && !Permissions.EDITENDER.hasPermission(entity)) { + event.setCancelled(true); + } } } diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInvPlayerListener.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PlayerListener.java similarity index 88% rename from plugin/src/main/java/com/lishid/openinv/OpenInvPlayerListener.java rename to plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PlayerListener.java index d0c65ff..984bbdc 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInvPlayerListener.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PlayerListener.java @@ -14,7 +14,10 @@ * along with this program. If not, see . */ -package com.lishid.openinv; +package com.lishid.openinv.listeners; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.util.Permissions; import org.bukkit.entity.Player; import org.bukkit.event.Event.Result; @@ -22,15 +25,16 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerChangedWorldEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; -public class OpenInvPlayerListener implements Listener { +public class PlayerListener implements Listener { private final OpenInv plugin; - public OpenInvPlayerListener(OpenInv plugin) { + public PlayerListener(OpenInv plugin) { this.plugin = plugin; } @@ -44,6 +48,11 @@ public class OpenInvPlayerListener implements Listener { plugin.setPlayerOffline(event.getPlayer()); } + @EventHandler + public void onWorldChange(PlayerChangedWorldEvent event) { + plugin.changeWorld(event.getPlayer()); + } + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerInteract(PlayerInteractEvent event) { if (event.getAction() != Action.RIGHT_CLICK_BLOCK || event.getPlayer().isSneaking() diff --git a/plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/util/ConfigUpdater.java similarity index 98% rename from plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java rename to plugin/plugin-core/src/main/java/com/lishid/openinv/util/ConfigUpdater.java index ee0a826..81d33cb 100644 --- a/plugin/src/main/java/com/lishid/openinv/ConfigUpdater.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/util/ConfigUpdater.java @@ -1,4 +1,4 @@ -package com.lishid.openinv; +package com.lishid.openinv.util; import java.io.File; import java.io.IOException; @@ -6,6 +6,8 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; +import com.lishid.openinv.OpenInv; + import org.bukkit.Material; import org.bukkit.OfflinePlayer; import org.bukkit.configuration.ConfigurationSection; @@ -140,7 +142,6 @@ public class ConfigUpdater { }.runTask(plugin); } - @SuppressWarnings("deprecation") private Material getMaterialById(int id) { Material material = Material.getMaterial(id); diff --git a/plugin/src/main/resources/plugin.yml b/plugin/plugin-core/src/main/resources/plugin.yml similarity index 100% rename from plugin/src/main/resources/plugin.yml rename to plugin/plugin-core/src/main/resources/plugin.yml diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml new file mode 100644 index 0000000..4b0cd48 --- /dev/null +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinvplugin + 1.0-SNAPSHOT + + + openinvpluginv1_10_r1 + OpenInvPluginv1_10_R1 + + + + org.bukkit + bukkit + 1.10-R0.1-SNAPSHOT + provided + + + com.lishid + openinvcommon + 1.0-SNAPSHOT + + + + diff --git a/plugin/plugin-v1_10_R1/src/main/java/com/lishid/openinv/listeners/InventoryDragListener.java b/plugin/plugin-v1_10_R1/src/main/java/com/lishid/openinv/listeners/InventoryDragListener.java new file mode 100644 index 0000000..1b2f18a --- /dev/null +++ b/plugin/plugin-v1_10_R1/src/main/java/com/lishid/openinv/listeners/InventoryDragListener.java @@ -0,0 +1,38 @@ +package com.lishid.openinv.listeners; + +import com.lishid.openinv.IOpenInv; +import com.lishid.openinv.util.Permissions; + +import org.bukkit.entity.HumanEntity; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryDragEvent; +import org.bukkit.inventory.Inventory; + +/** + * Listener for InventoryDragEvents to prevent unpermitted modification of special inventories. + * + * @author Jikoo + */ +public class InventoryDragListener implements Listener { + + private final IOpenInv plugin; + + public InventoryDragListener(IOpenInv plugin) { + this.plugin = plugin; + } + + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + public void onInventoryDrag(InventoryDragEvent event) { + HumanEntity entity = event.getWhoClicked(); + Inventory inventory = event.getInventory(); + if (plugin.getInventoryAccess().isSpecialPlayerInventory(inventory) + && !Permissions.EDITINV.hasPermission(entity) + || plugin.getInventoryAccess().isSpecialEnderChest(inventory) + && !Permissions.EDITENDER.hasPermission(entity)) { + event.setCancelled(true); + } + } + +} diff --git a/plugin/pom.xml b/plugin/pom.xml index 64c32d7..a386781 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -4,35 +4,18 @@ com.lishid - openinv + openinvparent 1.0-SNAPSHOT openinvplugin OpenInvPlugin - - - org.bukkit - bukkit - - 1.11-R0.1-SNAPSHOT - provided - - - com.lishid - openinvinternal - 1.0-SNAPSHOT - - + pom - - - - src/main/resources - true - - - + + plugin-v1_10_R1 + plugin-core + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 9214a37..cc71f52 100644 --- a/pom.xml +++ b/pom.xml @@ -1,44 +1,41 @@ 4.0.0 + com.lishid - openinv - pom - 1.0-SNAPSHOT - OpenInv + openinvparent + OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ + 1.0-SNAPSHOT + + pom UTF-8 3.0.3-SNAPSHOT + + api + common + plugin + internal + assembly + + - - reactorbuildfirst + all - - !breakBuildProcess - + true - - internal - plugin - @@ -49,9 +46,6 @@ true - - v1_11_R1 - @@ -62,62 +56,6 @@ true - - v1_8_R1 - v1_8_R2 - v1_8_R3 - v1_9_R1 - v1_9_R2 - v1_10_R1 - v1_11_R1 - - - - - all - - true - - - 1_4_5 - 1_4_6 - v1_4_R1 - - v1_5_R2 - v1_5_R3 - - v1_6_R1 - v1_6_R2 - v1_6_R3 - - v1_7_R1 - v1_7_R2 - v1_7_R3 - v1_7_R4 - v1_8_R1 - v1_8_R2 - v1_8_R3 - v1_9_R1 - v1_9_R2 - v1_10_R1 - v1_11_R1 - - - - - - reactorbuildlast - - - !breakBuildProcess - - - - assembly - -- 2.49.1 From f31356b227a0371e1578dc1604580e471f363bbc Mon Sep 17 00:00:00 2001 From: Jikoo Date: Mon, 5 Dec 2016 19:01:21 -0500 Subject: [PATCH 080/253] Fix permissions mistakes in readme --- README.MD | 4 ++-- api/src/main/java/com/lishid/openinv/IOpenInv.java | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/README.MD b/README.MD index 2014cf4..b9ddba6 100644 --- a/README.MD +++ b/README.MD @@ -10,7 +10,7 @@ OpenInv is a [Bukkit plugin](https://dev.bukkit.org/bukkit-plugins/openinv/) whi - **OpenEnder**: Open anyone's inventory, even if they're offline. - Read-only mode! No edits allowed! Don't grant `OpenInv.editender` - Cross-world support! Don't grant `OpenInv.crossworld` - - No self-opening! Don't grant `OpenInv.openself` + - No opening others! Don't grant `OpenInv.openenderall` - **SilentChest**: Open containers without displaying an animation or making sound. - **AnyChest**: Open containers, even if blocked by ocelots or blocks. @@ -80,7 +80,7 @@ OpenInv is a [Bukkit plugin](https://dev.bukkit.org/bukkit-plugins/openinv/) whi Required to use /openender. - OpenInv.editinv + OpenInv.editender Required to make changes to open ender chests. diff --git a/api/src/main/java/com/lishid/openinv/IOpenInv.java b/api/src/main/java/com/lishid/openinv/IOpenInv.java index 8eee839..28514fc 100644 --- a/api/src/main/java/com/lishid/openinv/IOpenInv.java +++ b/api/src/main/java/com/lishid/openinv/IOpenInv.java @@ -15,8 +15,6 @@ import org.bukkit.entity.Player; */ public interface IOpenInv { - - /** * Checks if the server version is supported by OpenInv. * -- 2.49.1 From 802ce28103679d987a70635fb2d2fe697dd7a1fd Mon Sep 17 00:00:00 2001 From: Jikoo Date: Mon, 5 Dec 2016 19:02:43 -0500 Subject: [PATCH 081/253] Fix issue caused by module cleanup while backporting awarding achievement --- .../internal/v1_10_R1/AnySilentContainer.java | 19 +++++++++++-------- .../internal/v1_11_R1/AnySilentContainer.java | 4 ++-- .../internal/v1_8_R1/AnySilentContainer.java | 15 +++++++++------ .../internal/v1_8_R2/AnySilentContainer.java | 19 +++++++++++-------- .../internal/v1_8_R3/AnySilentContainer.java | 19 +++++++++++-------- .../internal/v1_9_R1/AnySilentContainer.java | 15 +++++++++------ .../internal/v1_9_R2/AnySilentContainer.java | 19 +++++++++++-------- 7 files changed, 64 insertions(+), 46 deletions(-) diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java index 8e3a01c..36c3ae9 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java @@ -29,6 +29,7 @@ import net.minecraft.server.v1_10_R1.BlockChest; import net.minecraft.server.v1_10_R1.BlockChest.Type; import net.minecraft.server.v1_10_R1.BlockEnderChest; import net.minecraft.server.v1_10_R1.BlockPosition; +import net.minecraft.server.v1_10_R1.Container; import net.minecraft.server.v1_10_R1.Entity; import net.minecraft.server.v1_10_R1.EntityOcelot; import net.minecraft.server.v1_10_R1.EntityPlayer; @@ -145,6 +146,7 @@ public class AnySilentContainer implements IAnySilentContainer { } Block block = world.getType(blockPosition).getBlock(); + Container container = null; if (block instanceof BlockChest) { for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { @@ -171,26 +173,27 @@ public class AnySilentContainer implements IAnySilentContainer { } if (silentchest) { - tile = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + container = new SilentContainerChest(player.inventory, ((IInventory) tile), player); } - if (((BlockChest) block).g == Type.BASIC) + if (((BlockChest) block).g == Type.BASIC) { player.b(StatisticList.ac); - else if (((BlockChest) block).g == Type.TRAP) { + } else if (((BlockChest) block).g == Type.TRAP) { player.b(StatisticList.W); } } boolean returnValue = false; - if (!silentchest) { - player.openContainer((IInventory) tile); + final IInventory iInventory = (IInventory) tile; + + if (!silentchest || container == null) { + player.openContainer(iInventory); returnValue = true; } else { try { - SilentContainerChest silentContainerChest = new SilentContainerChest(player.inventory, ((IInventory) tile), player); int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, "minecraft:chest", ((IInventory) tile).getScoreboardDisplayName(), ((IInventory) tile).getSize())); - player.activeContainer = silentContainerChest; + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, iInventory.getName(), iInventory.getScoreboardDisplayName(), iInventory.getSize())); + player.activeContainer = container; player.activeContainer.windowId = windowId; player.activeContainer.addSlotListener(player); returnValue = true; diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java index bd084ba..55b1d53 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java @@ -211,9 +211,9 @@ public class AnySilentContainer implements IAnySilentContainer { break; } - if (blockChest.g == Type.BASIC) + if (blockChest.g == Type.BASIC) { player.b(StatisticList.ac); - else if (blockChest.g == Type.TRAP) { + } else if (blockChest.g == Type.TRAP) { player.b(StatisticList.W); } diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java index 6968d2d..a3768e1 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java @@ -28,6 +28,7 @@ import net.minecraft.server.v1_8_R1.Block; import net.minecraft.server.v1_8_R1.BlockChest; import net.minecraft.server.v1_8_R1.BlockEnderChest; import net.minecraft.server.v1_8_R1.BlockPosition; +import net.minecraft.server.v1_8_R1.Container; import net.minecraft.server.v1_8_R1.EntityOcelot; import net.minecraft.server.v1_8_R1.EntityPlayer; import net.minecraft.server.v1_8_R1.EnumDirection; @@ -145,6 +146,7 @@ public class AnySilentContainer implements IAnySilentContainer { } Block block = world.getType(blockPosition).getBlock(); + Container container = null; if (block instanceof BlockChest) { for (EnumDirection localEnumDirection : EnumDirection.values()) { @@ -176,20 +178,21 @@ public class AnySilentContainer implements IAnySilentContainer { } if (silentchest) { - tile = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + container = new SilentContainerChest(player.inventory, ((IInventory) tile), player); } } boolean returnValue = false; - if (!silentchest) { - player.openContainer((IInventory) tile); + final IInventory iInventory = (IInventory) tile; + + if (!silentchest || container == null) { + player.openContainer(iInventory); returnValue = true; } else { try { - SilentContainerChest silentContainerChest = new SilentContainerChest(player.inventory, ((IInventory) tile), player); int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, "minecraft:chest", ((IInventory) tile).getScoreboardDisplayName(), ((IInventory) tile).getSize())); - player.activeContainer = silentContainerChest; + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, iInventory.getName(), iInventory.getScoreboardDisplayName(), iInventory.getSize())); + player.activeContainer = container; player.activeContainer.windowId = windowId; player.activeContainer.addSlotListener(player); returnValue = true; diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java index ebf2042..564fdcc 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java @@ -28,6 +28,7 @@ import net.minecraft.server.v1_8_R2.Block; import net.minecraft.server.v1_8_R2.BlockChest; import net.minecraft.server.v1_8_R2.BlockEnderChest; import net.minecraft.server.v1_8_R2.BlockPosition; +import net.minecraft.server.v1_8_R2.Container; import net.minecraft.server.v1_8_R2.Entity; import net.minecraft.server.v1_8_R2.EntityOcelot; import net.minecraft.server.v1_8_R2.EntityPlayer; @@ -144,6 +145,7 @@ public class AnySilentContainer implements IAnySilentContainer { } Block block = world.getType(blockPosition).getBlock(); + Container container = null; if (block instanceof BlockChest) { for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { @@ -170,26 +172,27 @@ public class AnySilentContainer implements IAnySilentContainer { } if (silentchest) { - tile = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + container = new SilentContainerChest(player.inventory, ((IInventory) tile), player); } - if (((BlockChest) block).b == 0) + if (((BlockChest) block).b == 0) { player.b(StatisticList.aa); - else if (((BlockChest) block).b == 1) { + } else if (((BlockChest) block).b == 1) { player.b(StatisticList.U); } } boolean returnValue = false; - if (!silentchest) { - player.openContainer((IInventory) tile); + final IInventory iInventory = (IInventory) tile; + + if (!silentchest || container == null) { + player.openContainer(iInventory); returnValue = true; } else { try { - SilentContainerChest silentContainerChest = new SilentContainerChest(player.inventory, ((IInventory) tile), player); int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, "minecraft:chest", ((IInventory) tile).getScoreboardDisplayName(), ((IInventory) tile).getSize())); - player.activeContainer = silentContainerChest; + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, iInventory.getName(), iInventory.getScoreboardDisplayName(), iInventory.getSize())); + player.activeContainer = container; player.activeContainer.windowId = windowId; player.activeContainer.addSlotListener(player); returnValue = true; diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java index ec13927..6d2f3c3 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java @@ -28,6 +28,7 @@ import net.minecraft.server.v1_8_R3.Block; import net.minecraft.server.v1_8_R3.BlockChest; import net.minecraft.server.v1_8_R3.BlockEnderChest; import net.minecraft.server.v1_8_R3.BlockPosition; +import net.minecraft.server.v1_8_R3.Container; import net.minecraft.server.v1_8_R3.Entity; import net.minecraft.server.v1_8_R3.EntityOcelot; import net.minecraft.server.v1_8_R3.EntityPlayer; @@ -144,6 +145,7 @@ public class AnySilentContainer implements IAnySilentContainer { } Block block = world.getType(blockPosition).getBlock(); + Container container = null; if (block instanceof BlockChest) { for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { @@ -170,26 +172,27 @@ public class AnySilentContainer implements IAnySilentContainer { } if (silentchest) { - tile = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + container = new SilentContainerChest(player.inventory, ((IInventory) tile), player); } - if (((BlockChest) block).b == 0) + if (((BlockChest) block).b == 0) { player.b(StatisticList.aa); - else if (((BlockChest) block).b == 1) { + } else if (((BlockChest) block).b == 1) { player.b(StatisticList.U); } } boolean returnValue = false; - if (!silentchest) { - player.openContainer((IInventory) tile); + final IInventory iInventory = (IInventory) tile; + + if (!silentchest || container == null) { + player.openContainer(iInventory); returnValue = true; } else { try { - SilentContainerChest silentContainerChest = new SilentContainerChest(player.inventory, ((IInventory) tile), player); int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, "minecraft:chest", ((IInventory) tile).getScoreboardDisplayName(), ((IInventory) tile).getSize())); - player.activeContainer = silentContainerChest; + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, iInventory.getName(), iInventory.getScoreboardDisplayName(), iInventory.getSize())); + player.activeContainer = container; player.activeContainer.windowId = windowId; player.activeContainer.addSlotListener(player); returnValue = true; diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java index eaf4f2f..536f3ae 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java @@ -28,6 +28,7 @@ import net.minecraft.server.v1_9_R1.Block; import net.minecraft.server.v1_9_R1.BlockChest; import net.minecraft.server.v1_9_R1.BlockEnderChest; import net.minecraft.server.v1_9_R1.BlockPosition; +import net.minecraft.server.v1_9_R1.Container; import net.minecraft.server.v1_9_R1.Entity; import net.minecraft.server.v1_9_R1.EntityOcelot; import net.minecraft.server.v1_9_R1.EntityPlayer; @@ -144,6 +145,7 @@ public class AnySilentContainer implements IAnySilentContainer { } Block block = world.getType(blockPosition).getBlock(); + Container container = null; if (block instanceof BlockChest) { for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { @@ -170,7 +172,7 @@ public class AnySilentContainer implements IAnySilentContainer { } if (silentchest) { - tile = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + container = new SilentContainerChest(player.inventory, ((IInventory) tile), player); } if (((BlockChest) block).g == BlockChest.Type.BASIC) @@ -181,15 +183,16 @@ public class AnySilentContainer implements IAnySilentContainer { } boolean returnValue = false; - if (!silentchest) { - player.openContainer((IInventory) tile); + final IInventory iInventory = (IInventory) tile; + + if (!silentchest || container == null) { + player.openContainer(iInventory); returnValue = true; } else { try { - SilentContainerChest silentContainerChest = new SilentContainerChest(player.inventory, ((IInventory) tile), player); int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, "minecraft:chest", ((IInventory) tile).getScoreboardDisplayName(), ((IInventory) tile).getSize())); - player.activeContainer = silentContainerChest; + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, iInventory.getName(), iInventory.getScoreboardDisplayName(), iInventory.getSize())); + player.activeContainer = container; player.activeContainer.windowId = windowId; player.activeContainer.addSlotListener(player); returnValue = true; diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java index 5adea2e..b2a5a09 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java @@ -28,6 +28,7 @@ import net.minecraft.server.v1_9_R2.Block; import net.minecraft.server.v1_9_R2.BlockChest; import net.minecraft.server.v1_9_R2.BlockEnderChest; import net.minecraft.server.v1_9_R2.BlockPosition; +import net.minecraft.server.v1_9_R2.Container; import net.minecraft.server.v1_9_R2.Entity; import net.minecraft.server.v1_9_R2.EntityOcelot; import net.minecraft.server.v1_9_R2.EntityPlayer; @@ -144,6 +145,7 @@ public class AnySilentContainer implements IAnySilentContainer { } Block block = world.getType(blockPosition).getBlock(); + Container container = null; if (block instanceof BlockChest) { for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { @@ -170,26 +172,27 @@ public class AnySilentContainer implements IAnySilentContainer { } if (silentchest) { - tile = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + container = new SilentContainerChest(player.inventory, ((IInventory) tile), player); } - if (((BlockChest) block).g == BlockChest.Type.BASIC) + if (((BlockChest) block).g == BlockChest.Type.BASIC) { player.b(StatisticList.ac); - else if (((BlockChest) block).g == BlockChest.Type.TRAP) { + } else if (((BlockChest) block).g == BlockChest.Type.TRAP) { player.b(StatisticList.W); } } boolean returnValue = false; - if (!silentchest) { - player.openContainer((IInventory) tile); + final IInventory iInventory = (IInventory) tile; + + if (!silentchest || container == null) { + player.openContainer(iInventory); returnValue = true; } else { try { - SilentContainerChest silentContainerChest = new SilentContainerChest(player.inventory, ((IInventory) tile), player); int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, "minecraft:chest", ((IInventory) tile).getScoreboardDisplayName(), ((IInventory) tile).getSize())); - player.activeContainer = silentContainerChest; + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, iInventory.getName(), iInventory.getScoreboardDisplayName(), iInventory.getSize())); + player.activeContainer = container; player.activeContainer.windowId = windowId; player.activeContainer.addSlotListener(player); returnValue = true; -- 2.49.1 From d24827ffcb8725f5befc9abe1b92c5a3f3b8ac61 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 14 Dec 2016 19:49:18 -0500 Subject: [PATCH 082/253] Allow plugins to indicate to OpenInv that a Player is in use This allows API users to prevent issues caused by multiple different copies of the Player being loaded, such as #49. Multiple instances of the same player could be obtained by calling IOpenInv#loadPlayer, waiting for OpenInv to remove it from the cache, then calling the method again. --- .../java/com/lishid/openinv/IOpenInv.java | 34 ++++++++++++++++ .../main/java/com/lishid/openinv/OpenInv.java | 39 ++++++++++++++++++- pom.xml | 2 +- 3 files changed, 73 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/com/lishid/openinv/IOpenInv.java b/api/src/main/java/com/lishid/openinv/IOpenInv.java index 28514fc..775a63b 100644 --- a/api/src/main/java/com/lishid/openinv/IOpenInv.java +++ b/api/src/main/java/com/lishid/openinv/IOpenInv.java @@ -7,6 +7,7 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; /** * Interface defining behavior for the OpenInv plugin. @@ -150,4 +151,37 @@ public interface IOpenInv { */ public Player loadPlayer(final OfflinePlayer offline); + /** + * Mark a Player as in use by a Plugin to prevent it from being removed from the cache. Used to + * prevent issues with multiple copies of the same Player being loaded such as lishid#49. + * Changes made to loaded copies overwrite changes to the others when saved, leading to + * duplication bugs and more. + *

+ * When finished with the Player object, be sure to call {@link #releasePlayer(Player, Plugin)} + * to prevent the cache from keeping it stored until the plugin is disabled. + *

+ * When using a Player object from OpenInv, you must handle the Player coming online, replacing + * your Player reference with the Player from the PlayerJoinEvent. In addition, you must change + * any values in the Player to reflect any unsaved alterations to the existing Player which do + * not affect the inventory or ender chest contents. + *

+ * OpenInv only saves player data when unloading a Player from the cache, and then only if + * {@link #disableSaving()} returns false. If you are making changes that OpenInv does not cause + * to persist when a Player logs in as noted above, it is suggested that you manually call + * {@link Player#saveData()} when releasing your reference to ensure your changes persist. + * + * @param player the Player + * @param plugin the Plugin holding the reference to the Player + */ + public void retainPlayer(Player player, Plugin plugin); + + /** + * Mark a Player as no longer in use by a Plugin to allow OpenInv to remove it from the cache + * when eligible. + * + * @param player the Player + * @param plugin the Plugin no longer holding a reference to the Player + */ + public void releasePlayer(Player player, Plugin plugin); + } diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java index 60f4733..334e5cc 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java @@ -44,12 +44,16 @@ import com.lishid.openinv.util.Function; import com.lishid.openinv.util.InternalAccessor; import com.lishid.openinv.util.Permissions; +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Multimap; + import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.PluginCommand; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; +import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitRunnable; @@ -63,13 +67,17 @@ public class OpenInv extends JavaPlugin implements IOpenInv { private final Map inventories = new HashMap(); private final Map enderChests = new HashMap(); + // TODO: handle plugin unload + private final Multimap> pluginUsage = HashMultimap.create(); + private final Cache playerCache = new Cache(300000L, new Function() { @Override public boolean run(Player value) { String key = playerLoader.getPlayerDataID(value); return inventories.containsKey(key) && inventories.get(key).isInUse() - || enderChests.containsKey(key) && enderChests.get(key).isInUse(); + || enderChests.containsKey(key) && enderChests.get(key).isInUse() + || pluginUsage.containsKey(key); } }, new Function() { @@ -427,6 +435,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return this.playerCache.get(key); } + // TODO: wrap Player to ensure all methods can safely be called offline Player loaded; if (offline.isOnline()) { @@ -479,6 +488,34 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return loaded; } + /** + * @see com.lishid.openinv.IOpenInv#retainPlayer(org.bukkit.entity.Player, org.bukkit.plugin.Plugin) + */ + @Override + public void retainPlayer(Player player, Plugin plugin) { + String key = this.playerLoader.getPlayerDataID(player); + + if (this.pluginUsage.containsEntry(key, plugin.getClass())) { + return; + } + + this.pluginUsage.put(key, plugin.getClass()); + } + + /** + * @see com.lishid.openinv.IOpenInv#releasePlayer(org.bukkit.entity.Player, org.bukkit.plugin.Plugin) + */ + @Override + public void releasePlayer(Player player, Plugin plugin) { + String key = this.playerLoader.getPlayerDataID(player); + + if (!this.pluginUsage.containsEntry(key, plugin.getClass())) { + return; + } + + this.pluginUsage.remove(key, plugin.getClass()); + } + /** * Method for handling a Player coming online. * diff --git a/pom.xml b/pom.xml index cc71f52..7dea94c 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ UTF-8 - 3.0.3-SNAPSHOT + 3.0.4-SNAPSHOT -- 2.49.1 From a41f89b011e98898a0916b0b92fd39b71b053562 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 16 Dec 2016 15:13:04 -0500 Subject: [PATCH 083/253] Release any players held by a disabling plugin --- .../main/java/com/lishid/openinv/OpenInv.java | 12 ++++++++- .../openinv/listeners/PluginListener.java | 27 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PluginListener.java diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java index 334e5cc..2cbdeb3 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java @@ -38,6 +38,7 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.listeners.InventoryClickListener; import com.lishid.openinv.listeners.InventoryDragListener; import com.lishid.openinv.listeners.PlayerListener; +import com.lishid.openinv.listeners.PluginListener; import com.lishid.openinv.util.Cache; import com.lishid.openinv.util.ConfigUpdater; import com.lishid.openinv.util.Function; @@ -67,7 +68,6 @@ public class OpenInv extends JavaPlugin implements IOpenInv { private final Map inventories = new HashMap(); private final Map enderChests = new HashMap(); - // TODO: handle plugin unload private final Multimap> pluginUsage = HashMultimap.create(); private final Cache playerCache = new Cache(300000L, @@ -135,6 +135,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { // Register listeners pm.registerEvents(new PlayerListener(this), this); + pm.registerEvents(new PluginListener(this), this); pm.registerEvents(new InventoryClickListener(this), this); // Bukkit will handle missing events for us, attempt to register InventoryDragEvent without a version check pm.registerEvents(new InventoryDragListener(this), this); @@ -516,6 +517,15 @@ public class OpenInv extends JavaPlugin implements IOpenInv { this.pluginUsage.remove(key, plugin.getClass()); } + /** + * Unmark any Players in use by the specified Plugin. + * + * @param plugin + */ + public void releaseAllPlayers(Plugin plugin) { + this.pluginUsage.removeAll(plugin.getClass()); + } + /** * Method for handling a Player coming online. * diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PluginListener.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PluginListener.java new file mode 100644 index 0000000..ea7dea8 --- /dev/null +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PluginListener.java @@ -0,0 +1,27 @@ +package com.lishid.openinv.listeners; + +import com.lishid.openinv.OpenInv; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.server.PluginDisableEvent; + +/** + * Listener for plugin-related events. + * + * @author Jikoo + */ +public class PluginListener implements Listener { + + private final OpenInv plugin; + + public PluginListener(OpenInv plugin) { + this.plugin = plugin; + } + + @EventHandler + public void onPluginDisable(PluginDisableEvent event) { + plugin.releaseAllPlayers(event.getPlugin()); + } + +} -- 2.49.1 From f05110c9b878cc18c5f06e641db8e014bcd09003 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Thu, 22 Dec 2016 09:55:51 -0500 Subject: [PATCH 084/253] Fix getOnlinePlayers call to support all versions Moved IPlayerDataManager from api module to common module - it is not part of the API as there is no supported way to obtain an instance of it. --- .../openinv/internal/IPlayerDataManager.java | 9 +++++ .../internal/v1_4_5/PlayerDataManager.java | 8 ++++ .../internal/v1_4_6/PlayerDataManager.java | 8 ++++ .../internal/v1_10_R1/PlayerDataManager.java | 6 +++ .../internal/v1_11_R1/PlayerDataManager.java | 6 +++ .../internal/v1_4_R1/PlayerDataManager.java | 8 ++++ .../internal/v1_5_R2/PlayerDataManager.java | 8 ++++ .../internal/v1_5_R3/PlayerDataManager.java | 8 ++++ .../internal/v1_6_R1/PlayerDataManager.java | 8 ++++ .../internal/v1_6_R2/PlayerDataManager.java | 8 ++++ .../internal/v1_6_R3/PlayerDataManager.java | 8 ++++ .../internal/v1_7_R1/PlayerDataManager.java | 8 ++++ .../internal/v1_7_R2/PlayerDataManager.java | 8 ++++ .../internal/v1_7_R3/PlayerDataManager.java | 7 ++++ internal/v1_7_R4/pom.xml | 6 +++ .../internal/v1_7_R4/PlayerDataManager.java | 6 +++ .../internal/v1_8_R1/PlayerDataManager.java | 6 +++ .../internal/v1_8_R2/PlayerDataManager.java | 6 +++ .../internal/v1_8_R3/PlayerDataManager.java | 6 +++ .../internal/v1_9_R1/PlayerDataManager.java | 6 +++ .../internal/v1_9_R2/PlayerDataManager.java | 6 +++ .../main/java/com/lishid/openinv/OpenInv.java | 38 ++++++++++++++++++- .../commands/SearchEnchantPluginCommand.java | 11 +++++- .../commands/SearchInvPluginCommand.java | 11 +++++- 24 files changed, 204 insertions(+), 6 deletions(-) rename {api => common}/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java (87%) diff --git a/api/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java b/common/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java similarity index 87% rename from api/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java rename to common/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java index cddf6a5..4024564 100644 --- a/api/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java +++ b/common/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java @@ -16,6 +16,8 @@ package com.lishid.openinv.internal; +import java.util.Collection; + import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; @@ -47,4 +49,11 @@ public interface IPlayerDataManager { */ public OfflinePlayer getPlayerByID(String identifier); + /** + * Gets a Collection of all Players currently online. + * + * @return the Collection of Players + */ + public Collection getOnlinePlayers(); + } diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java index e3a8ea5..104b282 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java @@ -16,6 +16,9 @@ package com.lishid.openinv.internal.v1_4_5; +import java.util.Arrays; +import java.util.Collection; + import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; @@ -69,4 +72,9 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } + @Override + public Collection getOnlinePlayers() { + return Arrays.asList(Bukkit.getOnlinePlayers()); + } + } diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java index 0c09f7b..38c91c2 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java @@ -16,6 +16,9 @@ package com.lishid.openinv.internal.v1_4_6; +import java.util.Arrays; +import java.util.Collection; + import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; @@ -69,4 +72,9 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } + @Override + public Collection getOnlinePlayers() { + return Arrays.asList(Bukkit.getOnlinePlayers()); + } + } diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java index 3909151..1b784fd 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java @@ -16,6 +16,7 @@ package com.lishid.openinv.internal.v1_10_R1; +import java.util.Collection; import java.util.UUID; import com.lishid.openinv.internal.IPlayerDataManager; @@ -79,4 +80,9 @@ public class PlayerDataManager implements IPlayerDataManager { } } + @Override + public Collection getOnlinePlayers() { + return Bukkit.getOnlinePlayers(); + } + } diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java index 30bb00e..cc376ad 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java @@ -16,6 +16,7 @@ package com.lishid.openinv.internal.v1_11_R1; +import java.util.Collection; import java.util.UUID; import com.lishid.openinv.internal.IPlayerDataManager; @@ -79,4 +80,9 @@ public class PlayerDataManager implements IPlayerDataManager { } } + @Override + public Collection getOnlinePlayers() { + return Bukkit.getOnlinePlayers(); + } + } diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java index f88713c..796d272 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java @@ -16,6 +16,9 @@ package com.lishid.openinv.internal.v1_4_R1; +import java.util.Arrays; +import java.util.Collection; + import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; @@ -70,4 +73,9 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } + @Override + public Collection getOnlinePlayers() { + return Arrays.asList(Bukkit.getOnlinePlayers()); + } + } diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java index 1bea276..50ed22b 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java @@ -16,6 +16,9 @@ package com.lishid.openinv.internal.v1_5_R2; +import java.util.Arrays; +import java.util.Collection; + import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; @@ -69,4 +72,9 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } + @Override + public Collection getOnlinePlayers() { + return Arrays.asList(Bukkit.getOnlinePlayers()); + } + } diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java index fbe6646..c0b181e 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java @@ -16,6 +16,9 @@ package com.lishid.openinv.internal.v1_5_R3; +import java.util.Arrays; +import java.util.Collection; + import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; @@ -69,4 +72,9 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } + @Override + public Collection getOnlinePlayers() { + return Arrays.asList(Bukkit.getOnlinePlayers()); + } + } diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java index 3429d10..d1559f6 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java @@ -16,6 +16,9 @@ package com.lishid.openinv.internal.v1_6_R1; +import java.util.Arrays; +import java.util.Collection; + import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; @@ -69,4 +72,9 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } + @Override + public Collection getOnlinePlayers() { + return Arrays.asList(Bukkit.getOnlinePlayers()); + } + } diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java index 03f50fa..36160bc 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java @@ -16,6 +16,9 @@ package com.lishid.openinv.internal.v1_6_R2; +import java.util.Arrays; +import java.util.Collection; + import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; @@ -69,4 +72,9 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } + @Override + public Collection getOnlinePlayers() { + return Arrays.asList(Bukkit.getOnlinePlayers()); + } + } diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java index b0abe80..4f8758c 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java @@ -16,6 +16,9 @@ package com.lishid.openinv.internal.v1_6_R3; +import java.util.Arrays; +import java.util.Collection; + import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; @@ -69,4 +72,9 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } + @Override + public Collection getOnlinePlayers() { + return Arrays.asList(Bukkit.getOnlinePlayers()); + } + } diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java index aa3795a..1b94342 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java @@ -16,6 +16,9 @@ package com.lishid.openinv.internal.v1_7_R1; +import java.util.Arrays; +import java.util.Collection; + import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; @@ -70,4 +73,9 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } + @Override + public Collection getOnlinePlayers() { + return Arrays.asList(Bukkit.getOnlinePlayers()); + } + } diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java index d30a20c..cd786df 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java @@ -16,6 +16,9 @@ package com.lishid.openinv.internal.v1_7_R2; +import java.util.Arrays; +import java.util.Collection; + import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; @@ -71,4 +74,9 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } + @Override + public Collection getOnlinePlayers() { + return Arrays.asList(Bukkit.getOnlinePlayers()); + } + } diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java index 8569033..ecc6cf0 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java @@ -16,6 +16,8 @@ package com.lishid.openinv.internal.v1_7_R3; +import java.util.Arrays; +import java.util.Collection; import java.util.UUID; import com.lishid.openinv.internal.IPlayerDataManager; @@ -78,4 +80,9 @@ public class PlayerDataManager implements IPlayerDataManager { } } + @Override + public Collection getOnlinePlayers() { + return Arrays.asList(Bukkit.getOnlinePlayers()); + } + } diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 50ec61f..5afa9b8 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -17,6 +17,12 @@ openinvcommon 1.0-SNAPSHOT + + org.spigotmc + spigot-api + 1.7.10-R0.1-snapshot + provided + org.bukkit craftbukkit diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java index 5209859..62f85b9 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java @@ -16,6 +16,7 @@ package com.lishid.openinv.internal.v1_7_R4; +import java.util.Collection; import java.util.UUID; import com.lishid.openinv.internal.IPlayerDataManager; @@ -78,4 +79,9 @@ public class PlayerDataManager implements IPlayerDataManager { } } + @Override + public Collection getOnlinePlayers() { + return Bukkit.getOnlinePlayers(); + } + } diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java index bbd9e26..4e5c5c5 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java @@ -16,6 +16,7 @@ package com.lishid.openinv.internal.v1_8_R1; +import java.util.Collection; import java.util.UUID; import com.lishid.openinv.internal.IPlayerDataManager; @@ -79,4 +80,9 @@ public class PlayerDataManager implements IPlayerDataManager { } } + @Override + public Collection getOnlinePlayers() { + return Bukkit.getOnlinePlayers(); + } + } diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java index 6e9d1de..4106af1 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java @@ -16,6 +16,7 @@ package com.lishid.openinv.internal.v1_8_R2; +import java.util.Collection; import java.util.UUID; import com.lishid.openinv.internal.IPlayerDataManager; @@ -79,4 +80,9 @@ public class PlayerDataManager implements IPlayerDataManager { } } + @Override + public Collection getOnlinePlayers() { + return Bukkit.getOnlinePlayers(); + } + } diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java index e7e6a4e..62eee4c 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java @@ -16,6 +16,7 @@ package com.lishid.openinv.internal.v1_8_R3; +import java.util.Collection; import java.util.UUID; import com.lishid.openinv.internal.IPlayerDataManager; @@ -79,4 +80,9 @@ public class PlayerDataManager implements IPlayerDataManager { } } + @Override + public Collection getOnlinePlayers() { + return Bukkit.getOnlinePlayers(); + } + } diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java index 7e2cd46..3a89a49 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java @@ -16,6 +16,7 @@ package com.lishid.openinv.internal.v1_9_R1; +import java.util.Collection; import java.util.UUID; import com.lishid.openinv.internal.IPlayerDataManager; @@ -79,4 +80,9 @@ public class PlayerDataManager implements IPlayerDataManager { } } + @Override + public Collection getOnlinePlayers() { + return Bukkit.getOnlinePlayers(); + } + } diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java index fa8d3d8..d5fc3d2 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java @@ -16,6 +16,7 @@ package com.lishid.openinv.internal.v1_9_R2; +import java.util.Collection; import java.util.UUID; import com.lishid.openinv.internal.IPlayerDataManager; @@ -79,4 +80,9 @@ public class PlayerDataManager implements IPlayerDataManager { } } + @Override + public Collection getOnlinePlayers() { + return Bukkit.getOnlinePlayers(); + } + } diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java index 2cbdeb3..36586ba 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java @@ -16,6 +16,10 @@ package com.lishid.openinv; +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -143,10 +147,10 @@ public class OpenInv extends JavaPlugin implements IOpenInv { // Register commands to their executors getCommand("openinv").setExecutor(new OpenInvPluginCommand(this)); getCommand("openender").setExecutor(new OpenEnderPluginCommand(this)); - SearchInvPluginCommand searchInv = new SearchInvPluginCommand(); + SearchInvPluginCommand searchInv = new SearchInvPluginCommand(this); getCommand("searchinv").setExecutor(searchInv); getCommand("searchender").setExecutor(searchInv); - getCommand("searchenchant").setExecutor(new SearchEnchantPluginCommand()); + getCommand("searchenchant").setExecutor(new SearchEnchantPluginCommand(this)); getCommand("silentchest").setExecutor(new SilentChestPluginCommand(this)); getCommand("anychest").setExecutor(new AnyChestPluginCommand(this)); @@ -526,6 +530,36 @@ public class OpenInv extends JavaPlugin implements IOpenInv { this.pluginUsage.removeAll(plugin.getClass()); } + @SuppressWarnings("unchecked") + public Collection getOnlinePlayers() { + + if (this.playerLoader != null) { + return this.playerLoader.getOnlinePlayers(); + } + + Method getOnlinePlayers; + try { + getOnlinePlayers = Bukkit.class.getDeclaredMethod("getOnlinePlayers"); + } catch (Exception e) { + e.printStackTrace(); + return Collections.emptyList(); + } + + Object onlinePlayers; + try { + onlinePlayers = getOnlinePlayers.invoke(null); + } catch (Exception e) { + e.printStackTrace(); + return Collections.emptyList(); + } + + if (onlinePlayers instanceof List) { + return (Collection) onlinePlayers; + } + + return Arrays.asList((Player[]) onlinePlayers); + } + /** * Method for handling a Player coming online. * diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java index 4e8a16d..ec50990 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java @@ -1,6 +1,7 @@ package com.lishid.openinv.commands; -import org.bukkit.Bukkit; +import com.lishid.openinv.OpenInv; + import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -19,6 +20,12 @@ import org.bukkit.inventory.meta.ItemMeta; */ public class SearchEnchantPluginCommand implements CommandExecutor { + private final OpenInv plugin; + + public SearchEnchantPluginCommand(OpenInv plugin) { + this.plugin = plugin; + } + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args.length == 0) { @@ -45,7 +52,7 @@ public class SearchEnchantPluginCommand implements CommandExecutor { } StringBuilder players = new StringBuilder(); - for (Player player : Bukkit.getServer().getOnlinePlayers()) { + for (Player player : plugin.getOnlinePlayers()) { boolean flagInventory = containsEnchantment(player.getInventory(), enchant, level); boolean flagEnder = containsEnchantment(player.getEnderChest(), enchant, level); diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java index 9dc2966..2979593 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java @@ -16,7 +16,8 @@ package com.lishid.openinv.commands; -import org.bukkit.Bukkit; +import com.lishid.openinv.OpenInv; + import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.command.Command; @@ -27,6 +28,12 @@ import org.bukkit.inventory.Inventory; public class SearchInvPluginCommand implements CommandExecutor { + private final OpenInv plugin; + + public SearchInvPluginCommand(OpenInv plugin) { + this.plugin = plugin; + } + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { @@ -54,7 +61,7 @@ public class SearchInvPluginCommand implements CommandExecutor { } StringBuilder players = new StringBuilder(); - for (Player player : Bukkit.getServer().getOnlinePlayers()) { + for (Player player : plugin.getOnlinePlayers()) { Inventory inventory = command.getName().equals("searchinv") ? player.getInventory() : player.getEnderChest(); if (inventory.contains(material, count)) { players.append(player.getName()).append(", "); -- 2.49.1 From 9b6e32a7755a158b8d5d4f034713a70bec32e46c Mon Sep 17 00:00:00 2001 From: Jikoo Date: Thu, 29 Dec 2016 03:13:27 -0500 Subject: [PATCH 085/253] Fix statistic changes breaking silent/anycontainer in 1.11.1+ C'mon Spigot team, this is why the revision bumps existed in the first place, to allow plugins that deal with NMS to easily and gracefully fail on unsupported versions. 1.11.1 should be R2, 1.11.2 should be R3. I get that NMS isn't officially supported, but honestly, either do away with the versioned packages entirely or keep up with them properly. It's a single string change, it's not like it's prohibitively difficult. --- .../openinv/internal/v1_11_R1/AnySilentContainer.java | 10 +++++----- pom.xml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java index 55b1d53..ec541cb 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java @@ -157,7 +157,7 @@ public class AnySilentContainer implements IAnySilentContainer { // Silent ender chest is pretty much API-only if (silentchest && b.getType() == Material.ENDER_CHEST) { p.openInventory(p.getEnderChest()); - player.b(StatisticList.X); + player.b(StatisticList.getStatistic("stat.enderchestOpened")); return true; } @@ -174,7 +174,7 @@ public class AnySilentContainer implements IAnySilentContainer { InventoryEnderChest enderChest = player.getEnderChest(); enderChest.a((TileEntityEnderChest) tile); player.openContainer(enderChest); - player.b(StatisticList.X); + player.b(StatisticList.getStatistic("stat.enderchestOpened")); return true; } @@ -212,9 +212,9 @@ public class AnySilentContainer implements IAnySilentContainer { } if (blockChest.g == Type.BASIC) { - player.b(StatisticList.ac); + player.b(StatisticList.getStatistic("stat.chestOpened")); } else if (blockChest.g == Type.TRAP) { - player.b(StatisticList.W); + player.b(StatisticList.getStatistic("stat.trappedChestTriggered")); } if (silentchest) { @@ -223,7 +223,7 @@ public class AnySilentContainer implements IAnySilentContainer { } if (block instanceof BlockShulkerBox) { - player.b(StatisticList.ae); + player.b(StatisticList.getStatistic("stat.shulkerBoxOpened")); if (silentchest && tile instanceof TileEntityShulkerBox) { // Set value to current + 1. Ensures consistency later when resetting. diff --git a/pom.xml b/pom.xml index 7dea94c..18262ba 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ UTF-8 - 3.0.4-SNAPSHOT + 3.0.6-SNAPSHOT -- 2.49.1 From 72ef873772b0a290a72acb23d244b6f95422a3c3 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sat, 31 Dec 2016 07:05:52 -0500 Subject: [PATCH 086/253] Fixes for shulker boxes and AnyChest in 1.11 Fixes IBlockData used being the default for a shulker box, closes #55 Corrected using wrong method to check if blocked in 1.11.2. Something something NMS version bumps. --- internal/v1_11_R1/pom.xml | 2 +- .../internal/v1_11_R1/AnySilentContainer.java | 21 ++++++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 208245c..eb26f81 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -20,7 +20,7 @@ org.spigotmc spigot - 1.11-R0.1-SNAPSHOT + 1.11.2-R0.1-SNAPSHOT provided diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java index ec541cb..bed8cd0 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java @@ -69,10 +69,11 @@ public class AnySilentContainer implements IAnySilentContainer { EntityPlayer player = ((CraftPlayer) p).getHandle(); World world = player.world; BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); - Block block = world.getType(blockPosition).getBlock(); + IBlockData blockData = world.getType(blockPosition); + Block block = blockData.getBlock(); if (block instanceof BlockShulkerBox) { - return isBlockedShulkerBox(world, blockPosition, block); + return isBlockedShulkerBox(world, blockPosition, blockData); } if (block instanceof BlockEnderChest) { @@ -107,7 +108,7 @@ public class AnySilentContainer implements IAnySilentContainer { return false; } - private boolean isBlockedShulkerBox(World world, BlockPosition blockPosition, Block block) { + private boolean isBlockedShulkerBox(World world, BlockPosition blockPosition, IBlockData blockData) { // For reference, look at net.minecraft.server.BlockShulkerBox TileEntity tile = world.getTileEntity(blockPosition); @@ -115,16 +116,20 @@ public class AnySilentContainer implements IAnySilentContainer { return false; } - IBlockData iBlockData = block.getBlockData(); - - EnumDirection enumDirection = iBlockData.get(BlockShulkerBox.a); + EnumDirection enumDirection = blockData.get(BlockShulkerBox.a); if (((TileEntityShulkerBox) tile).p() == TileEntityShulkerBox.AnimationPhase.CLOSED) { - AxisAlignedBB axisAlignedBB = BlockShulkerBox.j.b(0.5F * enumDirection.getAdjacentX(), + AxisAlignedBB axisAlignedBB = Block.j.b(0.5F * enumDirection.getAdjacentX(), 0.5F * enumDirection.getAdjacentY(), 0.5F * enumDirection.getAdjacentZ()) .a(enumDirection.getAdjacentX(), enumDirection.getAdjacentY(), enumDirection.getAdjacentZ()); - return world.b(axisAlignedBB.a(blockPosition.shift(enumDirection))); + try { + // 1.11.2 + return world.a(axisAlignedBB.a(blockPosition.shift(enumDirection))); + } catch (Exception e) { + // 1.11 + return world.b(axisAlignedBB.a(blockPosition.shift(enumDirection))); + } } return false; -- 2.49.1 From ef486032f1cda98284def25a7872267850aa1438 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 10 Jan 2017 12:50:24 -0500 Subject: [PATCH 087/253] Fix incorrect parameter for SilentChest PacketPlayOutOpenWindow Probably fixes issues with ProtocolSupport, and if it doesn't there's nothing else I can do as we'll be as close to identical to NMS as possible. --- .../internal/v1_11_R1/AnySilentContainer.java | 30 +++++++++---------- pom.xml | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java index bed8cd0..5028fb9 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java @@ -39,7 +39,6 @@ import net.minecraft.server.v1_11_R1.EntityOcelot; import net.minecraft.server.v1_11_R1.EntityPlayer; import net.minecraft.server.v1_11_R1.EnumDirection; import net.minecraft.server.v1_11_R1.IBlockData; -import net.minecraft.server.v1_11_R1.IInventory; import net.minecraft.server.v1_11_R1.ITileInventory; import net.minecraft.server.v1_11_R1.InventoryEnderChest; import net.minecraft.server.v1_11_R1.InventoryLargeChest; @@ -168,7 +167,7 @@ public class AnySilentContainer implements IAnySilentContainer { final World world = player.world; final BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); - Object tile = world.getTileEntity(blockPosition); + final Object tile = world.getTileEntity(blockPosition); if (tile == null) { return false; @@ -183,10 +182,12 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } - if (!(tile instanceof IInventory)) { + if (!(tile instanceof ITileInventory)) { return false; } + ITileInventory tileInventory = (ITileInventory) tile; + Block block = world.getType(blockPosition).getBlock(); Container container = null; @@ -207,11 +208,11 @@ public class AnySilentContainer implements IAnySilentContainer { } if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { - tile = new InventoryLargeChest("container.chestDouble", - (TileEntityChest) localTileEntity, (ITileInventory) tile); + tileInventory = new InventoryLargeChest("container.chestDouble", + (TileEntityChest) localTileEntity, tileInventory); } else { - tile = new InventoryLargeChest("container.chestDouble", - (ITileInventory) tile, (TileEntityChest) localTileEntity); + tileInventory = new InventoryLargeChest("container.chestDouble", + tileInventory, (TileEntityChest) localTileEntity); } break; } @@ -223,32 +224,31 @@ public class AnySilentContainer implements IAnySilentContainer { } if (silentchest) { - container = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + container = new SilentContainerChest(player.inventory, tileInventory, player); } } if (block instanceof BlockShulkerBox) { player.b(StatisticList.getStatistic("stat.shulkerBoxOpened")); - if (silentchest && tile instanceof TileEntityShulkerBox) { + if (silentchest && tileInventory instanceof TileEntityShulkerBox) { // Set value to current + 1. Ensures consistency later when resetting. - SilentContainerShulkerBox.setOpenValue((TileEntityShulkerBox) tile, - SilentContainerShulkerBox.getOpenValue((TileEntityShulkerBox) tile) + 1); + SilentContainerShulkerBox.setOpenValue((TileEntityShulkerBox) tileInventory, + SilentContainerShulkerBox.getOpenValue((TileEntityShulkerBox) tileInventory) + 1); - container = new SilentContainerShulkerBox(player.inventory, (IInventory) tile, player); + container = new SilentContainerShulkerBox(player.inventory, tileInventory, player); } } boolean returnValue = false; - final IInventory iInventory = (IInventory) tile; if (!silentchest || container == null) { - player.openContainer(iInventory); + player.openContainer(tileInventory); returnValue = true; } else { try { int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, iInventory.getName(), iInventory.getScoreboardDisplayName(), iInventory.getSize())); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, tileInventory.getContainerName(), tileInventory.getScoreboardDisplayName(), tileInventory.getSize())); player.activeContainer = container; player.activeContainer.windowId = windowId; player.activeContainer.addSlotListener(player); diff --git a/pom.xml b/pom.xml index 18262ba..6b466c0 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ UTF-8 - 3.0.6-SNAPSHOT + 3.0.6 -- 2.49.1 From 2f7d3bc235663f7a8dbbae4c33310c935466d813 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 10 Jan 2017 14:12:58 -0500 Subject: [PATCH 088/253] Call InventoryOpenEvent when using SilentChest Backport fix for incorrect parameter as well, just in case. Fixed 1.7 and lower forcing all chests' default names to be "Large chest" instead of the translatable string. --- .../internal/v1_4_5/AnySilentContainer.java | 52 +++++++----- .../internal/v1_4_6/AnySilentContainer.java | 52 +++++++----- .../internal/v1_10_R1/AnySilentContainer.java | 71 +++++++++------- .../internal/v1_11_R1/AnySilentContainer.java | 83 ++++++++++--------- .../internal/v1_4_R1/AnySilentContainer.java | 52 +++++++----- .../internal/v1_5_R2/AnySilentContainer.java | 52 +++++++----- .../internal/v1_5_R3/AnySilentContainer.java | 52 +++++++----- .../internal/v1_6_R1/AnySilentContainer.java | 52 +++++++----- .../internal/v1_6_R2/AnySilentContainer.java | 52 +++++++----- .../internal/v1_6_R3/AnySilentContainer.java | 52 +++++++----- .../internal/v1_7_R1/AnySilentContainer.java | 52 +++++++----- .../internal/v1_7_R2/AnySilentContainer.java | 52 +++++++----- .../internal/v1_7_R3/AnySilentContainer.java | 52 +++++++----- .../internal/v1_7_R4/AnySilentContainer.java | 52 +++++++----- .../internal/v1_8_R1/AnySilentContainer.java | 57 +++++++------ .../internal/v1_8_R2/AnySilentContainer.java | 70 +++++++++------- .../internal/v1_8_R3/AnySilentContainer.java | 70 +++++++++------- .../internal/v1_9_R1/AnySilentContainer.java | 70 +++++++++------- .../internal/v1_9_R2/AnySilentContainer.java | 70 +++++++++------- 19 files changed, 656 insertions(+), 459 deletions(-) diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java index 3032f6f..be34e71 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java @@ -25,6 +25,7 @@ import org.bukkit.entity.Player; // Volatile import net.minecraft.server.v1_4_5.AxisAlignedBB; import net.minecraft.server.v1_4_5.BlockEnderChest; +import net.minecraft.server.v1_4_5.Container; import net.minecraft.server.v1_4_5.EntityOcelot; import net.minecraft.server.v1_4_5.EntityPlayer; import net.minecraft.server.v1_4_5.IInventory; @@ -36,6 +37,7 @@ import net.minecraft.server.v1_4_5.TileEntityEnderChest; import net.minecraft.server.v1_4_5.World; import org.bukkit.craftbukkit.v1_4_5.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_4_5.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -122,37 +124,47 @@ public class AnySilentContainer implements IAnySilentContainer { return false; } + IInventory inventory = (IInventory) tile; int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); } - boolean returnValue = false; + // AnyChest only if (!silentchest) { - player.openContainer((IInventory) tile); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.netServerHandler.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize())); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } + player.openContainer(inventory); + return true; } - return returnValue; + // SilentChest + try { + // Call InventoryOpenEvent + Container container = new SilentContainerChest(player.inventory, inventory); + container = CraftEventFactory.callInventoryOpenEvent(player, container); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.netServerHandler.sendPacket(new Packet100OpenWindow(windowId, 0, inventory.getName(), inventory.getSize())); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java index e0f7696..20a33a1 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java @@ -25,6 +25,7 @@ import org.bukkit.entity.Player; // Volatile import net.minecraft.server.v1_4_6.AxisAlignedBB; import net.minecraft.server.v1_4_6.BlockEnderChest; +import net.minecraft.server.v1_4_6.Container; import net.minecraft.server.v1_4_6.EntityOcelot; import net.minecraft.server.v1_4_6.EntityPlayer; import net.minecraft.server.v1_4_6.IInventory; @@ -36,6 +37,7 @@ import net.minecraft.server.v1_4_6.TileEntityEnderChest; import net.minecraft.server.v1_4_6.World; import org.bukkit.craftbukkit.v1_4_6.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_4_6.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -122,37 +124,47 @@ public class AnySilentContainer implements IAnySilentContainer { return false; } + IInventory inventory = (IInventory) tile; int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); } - boolean returnValue = false; + // AnyChest only if (!silentchest) { - player.openContainer((IInventory) tile); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize())); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } + player.openContainer(inventory); + return true; } - return returnValue; + // SilentChest + try { + // Call InventoryOpenEvent + Container container = new SilentContainerChest(player.inventory, inventory); + container = CraftEventFactory.callInventoryOpenEvent(player, container); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, inventory.getName(), inventory.getSize())); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java index 36c3ae9..8dca3aa 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java @@ -26,7 +26,6 @@ import org.bukkit.entity.Player; import net.minecraft.server.v1_10_R1.AxisAlignedBB; import net.minecraft.server.v1_10_R1.Block; import net.minecraft.server.v1_10_R1.BlockChest; -import net.minecraft.server.v1_10_R1.BlockChest.Type; import net.minecraft.server.v1_10_R1.BlockEnderChest; import net.minecraft.server.v1_10_R1.BlockPosition; import net.minecraft.server.v1_10_R1.Container; @@ -34,7 +33,6 @@ import net.minecraft.server.v1_10_R1.Entity; import net.minecraft.server.v1_10_R1.EntityOcelot; import net.minecraft.server.v1_10_R1.EntityPlayer; import net.minecraft.server.v1_10_R1.EnumDirection; -import net.minecraft.server.v1_10_R1.IInventory; import net.minecraft.server.v1_10_R1.ITileInventory; import net.minecraft.server.v1_10_R1.InventoryEnderChest; import net.minecraft.server.v1_10_R1.InventoryLargeChest; @@ -46,6 +44,7 @@ import net.minecraft.server.v1_10_R1.TileEntityEnderChest; import net.minecraft.server.v1_10_R1.World; import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_10_R1.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -141,10 +140,11 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } - if (!(tile instanceof IInventory)) { + if (!(tile instanceof ITileInventory)) { return false; } + ITileInventory tileInventory = (ITileInventory) tile; Block block = world.getType(blockPosition).getBlock(); Container container = null; @@ -163,47 +163,54 @@ public class AnySilentContainer implements IAnySilentContainer { } if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { - tile = new InventoryLargeChest("container.chestDouble", - (TileEntityChest) localTileEntity, (ITileInventory) tile); + tileInventory = new InventoryLargeChest("container.chestDouble", + (TileEntityChest) localTileEntity, tileInventory); } else { - tile = new InventoryLargeChest("container.chestDouble", - (ITileInventory) tile, (TileEntityChest) localTileEntity); + tileInventory = new InventoryLargeChest("container.chestDouble", + tileInventory, (TileEntityChest) localTileEntity); } break; } - if (silentchest) { - container = new SilentContainerChest(player.inventory, ((IInventory) tile), player); - } - - if (((BlockChest) block).g == Type.BASIC) { + BlockChest blockChest = (BlockChest) block; + if (blockChest.g == BlockChest.Type.BASIC) { player.b(StatisticList.ac); - } else if (((BlockChest) block).g == Type.TRAP) { + } else if (blockChest.g == BlockChest.Type.TRAP) { player.b(StatisticList.W); } - } - boolean returnValue = false; - final IInventory iInventory = (IInventory) tile; - - if (!silentchest || container == null) { - player.openContainer(iInventory); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, iInventory.getName(), iInventory.getScoreboardDisplayName(), iInventory.getSize())); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + if (silentchest) { + container = new SilentContainerChest(player.inventory, tileInventory, player); } } - return returnValue; + // AnyChest only - SilentChest not active or container unsupported + if (!silentchest || container == null) { + player.openContainer(tileInventory); + return true; + } + + // SilentChest + try { + // Call InventoryOpenEvent + container = CraftEventFactory.callInventoryOpenEvent(player, container, false); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, tileInventory.getContainerName(), tileInventory.getScoreboardDisplayName(), tileInventory.getSize())); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java index 5028fb9..5464f35 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java @@ -29,7 +29,6 @@ import org.bukkit.scheduler.BukkitRunnable; import net.minecraft.server.v1_11_R1.AxisAlignedBB; import net.minecraft.server.v1_11_R1.Block; import net.minecraft.server.v1_11_R1.BlockChest; -import net.minecraft.server.v1_11_R1.BlockChest.Type; import net.minecraft.server.v1_11_R1.BlockEnderChest; import net.minecraft.server.v1_11_R1.BlockPosition; import net.minecraft.server.v1_11_R1.BlockShulkerBox; @@ -51,6 +50,7 @@ import net.minecraft.server.v1_11_R1.TileEntityShulkerBox; import net.minecraft.server.v1_11_R1.World; import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_11_R1.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -187,13 +187,10 @@ public class AnySilentContainer implements IAnySilentContainer { } ITileInventory tileInventory = (ITileInventory) tile; - Block block = world.getType(blockPosition).getBlock(); Container container = null; if (block instanceof BlockChest) { - BlockChest blockChest = (BlockChest) block; - for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); Block localBlock = world.getType(localBlockPosition).getBlock(); @@ -217,9 +214,10 @@ public class AnySilentContainer implements IAnySilentContainer { break; } - if (blockChest.g == Type.BASIC) { + BlockChest blockChest = (BlockChest) block; + if (blockChest.g == BlockChest.Type.BASIC) { player.b(StatisticList.getStatistic("stat.chestOpened")); - } else if (blockChest.g == Type.TRAP) { + } else if (blockChest.g == BlockChest.Type.TRAP) { player.b(StatisticList.getStatistic("stat.trappedChestTriggered")); } @@ -240,42 +238,51 @@ public class AnySilentContainer implements IAnySilentContainer { } } - boolean returnValue = false; - + // AnyChest only - SilentChest not active or container unsupported if (!silentchest || container == null) { player.openContainer(tileInventory); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, tileInventory.getContainerName(), tileInventory.getScoreboardDisplayName(), tileInventory.getSize())); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - if (tile instanceof TileEntityShulkerBox) { - new BukkitRunnable() { - @Override - public void run() { - // TODO hacky - Object tile = world.getTileEntity(blockPosition); - if (!(tile instanceof TileEntityShulkerBox)) { - return; - } - TileEntityShulkerBox box = (TileEntityShulkerBox) tile; - // Reset back - we added 1, and calling TileEntityShulkerBox#startOpen adds 1 more. - SilentContainerShulkerBox.setOpenValue(box, - SilentContainerShulkerBox.getOpenValue((TileEntityShulkerBox) tile) - 2); - } - }.runTaskLater(Bukkit.getPluginManager().getPlugin("OpenInv"), 2); - } - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } + return true; } - return returnValue; + // SilentChest + try { + // Call InventoryOpenEvent + container = CraftEventFactory.callInventoryOpenEvent(player, container, false); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, tileInventory.getContainerName(), tileInventory.getScoreboardDisplayName(), tileInventory.getSize())); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + // Special handling for shulker boxes - reset value for viewers to what it was initially. + if (tile instanceof TileEntityShulkerBox) { + new BukkitRunnable() { + @Override + public void run() { + // TODO hacky + Object tile = world.getTileEntity(blockPosition); + if (!(tile instanceof TileEntityShulkerBox)) { + return; + } + TileEntityShulkerBox box = (TileEntityShulkerBox) tile; + // Reset back - we added 1, and calling TileEntityShulkerBox#startOpen adds 1 more. + SilentContainerShulkerBox.setOpenValue(box, + SilentContainerShulkerBox.getOpenValue((TileEntityShulkerBox) tile) - 2); + } + }.runTaskLater(Bukkit.getPluginManager().getPlugin("OpenInv"), 2); + } + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java index b08e28d..ec1e7b6 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java @@ -25,6 +25,7 @@ import org.bukkit.entity.Player; // Volatile import net.minecraft.server.v1_4_R1.AxisAlignedBB; import net.minecraft.server.v1_4_R1.BlockEnderChest; +import net.minecraft.server.v1_4_R1.Container; import net.minecraft.server.v1_4_R1.EntityOcelot; import net.minecraft.server.v1_4_R1.EntityPlayer; import net.minecraft.server.v1_4_R1.IInventory; @@ -36,6 +37,7 @@ import net.minecraft.server.v1_4_R1.TileEntityEnderChest; import net.minecraft.server.v1_4_R1.World; import org.bukkit.craftbukkit.v1_4_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_4_R1.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -122,37 +124,47 @@ public class AnySilentContainer implements IAnySilentContainer { return false; } + IInventory inventory = (IInventory) tile; int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); } - boolean returnValue = false; + // AnyChest only if (!silentchest) { - player.openContainer((IInventory) tile); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize())); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } + player.openContainer(inventory); + return true; } - return returnValue; + // SilentChest + try { + // Call InventoryOpenEvent + Container container = new SilentContainerChest(player.inventory, inventory); + container = CraftEventFactory.callInventoryOpenEvent(player, container); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, inventory.getName(), inventory.getSize())); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java index c08b41c..5cb2c26 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java @@ -25,6 +25,7 @@ import org.bukkit.entity.Player; // Volatile import net.minecraft.server.v1_5_R2.AxisAlignedBB; import net.minecraft.server.v1_5_R2.BlockEnderChest; +import net.minecraft.server.v1_5_R2.Container; import net.minecraft.server.v1_5_R2.EntityOcelot; import net.minecraft.server.v1_5_R2.EntityPlayer; import net.minecraft.server.v1_5_R2.IInventory; @@ -36,6 +37,7 @@ import net.minecraft.server.v1_5_R2.TileEntityEnderChest; import net.minecraft.server.v1_5_R2.World; import org.bukkit.craftbukkit.v1_5_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_5_R2.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -122,37 +124,47 @@ public class AnySilentContainer implements IAnySilentContainer { return false; } + IInventory inventory = (IInventory) tile; int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); } - boolean returnValue = false; + // AnyChest only if (!silentchest) { - player.openContainer((IInventory) tile); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } + player.openContainer(inventory); + return true; } - return returnValue; + // SilentChest + try { + // Call InventoryOpenEvent + Container container = new SilentContainerChest(player.inventory, inventory); + container = CraftEventFactory.callInventoryOpenEvent(player, container); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, inventory.getName(), inventory.getSize(), true)); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java index ee10a6f..7d011a0 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java @@ -25,6 +25,7 @@ import org.bukkit.entity.Player; //Volatile import net.minecraft.server.v1_5_R3.AxisAlignedBB; import net.minecraft.server.v1_5_R3.BlockEnderChest; +import net.minecraft.server.v1_5_R3.Container; import net.minecraft.server.v1_5_R3.EntityOcelot; import net.minecraft.server.v1_5_R3.EntityPlayer; import net.minecraft.server.v1_5_R3.IInventory; @@ -36,6 +37,7 @@ import net.minecraft.server.v1_5_R3.TileEntityEnderChest; import net.minecraft.server.v1_5_R3.World; import org.bukkit.craftbukkit.v1_5_R3.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_5_R3.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -122,37 +124,47 @@ public class AnySilentContainer implements IAnySilentContainer { return false; } + IInventory inventory = (IInventory) tile; int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); } - boolean returnValue = false; + // AnyChest only if (!silentchest) { - player.openContainer((IInventory) tile); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } + player.openContainer(inventory); + return true; } - return returnValue; + // SilentChest + try { + // Call InventoryOpenEvent + Container container = new SilentContainerChest(player.inventory, inventory); + container = CraftEventFactory.callInventoryOpenEvent(player, container); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, inventory.getName(), inventory.getSize(), true)); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java index 87c46d6..1a79320 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java @@ -25,6 +25,7 @@ import org.bukkit.entity.Player; // Volatile import net.minecraft.server.v1_6_R1.AxisAlignedBB; import net.minecraft.server.v1_6_R1.BlockEnderChest; +import net.minecraft.server.v1_6_R1.Container; import net.minecraft.server.v1_6_R1.EntityOcelot; import net.minecraft.server.v1_6_R1.EntityPlayer; import net.minecraft.server.v1_6_R1.IInventory; @@ -36,6 +37,7 @@ import net.minecraft.server.v1_6_R1.TileEntityEnderChest; import net.minecraft.server.v1_6_R1.World; import org.bukkit.craftbukkit.v1_6_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_6_R1.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -122,37 +124,47 @@ public class AnySilentContainer implements IAnySilentContainer { return false; } + IInventory inventory = (IInventory) tile; int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); } - boolean returnValue = false; + // AnyChest only if (!silentchest) { - player.openContainer((IInventory) tile); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } + player.openContainer(inventory); + return true; } - return returnValue; + // SilentChest + try { + // Call InventoryOpenEvent + Container container = new SilentContainerChest(player.inventory, inventory); + container = CraftEventFactory.callInventoryOpenEvent(player, container); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, inventory.getName(), inventory.getSize(), true)); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java index acdef19..ab1ff97 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java @@ -25,6 +25,7 @@ import org.bukkit.entity.Player; // Volatile import net.minecraft.server.v1_6_R2.AxisAlignedBB; import net.minecraft.server.v1_6_R2.BlockEnderChest; +import net.minecraft.server.v1_6_R2.Container; import net.minecraft.server.v1_6_R2.EntityOcelot; import net.minecraft.server.v1_6_R2.EntityPlayer; import net.minecraft.server.v1_6_R2.IInventory; @@ -36,6 +37,7 @@ import net.minecraft.server.v1_6_R2.TileEntityEnderChest; import net.minecraft.server.v1_6_R2.World; import org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -122,37 +124,47 @@ public class AnySilentContainer implements IAnySilentContainer { return false; } + IInventory inventory = (IInventory) tile; int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); } - boolean returnValue = false; + // AnyChest only if (!silentchest) { - player.openContainer((IInventory) tile); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } + player.openContainer(inventory); + return true; } - return returnValue; + // SilentChest + try { + // Call InventoryOpenEvent + Container container = new SilentContainerChest(player.inventory, inventory); + container = CraftEventFactory.callInventoryOpenEvent(player, container); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, inventory.getName(), inventory.getSize(), true)); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java index ce37031..d97d39d 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java @@ -25,6 +25,7 @@ import org.bukkit.entity.Player; // Volatile import net.minecraft.server.v1_6_R3.AxisAlignedBB; import net.minecraft.server.v1_6_R3.BlockEnderChest; +import net.minecraft.server.v1_6_R3.Container; import net.minecraft.server.v1_6_R3.EntityOcelot; import net.minecraft.server.v1_6_R3.EntityPlayer; import net.minecraft.server.v1_6_R3.IInventory; @@ -36,6 +37,7 @@ import net.minecraft.server.v1_6_R3.TileEntityEnderChest; import net.minecraft.server.v1_6_R3.World; import org.bukkit.craftbukkit.v1_6_R3.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_6_R3.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -122,37 +124,47 @@ public class AnySilentContainer implements IAnySilentContainer { return false; } + IInventory inventory = (IInventory) tile; int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); } - boolean returnValue = false; + // AnyChest only if (!silentchest) { - player.openContainer((IInventory) tile); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, ((IInventory) tile).getName(), ((IInventory) tile).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } + player.openContainer(inventory); + return true; } - return returnValue; + // SilentChest + try { + // Call InventoryOpenEvent + Container container = new SilentContainerChest(player.inventory, inventory); + container = CraftEventFactory.callInventoryOpenEvent(player, container); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, inventory.getName(), inventory.getSize(), true)); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java index 33d70e7..c9e82a1 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java @@ -26,6 +26,7 @@ import org.bukkit.entity.Player; import net.minecraft.server.v1_7_R1.AxisAlignedBB; import net.minecraft.server.v1_7_R1.Block; import net.minecraft.server.v1_7_R1.BlockEnderChest; +import net.minecraft.server.v1_7_R1.Container; import net.minecraft.server.v1_7_R1.EntityOcelot; import net.minecraft.server.v1_7_R1.EntityPlayer; import net.minecraft.server.v1_7_R1.IInventory; @@ -37,6 +38,7 @@ import net.minecraft.server.v1_7_R1.TileEntityEnderChest; import net.minecraft.server.v1_7_R1.World; import org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -123,37 +125,47 @@ public class AnySilentContainer implements IAnySilentContainer { return false; } + IInventory inventory = (IInventory) tile; int id = Block.b(world.getType(block.getX(), block.getY(), block.getZ())); if (Block.b(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); } else if(Block.b(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); } else if (Block.b(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); } else if (Block.b(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); } - boolean returnValue = false; + // AnyChest only if (!silentchest) { - player.openContainer((IInventory) tile); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) tile).getInventoryName(), ((IInventory) tile).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } + player.openContainer(inventory); + return true; } - return returnValue; + // SilentChest + try { + // Call InventoryOpenEvent + Container container = new SilentContainerChest(player.inventory, inventory); + container = CraftEventFactory.callInventoryOpenEvent(player, container); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, inventory.getInventoryName(), inventory.getSize(), true)); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java index 886fa11..ddd5e43 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java @@ -26,6 +26,7 @@ import org.bukkit.entity.Player; import net.minecraft.server.v1_7_R2.AxisAlignedBB; import net.minecraft.server.v1_7_R2.Block; import net.minecraft.server.v1_7_R2.BlockEnderChest; +import net.minecraft.server.v1_7_R2.Container; import net.minecraft.server.v1_7_R2.EntityOcelot; import net.minecraft.server.v1_7_R2.EntityPlayer; import net.minecraft.server.v1_7_R2.IInventory; @@ -37,6 +38,7 @@ import net.minecraft.server.v1_7_R2.TileEntityEnderChest; import net.minecraft.server.v1_7_R2.World; import org.bukkit.craftbukkit.v1_7_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_7_R2.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -123,37 +125,47 @@ public class AnySilentContainer implements IAnySilentContainer { return false; } + IInventory inventory = (IInventory) tile; int id = Block.b(world.getType(block.getX(), block.getY(), block.getZ())); if (Block.b(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); } else if(Block.b(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); } else if (Block.b(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); } else if (Block.b(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); } - boolean returnValue = false; + // AnyChest only if (!silentchest) { - player.openContainer((IInventory) tile); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) tile).getInventoryName(), ((IInventory) tile).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } + player.openContainer(inventory); + return true; } - return returnValue; + // SilentChest + try { + // Call InventoryOpenEvent + Container container = new SilentContainerChest(player.inventory, inventory); + container = CraftEventFactory.callInventoryOpenEvent(player, container); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, inventory.getInventoryName(), inventory.getSize(), true)); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java index 3b9c651..d057b01 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java @@ -26,6 +26,7 @@ import org.bukkit.entity.Player; import net.minecraft.server.v1_7_R3.AxisAlignedBB; import net.minecraft.server.v1_7_R3.Block; import net.minecraft.server.v1_7_R3.BlockEnderChest; +import net.minecraft.server.v1_7_R3.Container; import net.minecraft.server.v1_7_R3.EntityOcelot; import net.minecraft.server.v1_7_R3.EntityPlayer; import net.minecraft.server.v1_7_R3.IInventory; @@ -37,6 +38,7 @@ import net.minecraft.server.v1_7_R3.TileEntityEnderChest; import net.minecraft.server.v1_7_R3.World; import org.bukkit.craftbukkit.v1_7_R3.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_7_R3.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -123,37 +125,47 @@ public class AnySilentContainer implements IAnySilentContainer { return false; } + IInventory inventory = (IInventory) tile; int id = Block.b(world.getType(block.getX(), block.getY(), block.getZ())); if (Block.b(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); } else if(Block.b(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); } else if (Block.b(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); } else if (Block.b(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); } - boolean returnValue = false; + // AnyChest only if (!silentchest) { - player.openContainer((IInventory) tile); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) tile).getInventoryName(), ((IInventory) tile).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } + player.openContainer(inventory); + return true; } - return returnValue; + // SilentChest + try { + // Call InventoryOpenEvent + Container container = new SilentContainerChest(player.inventory, inventory); + container = CraftEventFactory.callInventoryOpenEvent(player, container); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, inventory.getInventoryName(), inventory.getSize(), true)); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java index 7f804ed..0b2b855 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java @@ -26,6 +26,7 @@ import org.bukkit.entity.Player; import net.minecraft.server.v1_7_R4.AxisAlignedBB; import net.minecraft.server.v1_7_R4.Block; import net.minecraft.server.v1_7_R4.BlockEnderChest; +import net.minecraft.server.v1_7_R4.Container; import net.minecraft.server.v1_7_R4.EntityOcelot; import net.minecraft.server.v1_7_R4.EntityPlayer; import net.minecraft.server.v1_7_R4.IInventory; @@ -37,6 +38,7 @@ import net.minecraft.server.v1_7_R4.TileEntityEnderChest; import net.minecraft.server.v1_7_R4.World; import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -123,37 +125,47 @@ public class AnySilentContainer implements IAnySilentContainer { return false; } + IInventory inventory = (IInventory) tile; int id = Block.getId(world.getType(block.getX(), block.getY(), block.getZ())); if (Block.getId(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); } else if(Block.getId(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); } else if (Block.getId(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { - tile = new InventoryLargeChest("Large chest", (IInventory) tile, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); } else if (Block.getId(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { - tile = new InventoryLargeChest("Large chest", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), (IInventory) tile); + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); } - boolean returnValue = false; + // AnyChest only if (!silentchest) { - player.openContainer((IInventory) tile); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, ((IInventory) tile).getInventoryName(), ((IInventory) tile).getSize(), true)); - player.activeContainer = new SilentContainerChest(player.inventory, ((IInventory) tile)); - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } + player.openContainer(inventory); + return true; } - return returnValue; + // SilentChest + try { + // Call InventoryOpenEvent + Container container = new SilentContainerChest(player.inventory, inventory); + container = CraftEventFactory.callInventoryOpenEvent(player, container); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, inventory.getInventoryName(), inventory.getSize(), true)); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java index a3768e1..9b2ea34 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java @@ -32,7 +32,6 @@ import net.minecraft.server.v1_8_R1.Container; import net.minecraft.server.v1_8_R1.EntityOcelot; import net.minecraft.server.v1_8_R1.EntityPlayer; import net.minecraft.server.v1_8_R1.EnumDirection; -import net.minecraft.server.v1_8_R1.IInventory; import net.minecraft.server.v1_8_R1.ITileInventory; import net.minecraft.server.v1_8_R1.InventoryEnderChest; import net.minecraft.server.v1_8_R1.InventoryLargeChest; @@ -43,6 +42,7 @@ import net.minecraft.server.v1_8_R1.TileEntityEnderChest; import net.minecraft.server.v1_8_R1.World; import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -141,10 +141,11 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } - if (!(tile instanceof IInventory)) { + if (!(tile instanceof ITileInventory)) { return false; } + ITileInventory tileInventory = (ITileInventory) tile; Block block = world.getType(blockPosition).getBlock(); Container container = null; @@ -168,41 +169,47 @@ public class AnySilentContainer implements IAnySilentContainer { } if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { - tile = new InventoryLargeChest("container.chestDouble", - (TileEntityChest) localTileEntity, (ITileInventory) tile); + tileInventory = new InventoryLargeChest("container.chestDouble", + (TileEntityChest) localTileEntity, tileInventory); } else { - tile = new InventoryLargeChest("container.chestDouble", - (ITileInventory) tile, (TileEntityChest) localTileEntity); + tileInventory = new InventoryLargeChest("container.chestDouble", + tileInventory, (TileEntityChest) localTileEntity); } break; } if (silentchest) { - container = new SilentContainerChest(player.inventory, ((IInventory) tile), player); + container = new SilentContainerChest(player.inventory, tileInventory, player); } } - boolean returnValue = false; - final IInventory iInventory = (IInventory) tile; - + // AnyChest only - SilentChest not active or container unsupported if (!silentchest || container == null) { - player.openContainer(iInventory); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, iInventory.getName(), iInventory.getScoreboardDisplayName(), iInventory.getSize())); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); - } + player.openContainer(tileInventory); + return true; } - return returnValue; + // SilentChest + try { + // Call InventoryOpenEvent + container = CraftEventFactory.callInventoryOpenEvent(player, container, false); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, tileInventory.getContainerName(), tileInventory.getScoreboardDisplayName(), tileInventory.getSize())); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java index 564fdcc..eeb18af 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java @@ -33,7 +33,6 @@ import net.minecraft.server.v1_8_R2.Entity; import net.minecraft.server.v1_8_R2.EntityOcelot; import net.minecraft.server.v1_8_R2.EntityPlayer; import net.minecraft.server.v1_8_R2.EnumDirection; -import net.minecraft.server.v1_8_R2.IInventory; import net.minecraft.server.v1_8_R2.ITileInventory; import net.minecraft.server.v1_8_R2.InventoryEnderChest; import net.minecraft.server.v1_8_R2.InventoryLargeChest; @@ -45,6 +44,7 @@ import net.minecraft.server.v1_8_R2.TileEntityEnderChest; import net.minecraft.server.v1_8_R2.World; import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_8_R2.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -140,10 +140,11 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } - if (!(tile instanceof IInventory)) { + if (!(tile instanceof ITileInventory)) { return false; } + ITileInventory tileInventory = (ITileInventory) tile; Block block = world.getType(blockPosition).getBlock(); Container container = null; @@ -162,47 +163,54 @@ public class AnySilentContainer implements IAnySilentContainer { } if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { - tile = new InventoryLargeChest("container.chestDouble", - (TileEntityChest) localTileEntity, (ITileInventory) tile); + tileInventory = new InventoryLargeChest("container.chestDouble", + (TileEntityChest) localTileEntity, tileInventory); } else { - tile = new InventoryLargeChest("container.chestDouble", - (ITileInventory) tile, (TileEntityChest) localTileEntity); + tileInventory = new InventoryLargeChest("container.chestDouble", + tileInventory, (TileEntityChest) localTileEntity); } break; } - if (silentchest) { - container = new SilentContainerChest(player.inventory, ((IInventory) tile), player); - } - - if (((BlockChest) block).b == 0) { + BlockChest blockChest = (BlockChest) block; + if (blockChest.b == 0) { player.b(StatisticList.aa); - } else if (((BlockChest) block).b == 1) { + } else if (blockChest.b == 1) { player.b(StatisticList.U); } - } - boolean returnValue = false; - final IInventory iInventory = (IInventory) tile; - - if (!silentchest || container == null) { - player.openContainer(iInventory); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, iInventory.getName(), iInventory.getScoreboardDisplayName(), iInventory.getSize())); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + if (silentchest) { + container = new SilentContainerChest(player.inventory, tileInventory, player); } } - return returnValue; + // AnyChest only - SilentChest not active or container unsupported + if (!silentchest || container == null) { + player.openContainer(tileInventory); + return true; + } + + // SilentChest + try { + // Call InventoryOpenEvent + container = CraftEventFactory.callInventoryOpenEvent(player, container, false); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, tileInventory.getContainerName(), tileInventory.getScoreboardDisplayName(), tileInventory.getSize())); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java index 6d2f3c3..baa29cc 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java @@ -33,7 +33,6 @@ import net.minecraft.server.v1_8_R3.Entity; import net.minecraft.server.v1_8_R3.EntityOcelot; import net.minecraft.server.v1_8_R3.EntityPlayer; import net.minecraft.server.v1_8_R3.EnumDirection; -import net.minecraft.server.v1_8_R3.IInventory; import net.minecraft.server.v1_8_R3.ITileInventory; import net.minecraft.server.v1_8_R3.InventoryEnderChest; import net.minecraft.server.v1_8_R3.InventoryLargeChest; @@ -45,6 +44,7 @@ import net.minecraft.server.v1_8_R3.TileEntityEnderChest; import net.minecraft.server.v1_8_R3.World; import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -140,10 +140,11 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } - if (!(tile instanceof IInventory)) { + if (!(tile instanceof ITileInventory)) { return false; } + ITileInventory tileInventory = (ITileInventory) tile; Block block = world.getType(blockPosition).getBlock(); Container container = null; @@ -162,47 +163,54 @@ public class AnySilentContainer implements IAnySilentContainer { } if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { - tile = new InventoryLargeChest("container.chestDouble", - (TileEntityChest) localTileEntity, (ITileInventory) tile); + tileInventory = new InventoryLargeChest("container.chestDouble", + (TileEntityChest) localTileEntity, tileInventory); } else { - tile = new InventoryLargeChest("container.chestDouble", - (ITileInventory) tile, (TileEntityChest) localTileEntity); + tileInventory = new InventoryLargeChest("container.chestDouble", + tileInventory, (TileEntityChest) localTileEntity); } break; } - if (silentchest) { - container = new SilentContainerChest(player.inventory, ((IInventory) tile), player); - } - - if (((BlockChest) block).b == 0) { + BlockChest blockChest = (BlockChest) block; + if (blockChest.b == 0) { player.b(StatisticList.aa); - } else if (((BlockChest) block).b == 1) { + } else if (blockChest.b == 1) { player.b(StatisticList.U); } - } - boolean returnValue = false; - final IInventory iInventory = (IInventory) tile; - - if (!silentchest || container == null) { - player.openContainer(iInventory); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, iInventory.getName(), iInventory.getScoreboardDisplayName(), iInventory.getSize())); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + if (silentchest) { + container = new SilentContainerChest(player.inventory, tileInventory, player); } } - return returnValue; + // AnyChest only - SilentChest not active or container unsupported + if (!silentchest || container == null) { + player.openContainer(tileInventory); + return true; + } + + // SilentChest + try { + // Call InventoryOpenEvent + container = CraftEventFactory.callInventoryOpenEvent(player, container, false); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, tileInventory.getContainerName(), tileInventory.getScoreboardDisplayName(), tileInventory.getSize())); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java index 536f3ae..c9d2c38 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java @@ -33,7 +33,6 @@ import net.minecraft.server.v1_9_R1.Entity; import net.minecraft.server.v1_9_R1.EntityOcelot; import net.minecraft.server.v1_9_R1.EntityPlayer; import net.minecraft.server.v1_9_R1.EnumDirection; -import net.minecraft.server.v1_9_R1.IInventory; import net.minecraft.server.v1_9_R1.ITileInventory; import net.minecraft.server.v1_9_R1.InventoryEnderChest; import net.minecraft.server.v1_9_R1.InventoryLargeChest; @@ -45,6 +44,7 @@ import net.minecraft.server.v1_9_R1.TileEntityEnderChest; import net.minecraft.server.v1_9_R1.World; import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_9_R1.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -140,10 +140,11 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } - if (!(tile instanceof IInventory)) { + if (!(tile instanceof ITileInventory)) { return false; } + ITileInventory tileInventory = (ITileInventory) tile; Block block = world.getType(blockPosition).getBlock(); Container container = null; @@ -162,47 +163,54 @@ public class AnySilentContainer implements IAnySilentContainer { } if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { - tile = new InventoryLargeChest("container.chestDouble", - (TileEntityChest) localTileEntity, (ITileInventory) tile); + tileInventory = new InventoryLargeChest("container.chestDouble", + (TileEntityChest) localTileEntity, tileInventory); } else { - tile = new InventoryLargeChest("container.chestDouble", - (ITileInventory) tile, (TileEntityChest) localTileEntity); + tileInventory = new InventoryLargeChest("container.chestDouble", + tileInventory, (TileEntityChest) localTileEntity); } break; } - if (silentchest) { - container = new SilentContainerChest(player.inventory, ((IInventory) tile), player); - } - - if (((BlockChest) block).g == BlockChest.Type.BASIC) + BlockChest blockChest = (BlockChest) block; + if (blockChest.g == BlockChest.Type.BASIC) { player.b(StatisticList.ac); - else if (((BlockChest) block).g == BlockChest.Type.TRAP) { + } else if (blockChest.g == BlockChest.Type.TRAP) { player.b(StatisticList.W); } - } - boolean returnValue = false; - final IInventory iInventory = (IInventory) tile; - - if (!silentchest || container == null) { - player.openContainer(iInventory); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, iInventory.getName(), iInventory.getScoreboardDisplayName(), iInventory.getSize())); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + if (silentchest) { + container = new SilentContainerChest(player.inventory, tileInventory, player); } } - return returnValue; + // AnyChest only - SilentChest not active or container unsupported + if (!silentchest || container == null) { + player.openContainer(tileInventory); + return true; + } + + // SilentChest + try { + // Call InventoryOpenEvent + container = CraftEventFactory.callInventoryOpenEvent(player, container, false); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, tileInventory.getContainerName(), tileInventory.getScoreboardDisplayName(), tileInventory.getSize())); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java index b2a5a09..550cc08 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java @@ -33,7 +33,6 @@ import net.minecraft.server.v1_9_R2.Entity; import net.minecraft.server.v1_9_R2.EntityOcelot; import net.minecraft.server.v1_9_R2.EntityPlayer; import net.minecraft.server.v1_9_R2.EnumDirection; -import net.minecraft.server.v1_9_R2.IInventory; import net.minecraft.server.v1_9_R2.ITileInventory; import net.minecraft.server.v1_9_R2.InventoryEnderChest; import net.minecraft.server.v1_9_R2.InventoryLargeChest; @@ -45,6 +44,7 @@ import net.minecraft.server.v1_9_R2.TileEntityEnderChest; import net.minecraft.server.v1_9_R2.World; import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_9_R2.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -140,10 +140,11 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } - if (!(tile instanceof IInventory)) { + if (!(tile instanceof ITileInventory)) { return false; } + ITileInventory tileInventory = (ITileInventory) tile; Block block = world.getType(blockPosition).getBlock(); Container container = null; @@ -162,47 +163,54 @@ public class AnySilentContainer implements IAnySilentContainer { } if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { - tile = new InventoryLargeChest("container.chestDouble", - (TileEntityChest) localTileEntity, (ITileInventory) tile); + tileInventory = new InventoryLargeChest("container.chestDouble", + (TileEntityChest) localTileEntity, tileInventory); } else { - tile = new InventoryLargeChest("container.chestDouble", - (ITileInventory) tile, (TileEntityChest) localTileEntity); + tileInventory = new InventoryLargeChest("container.chestDouble", + tileInventory, (TileEntityChest) localTileEntity); } break; } - if (silentchest) { - container = new SilentContainerChest(player.inventory, ((IInventory) tile), player); - } - - if (((BlockChest) block).g == BlockChest.Type.BASIC) { + BlockChest blockChest = (BlockChest) block; + if (blockChest.g == BlockChest.Type.BASIC) { player.b(StatisticList.ac); - } else if (((BlockChest) block).g == BlockChest.Type.TRAP) { + } else if (blockChest.g == BlockChest.Type.TRAP) { player.b(StatisticList.W); } - } - boolean returnValue = false; - final IInventory iInventory = (IInventory) tile; - - if (!silentchest || container == null) { - player.openContainer(iInventory); - returnValue = true; - } else { - try { - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, iInventory.getName(), iInventory.getScoreboardDisplayName(), iInventory.getSize())); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - returnValue = true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent chest."); + if (silentchest) { + container = new SilentContainerChest(player.inventory, tileInventory, player); } } - return returnValue; + // AnyChest only - SilentChest not active or container unsupported + if (!silentchest || container == null) { + player.openContainer(tileInventory); + return true; + } + + // SilentChest + try { + // Call InventoryOpenEvent + container = CraftEventFactory.callInventoryOpenEvent(player, container, false); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, tileInventory.getContainerName(), tileInventory.getScoreboardDisplayName(), tileInventory.getSize())); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } } } -- 2.49.1 From 73f390ab20cdb48943d49574d886ebe1648b4b07 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 15 Jan 2017 07:33:53 -0500 Subject: [PATCH 089/253] Jitpack's Maven version is pretty outdated. Hopefully fixes build. The `all` profile is no longer active by default, just in case. --- pom.xml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 6b466c0..c9759dc 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ UTF-8 - 3.0.6 + 3.0.7-SNAPSHOT @@ -34,7 +34,10 @@ all - true + + all + true + @@ -78,7 +81,9 @@ *:* - META-INF/maven/** + + META-INF/maven/** + -- 2.49.1 From 4095e8039d9663b7dd9ec184650b94ee8f66e0e4 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 15 Jan 2017 08:08:51 -0500 Subject: [PATCH 090/253] RIPo.bukkit.org repo.bukkit.org is dead, Spigot doesn't host builds that old. Didn't realize that I'd installed it locally when compiling CB 1.4.5 to use with OpenInv. Whoops. Corrected dependency order - no idea why this compiled at all before. My bad. --- .gitignore | 1 - api/pom.xml | 3 ++- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 10 +++++----- internal/1_4_6/pom.xml | 10 +++++----- internal/v1_10_R1/pom.xml | 10 +++++----- internal/v1_11_R1/pom.xml | 10 +++++----- internal/v1_4_R1/pom.xml | 10 +++++----- internal/v1_5_R2/pom.xml | 10 +++++----- internal/v1_5_R3/pom.xml | 10 +++++----- internal/v1_6_R1/pom.xml | 10 +++++----- internal/v1_6_R2/pom.xml | 10 +++++----- internal/v1_6_R3/pom.xml | 10 +++++----- internal/v1_7_R1/pom.xml | 10 +++++----- internal/v1_7_R2/pom.xml | 10 +++++----- internal/v1_7_R3/pom.xml | 10 +++++----- internal/v1_7_R4/pom.xml | 10 +++++----- internal/v1_8_R1/pom.xml | 10 +++++----- internal/v1_8_R2/pom.xml | 10 +++++----- internal/v1_8_R3/pom.xml | 10 +++++----- internal/v1_9_R1/pom.xml | 10 +++++----- internal/v1_9_R2/pom.xml | 10 +++++----- lib/bukkit-1.4.5-R1.0.jar | Bin 0 -> 4835647 bytes plugin/plugin-core/pom.xml | 3 ++- 24 files changed, 101 insertions(+), 100 deletions(-) create mode 100644 lib/bukkit-1.4.5-R1.0.jar diff --git a/.gitignore b/.gitignore index dac1d9c..ec7e59c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,5 @@ **/.idea **/target **/bin -**/lib **/out **dependency-reduced-pom.xml diff --git a/api/pom.xml b/api/pom.xml index 1e84cc6..5982258 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -16,7 +16,8 @@ org.bukkit bukkit 1.4.5-R1.0 - provided + system + ${project.basedir}/../lib/bukkit-1.4.5-R1.0.jar diff --git a/common/pom.xml b/common/pom.xml index bf47814..835f733 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -16,9 +16,9 @@ org.bukkit bukkit 1.4.5-R1.0 - provided + system + ${project.basedir}/../lib/bukkit-1.4.5-R1.0.jar - com.lishid openinvapi diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 2655295..40c1af4 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -12,17 +12,17 @@ OpenInvAdapter1_4_5 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.bukkit craftbukkit 1.4.5-R1.0 provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index b330a80..635515a 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -12,17 +12,17 @@ OpenInvAdapter1_4_6 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.bukkit craftbukkit 1.4.6-R0.3 provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 265446e..aa06f40 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -12,17 +12,17 @@ OpenInvAdapter1_10_R1 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.spigotmc spigot 1.10-R0.1-SNAPSHOT provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index eb26f81..cd13e66 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -12,17 +12,17 @@ OpenInvAdapter1_11_R1 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.spigotmc spigot 1.11.2-R0.1-SNAPSHOT provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 006ec96..6cb4a93 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -12,17 +12,17 @@ OpenInvAdapter1_4_R1 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.bukkit craftbukkit 1.4.7-R1.0 provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 8b255b9..20b7a15 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -12,17 +12,17 @@ OpenInvAdapter1_5_R2 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.bukkit craftbukkit 1.5.1-R0.2 provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 7a5148a..a304ea6 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -12,17 +12,17 @@ OpenInvAdapter1_5_R3 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.bukkit craftbukkit 1.5.2-R1.0 provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 652702e..3d9947d 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -12,17 +12,17 @@ OpenInvAdapter1_6_R1 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.bukkit craftbukkit 1.6.1-R0.1-SNAPSHOT provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 708b4ad..9bd7e39 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -12,17 +12,17 @@ OpenInvAdapter1_6_R2 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.bukkit craftbukkit 1.6.2-R1.0 provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 9f66d53..ed49ca1 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -12,17 +12,17 @@ OpenInvAdapter1_6_R3 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.bukkit craftbukkit 1.6.4-R2.0 provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index a8ed017..d5be01d 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -12,17 +12,17 @@ OpenInvAdapter1_7_R1 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.bukkit craftbukkit 1.7.2-R0.4 provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 31a98d2..a4166ce 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -12,17 +12,17 @@ OpenInvAdapter1_7_R2 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.bukkit craftbukkit 1.7.5-R0.1 provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 09e82e4..ee6a076 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -12,17 +12,17 @@ OpenInvAdapter1_7_R3 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.bukkit craftbukkit 1.7.9-R0.2-SNAPSHOT provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 5afa9b8..cfcd689 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -12,11 +12,6 @@ OpenInvAdapter1_7_R4 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.spigotmc spigot-api @@ -29,6 +24,11 @@ 1.7.10-R0.1 provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index dcbf5c4..470b496 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -12,17 +12,17 @@ OpenInvAdapter1_8_R1 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.spigotmc spigot 1.8-R0.1-SNAPSHOT provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 80fafd5..f6cd3b8 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -12,17 +12,17 @@ OpenInvAdapter1_8_R2 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.spigotmc spigot 1.8.3-R0.1-SNAPSHOT provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 7d78fdf..c1b823a 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -12,17 +12,17 @@ OpenInvAdapter1_8_R3 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.spigotmc spigot 1.8.8-R0.1-SNAPSHOT provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index 13d1c3a..7e3090d 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -12,16 +12,16 @@ OpenInvAdapter1_9_R1 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.spigotmc spigot 1.9-R0.1-SNAPSHOT provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index b04cc62..faec01e 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -12,17 +12,17 @@ OpenInvAdapter1_9_R2 - - com.lishid - openinvcommon - 1.0-SNAPSHOT - org.spigotmc spigot 1.9.4-R0.1-SNAPSHOT provided + + com.lishid + openinvcommon + 1.0-SNAPSHOT + diff --git a/lib/bukkit-1.4.5-R1.0.jar b/lib/bukkit-1.4.5-R1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..2d26d29bd5263de922d196f08ae3e21df623ca25 GIT binary patch literal 4835647 zcmbrl1#Dc)wk>LAW@cu`%*@Qp%*+%sGc!Y*DQ0G7cH)?sVu;!P&OYb9fA9PIZ0YJR zsibaoRjX>$m^H^7rKKnX3Wf#*1qB6EsdXv|^xqz6ATS^~F;yXYDS2_m_X!{%P#{Ga zNT@$OK>poL@jnhm`|R<52FnS_ONooAs4~cj-^xu*%F56)%)`sj)67iGHYqbLv1}hW z(@D>a(aF#YLqYDBsHb4i_K|tE=SZ`-NW13J)Sz{JX}Z1jYR`#QMwL-k=@X6vj~vGa z!1P3#0lZ*Fyv4o4kl?91^r_d0c(waw>LfXXJ+rpU}9_J;u4#-9)P-vJ{mwez9LDm zxq8!Mn8vw;5&bnO#aJY9ADMt`8f$t@+*Y^+oiu^mc(TN5qYPHA)m7%Wr@Z+jsl}A2 zpA3FlB>(yQN5LEF^Y`C5Rn!^AHvobe5C4Zeu7@0-tHit2fNmGWKL1y)5TM%7U*KJ6 zqT~^bVTl9jYrgC8R$t3|2M()@x?<|SZJ#}cMeP~kJW(J9$b|O$iVZ^_R?#d>ozZ-m za;O^n(px-W>aP(x{F)bKb@-r`WBM*A7WX8A&VDOFgLfFOHpLWBWSsV-g6=Yv58xbr zZI9x;WkWB|>{WCM^AZ`>I%HJKF?p9B_BuSHftfO>YU_KAjUu^ir8&&(h24XH&6|7y zU40%UvZt|ZDsyWx%xLO3(QNMu>XEfGqh{}Qe{yaoh-TEKORr5!lUaUl3sPKRx*y0f zlcTXzn8M1GLTPsu=15k7(Z(fR6#s%RQ2KKfkeP$6khHQpp3EXH&xpk}Sz;J_LLFT; zu{G8e(QL8DT6G(i-^W}!DsMRbpq9n?Rc$7}p&A6>QR%8r zb=k$v%Zu8SCobnvMU!jtAVC$V!F2ATq*v|7NQp_G{79qNTQ!-iL)C z6hBn{WzF28&ZuF$zKhOJ)7hm;zp|=6X0yAarJx?QT$-U&lb$9`yBE)MTZ}fLpI7PeG1(*_mS{J|LsKK+TOwrEGL4aS=tv1CW<`+_5SE1T{>QJ6(N+K>+Kt2>eh zYxN$3faEsQNgJ#}N|s4CKxr6*>@^-9G+5x+#V%S|Ty*xy#w_( }_tA-j>N?A9bv8 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%0Dmc@z& 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

*UbElhbFGk20YXLrk0N@fkL z2qiK~yIbmh6NyL+9gW&|(r;sSC7x64JBKXX?*UqtOWzwWX{_9BQqoy2g~x2IHh^?Z zT3Q;D5?|n~W~YoldSiDAXgBv8*1wNR0MzVP1g4>z1{z(94ndZ#juXIDMsOkpskx~+ z~rp^J`E!9b$#GhOe4`HPNZjxDoauPg?temK!*;oeYQ3^zJBH)7|5&{e& z>Gi)Y2ZtJEbc`s74oV@)#;jNSMX_tXe5akVpjx{O~Td1b3qLvFt1Za$@$VFGQy8F;Rs1KcQ zP=^<>s}%&pGs{J(>;<}7Mq|0!LP-lt|K43D-KrmKA>Vgo>iQ;A1GZ3Q;7OlqTR^?f zQ;xZ^pyWWh6p>M;xA_C~4Qj|WGLpc#sx_oJO4}l(HH#3%jm+MTt?iompV%>T?8$?F zdX>4-Nj7twfqv4Xc$x!DZaMR9S|zlu41UFGmaTox4R**n_2lj9qEr_x(*b?d5)Kes z7lm=6rgm_GM;lF~De`aLkz2q6gFzRb#x?lzYk&)9tpG@+O>cXc<&a*x5T8U!M3{Mo zd$29aD;g66GxN5IQRmp8dsPJUI^;nU1%QFKZ*Ub48(t>52>`s}CyY)ZGt|KtXr&1? zSG5EJWP0(t(PC~~GWI$!;GJ7;H}DxRIx9DTKKQvCpf4aog0Qplp!W+P?+8MI@U!Bm zJu{@fIiha@aX=r?+gB2Qw^<~I=qoHnV&DN}xG{ccbX>fL#Ue?(6@7tPc;8e?%p2In;r-tC+G*gzaQT2 z4kXYG2HDqFQHGhw*q^}^j7)ZEl4|@e@XL{#Z4B0vcwIK zd8dP2SjO96TNj`n5^ z{zfnYE|3c0>x1z2g5ALl1vHHGO4_oqD_N*~Qpka8A@JIjMxHmVD-S}L^qGn_5$|lg zI|^oZf_n&@C%oZ@^$zpDX1bw=+(F$vhumSgp)YazBk^}a%JO%CMFYNQ%V?c*2YyMa z9B7KuD7_qnAn!@G)qK}Lp;wrsTbSfiJcF}as&m_<@jL-SJEc#SVHY>R&8fxE#{=2W zXF|9=f1|dWMK6`OvclizTdh3Q<3fNBPwfoIV_L5-RBcW~ZFW#?cFe!tqiVCmYO~{N zs{tB}KQwY45Q863(B2gM1=luR-b9wj)2o6wHHk>Ihdvkv!^lu`s;*fUMdh<5GRis- z+R*uu6}xqWAsxvv#+^!)vZW6WEz^ltX6bPJe6%G)imMuAwaqe`H!^f}cZ0720B*QL^3|`eRR{=!^cv+wu$tu1~!B z`3hIva{d;PMVo&P%AFH#a1d-XJFjX5*qC9imMhiDe*GXy?pV`j`p0@L}%?}{nzGauhDYI-+n&tf=tj1Mf)su4dW(>JCGGc-knhLI6 zIor0vm~eqi5`|gqFD2r@ zOmUVoi7&@>;RjH&DZ%r=>_N^ksf<8>UEckVG3@nNNou+bYKdsK|C_~;^b>9LC=SkN zaIh2RLkOVlMI>k^`OdWa<93v|o%q(p60{{b%;4Qn$Tu?bZ~-=eeLj(Y-g}RG(0xy{ zvU_u1eOB#*mz30}{o5r_^|ZjBuPKSaf1>1X{X3T?+O|b`ONu2y%@ONCR&iJ5rj5EC z&2Lf<x!1F@Fd@1$iTAkJ$ffzsdWnj?c)L)wzAG2KB>jWuw#LI z#krQc3OYjC#~ap;{Z51)=!#GHhhtdgmEOOP#*LkuygdjNdc>*dEzucpr~+JflKRD?~|>$*AWYcbhT1{)Y{1Lo@Tvt@aYFQ{MF zSHSvpiJ6VHSTuQuEswkHRUq$HAfJ*vTea(aB)d+;op3+%dMf%>zBOU*@n8ng9ThU_P!2?w0D2a3_gwHpPYj6*?_1MuiwL3bjt$J0EhJ<(i9lS53dRjEeZ8Vm!4k z*n0O14KcA)wH!~;qW}wZ9&97=@=^3%7KqhB$t3Nw^C=7s_XSnSM(uM-`K6PgT?aRI zaW5}m$r;|Z?7&@_%p$&2aqXBI%TUEpV0rPk1J}AzV&B*L!MEKT*ZH2o%xZxMR;InT zj!S1s1e#WO=ntgWnd{*`p!u{aW{o2ED~BMV|9LP1{g9^1H* z6dL_1yLKmRcdXC;g#Oz}&V*#0%FsN^ON`b!gvNBS{)W@Xza**_7jjV;Uv{OFU-E+g zy!ejt-=&+s8gu`*lI{Q3-sOP*`p^D{!Y}3jamN2yB<>Ph2iMPp63W=r+|2L-Hr%I=>s605#|(zdUm`2Lml|Ig<@{Qv7<{hzkeLmIH|DoYq2b}VBVGJ4+; zBsCydN`D!~qoAWeev=d#l=zlxU?e0RHYUwt!jdoz7QDQ^yu7Y;nO_yc;96(YWcdR@ zxIACAc70i`qe8dIb>*r`>(cMqtASh;1oq+e$jeReSa5>>c+=zU;gt}?KAFnJ0L=9` z4<%>rMiVi|={sJ|ihTmOelOPHu5|sADYWgdI@@NxVO(aX>VW#;n+>jQ%0UgcJ@nP& zfG+l;eG9nQs?CVr+BRv+Wy66UH+H>okM+~oEF9jf-qCBAHIYMIdLhbo?gZ~#Tb1Hpo@Uo zo(Cc$*KGI}t}m&4SLt30u5ZcS6Yj@%rnV+SA7dNkgW=Gm3{K}to7K+tJkj2@#-)xa zZHybJjtZ>;L%&+DG$COhD(nc)pg9h^?>}Mw0KvAicp)i@tgDgTNl~w+tRCE;yXG`f zU)KTEjEr`0AsrRXgPvaRb2R!?tB2RIAzg}oR2mq}{l0d+Jq!3tCDl#CDa{bkrtBv9 z4u4{>Q3E0B`VUnQ_;Au;=r zJNNB;!zh?@bV2EoIEQogh+HhTN>aOVL>~2A9w`eSMN5(=EZ~DHC00>kM4U)zyVI6* z-TH@@NEVpt)m-u_7o#bIwKF7we&aab_og*7f-HgMYC7Yv-it&6`n=`Tnh_nl)jif1 zdc;YYLpz|6p`Y`2mo3cuM@1r6ze0AY0BN-@cpW9>Lc}4vIGR$ze#Te+Oee@eV&;Gp2<<2R*t0Nx` zZxSr;spP6e-P5y|1GRC7czmoS?ge^{8gIHxSj+OLEI872nNJ4(VmG%BKkwHzV=6;$ zV5dv+jC@_EP{pgtD%(y9ZadVbT~=d)QXxC_!f(JhACE;W^f~2D=4uHQeQekd?(z@R zRQ7MiU7X)!rz{{13pR)%a1EQr|14WTMBCaWBDL(h2UIr3RN%~x!(3mw^ni9-< zMOsErZc+>fk`6LVD|nS=v9wLlyMQ+p1CCAB)AA;_Jo#RSX}_(*vZ8eZ3C0xa8M*bQ z%O)+wB{`~Nb3luI+87OzCf95&P{pmNFduQSfTk8&p7)Wi-DJhaXts-WpjZouq(Tc% z3k+ScUmkz=F9}IM269|FgHv4IApMqZIp1^#1f3yn3fptPcSZyK)v}~ef zBlR3;1Ob2N9)yhT@pjl9J-{nONpaqs4Y54pBSg`j+h@fBdZSVQ7Ltjp;}ra$KbKb5 zr~9U=-HZ)aNP)j@ki8MHib=7Vg$rhO1)EM1j8L!pKNKVJ(Vo8 zJ(VtU9>MZVefR#4im?!21w?b?CE9>(NL}izOE{unq+{yGzLKK8W4qjl_$_m{nAR&| zPS1pV)=S|+2ahP=M*ycQ(?{E8B29%gAvqDP{7JsXAK1*Y!4&jBQ^m53(iI|Sv1cXc zhc893sxH0cQl`%OtXM>9{sCI6-pEobV1)c+c1VR;7HdK5H-j7+D;u*iQfZH-d)mWC zMx@DKrY$EW78sqAn0qD^g*s}8C8-QzU7`K9M0Mvsmb%~noU^wu9TZo-1Z|ktDY)mB zGh5!@&YheWH7Ro}hJlgJ+=rnrHUf26O;1{5h z4}chtIb~WO6S@yt$`Z6a%#$vQA}Pt*JFcTY)?c)Z7o{+wJnx+OQduL2T8?8Op~gCL zkJB9-IQ$5BU@VR^AKx4~Cui{R=z7=FkLx>GSP@S@iscwims6FrLTIIro{7IO|CYv{ zU^lcfYH4in!v|MNWa$VAuy95;)HFYQPF#ADkH{#Z3h|M|%>t<%pDRW;B+)UWKzSbwFavNL=Q z(cGK1DG2S68a0KVl-hCY>JGZZ+Gb;@Z)P>!NC|v)PbUW-iQj-9J;c_ySPQFk+;|_o z8g*UQ3j4LNKUswz$N}+c`zKuZ@h)^P)gb{Fp&91+z%UnGbuw zLT!42LmGCUnCjWZ(FJowhfi5fRn>^tD{57Ha_iW>@dvD?sGQv753KgGK*+**a6vD4 zRl5qMiTz+W%mQ^Bp+~Tj1Hz2Ta5~75Uj-^0Vv(674t)j*zXY2!!X>4`MbOEGQf|I0 zOeNt4a_7*}Dnx5R&Wgdv!DBMULQ0FI8uhU>?Z{JAF3C{k&(D8UI|_eC>ODw@h1oaXgQnY$Gl zt2wjxRO!z7P}Kf1Feo{@3z~zYL>WgZ7}L@z`7rPg4Rats<#Q zkLR-qf2;Q+#`#BCrkF~miWY>TlEsh|4P~))Gp%8R?s&7vL-VbtNfB3V=GrulatLoJ zOLB8Edk(QpS^wkTLa3QsC}>vdT^VIiCpi^Rv{PsY$jQLrYrwR1zCwx-p_#h!o1<_Is%Z#7A(cUv`cqOzMv`}b<#j*VXkE2B( zt~`xFYFWJ*D*f7QSx@F1^xR?1m1L6*F!wrO`f_z=FfJH*)qP2@9V>Yt*N5qibM3*n z%hY>m5vOAFwDqILNiH1+aLn?0wpodA5n;7Y%s}0UCvCX4XtTl>IHdgA0&l@1<<{~- zrZ%Yp&ceZQup#{Nl<1_frpt&Xlf^fGBa1a5E?B8`cDi)FX-H^$HB2Apth4N_5K#@P zBpJRap3JDHgG^}J(7M91H<;;P$_{3HDRSz>{I`4yuYZR5scern>mMVbmrf5IS#%jF z$v0@+g*uyQ~orC9^;ly^(yasv_giSr~K4 z8wdkRqglY(?Iu`<`8pcWJSo&EUIYKM>e*!ZQRG0XjspnRI4e>ED-{8SN7EF|K8CM; zLCaf;!>P+8c{}9)LD^eI)xjlQ!U+To?(XgmL4v!xySrO}1iiSsyGw8`?(XjH9^7Gg z(r@=X^YwJ5zqR1U{d3p4=hUfFwNLH6y8yyO5Uc{-7W)0)vdLqdU~imIyL~Y2w%caj z2Tqr!Yj4CwN@N)`lW$kEWNHw&f<$z7L(llj9d8&?(nc?*iFhq{Olf(iWQa)ZrN|qS zr6_8Ga^uj)d)KVee5MijL9X@p76quXqu6W{Ic9 ziM0$A-s%tbpj@zsvvuZ!^WYH!Aeli1Jz} zs~kYP-63JHPRV3UF#CAS2*D+mXsH4@{LujT4Z&bjDvbc&P?8@GZH}*LJ1^TeupLlr z0%ZYafokYx5qTA2ddI&GO6WzIrlwHjx6+worHUCf#opj^ehDfb|@HWnXaKKq|S;#fxkP)U7X{f>-MmEVszKw>~lM_#dfTC z26k)GB(t7NOfa#**xyb7(gu=JhLw~#LWt(Js$VxC#b>4uHC*TEPf(_JgZvi~KmwWO ziTJ+qoqt3E{@pvy#n{2|w{@K3|1V>ie`gW=?TZ9#ZLN&;ZR8wmt?m9tODjM2HyH)6 zZr-qJtlox(z>8REphqLU%L`OnMTNK9slnUaSd+-|r-Ce$SiYB{YqwVabwcfFi~H~6BZ zfkYajYyCwE%X`f&Cs%qkCqmhfY}5g);H#%?CTbk`5ro7_tViE|L}S97HR(`a7EMgv zkwf)0`Q9_7ISp$kJ-sz>;!Zrp*^VU}pVG)pN2gER=mY`xMVlJ3N@^MW^#PmPsMPfS zxSX+z8{bp+;$Q|89Sr^Ycp{}@pz{JqS7zOt9dB@E`E z%2%Sx_=73W8v)7{5?I6NG8S85AeU&a4cs7XsnDp@83Bar9_Ub+CG2s%K*+e|tH9P@ zB~_=5q8dpj6oz{;g5<6e8(z^;Y#4o4jh zCC!z7aO*|8eaO9_Leq!YX50cHL+Zd2#v0AvJaNrCGUqy-Vbydz!sObXsd1SrKCVBT zfnBy!k+^y~;PQSrRLeo!p->18(N>EQE2rC1NNe#Q1_~VEJldhoN0IH4RFE6DuO+juv%v5_&Ga`%{~_0Y z$Lcp7E%0=o9%URZq!fC9`&An+12pTdZRQV{T1vQVM6DknAPNfW12?ptfo`t?g-Cu* zGAN}j#Vl;8u&;EZ=PE~Btl^tC{fsH1-oTPi_fDdM~es>{{Jbf4* zcG>C_+d7hkUP~OL`{)-Vgle|aB6wJJB3p>lAlV@x1RJvgg&-5_p5;za{W}$o4~ESa z8U_;z55YKoBm6CFwj!i1rNKZ<_%EE#h~Lp1L7$-o_yf{VKCdHw4H&q{MtrvZraC4E z^lRqNh={Txy9YpCgXVQjtw0fpzELKM;feQme_)QJKpV(_Vl+c|Rr)TlA}P@YmD3*t z=0gMCDTF}r?j0riU7qCHT>7r(D_L!;9lrf3#>s)_8j0=Tr=H{>n$L#OJ&>T6qG~Xn zaMPVywYP3z#o;5rt=AUGgzL55GXmBhGs3@l68|Fy{1vN?e_3|^D?j`rXj@gyosj2I zU;CETru4SsX$dhPtBkReKUFW1y3rP_SzuF;N%l|a!4D9NG80X()tY}c7fd}fmrC_7 z_$)1;C}_wPVJ_ejQz70&rY-Z7yYIyNFq>g>*lH_M&E{t%^CW1y#=UyCdQNw~#!mmX zA58wys^h1z=K?HL;OasUvCX@0Df;MH+yx^0{j0wgm|TbN{jtGr zhsoXVQEVS-AuKO2;lGBCUo7!(d#?F;Fz$8Da`bhhyWQu6J*}wubmOf=Lb$o41=3d? z__e$Y<9UMV?rvH#$uJzv8*}gUadM9s;a_Z!v~|{qsz0VO^{p1^13l~|`pn@y@6jZA z`+SkPrG}DXE`VX?P{N~xhV5u<%98MyUI`ZFNO3OR6J4YHvn;HNzNV3QY~>ktW=1nH za+8SA@DJd`Pq&8&$c>PEWF=&F7Ea?7nC(^BdpHee11Hoz5t+w{(J6alZZOwnyDN+A2WzxEsO0{H8LSgHAGIV^t7?0D8KdZ;tCWbMw&A=N%?g3<2(ac=~9y0 zrP+&vqYZm&ULc-BTasUWjs!*;NB(%WVK(z46-gNTWIoFR=AjAV&f>Lb>K=70r0T7q z4wK0+6Bx)+N{iJ#G*lu*OmS>dsEt%jU0O7^lbW(iv!evJu*Sxv5F!i}oL|utBowJA z?3rvQRzyta=;Erq+rq{?o^L@ARc|5&q!O%MWa{>&d!rFp_54_55zCyiO=ZaVg(RP? zK97d3h{)kOHCH;DPI0`yE`VQp24d(V6L;oBnvO~)<=j%7h*%}w?D@P%xr-r-K+6!- zc1*)K^l@L*FUJa-H{GD6*!I z&SSupLM(1WYfO~rQNuUe=lWu%MPFEh$!<}C*>>MRA59W$m-!Z6g!!6Yr1|cS=m@!>YQ8|BP=~sVQRkN zwWhaWGM%o;aFt5Ti(bx5%8wF^&lMaCP)d%O7luEm4CutjX(XdHb&zc6+|3TK1Y#3 zOn350s>y|maDm~Sp1}vkW`O(wy&4!gMHBjj#N!AQ4<=_7zgXESW9O7T^4by)heKNG zS!r6N{5)nl7&zwcn(*Oe=kJ(eYQ{HlTgoh;CX z{j^b@AZ}TK(Vsh-zf4V9vL{`NBnlAZ-+3*xGAJZs7Rd+^EfN@%>6C}09(OV(rV(kj z5G#d$n2e+rWoxSQ{MoIW)39Wh77Sc z#c>mdY5Bx?3tf6kc#sz2MvYFc>F$a}eY%64%?g^$QZXb8-bijeB4S@!^FS7}_ck}N zSB+jZmCEDeK;OC}lQlAE!sIFL+qk<$u`0T^COZKyC;df6^sJLZ+0vk-ivd^p1#Wz| z>oF{H9!ctirXonR6Sx>+p&RWYQBj$;MM{)5jK^IuR}woYOYXCPGAzm-#DX%ds+Zi5 zJD?vgxFISLJ$7-oEVSz-p^{B^J4SWUNG4W@hjm#eX{nLXlm&cC_7l(7lHl1Q*ae$z_lYkm**7;OV!B{Do<8$LY8)NLO z&T%n!Zh~1>zzO@Dk#hqv^(u<8DXSLDtC;!ldGVL3MX_xkk&>)}m3ci!mi+PZukW6G zYCl9r9-+2|5|VDssq51j0$`0^pjI4Sg~IpdSt?M@?ZuDFbmIdI)zBn`D7}a(NSZp< z&7QdePVj|JGG_>1g;96cvouZ9x~2P*XguY@@N@EZHzwxs>!vO1X`X&J5R$EyNQ6)y zK3u*d5C0hu`gfg+f7M$5XXV9jpl@SjYh!FA?DDSM`Hwm*JyzQGUF8q39-f|rQRw3z z_ftUAtav*M=#3Cagb*@B=?hvED1l>T3bl-->2Ol?7W5e+iXxuFPIya{&}7~QOIg?< zI{#wiq-FeM%;Lw}!v%5&=mMDq(7LOmIvBNVj)c0Ya~G}h?m_|=6=kH|z9^X-ve3Ii|E@>kbgjy%rAtUl2H0m@^E1qaN;}wjS}nd+-{4S~$k**I3{IpIlVV8ic=yxu z3%*1;PE?MeywzN|Z??8y2e?j_Qf(k%Hbeixsd{RuNLhIgA0kf##p zR3qtl9Rexj!~xBbVLMD(K6h&^!XSTV=moBl$%A#5Z=yvUt>+VP*<5$<@;o0KvZysl z`TP)QV}`-08=dB|v{|AuR@?)gg|%ok8cSHy`yK#CiI^<~F_O?`yI^2ZgU6hLWtnI{ z(<$40QUmVA32g?(+Vu`Hvn(@Z`5zsl`e3T_N^D+!E2?w^$v%L-*Z9YObX)&-EwKMr zq)C}OIvLyiQ_ha-#&-TII5@Z0ZTtGIgcAZZxPmR|N$%m|KGWvpJv zA_gV~W|DUjCI)yIO&AOfOc? zl~PHQgzpF$VJ?7ErTG>OVDd6sbd+u}f%DGKq|y0rh4Hf$O2ZgbswRiz*_LIlQf}CV zszd2zYH*m@?bp%_&pPVz7%zhEMG0z2mM*Vc z0w?&<5l#rdY{J?Y6RD6k*tz~*z8?^pEvxT~lkvyp`*-=V{}5I0U8Iw-+dusUl>Q;m zQ?snFWb;{xMom5xKYtZXMJNnP4WEHqnQ*S-s=mVbuzL9f!Uz3FED0Mp{_|guX!>Hn z1Uw=#{_R*g*IkCk*vjBLCi(*5t=uA}kF-mIRAiUy@J`_a7~7~IO(3}qMcwZJpCHB% z1&cR_T}aGw_JcvjhQm#6D>ZRf}eWP4(0Q>qlq6 z-7at8s?=Om$Pk{O)$oIvolk*v%jXCUz>`lQ(+-x5X2Y%1{LT{v#udC&r2g*t>3xLf zI>&{$V1y)tbE*4{!j&Jcj0d{5%xldAHk`k%Xtm*e^Q02mQ2g;;OwP<{sH-yGNb8xg zak0$?p2V&^Tl^$~-wLbDgI*twaVz0OK4X^QQq<0Ul?|BFad81M(Asc$hd2qJxgS-h zLJzzYx`3gaAUMvKCGJxOrJA68r(+rO%v{*)1%-7yr!s$eC#T!UY(I+IHdQ@!CGKbmexR;@Phxb#sAbba#kc z$Zj=8S4zFsFpmCTWzAfRn!J}$l)Jxiri1$TKQV0Dlg0en3l5c1Mo8-tOCTa_2I)OB z@S)kyn;df7I#LzW6#^k=B=ilSE|g@g4{?Pt2L_InF+KhKwYx#El`JPC?YGbCeob;BEH*Y`ceARs4CtAjuOdIhdgF z&YwH@Ii^VG5%#YH@znOE#P>aKQvOjx@xM+GBKm*%jJW@AqY>%9rYi&1&Fbo)T@I%L zB+U;nL%`6tx{!M?EPjX)h=0}@{cSW7f{kwD+3nHYk^0+e#3(5cQg8(FLflnkAjg7K zKi+ay(y+0#mI`RMv@(@)msYt#IccF;d`YmXtSivtuap{--ds?OgRJ{A;pKxhQ zOe&6@#^#+hOm$7BeewNa`J2(ewK=U1=j}BG!-r#{^9)~9sbYQbQJ#tJb9)?Pt-_|N zz@8m+Y{sru9LIRR{CNHT_Ax7>$rt4k6R8y1h; zJEFGJ?Z^6cUA7@UW<|f(bQMpzeW&F`_Bk*XR=_5u{;=Jo2z{Gh(hIzJ(~|*XZ@Iww zVB61U^Y*?YCsu12)1h=+Tk(D}nUO{Ye#+6%-gZYlE~ah}E|vbN$pa8Z$3|7T2PRIG!?z8^_QfI3O_0+7;+BO@_1;ljD?4h%FnKN7Bb*5EVr zx0$dnT8##17-*@Fb2^1}^9KhndrxPnYc8UuYOM}IQH5T_)35rAWoEqUNJv|(eC<^3 z^n;R7Dns$MVsWz3&jLCijwFgGpwB(DF&28%Nun~9`iKq00O=`TLhY~oTc4)(DW89S zXh-Q2a?@YUX4W7FhVBL(D)*3h^@f`#tfQ;tIigV-4Tg-IiPC7I#G(Klc2TTcSRWX+ z(#QiKX0XxJ;4df+2Dd*n`hrb;saB}{S(A4T#mDv!gCGuC^(E%_W4rK2Nb|qGnEoeH z|4~ubscL#)tDjEa<;=wE?KBngn)pM;7lN!BiW8- zW|pvqj{87Mi=uJHvXV_|oo&4&;(~j1(fJwv8A|6KH_llEeYgo2(;k_~ynnJ-bIbX3 z;&q$xWIC^)+mJhSS`hf?b*%bbFL=Iqh{LTX zcEj)ds(#*xcX>wOjp>d=ea^!Tyij~NGll+6m)S1&tHc)@`a5M-AB|*#sPw44lc=67 z_o+|^E zFg6IwAL)vl=&Jx@AizY%k=WBw#F5npcRR7pQiEh0%fv`PGcV=GQc?p8yWug&o%MIF zIL(w4R{Z3&<}&h?PKiMV#wIkLL}`sZhc#;!-5k!-B><~zFP}gSQj>WM-KwI2^@<(I zzUZ)!;ElU^t@lyY;oKezb#nc6p8o{x_`>$GARcAlB~2}y_&VI@lh1PzfHusJ>t>wA zl0UH%@WyFI4sX9;LQZipv6!$dM;*6J>=(c&@TlO|G16`poElHbXR@utp}PW_Y3zvH zvVY14B?M?KxQG>92rOK7?0lobuaO1EhF$`Q*Gd}hhk@~=+wZa&z!Ez(HU2Dgwje*0 zM9jS-JyA1%Oj|V|et0%txW+RlRUzG#ff#nEus;~>tZq?*#NYvz`&%dRHLPgPh?|8z z)_!NrWnNAy?Hq!!eeSqsn$a;Yv9S5ft!(;itpx#lbwSQHf@?d2b#Ba_-#D4?pDcbP zla{=(8an2loEZ>$;hi955%Anp)hS7VY zkT83ru=F)kf*um57+xcbJX(k4+NiEY2|4uuuRK*mk2Adr`7w!5v9d5kGjgy+jxj{H zIA{Ynq;r@TqR2ssP;5?;!8kf3snlC&pXsYxdJl^yXU~h5Rm1M^$~Y>{c&^MH6sQEV ziRhz^Z7XV}shLoiXMjdRNIu}*4Ny~n%i7LA_tmz|^2+5S)75@{>igJ`R5wAoHKhx* z*Rm~o2RH2VA~*B~l$OFRFVCzkw(7FkaBV~?mCBMW!7`|o_ExKRad<9}mvF1pRuy;5 zqQq~V_T-;Z{HpUC_YJAYi5akX9qk=XwhoLu$sT*I2O1ZQwDjK4$`zzQ&MQ=8Db80` zfYA{26HGUr=EsK9<+JXtXcZlRTKM!|6r>Fcl3wi7{df2*(^bX5;mp7=E`w^x;|ep% zqSNO$apkI|y#t%q#Qy%a*ck1&FxBV#drI2t=zi=I;(W~RS?h4o4jYOE)h^D6(Tm@^L=^$I&r2 zxpH6ddod&ACD!E2+awvC(bJXG5CO9=rR3}pckiOwttKU;X$xUShU?HhH z*{u%VM9{d{NHwor(S+M`16(5RV!8>>P8c}tKQ-H-JR$CsL_WdT%j#F3^zSoxk1Ke{ zM!@3OR%AaNF`cW#L~NTBV9mYbl)n>eow=zIy`FmbA~^bsxPxY`4sVt<#%9Mdwz~BPTj32cdlx)SnVAH(4s} z4qRTq)afQqv1{u>9A|XM{Q1!xQPw?5BYKnUr;CzztCVPqLN}tI`*%k%rOkQe(Dl+C z*Ie*+5-0deq{wMM6s)BKGQIRD+_xT|U%V5JpsmLTH#t--5v?_ZRnUNWa@$=;&z#Jk zGpr|;0`if5?LSbTwn5Wae{SGCT$gWnds0zzP-r&+WG`^MTH9DxsKuNz({PdQx!`zL zm?oC10mQ!Hvy-X#FPdkSTCIgec-J$k6RuaeZ!lJ$<{4bIdn$}^@l@6o=r@B2DYlXm1GS5}(&&wJ2Xh^yVgKdz?TNJgbwFAPhbVWhl5{8fuD;;OPZ zLwxuUjQXeYlkvZ8*5w?GP0Zc?ai{-p;Nl&!aCyfrM8LRAi_(tKkT)nljC}_tiZWx95-aev6ylN-ZAJ$=P}6iZ;?j;1l4FMk2qMa0 z4Z`un;EDa%p4$h<2Dcqyq_8~wwheWHDWKYqece}^kD)%a+@RR{)qI>3K-*^?sQ z6qDb7)&3vL?yrCP-NJ6~jfb?plcCw)Uuyq9a7B8owIwn?LjPN8A@e?Ka9#OLmOFSwXxA`cA`6_v8jQ^oAuINC2K=yRA?nIV3?oR;-w!d$UzA)O|T)JgPOm> zbJ{2h>r5=_4e(rm$nqE`(Z5wxoG=+3>8GZJ!qP`Aw>HpXw(ilcZwPe0XydtS;Axr6 zw4pO|+xW}(Ti?LJ^X!H&aKy-u#G`{(H81W9v~Ee9%=e!irwLqpVakj3s+HK|3f4Wl zt^xC*77*L-D`XBOprDX@9Px&4WqvUo+@c724arWc54J7c3nJcO&_owuS`>CO8nu!{ zmHq1Wrt)mpN=9N-nfl^@1y(=J86{A2I@%Vcy=|c%zGJcw>c4X7M6LQdS)2mS$r0)d z;l6-&#!=L1>~`JWI?vGGX{@DBAq|ks=h9w^>kN{g?_Gvdu9-gtM8}-!@4*~azgkPg zhUYG3O>TbYX2kY8QogN}+BWgogei}!_y}v7Fct@P%1mNC=@qi(a`UOI=@zp%k|bX) ztJRz3l(~l@$~GELkFZJvYX5`dl#<9e%@}+VJj_QuVx9ovYmL>y(KUKl#H zS+vNjB!T&+JwOSSl+6^r;*eRx9kO&s!?8tvxp_0=gFVi2Qp5J=-{W?)!uoU~@8vhy zAIoprKSivFxtp<(qOsH8o56S`O<81lgjX3`&82+3#$Z({kYxw;i;8jz7D7Tc3k6cd zt#0$?IMC%)lV;NUgSQKQWU!eY{EbMavBe6xp%}B2H0DIxw&X9&%ew9DZ=WiI;y)=Q z$>@P=;6Fx769uY+IYJ3B;`X<+pl?ke0|RALmI1JCVS zPoWj*gA-Cs52!<%dROZW8CFj0(K(w2%bRpuaP?=eBvFv4Atiy5Fu6;6>OwB*gbKBm zJ?wHw2^Tr5MHpk2I*fxcbc@P16^^1}tL!2x){_PU308#_s!PqyU9+Y2b*3D&XVA+Q zho#>ke&RGw#wo*tk(fYQGBr|ZSgO>VRyZooV1z6^wDi)28_h4cUVX&1W}ujjNY&qb zJHW^hP$Bk!r}$E5%msT^ffs3}HVnRrWZZnJ6s}B&Z*_3(K_k`@La3!;r`rq4t;Fcf z4;HD!4GtE0gH%x)pw5f~USFK!O%9XY2n8ldm9d4XzFw@>N76mQE8`DvrJKSA9aMRt zcll*BoPZnHUbxurCP|0WJyRV2O?{EE#OAAqi?w1QZSAfDpO%^sTMn3<)d0z8f&Qe# zh~-DYuZEZS!7 z9&+4Eki62$=ry2=M*s2#DLfCv9^VbEm)D z8UBT#{3~hy6GX~avVK=GNBE8gEjlhN;RUuX7aB*Tg&2Pcry?bWfJ{O1Xzj5Y=VwUY zxXgCpdXN9B2E5a33;vfVrs*=c1kBP*^UB%CN((nv4Kwc#ucwcCNc3A97}b-ZPxdRl zpxE%yA%+-{RtBOl@oY0i0b$`BePLaOpSRJ-XgFY2zs-j#r~?*n2xz!^hhEzXaoOdR zF+~JCd_vM#NwrRud0xJ*lZ=1fl~_;Q#Boo)iz`IOM4LKo#$448+VzVuI?%j}TPeap zF;+tm&LkPU=|FvrfaK|B_h$sn@cBte+TB8*BZkDa&gMTulAh08Mxikc9?^=bB%s=M zDOEeeTSk5>q>ON@y!*(%Q+#Pz?CKX2KvO6I>u^ojIcZx&o>cuSZX2_Jc89}+VVE(H zq`xH_jjuSZ=@-iAq-uyjJP4^|sd90xeS1$;7%G+7le(T*QVmC&obkT2y=+qol^xkq z8HMsszKYfNXJoNZIrJ9L?q4Q`fap-kg_H0S)|D6{L0R=9T3QzUGuzkcsL^~;&Ckh? z-AQ~>4dz1#>uU>CWmae^x=bU_5Fnbsim;;Snwg=wV#($5{Zu+)!9Ds`ce>KOy>?6G zM%KD3ZJXf7^8BZ1gQTnZv^2dSa9w%~IzLjRf;uximx=jE67io1bz&{i3&~aVddbL6 zo+XD``E{vI-u7C#H{Y~FZ&Ufgnbt5`K{2fEAH6G5dR_J)PaxC#gScwo3>_0-$#L12 znz&=Tnng|~wFhDgk&5@p{{Wb;@#^B;|Hep}O)=WM-b0=7j~MA6>y!USsQ=GXrt+!6 zvIq*#F}!~O2mnMJYE)I)fXh2uIt3*#Z^M6X1`JD4V@kKW#SjH$khmPv&HJmUZWixS zvK+vq0DdCy==w~e3JeBz(9MMRY?WvKV6A!n?fGeb{li{Wc`iP@GtBldOgY+)TtYYT z7aECkLs;3J=h+VlmE7LY85V8@-5o<8+WOcXiiSW-vD#+k3>iu)hF?Mq!9T)dJTA!; z8aKlrvyR)wW2LWZYsLu}nhQ!B1NimZw{%2j8h0C|oBB%pg^qd7APOpZK!C^)LCwAj zr1iwLU-iM8XUS;s7At7+n6-v8$8~6}81txfVwquPtrCAa>#zdb&Dn6O!)CaLo$965 z6P^Z=khs`_wK#O;XIW|W&lk4{D#{I-&|GoOVh6IlLx+OlY4+&v0~CG*F@Am`SdfJ|*+Hoety#ZrTL}>&HQUdp-_NT#4DbHhn^~rN)9? zpIob@!TZ$M*!Ts|`v$ez97EYlatkH&(*t*Xi@KgBW`(O_R3aF>fYETH1c%ISv4f%y zCTw^X)zeB3jTr`>S1I{Z#!RJ&9xgUk8~ZOD=aOak-r-Tn9uF)w*k^BAP~I(aP~jEh zfebhfShH@7+($Z zREW>jxmp(G1un^dg4^=s8yg>FkkqaSk1=X}KQ6@w&MBTHL9{fAYfH2Nt~3?PLNZ;o zRM|2wEwYzr?+^&%3()|nGyZ}6vhb9T@|g0WvV#%|%&5qtQ0j&(rUy96;Nh7Q75uj( zqq)7rBq70qB%!YG(Nr>cL@$9&&f$IbdApchO+t753}Ok9kf)sLw*GhKZBRw=JEj(- zs3c}ypEE@~scU5?$|O_15*hO(@CUH)YpDhsD`ZCo7B(L=Jz_mZ^1&%0?tzbr2e^Nd z79jh<72xg{H;l0wLK$JW)`y#~CW;4^pLE12pqte^mFVU7db(v9GHRI@8THUQJX!eM zfLf3EuJwa_86e6*pW`?!4CMfmzKH?aBh<{!P%nN@3YCt#`ml@PXD&zgt!h#k$3$$_ z4`bXZ(X@W}s%8pa3Q>*eg1RCzTN2NZ;$!>?o(~PKp8V@6awjtMxk8v36_G^tjP$OT zGx`M#Ko^KLjB_lK9FROrCvUYsKu#z@70cIjPhMRJni70bNSx%J?}H~(kDs}%la~kK z=%g|#p7bQ&(k8bJT4I2yX#pZZ{Q8?WlkBm-b@T3Ug#SJ&@t@xvg#UDxO6%J=>swj5 z|7%3z|9YkVBhTb3O8zx6@ybTu&=9Vp)EOm@#W$8*!6>KrA1Cag^w{ZtCKW~{dxx| zC^a}9Q!QJ5%p;{>>-@U08AqoOgBF%JX?-kwMUal;Jh`MPirdQiZnV^RKvnkoaFRX; zbWZUp+0&E4vQ8G95Q-x$DC+W0pak&z2TqfgGzck~%;2frF4Q{uq&HKaK%y6nWowQ3 zaI{~o%`lgbb~$9ehr2rBxH}CQ*HJz+^5}+=lynnX;5UY)ZHSfI#*`&PTya+1>vcv9 zoih_PUVL0Z#k~NhR}-?reMNFiwr?*XE%{&R5zYDYwSSTF*9EFK@H3@+fbZeJV*7_ zlI=OnLmNPOUKJnhd({f?XF$RezpKWQtR}j|%CLziXv{}+e2rD;23yihp7a)Oj)&0u zh%P==Bij7IR>3KJXN7%c4KMq38|C}gZrxEsXwMSboY?%de zL+Gj+sb;{jzuuu0^jP?bC)>Wkp$nL)huFO)igPuq?!>)PHfw`9>wrVx+$zoM+Hcj6 z0Wh)Tr}qc#sXvZN{E_1Ge|gA?R~VE4CS8ef;G(NIAP}QLV-yS9*4TqDf}$ zv=t!NW&a`)Jk4+wCSXN=kchY3h}5Py2;_taz}Qv!t6iDtx}A5gqdCr3pyo%d!RYjU z4IgqgJf9(lVF@yX)4`JjfT)@>w1U%e(dO%F{ z+oOV=B--n3P6#Y_A!a)j3m8{GKFGKVP{8Cuh!-tW#pT{F#y_svgI3g@3^@7*=PJki z3LhJEP7)WGA2-7Os*#?w^q84ApwN06A-qVkx^;v{MkfPI?y;&l;zP$cLb*BW31k z+2&k0WthGHHkFLHf#Uv(mp$-vq{@`kYB&w*mIk`FMs-4RsiKlLzZbg1%5w383x~wc zxq&Tgn_i}2rtPi@Z`LTv(%6!v8Pe>e7(3ha!yNiwFyE%nK`+z$rs%$xl>a%~|MC3E zI9tDyRt^7-9h58oW1M7~j;1`60)-+-0I`ZzO!!xgh_o1^bc#imL6@J&qRo(4^RiWg ze|s1GuU?4jkKw-!3oph_0+mDbEK)~S78@PMk{$2rfBS9fVLous5#Wk~t25H{Aok~A z*c7XUOva|Et)O*Rhj3A;U_9bGhBnJ$=O^_O9-sgxb~V8a9Qk4gITW`kGG#(^J|un&mk9NpS2soG!VCdzdV1R2rl8 z&H3~0@%pFqqVt?8D9w95sr0SWcQ;zv4Hk{k^P4KPnTsZJu(qlChwB>{k3c!%3RjS1 z{ip_R_;0Gmn__j{HGWfMcaa{lW)Vu55mIpR(*LQYQ-~kxlU0l%GQIlrj!wj;5QwFo zC(M-x*BUe`xalmoHES=pbuvsvE9S+_P>753KZ}Koe@L=R=nJjY$WESINqm91jrN5E zn1xN#hy=iC=ZIa!*kN|FP-F0SLAZrec=-hP(g)!fkTmo0UtiWWn zcVM1J!BgbOhYh|!g%OLBqsUul?qH4*@#Z`Svn~3dK}`}7YWPo7h}BYR-Ao?El~1HW z*52aA*L=>*3K7c)nVfy{$_Pc$yl0m*(Mt4GH! z+grriiA>`H$1Dfw+F*Eg^tbJ2fn|K?-uv0MuaSR!K>;GdGBVY0N zD5=*mkkNi6Apt8!z@*?~B=*ZdY>(w^7H~K=2{wDuNcPrEjgk|9qy?L^`=zxB-42B(1 zzdUk5z^Dnz-LuTpx#X@X{~O2Zk^eVJ!D1aoEB8?Scs9SqpeA4aI!ZzNI2bOX@1tCx zA!Y2j-tbG@2}_xuq;FIrFfD4*_)#)~+(zQVx)|lJ6cO<+vNBXIBmxk7ah zd@h(+Yg;FMVWRa&=gO@Q5t(-H^u>&Ig(?`2n;~p)>VXK%TU(L-N)l(*rf$g*7;J9H z9*WX<>PeoF%FZ`*uilX{^4a#{As7vRiIVBT=b!l|4LKxmJw7w+$78xHZD$=m;e~KE z*?ODFe*3>@lyH>f9qr(a0Yi28UCIlCwdPX$3u%S;rsk8=#uV577QsnkMK0$8&FV>5 zTFodUm(^1TyKZm5f>35w*F$`bYiUdv9;9liYHJj8=K-!PAb+#=3!F;1SHMLwH|TI} z1%c=>lX02c9#whADvb1+H9;K<^$Sy(zE{^GS=bnja(f4dV1)iTOo5MXgXz#=y7V8QV;r6bAJ@;&%R6G5tHQ{cqQ(oRzbwxy@e@_n$7)bfsgN-{7x#b8DIR zE|uHImI)h5R8&Mwc}i95O2nS~VXFp9b&BRu7fCl1e8J#=qTqLOJEmzp7*+iz>FMMz zj(a1XSEEKhULS8kJ5Z`W_V~&nz;7~<2?P-!l32zF$MkALDH48)(zB-zdvZhQV!^w# z2k3q^uuKrdmlP8hlXN3OC_6BoRlyxb3o>e$#~KKGofSgllFOyfmG?{d8w z%73oBr2J44oSEet-p5!iwJbv;8=-aii-TSrOhRaC>3B4VsaM5_zhF z`mp_^#Hi>hZ(%4&ri7}lF=b5p`y0uxaM`kYkL`OT6J8pR%HK8TgA(oo)V|0}EL%9# z<}c3f#)scEvj22k6ec1Xs<|%Rt+qk?gfw}w*hCAM)$<9$w`!08Nw3BK{7twfoT;1W zeo}3D)Dn7!P+{-lGhk{>j?g4pBcfibj5o!?ZQOF`&c)c-4+zDf@&cWEtsl&n1)=je z88cxzJnXS$p@BMum%)Ar7lPfV95a6qm+b+6Scw!F1nL$saj^*7Cd0I&a}#sc4O{(q zoQ;v~Yey?XyW(#c?vG#Wo#>?T#aA`CsI!p7;urM=7RfFb$aw^U6b=!}TS#RG;f|nI zO4i#)&Owi$3alnsM3_!lhYo8Zu{zGdX~7LerBFo58x8WHDOe#ZMp(Rg10vvQDsYzX zi)6~V=McKn4^GN`*UU8=i#gYrCDB(do0@GK&ujL-DxExEQr+?QbA$g!;EeQ-nfh-k z0`Us(d%5{op@9!Xu%EYq(Qbgm(xiwJvO4UN7Vjg>lQxy$qPI&MPT%Wp|j zD{0X=!1`4x#9}o03iK z+^%k3JkN_le&_Y4g5fw@K%Y?{Pj zHln$qz_9S+gXYTcAi`?Y5tFhn+6oHQi9*Q_?=ap{7eV_1xZ)kbxUEO#TvM{kIno@0 zjzI%KIoM7bi}s2 zJ5%Nwm3Bt`pcBZ}VTc4$_*wm zt0`VY*wTx+>?XbK0Nx|jf#cvWtLo~-JLA+JLGBp8C~pGAiXw7p2v;|n4QZJA)Wtv5I5~=rF(a1dzB@8sjlNex9dtZd8 zk%sk^=L7vv_LbXqVYvcNWbcgW z1d0oUR6#apptToRtv|46@9baF7aG5tS+E_z(1iw~i%-Dir5=uN4j&kvD%!tTQNLO{Sk zVCGYIr=}*h7DcmBGbwi*x-1!<=Lh^D4(l%n$Vjat?CU45Of_7(>-d=;zL~|#3r%-M z`x!!ze|pjo)3<@_buksF1V8#hG9w}Ya2@P|zscPf)iRGz+7L#T4V|$KNpMGG+%(9$ zp1FyA(86Gsb3i>>U=|o$z{RHBx#lnJow|ln=2htA#-sA0P7EfzUTR+KOxRxWx12ub zMoc4M_dk2n6L2p>!u1!7mRVoGtKhm)(E%e}@W0~a36zt?WWU^*X}vSm@5rA{H-l3* zrT7JYf9!?}reZTNslQ*1WO;ard!2xLZeLrI6Ydoe{|qw3q4&R7dkfgQmL+RAi794g zW@cuJ8DnNxVnVFf{j+vR6nb|SK|4Ht>GxOlPn)hogS;x|`wz{iVudZFywTk#5 z2=ghlA(~;~l(sfCrsCB>uuv7bpUEnXi;4klm#HlWjInEsG5ZLO&+l2b3Sn$y+S_r3*o z*BhMrGz|+VWoWTPH-HHMq^<2QS`K**J9xdket_y=L=ig(#MpcUmyS)(Cz2$f))Nu9N;N}K9NapTC3jg39F3+}k|vffJ-@)v60WQ8T(?!6tfpp_SCGn+tW|WqSaMgS z9feb7ma1}-DK{I}pNgNwJ(NxteYk7VYOKz?C_|TTph%IL#9y=6arhP}bKGE-+#OPM zg9++a3<85zIDrZ$mO@AA}vgjA0?#STx;L2fZ~i zgNyR~2%|*!oxv6=?vNZ;(bu`hNy}o@9V+xDD2B&P`b7lfh+Q{nRjDK0as}r6W?+Rv zP&;Ryx+An?zSL^kp&&uP-i{gr6@_`#z}qY@>U@=(Q}%1V_-IHnn?!EC8cly&PN!>W zTcz6e>A3u%FTNJAl&7wqqv2ba-nC9A8f&eBaS8#5;UgpA7DziNJ)9 zgm7(B>7e{ST*47k>hPqbmJ{CK#L|9&^&lxP>e8oD6j@d7)4~yW^?%^tm~j+!?Bf-T z#B-gx;`q|-!{q?yg$f!1qnq5x9{%)|Xjq;%;u-HaZ_OADHYw1yKgt$I`ItrE=Cg1w znsLaj2SHCzU{$hp#Z$9qwO|M2&E=%q3{Q!h)lFVrFgicK5ADqr+b|3eMo0$C>AeVHh7W6o*Exa6 zXca2`siC(Rstd~=GW}?~A`}DY_7o&&yh`-LF53M_yQCBX;aR1h8NCX1fwCAQhV|k? zZXp_hUxg_WB#A+u8TQ5TTUFQBsX3qKBr9R2r8`qY7>Bcn#nqnu|`_RtPQV(RgC&tdwN8UO6=?7-FJH zYBIP`J#+U9stre$5Hik$FujrFz}6}{op6d7fivX@%oie8k(O&*MTC&=1;k2Fq}~y!op#lBoXf@L$)S+d22T|zrS9OxL;ZAwtuEA`!CV>fY+@#;gF(SuTaL~|zL830j^;-o+=!I%bMcQty5PhJ_r}MZ z&653usBFDX3XxE2YmXs(()#`)dc!)PO<2-)_()IrRv%52f)5Ql4^b~f1H~J_Yj=>A zmHp}>IU{W)Tk0jAs2n@|JS2i@qlp4&s&qhJskH)jhh$lirV}5X^&o^J_~U28nh~bm zZHvQ4qUs~9Ovf_Fg=`oc{3|Fm$kaKPJRj1d2X!HY5{{@~c+SPAL)xo@RyFR-qAA#E zk_M+LWixC!$Y&3^(|EO{P1**ll6$hyIk$p^qEfljq!o33?`j-Qy!-BKgmMvBka_Ll zosyjKAy@MwI=fB`j)?TGKr6zcxheC#IgIBBjc7?AU;|7B82m^&kI(m?jW51r4stC9 z1$Fj|8a&M)IO;!x3m4LN{FExc-p>j8K%YUsXW*SxKy3o7?e1< z4mqP@ykBk)Nk5=mxgs&xVbJJ)?JoCyWDeI4iQ;lk{Gl>k9V&pkaOD#U9zk_#K~oxB z_bS_uG&)LwKqY~}Qa!Az{(2DV8wET^8SpBuYgt4@r)8IRKc;m$fjv4}uJ-bxRAK1; zSog^eU%L|G3rkZY>kSfl)nSt|NY5iwn;}Fn!Fo~|Yp4Mx)jG=sdP<`4atib=4R>T> zMXSC`1&NSRl)L?;!m71Q#GZ#)M$yZJoiU^;wGadGQscWZ5iU-9i`7Ux=z6*HMN#0!h}G0+n)!3x>%?w7*Nxd2p@6B7e}nhR2dhkXe_P*Zm|T9ToRHTlm=N$xbif09rA4y2ieb# zk_W;gldfugA<_V9B;|RbGD{iL^gd$PwmgMTqB?Tj%-C5wt&xj1!h^=m_;fbu+|;_` zPT0B56w9j13mcYo2VcQaIXFA?Fu}l;-1<3>7E%y9?)ibL$G zMS9L8_S4idI1A1V;`pQKCo$ewPmKPeXqcT%0;)}nxLJ|UyaBJ@2QS03^5kJJjOj05 zOxunO{2fIVAcgV|5u)J4WZpmTZ}Xx7?HMY;>#d4-pqqySLid5%xSP!a~3>kxI zAG@H$Ca|R6KkUDFf8|`|r^fm&RFV(bz5D396SyL~D-z5Th$4`LuzB$v9b%;-_CDjo zp|ijtLe~!vJLUyav8Zg^+|5N$gXKj~PfIeahX!5kFd>3YmfTnI(m7%87K$c%mCC?X zG#X_>%kX$u{79P)bZe z)X$GD9|-HI5%Xns36`BqJfxf`xDWUf zix`n=4005)$PLg({GrG*vY3KwQJmQFE^puCs?_g=zUeXBJ7G@&YB=UKJv?zsA&I^@(K$W=NfBs}TsS|hTnj*{VLR796lip z->vQGf?Q>*R#oTfC+`)fY)$T>?(6P>$AgeCWtBKG+Z}RJqyIy^`dxuWjv{`f1A%K; zfebzmXhfC_MJn8%=xNNwLT68Q35$3oE+o~+PQ!OJ95&_>Ba##pT(3kn&}r7zo+_1q zHx`_D2p2~RI?cmkyOA?pJQDFTvLN@X06X%z@dA{P%AQSQYyw_DNa~&o5n6*T2R+61 zSk6zlpamnG@ys#MvIGx&ws>x7_YDWH*5nF>QFib}+KqE{8_4Ay2Re_^*wYGi-*uwg z888AdMzN4HwbB}@%s`5fff_i&j6|CsmJy|%4C=)P(xOLK&a51}q46+>Z1W!UNyQVA zdn1I)A)n|&o72-{r_QUys5QwC!)80yq4$b&%Z0vSCB709T+=zbmZ>3+tIxBSW@_oO~G7vfDASsugHhR$XO_5qRhe*>HPnRcT1#ERycM zuB)fPF(@Tx?TtMyG*)41y(^qUMPT`nG^oOA;c2=lJ1U(Z!B~REY~IGJ)g)AvOf?Q% zBvEiIKqESuA{Ub_izgK66M9H_aDg+F$wok6<_tmNTW=~C6QxW(qv=TSrdV^iF5UI` zb_ZMQX-(P$#)npC`+cA};>8lHe!AXvXuv;03^T}*OGkfXpgw|-C6b|M%L_%6T573Z z6B@i}wiO&~xGQgfH{bcXdP*%I$vw&mCe9fd|NRG*DC(30_zn6E(cX|-UuM*VjP44L zH?}GGf(^*Qb|>&6dXBdH&(EskT8Fj@XR}-}h5>%j+awzBOSK0CTs{qx=|Kob4jDnu z)01+b3FrzRV2LMt^<`(M+A?Wo6~}@RuFRl>(smh|&m1J~TvMqzkMQt=c45-}Zn|S# zU>EvM8v}@O204=E3x=iVTh4?)6kl$noLU?pH!5A9c!cc{Pms=CA|kDL%TY;fn=0)6 zDrWWgA(;?bnuPQFFCdT~x8{6BXH7Xo3==xvkt)Nd2}V)WXmii09QZX3?9d0els=mk zWUs7S?b-#Y5f{Tm4IViZ)9_a)A?Zg5Rv^zImztH^7vKA~$~_+8>{0}+;SEK!=28yK z!?cJ+r#UJrLw5-}K{8~!J66^7<2OOrrCrQ=4lu)@BkeV~)ooZ8nV`AAQ;aShA-z)8s1f3xpWNj2Sp|f)CS!uqbPAl*MN+VTOQYM}@3|5?jE?8&u66(~DxjsO^o#&2c%OadU_dGcZKqHbRcwI~?_aD(ve9+02Q z^L|}-HlVECCX&jNjVTaH%yH{3)bjFX#v!Z$AQReb3PZ){ujW|cTFfANypXd}ZVFWr z1-Yf%x^Fu&F6s19k_#g}E*yEjJ_507lO>PNU+j`p#TM3cMFxT9p7 z@&wOVvMd<(y4i8$aL9l~Zp9-sPMR)30rD)%I#A#}d%(#uieX!p~u)?kzZ!*dh$`VYv z5D^8kQnvgbmf4zWpf?bOzI>?;6v@sUa+gk|bp?LF_Tl`zIi&9*={^+YN$i18Lhpt9 z@m)bWxCQs~2LImEcO)-Ar+u6NDT^Prt@ta8Z@9wQu+etz>P??DX+@K&#|w5-qL%rS z_b$Q%u;d9nkiGc1Bt(0tdsu^?BB`FGnV!x2-O_@?TshYe+RWce4+$pRR_dFfUYN@>%a{f6AMeDK3NW* z0daP+zft!$Vsi`FM5ajLMnX|p19~(cs+QU>;)_JYQfUsGNe&W84r1yAL3}H->0Eau zwCj_{?zpW5MW=#Uu^TVudqbjk^-t+9V$ZYm*1;69^k1Vx z!3SW=0O6Z2LjKoz6eP$V;k>++1S3!2$e_EVijwqR;{8m!MT%o|Ucv#xPpZg+>`RA8 z9+`{Uvh<@*^`XhWv^R%I3VrBZ#%E%*IjzhX!Nm>D**Fv`Q4TL5Zb@lZTY}yJP62%Is^hQDU-$3wlN)k{AfBd5H;Q z`Q^vQXcZmh+}10M`QjLHN(`wfVF9y9W^N=FMGOy;GfYNe%PMM0p-M3-PyW*? zmb|+CgoQCF>GUX!VTs7h2~RxUxUaX9Tv!1htAsa7~<66zqKa`xQejYsdfwn5$Xnhi3kux%m`#HR^=}IzD znloLo^N6UFQbL+NL6ZV5FSud>9lQxRm7$h$-^2FDm5I7>M~xhfy2?=E?OCtm9=VY+ z)p=+L2IE_u$#KEx+q0hS+^R@R6%VVlGv?UL+T6J}e-XW7ugz{YUpPs;5`b^|kjgyAd&ASk`ztjhD$B znUu}c+394x(jvt~XO=gnNM)3}tjYXYnx%>M6AGCUGn&d+TNN16S7GjQy>(A0nrVsW z7&tvm%xpt-Pm!RI_81p}a()rAshyPdr}P+YDvc>C-mABFtF&^xXtw z1fMuWwdM0&8h2!OAuvc(aSe5=llADw^#TKicU-617}o0DOJqkfV1-nq4ecWXcP&^( z`9aghlq3>7O3+dfv+)OnZBf9n6lG_tBT<HNATByLZtj}vW}k_~j+XB%raw$Ki!Gs=jMrPc|uOV}69eY92l<;XJw+3kA1h?$FmB5n<)S zDdzw?YxrPb-DvPD+YGsb@I;b^xd0I)fDJwK-?%_<)T|yiV{wXZ3=ayQbw@1uSy}wt z$#u82+8r9Bf|H*-<+24SZ|;YLuZ>`R`ZRY~S+=@d*y_5TjSx!K0BEi2IW1wyTD4PQ zC6vngQn~4oGk)OqY9IK}M&y&`dR%$El4l0TfanIVU)7)to+zy%Qy zM%wX{&}F7W-9YoFAhdc_PZx})YzL0!Pkp}=#5tBKn)ed^dq}fv`K0%?>_$j4+39^{ z%(>|7Kt;`;kY77kr?V^czeIDs)<0H3_h$II$7Qj+S9G5vtc`oEygh<8soPjTI3M5e zVyxkGpWnYY{K$f~%G$EJc0Rr7!qDKe$@7v@_RgLUU z-ww8;J7A76Hfkd;%$vg{~A56kE-Z}YXOYw~sv<60|ZZ>J@cp0xV{IK~4a$pq$mv&Iq z_NkXgZx*wjr+;crFm>TXT8#4?dENFy}*r<2g|-N4glXBG8=@4XTo@g?z&(q1%1^K`7GF zv;f<22NH)_a-m(w2yO@rE`*K{Ne?j@DlxUw_E9X3Xi4J`L)1sa^+_f%2SQ=n0plA$O<70A0Z) z<0ED9?vb$GGEhAPNQz{UJ)!3DoQ{(L-g5rDNk&P_o;VG%|jgBB8{dpNyb;T+A)BeXt`mG&Bxsa<8t;|1;<5~D~Jy}u4 zIU02%6)Q{30(^Onr_$qpR)5<62%-pjE-p6ZmJw*m=5AUP^JSHvVSS-^0+U6OTQPI! z)Jb|2wS+Xj9zyLp+X!P_`=yyLWxdMC1=SZD%Gv%G#Og~elNN*T!?~$tfd1*8DuK? z3)?4WiYH!ZVC`{3(qk!_SW-|`Wx(N$A#mKka1yhmMjSL91HVE-4tS5N2H^H zSbeFVxJiB&=T0Fa@Hycn)o}BnVpeizkyMi*;*ORHeJ5dnFR7wC;DpiMo|f>j9waR zS%$IlO-8ASh&0F2DwHd&EF2wvEufQwU*-C%vVUBgBX@PDK{P74)tw_ZLocuFd!mTHjML_vlqWypZJTjGZUMg~ zd&8PtYqf`|ooZT#2REeDP$Y=7W2Vl9hq6?cz6mL0bOPe*99eJ-rKejX3X~dp0ocUw zjji<}bR=hNP`Xh&Xyfv-ef}C}@N$QA>P;O!ik-8oS^<~wc*@(DTOS%{-w&IM-0>yhV7}jqAQsHOf+MAY?k}CCAYB!nrofJE;ij9|xiI-_? zo?rL&!r_1jl4QBL!W45-(VtXJKz(GXZ_$B={ZBp{WoN49dXMMf#ymHWb;mqU&M3K@ zU9r#Aoq?2R3JM}i<2%4aP|>7LX8%M;4HV2#EpM^=Xf9*xzHVdkMrGAnOV{8DGtL7w zoKo8m&EE7~=82PIa8n=iC!aSTpnu3SqTx*z`Qy(W@O!!u28HLfVOiD?_|{ANB^x!Y z*&dd6;mkpLYHq?A#x2e$Xw>TKGe>Jy=XZYASDDa#ZKhLT!y3+0E7!S*`mBf@EUU^~ z$VY1KnRk~Ri}x!U#Siu?P?6_x>eQqE%VTN|FB zI#AAj%eK~EIdb~~Y>m_|bw$#>3IYq>DRsr{YmMqrvBe3jP5NZ%8w3&su|e>3?rRP2 zQM6Uzdx`Ms)O`sD_}dwxQ{t)#(kp1|ve_TTjn+Bi@Jm8@P3nv;KI)ALi3J~a$LhTT zt2!BP)2#YM_UmyEOleUY86{`&lEaK&_%!kTj#z1@%vVFtOo}5&CbyW(xl@JAjeLPS z<bsqX)gwup|H)G7$gAP_ZCeoMg75rb*+NoX1a+BFkZG-IahJ1(YMBW(lfJ!7E7$>Zb4>a&AvuthHptB}-k>pPtjm z@GXZacxDOJdFF2amE6H(Ip_M)B=DkCsH!1rpxE9A zOLMv%D<%MXid?LfXnE;;_JH0U#C@0`^bVEm(^8<6H+!6=gR0$IQfH=n<~;r5>`7sH=X zA-QfVK*_9UTJjP&O#t8QR3V?KkAHCBoteKHpg@*ABK`}v4Zn1)cp``S@WvJG6_7@A zG>|CP(+3_vZHUOn5S-Kmu3IB+Yk+{z&*wKlX$VOvhzi-E?oOq!I)N0wqp?Kb81uY{vs&MBoaC#w{0qn8^oMR#b=o#z9tFJ=_tJLl64m4 zI2!}PC{0Y*8slA*P?iT~xBPMaGx|B@BmW$yeG5bxG_@pX-GDZ84mZ7kU8}ZPPv@Oh zPmas^aF=pNR>|@N7&pa`BuwW6a)q00gP7`;M4O2@(1Xj|)nrZ#iUrj~P;l~p z{*D(?=MD4E127ZxxADUN3^R;>Vdjr=qSfXa^K?+PSQIi`Y9A7*Rk&t6keooK`owe< zvs|3!Y^hrDHI7Cbmh>mWE3jr8pI@-~_)6ASE+$B9hnM(po|b{$m9hNe$LR~~2g9>8 zm7WOVwLa=N9l@GahzqjjvaQTWDQtD9VPmbW;X|n9cKd2xPa9J{yn zGKpWNu&?-Fgz!WPp0)GF^E#tjNRdH%AzObo7s)N&CfQ?ZK+N1y1}Nw6i_seljX~+q zsc*BLgeGOSDnH=ncq-D&3&HSWeQklp2h*MO4M~p#L%|`?*Tr;&1nGA|LP9+ zBM9vA7CBwgFCKRbXLnPnEKX9-m_`kZm#=D!Iwh^rZnkO@Ld4q$Z;{EE&_HqIG|r{m zWhpWrRBT%=UYQUIHO*=sha_|~QO2~owK?Ik%P652Ng4r*(wW*Swf0F2q0HtdctFEI zsK?~&hkk%Qv&V`dkdy!W6Aw!MZ_dTM!tgz1-wa&Hp&qrj5;+`6C-qg3DsQk4!JE7Y8{UsC!tFi zJzHEMK-sinDkbL=EY#Y2-5=?CoWe|X2mmql{2v01=`WyZS|b3umC84sp`c2XOqJf} zH7Jrb24Cla>Wh=jNTG;A9Q)B4eFL{>I~y>(8s^RQ{*J1B$B+1@o;dZi)E+-eiv46p zi}U0f=i_13B`+X5lJy;-l4cvDlJqkRQX4>I*H<0F>U3$YrXSAx!X?t9J9>QC_?4Qr zbqy0~mBFT+e|aQ}0T6YhMN70CL>wP3ru2omY^{%Le8X{;aor;GZY>$kVKkznoe7M#xF_mjr&0dq$iap7x#g{ROovTtGUHD1#Em9(bxSTf zQ+=X~fLbIJUeL(sgJABtjBlpPak0DMJN%0BzMQ7R*0VlE6aL=RWtymt`e0;8+fZ_I zP2zIce3oT89<$sU^mzYoi`bGbfVL z)sxJSOeoHbN*v{KqddLknDTtb88hM6xfn&$`c#qWXt&YGXM3g!ho=vq<2BDHCd4-2 zOv-&Y0)pY?HR?+`o8NhY;Kh2_go5r~}4-29alO%n>X?=iKJDbJ*g*Du`4aD+Y@0M>*_ zDZC>X_!5dCN5e z_{2|Qf|$Pk{z(1^>{j~2VzT=8-$B@iDQr)ddX{Z=M7I9ov|mTzsqj=VR&asmt&`J$ zwXu`e&*z^&eCR>sQD-WMGQo~!h?A9t}GQ+VSG~VYTxLUF}km>IRpjwfExfnd0 zxen^Nt9wmkPoyU%xxeo4TOWby^#Re-ql2Cw@s3@w^Q}Ai5e@RLS|f(GiKU44W_c`imQF?s6S{7a35gIG)pI11vmTxTcWpz z(yMPlm8b__Ofo_pw%#cHDqdpvG6j9Yl6&!p2w8}X_nn;z36p45q*U@!KYYZnZFyGP zRPu>LV{Qy`Sf~cAviI$1;QG|Z{6Kjkvw#Lu^tgZeZVvXf5to;|QC0ZRP z{iZbvB=tTpeP4QFB*Qom0*jZeFm#2TNAsD;{k1FQgbtb7HtOo zCB5s=HR`3qLn5$plTvM&5wrr!0i?I|{5h8gqh9Ffs!=2pn)Ar!GCZiVc2HXCVIAMk z^hf9CQ5;+tkdz=NxQCnb>HYx9+n&q27Fw{Lq+Sn0Gd8X>@Rs-bA)RKgK}<)*6Q=_+ zs|X2xH!b>?zbP$|71!WfrKShp26C@m`eNdrF)>5P2vdsy6Jh308 zxcEl;1Pvq&kU3?e<*z=I2d-fu(;K{Vstw``x-RICP4^0X?N~bq@1!F-7auNBO0_OS zZd0-~0q$#qe=MFaDJzY5XgL}xo;2S#8!lZGPvjmJ%Ty^)%kyHerBWXk_B87-Tbiw7 zS5sv3g7Pa=_JpiQPyv-ftRbC(%Ufp~IEFJ>HVWfPS`>n{ED|9rw zv9U2ZSkPxC+rP(6qTBs=Cifn+%mU+X`{k%5m3Cl>xh*E$ zTZm)u+XkuRJu97>f8AdKP4c~awcBPkb(Moct3|{{8&hHn*SMaMzXWhvec4PwJAl*l z#hdUAc+b@6Y6^BU173#IT)wpj`0A}fghJpDjLN1H5CR-E_tPcaV#()lax)c*vMlvX zSyYPAm|X=KHIWJagih^tY`d(H^p5f)2k8LHIE=}r6>0nTp7nBUHh_yJU(sR0Hh!&n zKv~4YQb;CadI=A8qQY!sl9~+W2v;*W6`ec3L{nLFsiTb$1*MzH^-W&`zaGI#=VMsC zoVK1T(tBq6e1uGxHvKJhNfa5vEJ7o{1&c0a-wgQZFNA%o^z==9=2{rlO}z5I+t5MA zN;{IpY!30d(9qAXT4FXh1|jG8dQFM+apa4kOTq!dIr@n0M{`GiLDLMk5{|FQg4geR6MdS_ z%XW)8U%KD{kvboyzimgKNRy_qXck%>7OIcL2kBJN?UR$us>h~O#F zH$Mm(%N@Vo6U*W>OF}A6-BsyV*`P|Gf?y?r?AKtE=W$P?KpX2y12vs;s6yCxM) z>rdaW+(7>dSDj(e$<X>#vj?fP&?Pt<>n%LdYMqbWJ~q)6Di)+6`*nGf3ppyAEHAu9nc+s+x@&t zwu`pQwhO#Vw2QRMq@QdXsLQ}$A`h3^tww(IbZNm`3!yh_c?;!K#MpD$_iCz?j`A8@ zIT#e-W5UHxo5=i?<+k1@!h5pVc%ZzTvQ61M|6W0lg1Z>{q@*O9rc&tTUZFs_T3JTv zlcEv&lpa`~2>YVBe2Ai{0{Cf>+M8IkQ34&_`Ln|eMpc3f-%9X;bi);mXiJeCg(ita zN2DBu8u>kqXo*R~bW$)3M*MUhx~E#Hvx{uh?D_*ygMu5|NK~dYQ7oeyI!7C;F1)Aw z6Khzc5|xi{fkE1~AaaC{V~)~3bbL~5O}L5_`ggQMM8)e5N;=395K8(H%2gWq78g&9 zcMx@2c_;9laXX7y#1fCJfEo z!qD2{*w_K(*&*rNLh0OQ@!E@vjg|Pye ziiVI7>A=ECwnL8sgC;IFbFSh}=fCGCJ!FUcb~2tO1ZITUhe&R{#&6GFn7h2*pTM&N zS=qS+Y=MZm#$%T1uEu)o11$t8N+!|7_b1}D?G_Ks&K?}d=9@Pvq0ksAbcoOzIpjiQ zu06#Ur9crjCk7(vdzLLWa~&Bd<&C775)={6J!QxaZS(Sh+KjOkCrp(&Mso z^(t^pj1Jl`<(?=ncPqQyibd`<&IXpsJvmj9`4_3wkQf3CaIDL`%$jk^bR zI2123HJJ|)X=`m=>gtPidSSVQ9EoLzCn=QPibos3dxsHJUSsyV@+oxCp0%?n@B}6*%+{KVb z*LV=gkR$sY2w3^=^}!!WD*@{MI>LRLq(3u7q`sF2HzVR+RkMkz&d!-j7@lwO@osHN z9NJ+8+Rdwx*Jy5TvX=W>p*S~1qGWPK&4EP+-4dw z#G$~VVduy1%Gr}?!!ev0#qw28x!Zl^0Q1JrD$4PMy-~+{>K=Ev5DP4R%yPX!;F=q8 zWQmC}8N;0IQdpm6*O)*r?9{5VIBoE4)GS2VNF3|hyAon*D#A7ksWnPO2vr0mtSAml z;nQnCe@`0K zJtoM)?GpCWCqL-eHHlZ$$7-f}VVuxiiu)|(U8&-5@=b_jmSAzc@P@@1+t{JFry+PdH{0!UorCz9^z+*@Znw5YcW~SuM6I{E3K%LV z`)He->&-r|@d$rgBR<&!oGET90pcqGY#T2#uR zak^k6>5bYyt$8M}d?X84t$C%dfrX%S4clVd4UyaOuJoqJ1Clkhd09A%!keVtrYz(q z3#h^mr{o*ZwC33XO~p>s!aftk8kU_>E~LV-7b&P9!7jq=XN)5S1#ci_B<88_%tFvC zQ+dT6K&;4$CfV9wd*>X2zOCp1&#{#=O5#Hmequ)OFPlR&9<3pp3X1UqqIqapI@RkFTJEPo6#{$zT^zjgX5K3Z zsK*0>_`4(#-T&^+in5)qjm=-}6(i*ScmWptK{hJTP+@6Vv9K^AV5)p#EO+i#NJ6xP zn#yu*siK7Dvu=bQ{3gS51c~uyNY7AyxV0}}&+c+R(|$5NMZ3%U6%ZGIgys;(up=w8 zkTFC~I4`rw_ATilL@uSkGP+{(BZWFn>VdyW#y6c4KfJpguv~_MblhGl>h+p^m~g2R z$>?u2zusVf^e^=@l5^_&mLuof(YTD|)FzPHsPEWJ_|ixSb}+oT)3ckD)acw74Mz>C zq)%3F$UoxCV(S?vLO!?u+{I zz&rohLZ9}14qUgMSU*U7PN+cmQJeyT{gKFX`m+Hh1@mUX$=Xc_$EvdTja8r6BEl%& z$fD+oUG&UTmG06=X2r^~Y9CGx7F*>(Pm9x~ZlFNB*Cu|LLA1iUk}ylDS9i|>20tz9 za=+MWtPbz{6fpV0oMygxdW1WWnf(ZB9c^-nEl{EHOEXdU3lc-hIC3hzVPi3U^rm1x za@tRof?b8s`}7E#^pE?g)aQ>$9weR&h;;OZ`oKKw!YB5hyHG;3vjSv-uG3;%TH8$k z_3z%C2r`d2TiPI6M#x^);XkUs?ZhW6n^V>`2T^-7cVwE7FIUHl=OekfFy@=+lFy^d zIbBa_Yu+73@cxPbeneHnU;(_!Sp2OxJHkI>(g7gFP7Cz=Mi=0#4}b^!{`r4j*~bNZ zZ*6BxtLJELZt6e_xXJbF3H-)}x_TCW-r6^emNM%Fv;fSy(Px*QDST%l6=i|v7LX$Y zhR{T69Rjo?*XS93ZSVBy2>{qL?FuFz%6tS z`RV`|eC*#&fDrKQzX9&=2`B(W+Wst%{D+13qixQ^-5f$!-x^>E;Gw0mep&zb=-#$s zbH~~p%!NV!YniaJF+L9do*`UzAOUx@o-pY0e=pNtQzR1NqyEhJ7FR15C$aRqn=cyQ zx0rw!pA;XEK0O_fSV<_0-xEu|F5(FW3_JI4Cx-p+CuV17?fk!77reomVzMp`TFM%# zm>7PpE;3Et5++X0x-Y!URYZ09a=29ELwFzLvVZphy3C4CNY&^W!t*O(%O=Am0%J=4 z-RcKCI0YRr4IdCu2KwqxzsJAzLA1^hFuIt(9sfVot^dg=0=obEodHwS_t&nN{#SEn z6aCs2YP_WMw3?g0dK00O5rve@(X)~x4jJeh=osjH(lY{u1AKl2Sib!C$X)L)#cctj z4*lDa|9i^|Sm?U_$%Ov^rhm7q@dn9BYbX@|L(7MhEV1%dH4`-i|Gz9hUdmDQ%kq(b zJN|zvzxvDa)_{QM>U}QC{+0b=U8hlTN8iDi0hWH@=Mz2z}qNWpIjQ@WaUC_i--`vpZf5{wxQ|T~# zZ0~H2>px=j@)7J?275&N|7vFb&y=2<`cdE)e*d1*|K(QrZ(l^v+S10t&_(FCXCkX> z_b)tR^*Z|I#$=_ci-FW@+HnIyR=i zA^&X#ontznfKAf^OdrGF__+Y7HC z$diXC@d3^9M*-{9sV@~?E>vKG-Lli2K9T`QBMU0!)Lk{DX=U%fUzLDhPmAylI3}dO zT$4YJB0~Q-28sgU_8%O6x8i>iMOp%4Um_`$80wnX7|1eW6N3_iA|o&}`#b~AY>W{w zjDKH>B*Guyp7tic4kQG?U;MzKI2h|YIXnC9;i(7t@yq+@Xj9 zjQ{6Kzu)&$*<-c9O^O=Bpe8d+F)?ngkc3ct4BDUeEKgfY-Tl0|zPOn@<=^pBN}n*G zK3OsApRE{s_gri6k4>aNHd74)Q#C_16T>reHh@bG1TiSMc!n?Xci2H`134u?P%yuo zGm>Az{;v!;Q4QP;ryupJ7?-(NQDO&{R4whTpFGHD$H=Y+mlXQCgs7!dENn<(dlFjq zY2V=vU_ehvMoN&tUR>Na07Y;N6P@513~2_s;8ynaSq!@)^<9Bhb>7+R!<_QK%b4@fWqTDfj&6KaXyAeQYWiG-(qkMR z_tov}qLf#AgzeBCDWzAuA^uc#P%KWC?W%-n_;V*k!?N_^(og&9$W~3v>FAaUhKh<$sRa)(#*4=&NSyrAF zuD)Vb9nX2OBA82?%NDd8D_q;u`Nr(lhFryVP)XLp+mpdut0cFe!}*&}M^KQd4V;Le zmX;O<)Hv;?=%MNq3S7MvslgjdCqoY508B_RQZ`m_X~oY?0qLzli9B-uLA51uA@GMqP*wTlc4N0mq%O9r&lvt)vR~uu&bXr_k8(*XuJ-aGviu$_}h7g z8d+#h*WaD^4mBba@|g~{sL5^OQL`DrGmVv1Vg|R+r!1L|N^;n@85h4>k+o@PHS9B^ zl0BviDx7aoDdu!FLX@~xuW_M19P+W5>j99T7A!E9e}cgJRQzcv5uwt&s6fdRE;1$% zlS=efP^XQT^|jOaw+ig}#0ASD&AB+*vdRn1dgLL3?L0vyX)I%QV1xU;+I`Ii5ft~b zHoL1b%bl6EMCohOTFQiMMdm6lo~Yp=$021oQl?E(2{DC+Prsrq{@qTSf9 z4NhzGxquaGIOwLNxMA=&>=CBy_v3x?wSymahD21;Ds&0*58a~M^UmfqV9N?uKXBwl zeNoShg0F#gYJXunf5Em|vTf5YG{|i)ZHRtk1yWXY!nwCPWe*=Eu^-5V*Eh)8C_V_; zn1Z!R4}VZ#4ZkFj#x!|a7{%2O%JoVAUAvvj3L|%72($7Y7YwyCPRu~yo==_9K-QLi zsWMk(LeLADC{#H{>4^p`@DD6AEiv-cZ`Ba-P<=u;i zsuoT-aV8>K86P&YigweY%$&9JB~ij=hwf?5kYK5uwW%W?Us^`T-}BF_Mf*CIX+KZd zNgM9dj!I@OTruWMT}F~8`%)zk(ha-GHu6q;ruk1y!q^HT2cd5IcI zIW;EG&MrGN3K~*7H-=R#EMuvb)d3olWH+b5GhbVfZgD1STHfxu$c4eR7|(O6r7U9W zIVoS3owv^KhH5b#;R@HuxMB;bINR)J-6g1`vvS&!PgcZv&eP!S_ZrU`$Ep}`QYh_d z==B?1k}4-^C8dc+b+p@OBxKerh8ECBG)gS(?tY<2E({bBQx5N-FSIE=xopWm1Oyf9 z94b`WquTWn-6J+6dr3_!F{t3(J=+99uX4JeLWgg4YX}e4ZXf8k)ZzKKg@|6|c<~zD z*6uq$WxC=WqseQ?8ppiWFgF4r79*F`HTS;tut-7u&8CD|gOVqCx8*4GDNkr# zutaLrbJZN5_q#@&em#}Kl&bnrs%3B%=7N+EeC1)p?~K&$j-=2i@;k8cb20F7CB%MCo@wPsy-TjX`pC2s?+6ZGA~(6EiY0BUH5({oI8o zGH!%>QcuvP53=;Vf|*$^hE^?++7`;Z4%z|BL`-5tJFr`B6>ngusb0jml~xkJYw&Gx z+VY@w`k+c>b|11$bb>SB072~VbJ~04GXu9P@ATv`iN?l)C-$Q!?Y~yYNTn{RjF+Pw^Xr23=-9? z%N16!`dKl&YE;Xau~3?H?Xe>a5D~B=8^WNeDyOGJ#I2YXC@UrG$3;US!r3v8QJXaE z5e@x9!q5!cwlqg|eL5WVdTaKd#fMBt}{ zM2LmU(1Jnn@iVSo^JhIh4p#1o9P5ml$V?aU@;td=BPQSTB?Z;w(&UvFn zDuOl3Rp3qOL?xzvi4)~jt~nKP3v*)2XqA9^M3_}wWx|*Cy`G18*V1EH%WMHVEA1~c z7auvue5~<%kb0bUAo!l>XwLHF@TVi>5b*i=5%S0Mg|NQ0{-0TVXZaeN9tMAE zNdj6MnH!aJ(NL`27Y`r&rfwdF*`ST9*R6<%oh^tQ6NsVxSLI2Pf(E!7CHkQ z9i?9$On!Wr6frgZ$FvCC;K)k!VdbTw*Q=^0{IRkIj`^f z;SZ+jC&WB~@&CdoP0`G_a)fqJr1oGMWxATt={ER-$N4MmmbIS99{>dO_Lrc@fp7nQ z*8dZze?wV`{D`u$)RnY|l~OQx?Ult!460`5Wv<{*s%0WeMeGj|hcgxP8&{sg=>`iz zX=H@(jBg?LNf@cpI<+N-F^n<-bMQwi1gH_>GSF9X(A^>b5pB`xGymkEMZDL z1Q-=e$l(Vb92C@1XTB66oLX62x7WS6fN%5DNmENkrgiaBiIReEa&KpFG@_9^8FIhX z2wIeVR6zmDjb|n@#tnB)7|JBQ?!04|C3mfrByg*gJaw*;rpSNZ3=|h53DQm~{KgvN z95x#?0ukc=(y9E|?S7wld1HNtf4(Zco{TxqXRa^rk2U$vSmSc8=V6yG9R#RE9dyFzCdJ6l;^Q&{%Mw#QUsu)sNB;fR;mKF)-p{(wc3_v7H!48RFi0$kXkM$}NlqFw zSet}py{e-czjDOXLs}fW^wiq5m%^;T>>0wd3mvK(E5P#dr&Asy(KR?; zAaV7>1S#B4Uu7Z#;_Y$W6Nylw%-p<&^xldMXTw%w7DN$k^4S9Xy3M+s1K*vU6Ci;2 zE8YfkXXcTvPFZlY(|R1o*da0(MX4HMGSK_?t1HjxjjBco>}OYUew&;_=4ie3`;y4k zA7465Ioo(5eG$>rjOU~PAcV6oAhD!_Pv@I3E=xBla!qa1=uogmvr~FBdFyi}@=Eu9 zOI&r5@dhIe{6Q<&lqCcbFy_~aBh*>^hW4dG0wt)H9WF{blac&hl<*s{?Zkj}q)rQJ z7uI_2GARz_FV2>djR?v8D^oX4#f&PIALQAc(dq_tE5^NNJj<|bt~cX*_}R)RLSJBC9rX$dw6J9 zE5r#xp5#$zJr^kqi9aU|4;-k{Z%Gq0hoK=*ofrc7GAx!Q`U`0RRaR5(W(lC5|B=(@#k8!$zD% zv=z-Dk?p39;EGiEq6aw9NFn~_(H9sJZkOH+HrmHsE!d82k9vxD)(e`4xjQVp4^Ld# z&1DbD7K+A0WYcZ9h3qEjfwt?3x9bT)AG&fLmJ+#jBJ5FdX#n4L{S8){0C{N{<74mV z55Eb;Qr5k5rk(@$!oMu4{h6zJS{whRWee3HJ+xKk`S-^!ZOG_{$7SN#4n@`C5?FLJ zTBnDN;vzCh#|t1SrBVuJjouGSr%1O_ru#ubK!t=sLHLFE)mJ%zfW2IP`4UA$9t?H) z*3S!#dD#_O#=GRFfNSYwb<=g# zJRoG0Zq*=l19@2_^tC*ZpZv%z4qR?PsbGrITlPi|rtPu@d+`t>dF(Yj#7F&e+n^3E zGLi=0?r<3Pqm+aXUq})S&XIcSqaGExBD+Unn7QD@DMvR@gZ#N{;$}<$RZOdS+p3h- zhUZwl^hcjbDKjTFoP$gc+}zp5I6FPe~WPc4KUd>({D{@75 zufR+$UOcDt^zY_|p`W`TqV$aKZi9JOxZSVV8qoa)hJOBHMX@!a`wPsw{B765YhD08 zL%a6inbaXT44=_wA>68%nM4>q1GmH|{eYeag{@9rt7(V0A zO1QQ$Gm{t|1Lyl(A1DgbF+Li8hQ_r`nsEVq!91OsPMDDm>N-cmb(Jt@7cy!V8|+YQ zP0SrQXT!Bko}tI&!uXK8ovC<_Dn#Df=G3kw`Of6P;4?PvS?o*)%o@zu?1dL4Z#z6XU;HRWAIgO;}=|u1>M19PhH3<-ZKmNZ^mY498OV0C!m=T>>r*U7sxhCPX^v9b_UsZ1ieMyGQ z!;%xM)n>-nipZkc(2on6@B9`j9xn2`sJ<@`BFYTX2)XymZ(mQKTfnsSd-ImWV>Y zbNzRdD}q#}I(6vw}86~9(c1CJy#G|P*TxEy9(@RR{rr}9?6EL#LSGB-Ji)dOvT zsR*5!5fRMfVGDz;Ixl;E%TBchTS^tYr)Zl{fy< zw!Wl}a|SDBn)4wNC5W(yc(IWZDYtMO8i19q*-Q29b=!J+___=)w^8r8h~W6kZ;+Ye z7B@Gnn<^;qoQ`h|Jng{{R}ofF%47xXiF@ogpv^wMi9^w;t{9C5%Hgq>hXXkVOQ-k=`O5 z!?>F_ggY3*m>>_omoLxGaDz8Vip=cZKO;mH&*9tm+TG_kmNBjU=1cEslFr^dAjh2c zdTZ0A>WvZ&CkDPiimHaQx?vH02OXUnL2Ots_?OnL)CG05I1C;4&~h<#c}|y4D#2IO zeut;(wX{hR;;u<@x3$7lu{yrheFMf_CXr&vqB*6Jf)k&}%v>-8D7f8Fu-;>pd@%9( z_KL71H|cAWePv?DHA#yGci1JX>$X~d~?T=-Tdb%p#{ z5`9W*_O&sNobP?mjqw+7q+&vOV5tXOuobb+Nz<2p4) zGYk7MGd^kw_CiF+lb9=gxDm#$w}j9D?No12gujS?UbO+&z&KC)IH2{0vM(W<&QIE# zCrJX2=%m0V$pTbYZS6tp5JI`WHLiGNN62aP5Y|oT6LoFS%FL_e2@_*jS?m?-gh&wE zkxF-_B3R6ZZnF2L+UBrsQfd25tz*sINHgZ=yp;|B zKzqKZS&nf5Q^8h4-|P;NH?e_6)|kxy{mtr7pstMBuMRcUh*H zS!!iugBt)Jm81$J8|h8n2@6Srev&ebrf;O=tCwbL+w*xZAdj0Dy7Sh}#M2;Wv9TAV z!MB)9L(KN&mj-z(P*&Dqg3Q>3+GS}bl;gwjJ3!meYA%%8cs?KUacrSov1j@$_JMNj zzKfKOrfwb^=2!`=lZ2sICe4asdP<4KbOo6xZtELs^0zF2qY>oY!3E?CK&^JmwPNH- za`+rZN)gZ94x;sTs2eD6OXghq!3PYv<+Fl}iLQs$oFdo}%M}~>62>W@?vFQ9+qTWO zu&3*JV&v4uGhDYrKGa+pHqirE8s*rL6(W?nXyqfLNQ2n-F0s}ZMqHNZ_2Ny+m_zfA z(@ElFhP)TjhFp~NDs9AU@v@W^zWo+;FwQk=G{E5qWMNZQxMR`+uf1%n=A;wD!cZsT zURK|w3*K{LBMf)UsIMI^eHVO`uS{i)_U@&1HB(7Li>F^`)(0!etmEsjRq;0_?JV^g z2cO(%)UJ^We8=zE$PKj$JGGBYmlAbfc{6pA-lAC~?enR2K?7tHKJ|n1MWz{mc3iuY z;8VN=-8ZPnMYZ(PZ32Jyb*{*ei*=6`=kPtk*~H9>t^ICFQ`H*yShsG;tJF2aSA0U@ zqAmHZARQXufSpJ=_+`NB7o&Ou5mc|5JnE(1LoPcpbfj7kunELda2%|}xG;1yBbum1 zWu~4O4XTKi4S2}KC4YT+=};b-{B7uLpR z#$&CAoyKFfr-{a6rN@=VW3lI!#$&w)p5|eyCz|GAsYj0HVXkMAX4Q1_E6zxp1fgcJ z#zFOzdG4rSQ($Z0SPu_0FWR1#nYy~3er})$nget=EecwaI>$thBJ?N?j_oEG^eAn4 zwOyX@)J}4!;5`ROAF=WqtjAf`FpJruu%2Zo>K)giY8}+!dEy<;c0n%^g%uy37IX>b z=z>FmQE_iPWIJ{Fr)7jameHB~UCSnb% z#mWNp%%7^du10jK1*0g=VlH{Rs&V9S3UUiagfkKv40y&7ijz@}qoTAK$B37YCem0S z6>KpaIBZ_DU9-`%9R!}#YQ9lV_D=Xk^&HfO$x#LJg5t9`0#%jEFUnh2Tc9sXrF4={ zpUXLyyg}bd=05Z9vCvQ8b`|QTqu@c%a)0?kWx zEwT~U3lpr%jr01%?x3M%N=0gKme&BO0bIra(^!wQviefsPKmAZNXsWuwmS%s(oUn7 z7%!T-0u^JK)7EK!ZfQalOxHm%m@gfIhds(6t|pWK{y2EFc$g}`_UMbmyS0G4qqQ#E zKm%AfsuIBl?R2vew)p)D;`Sts!o*-NtLkMh(2beUVy>M-Z<%{lFvgr0c$KY`DJs!z!A*lH zoI{uxKOE-J)*+Kol&(@z^$9QHrPL#nQJaKGNu!FL^E@SXoSISyO&p^0OeifH>7q~) zd0r`~gq4~YL~(>+hm|VKX`iAs7~s*%uX^;;ZnUaXpj`;|)2gmcXM`H|)wGM-4^rAd zP9jV7GwGH$?}ll0^KQA-#6kDFqpA&F11<7=zoE7`$CsMHI#sU zT!z13h=Cpjae9n8anqu|;hYE&wW3|p-V$YTpv4TG{QO1OvHYs0E{!Y-`9)wDw}yR@ z9U)hLiAU^~LD=yYX`WX3b~q}!+UjdQ+3OHpulg;du$3;Ue$m*SL5fN_drDohnY?WL zvgTQoAgneR99iczF=mPdePbJ6j7X#^*{PeqOpgcv?~EqS*Dl7 z{j&DZ{3`ZsC{5{VVY~+P(UhmE{c8hdeJ5MV?Naux6sNMfv|gmATWeu$TK4bu9Q$nh zcs;_mPE}StA1LhKx#eKs$?y1wd4w$HxT%lMuM>ye(`JWnxuV?^=izNPP;$2s4igM%H2{CPuwHtm$FrnWQ zU=}Zovm)9}XG96Gbo?unXq&_y+P)<{TM= z3=9HF8Uhg|tvW4dD1a4gH2}`f09lp{fvgWgQaS`Vf|>B8yoDhC%T&lB#0Yl%7(G8o zEyxiWj?A2%fI3LBG&{O(666Wu6sw*1IE@R!BAEF@{Yp zzf`hS0fy0lbO@95YX1#!WEVu`G&|~-iIA=c%IS9O-8jgnq#Ppw;E)#5ZUK6gkkLqU zY3Cf>JjhuDDYiZFV9?TTX?nSklL$0So685XT`QX{QM~8Tner^FRLjucv{gL!nFcQ< zkgI%m=i|`=EDuaN;mu^ijKV9M(zG^T!I_Z{I~MLp8HLl4hx3c|9^bCl8GiO!0w0{U zN_ZK}bz8B2r&M7743{uqo%bKh>B^5rB6)#HbZ{#bi z{W;%@*d@5Y&Y898SAIg6vzYASIk8STv+I2>_JYP~EKnqhOZ}sne?Bhu2F75jUB)(& z`c^Ys64$4mi>P4z!fniRt`B}(MaWng#xeV?&jc$+2|l($skXTYgj>=J>%jM5EgDYk zy^d-|&oMmEC3)n5neI5qaUSLs?!i!4dhmWqp4k+6){P=Od!_G z^19gU1W7Phe`6avW%0`eShWxZ0>s!0w18@(x_6lx)Hcv$%?cUnuQ8SACAW|XIb1sE zKIdSKs`3-g-!+Z^lZCT~ihG_q)Wj{UBdfdO#5CXvY#Lf4ELF`60XNyxO&-s?YwS;K z2kZD5K&-wXBq6*79sKyctP)q7fG-2cfxiDGOG@}-mekG8%GS}`<@eG=>u4ZUc_4FN zV6I_);^#%c&U+scpi1jU;QAKcofPXn;l2UQQve?|lFl!uf2>1$qAT+|*nzPi%icOh zQW&a|Xh{>uZf(F<-}viv3@LsBw+O2;YrIh&1qFB8;cC*sBXVOd5{@rB4Cdzy!BpNRs@p+jj#lxny$jmsgg_`x&P!33iRH?pPU zrE({O^tw--eDsUpM5XPtKJZF^Pn)_hgHpExfdYQX-~TwTCaP~`1+2Lhw6Zm{{B7cm zW5z9dp0dO@^r{t+ty3zC!*BhMPlW>o`bBcXKaw3H3`iq~=5Lg>9DrWu7BndZ_=Kmz zcfQ%POU*vs#qPpEhVKlH4Q9;ErfiEZZ;eYzd^C<+&$e z@n;}{v9X}6aB{d=0G@4I#WNZ^!Yw+WE*yy>vR4=rsh$MHq+9elGUH|Tm06YwlUboeOVYg}-* z9TNQ^S5Ud{f+y0!Uif9;Q1Se7sD7Nd`+caC^lglO8!6|=8mJxyi~xF7tqM3I z?q!KsSwFpQUTbg3_bKA(P@QT1PqoPwd5*qi|Yi&j|h?4l1X7KZIaJ6;#eYHeJ|6Wr;J6l_jG>vTbQs{W0g-R3bLacc4TJ?&oe_q2Nq&6BW6_rJoXr;>DllJ##@1T;UZB9QzT zZS$n9hz34Cx8WbB$3(5%fzIw91F&hz7y(wF{|+Ja?+`+Go*)GNSF-2;N$ijF)*^e1 zDaS&MA^2zdCU2VjBUtooN9->3XBJzGsX zPP6YPU(Z5U4eJQ}`l$amLvL$kZ2ix_o}Zjm?O#gc0!x-!C|GL>>M0U`W;)V+AX8{;T1H+d9OwhNvBl8LZ+18MJI=l(lurU9PjXf9MsMnvYa&=$4 z8t(=_&+RMYKp{CNCtS~td5T~RLczKH2n_X@f`VtIA4SD82dFct&7G5wM7MR426?FB zgthQerO7-rN{QzmI5?5~gj9DFt?Ly6?5Jm!DpIogWe@Kk;x;Y>IRE2iChHtkXMq(feNH5 zE(mKfP9;K4!n80YxU}SZD&#OegRr00#^3npbbH9xG26lK?fDHv5Bm()iqj6a-KqLy zBhh~mMm9dZN;jREgn4%_RrvC*~4 zL6u@m+KK>6l4st#Q^|5Fl-#{6iCaAk(hM}3{-*ghpb{*@)ylD;`jc30gG%7~%z~y~ z3fVDVs`B>s%@-JG^)?b$PA1lefYG z5=eJ8EBRUsJ=aZny9Vl^#=8rf1AZZwuHaHPhNrVz&l^W?G|n!FH-Hy;a%&M!mk7rHdqq_QN1(IDCzPJ!&)!A6`Z_%mih* zhV*txzq6J47=h)*a@RY|JBc&LFW;U+_D~+_!Pzo=v%mXZrk6oF0U-rUQ``Ttn*kxv za{s>1l5nuK5&N&BF^=MWDk}TIH745m}zzcysS|~pqa7WLbx=1o*o%frr`#> zveJfzrXB*)*XH#H*HP6e?)d|v6mmC5RE<6$upNaeY!JHwFmI(2t3Vv+iR=q?(M56K|OySV-O zEfwS-zg#(>9DDJ2RpOEy4eU+RWa?`uYg)UZ$9fCxx1s}7g8Vr6oEpWWE!yHe%V{uQ zn7t0GL?Ha16{;q2b!3mL>_Ha2Lm%K_FWdw7+(x!cO!_o%_*U=Zs8X`Pft}TPetrmo zemt}wdfvF!l8qxgqY}68R{QAmeye}S_l-LveI)HYa3BkRIgmdlIi#PiGx*Qp%4X_z>ZV=MLCI>J$4-t*FM&M{nQQO z;~xUb{=aW^SpuJmWDEaOU8)C7!q^a4M3!V!fL6oE#K6P=!pJ=38$knJAppn+mP zsYt=Uhw5g9^H)hgm`~yQ=Uet46BK{f1ZS$g0oJu4tY1w(heA;nct{c4>5;h7i3V26~MQd*dyY1)acciWq`H*b=^Uup1+$5#?* zMB;NwfE-v5E!iSQgRy^?2Cnl*tX)zK#UyIAUa#+#M*EI|umgdA& zP;DlkcErHNq4G>dT#B$C0Z^rLCAG{X(ZnCa$48o|)QLQHX)DOp!zz|3qGxN0>6r^y zfEpmUeVa6gg<&kb7vk06MT*ttc`j7D8I~VsjM)5sMQ2Z(ZiP(ofM3ywHd()InGVb5 zeu#CM?bdDF#C;G^(H3kVJ#1(GrW+#vbuO(K&U~>oa!Rz$Ns5}(Ygj^~4>uMI# zgl7|EJc~Xo+4b|48OGaDXJf<)L$TeoOKS&ILI=4gSJ2UaTccP+XZw<)*}qqGA)$xE z-8P(-z`a^?xhfLrs>qCm^X$WQI>@Kj_6EspCH>05Blcf%MMQB64{ZwQ^NKr4wa<>~ z*+Vd4!E-U_@>HX@P%g=}6?L;EGq2@V8!`8|(c4(D*{qq>8UjvFZ6H{23p;o}68UnA z&UF@YGF!w+oFO#7DV>jElFEcQE8&d7N%rfaIlfPl-%E9)d-GnC^Mv<9j;<|jc#*M& zbyLcxOeYN`oZ4>=>u_*(c#bELKJyb8ho2oFY2b6d=4!S#Rxe~>-?UyNoA*7Z2d|4} z^|EF#O>Dg*e!sxpO4OmQsB^u^oqIjLUqKc`s&_4m;tHogyShEkm6WmzHb5(H3OYDr zn@DPDAVya1wKkM=zQ(0B@7gOIh`(hHlSf+ux2bqhS~oEJW1pQ%~|0Me%3J78+{tx%{br#eZ54J<0g>qaXbI=7|0RZv4mKlwqI1(f$S83B(PRcwDNxvB2Ha zc2Evul$f8K^p8d}5UH5zPrZtKQJ(|=Am3wCl?G0KG7!40{M~Q=4Ym#3Sc(!0%9xw<$V6F1?~T0 zQv|kzd1{XKufa{{02{;f6=eL?T2FqA&WZL3oy=d*f&ScD-$UngdjpX@5!yfZPyffv zDcR|}+Wg#He?D^?etnnie>2wqzh>@Zt-;m*J#+sTHYZ!4%;={R_p7BCy8%2-^i!+Pf4vr^IbYDF0B3XQmorKLeEWC*`oHGstS~AIOk(kZCPIbe5J5c%EH5>?gp-gU zp_8!cvnQl8G1M2}DtnCw;%|sy+LB{kbQ|pLWWAa29Bc1**Z#a&bg{oMyfHjVfRlJO znHn?JXB+knh|)B>%Jpj@Un*weJ04x+ahgR_x|Lm=s%))eD(vH(Lw(tc6ASA`RUSmM z>d$ID7i2B@!23U6mu*oHWCn~_i9s$NyLGgYL_Qpvv?vd(V-!C62*ww%e;odLZw)nPk7S zE{D$JFYu*`FQ)~HH4zL9$|LN76E*l10Q{LDWM#il0XHfN2h<$FbZ$|p?xdvKi#7K)C2Gj zE#43M=ZOL+rFSPpNVF6+0o3w*4FypblU-0pV^AY zdw9_PZ`YlFsQt-H(e#o0Sp>$z^I?1+v(${$C$H}f^TL1m^*^2jIYVPBTPKqL$}<9$bsT3^5qKBlXqV9-n+f#> zLDGU2&|t}ODRUXkBY-7GL|G*>45@q!VG26F#LSIjFw8tJzlpnV1_p1PvpS`1w%9)6 zKEhkOR?>P^rMB>bz!)4z*hO`yijzi}OxuJ!Q{z>*RFV zqHPzj3C#+Z{OYw1*GXuoN_@BOUcrh}Hmz=!MS7^dDy_oH_a_da4E45D)Q?Itl}R?L zA0_$20LoHk`<>WO=ohCD5NWdMA80hzRjquNK#P`lKb2^EarkK3tP$enC+)W#uVq>{ zb!=L(AL7gO%yptSXVjf?!Dk50USPlAHhbe`$jFbvVcc*e>o{xvCIa2Bw6kv8;q;Xc zi|h1Nhn~d79OA7?*`169yw`b%`sydFPGqN*h?MwLvtHOzlEAppIt-MXTV|2N-29{d z*Uatd_q)8c?k;*!Ve4y@a4$89$^+Jp8jnv)2c6;{KZ*n~+C||HN`SsHl<_BJxO-;? znAm;`f_w~^*eLgxK9B&Hg z3?8|O1-;3RVZB#D*)`5mCLe`h&p`k$WuP}&Coqxi^!sFhZx~S9h1#PjfTTvcz_E*Q zp)?#WHzwX4@v&8$eR`qi4r=FaulNq>{gqIDB0w}e$j<(LV?1!YKSrBs*1z)>ndJh8 z3zyk3SfUb^An>`+pmAJL^fmV;^Dy~4fi=l~)LmGlHt~@mc@<3D_-Sz#s(b}Z+~|HI zC&4d?f`ww)4YUoxhM!dHgB9LTFZ4pbLEoZPe4|_gohfU%r>oGCl<5{`&&=H<3p&|8 z0M7g=8u8*|75~@ig#u5XPmF>^G$*|zkZ5K?P2xhq!UqVxVmtVTUfH_AU}@yJ37#GN zMJLs-x+q)pUoT2DU+i9g=W887Tkds$=R1L4YN>vlNd0ZK{+E#iWdt&k^))psr8n=}Rq zodbyjjRTPbmBVmjcD&5wfRD52Dpo}#7dnVw-mAbPvkfkPpGMBOU6Upv`Mvu#yF-Rq z`rQf=rsB(s{0*{);AmZp_is}$&LX8S)AU)&csqr7G7^;;hE?73@FPjrWl!wc)hzq% zF0|l-bS1>gw5bL!w8>G9Y-iyoXc7y}>6;vt8s@0z(sds>CBuDlUzS12@{e)$(!F=e zEy`CiM}L!ey6qDJcs=h9@e)h^2JU3R^BeRN@6CVg%lZKHcm=-3Zk`6D?vZ5fCpnX0th(KX)Qd*# zjnJQ{)>B7%8+bq*YurGx^wN#7Ao*S@V*_abjNc-dE>Vn?>8$)xhtkHc+Pp1;Tu6m- z+&Dk6(~%hRSm8>Og_EDOP?}Z$3pX#z5!KPxs&M1n8O>HOKVySl#xvSr24CnDlXDnG zS24J6-}#W8wZy`w{Kf|G`FU(61it;jJe!+p+CDW*{%y$^M^6Ha>kxvy;}_n0x4r1_ z(baq%K<8WJm*dZ#Xsp5dLJRa&h0s$gjEqE*Xb9&yAw4?x9{i9EyCgdd26UI8ETR9Fd)iV-cMlH+x*dk96^_5iP z2Az{A$3=1zZQQC5R#ms$mBqaxlw!?#?!7lHqagx(DMuglSN8B=#sx5Zoe%X^cfphl z5lr5~GyHbFaQe%I7xh4ZPZa#mhv3I9L*7c?{g16;qUy2giYNjeBDn83@6L1c85S9> z*|)_qXM_@l*sCFFF+|Dr1x+HFqv6I9^Dlzcj-&Ym@Joy8^81r&ICC@n`6tKNlh>9r zZ}`7`ym1<>;ey`8?(o|Xq3BE=Q=Q6g2lop5zNpkq#&y(!@BK2xGmC#3z#Bm@tNW#ur@0vl_FI-2>8q}P*us~)EueT9(v_81&-&;pI|y~Y{}kmj%xDcfdm z)J&|&j$+?Se2Y)6@P5~esUWGlgnO1L5w*a<@bn!g4kP=K^Py%!rB(%6Q#|yY$sDZG zJzpmS?_$|nFL6n3E$!w#jRf&(-niI!aDF*C`oxr#;*h(0N+}**jVAWC-o_1k@RB}c zG}ske=_5je%h9dSDi(eZ%eb0~d)I_{mBgkKrcH1l)+$b(vqng0uV?ogja~BtJ>0k6 z5!P^d$X4TI@WfHwJLa0pQWthEcby^qxr5Z5_#_E{s-=e20a%Z73)*VD@QkoEw1W=Ys{G)?u;gfZIhFuB8?My`Ab6 zl{WCGHEiVyt3iS`Znac0Bcno;<}|$zBduqxDa7O2xNo+-vRa6sFr}18FRZchZhRrc z^q$teY^f_N*>p-5{<#=wQa(NT2yLmuAe6==KksmH1eVb+`HvyA*6{pSy%JAFeDPE29;+y|L)l(Y! zPEK%Y4^w>62%}#^^IY7}ov;DtAkO1xdlZ$C2(As_7Gil#1$$$p$q{69>7nBW%CmW! zeokNt)iH{m;D7F_n0zs!oG?YE`+8ZG%j?NX}$o5Y2;Y9^0gYRnVS|j(0NU03=Xv32pF%{7)1pZ7Duq1HzkYZ9=Ezmuq4^41)g1Zyk-Q9w_yGwBQ;O-LK-QC?? z5-d1@;9n=R^S-mYGnw7@`~A^XUDaJ(eV+T=N3V080LHIvDstl%a8Aw$Sf1!pzm-FZ z3yurMfX_wXmqE>+quUfsfoxm9d-%>bp!^tp`@3o{heA0;)fdo2)0DLG?;Bk@s>(E% zHIXU{&q44czETJgDN21|n;pAy`T&xgM>mCb0PP6j9#BZT!%a1)Dd5B?4PEZ{gf9Hi zumy&?0X^wL0-Lrs^Nx$NxReM`zB+tu&t*=>e!H@{S40XJ@nxpm9CmWw8bcO&*%hvk z9YG1WkabbW%uo@bEw7d-2s#EAASn(bUn>?0z&hfy^%Wu579XB=|EcEWwvjv4K-mxf z4|<_!X6bBXZ~WijL!Y;4xd`kxWOh(L-<;db1)^^=qc|5fSxb-+}d2T+V3 z<;1^^RA_*o{(G>dXklb&BZ5v5ltcpAritwBZ8wM zBM8NyAbx_@CoCn5up^Kvqt6Lz=k>#8rA0v@r=eJQ4tvRVh6jV}rySb3xjs2{m^|!Y z+x+0o{%R_?$a|;>y9)#om6^N=pN|FaoUt!9xUJ8t7$!!#is`E$?keJjTiayYU`?(`MYJonc5?BT*h>@(>$)Ac&7SfzGi0^Ug}DnMIIM+D)Rf#+0@O zCfN}B@LfqLJ7}dewi1qJi$MM0dqf0r&;l<#>TjMz(mrYK6+?XMu?Nc8dl!$d#Y-eo z5*ZZV>#)AQy0?#VMuD=uN$9dAuK#3nq#@H-qp?DptitMzTHdY1ledp{?KeC`+h%!q z3_1AhOG*PX%Xot58w4vOLz)MxWZlUsUdC%>OtVglhQY8S)TZ7mqu`M*7LP5oFP_2*r7Ir@sYGKdxv>#G=@^ZQyg1~YoN)G z>{UjRkjiuz4C+a;(sT$Z>bHoQs8vdHxzgOIB;x>OAw=Y2E;=8M#Np30JBrw$i6LoP z+ANH$c5j}tg1U4M1JaWaIuB~ndE@ww=~68n_3EPWv{>4;&rFd&LJcic7o5gW*YGbu zD+M>{>?L(i?hs4~Xk)8CLpT%OY_kVl`*Qgn%a9IYQFNlRtv!OermyqKMd9{%08*~F z_b+W`K4lsrKGTrNtQRC877`$ujD$D^!posq+yOrCVv3Lm^EVqE@Ue5?mbr&9=m+P8 zcdEq-$ybC;i8GTWWr-xp-VE^YyS<>Zln10P243aCu3OvnprQj#dR*$@guix)X5~D0 z3cpDpXod@d=RR250e$5`?!u*&$hNq@4QW4s;r-biTuCae4z(Prpm59JX0>&>32?W2q zYyVog1cJY`|A_zE`Z||B7x&l}GvcR2u*gJ5S3kr~R^9ZjJ~`Hxm%AQZ*|#C6P}W<% z#aqG5+1WVM+gw}x$5I)o$k#Rc7TM4Gj!zs|LKcev1H-NVNs&R1J_m{)8<8ZEFfxj5 zvxdg6 z>4MF?=X0Xw8#^L^0oolX=)n#F)d`^FKK~bYVrlj}>dWX4(^#)t+>XnV67h2RpgEw| zl@mX!Dpn~MiylvbUCT{VIv$-fc`|{$wDC@&`*1J3^6gU46-LlViN_Dy60y_2yD+1|IZ2kw zHV+>8JGh_0WIZhIr1v18>PS#6m>%DYy5onGY-%?RX+SCafUm!{wto)GQUq?`vHY)L zSvgz4Jv=y#W4Uw01m#HyYKcQb1X()q6Ix;%xe-6kRPLY8^tB?g z6!%}%u%#E4hJU~Xehtea0Dj|79EY`y%m0qZ{0HE&jjguF%Y2|9|ER^6{99|(EBW;g z%mdaxV;(T2zJUtg5wK@p{FVQc;h>27(GU62+WzYk`SY%hB2bL~p|$%Dq{#ds#aiF* z%!L1GSI183^XVOXN%LQcFzv;^@uL?K^Ggx_yx8zxE;2d&rzIw#|9%R8I_N=MX#S6W z)?Z=#4s7m#OC$eIgue(T?VQa1F=+O;XMj*t#mpr9U(Xu6&`P5nZd&kfY9VGb&UY{>A&ClAKSP7cY9o5G%tL&97_LW zfyU99rGYs*o$<$hVg>}kMpf%nQRNw)K2@e4z+BhLWWcHIRMmD?6g4psnSj&{{Eh73ZW#V&CfdQyZ#4*~T4AQ$3=S*NOoZD9hCaJcXdV||Y2 zCGGdE-Ys~mt+BiI&mQVqf7CZdtUPzZhxg(I%gZSw_Yijkgij#!5Y^o)Z%h&Xhxhc&6mj=& zPbdVqk}V|yU@sPw|0TgNQR(PysXnlbznbweIjI7;*9?L=>Bj(_>~8~faKC#vFt5p> zo}sRuuGf3jpl(utuY71w$^E~DCn=%umBYZtLh#G;CIo)tPxM|!NzNV^q5Q*0Sw-;! zYuXrrn^|At)$7h)0okPyV5}*{R!ZR*&9NrPo$AqWvjv5BNuf2k@H{=?H;$iNUoGiQ zY%z{uaQPJlyx}C#Pe};VeUP_hWPZs>#1{g;U2?P{6;OxiA=>B#Mzuz9CSNDURLDxPuWr4b_af@^8B_({G7{f#d@WA)f}td+MOAlbPKKqv(n zb@+1vRx@RiU&;6o`5pcQG?~3g-`ExD@H59>(j7sd4*(z%Qs+w-unH_=>tT{X&7yGG zluD>?XcV|n2C|GVOiN}}?0jGphv^=!i;VFoAR(0atPVr7XyiN&9lnuSR^B?$=|g`E zy{N8rZlK-b5pYMh>7_43;A#zdN;OIL9pe?PsBQ&eL@VCMp93kOyy`HYfFghYrPzPI zoJqyZ(h>+GvL^&?|1IoF@{?S+kz9k#d-ToW4B+3uT*q(#1T>^b)Ym%jXi9%0V)=gmq^A z?Ubi=@>Jr(~z!*3pvlwaweUd-e}eH1yg|Tppz^ zRVELu3z?F#@gUX@6?}x6?Izq+mldDuFO3&n+EfVH9Q_RI*X!0=K66H3`;BHg>0T{= z@Cg;2zDPf<>FT3!gL|u5bbhM(1~D>CX0*12I}5S4TfEN51W(K?DN_ zgi$!+2(&PhO4tMj1OE9Ar!n!iKY_U~snk#l zrn-^BdA=-oY9{*CT^!hI;=(Xx4o41*1w0~SL2HA>%ON)m)~xzo=`7e1`1@mmAtvuW z2zdv~9a;7T-Eq%w6zg$%wterwshnlsu+U|1;xXmMCg!>weq zr0(*ZNJcw}_Z$9O5*``TEdj>=V=i=Mx_wnF3s)!y6j?{T5m9}wO} zwTXu!=a{g+Xeaev=0vHehTp9jjT5%E%^~l%SK~~2PgzVCcCLhP2hG?MiE=N7zx&L& zub$pfGMeJX5-|JX1^pB>y#ZdD^$Am!Nv~>RQ-f7`*Q=((11B1KAA5a;5J3Y;({$8B z)2ioy50L-48&d_YWi$P~ z6Z;>?ka-SVt`_lMgZ5ygK3C|5{Z(dxGLOsc_~R6SufLAT{yZ~MHFGrhPgw{E$hc~W z*#-a0)adUwlwPBa+W*LmqJH`R|2#Pb{{R2x`JbMT{o(Qdze`SyS0w}fJ~@306!1?j z!cP$tEu4Pm1Njg1$oHolxm#an{-@sYA3`P-k~P*C!xcUvIoSVIjE}Ot<=_eYt3Rqx zf2~hAe=dxTrSWg3&njkJ0tjUaoUA)8)T&>2$s${7XSiM|&2=Slm6t!zYUqn$mDc_E z`oUcLM-G>)g@#B4=J4(+Lr<5dbAuN|%67zd$hOaR%vL~mMYjBtxd1QSmjK_S9Bksd zHdj(WebymDopJ#63_ggawf@{osP^6qX`09K znANAiwndSFUAl=jZMyz6g7l}A7}f*1t01HSxP1||e*Dpb_uxIBot@3UX<*1Utr*Md z(+HaxN)TM@e~az2DS**~qCiN{n>wnxQr~x}UOeIvvGcb@@POa7`C$u3F{*FB0-uTP zFKywUYwCR<>`(Hx zlxat0x1@_W{hwJF+#TfEgw^7eDL;~qMkKUU4K&nD!dy+nG*c?LNzvY0!i;`+kVC7V zPmm>e$3=^N%Vix1%KILB$01k;&uL7%YnA^y0Pm5tkoIHtD=#M&MuH|q5*r0KEejLG=&9??CzCqT z+f3lR)oQlO+n5v0%IlK0PWV}cH_3grPIacOLV9A2N+#QV-Rg> zN;Lru0i~WAKRwR@=^&GuHO~rNh-T+9eQ6P~9I?z`n-Pr9u95>7gHD*cI4qdRIIxVQ z?AGKW~&StdDk16^7cD`jsnM;7(Ka$ z%jVBkRxF)y#-`{pq#5t&Op8jS;)-5rkY;o=O9zK|tGYNsChEs1^q&+M5)Mx#w3hNt z8L$l2>6hL=z2ntSv|2Awh6`%0T^8!CcWlLx#AO$GEKis~j&-zSN?8?C6c==vh~4{; zt;w<*Lx>WU-ZLoCwD65wF*=sf2I5B-NQ6k3G1COqJqr zp-`KJ{iEc5{WmcG{f+Eg4dg;Ajw=8djrEA}+cd|uWj1lZ=nNw@k;1ZVV&AMs52E`c z$X!XE2r-IGhH7>?x%z3OV`7t1o*7uLk|L^Et8>h|M#3MYEsB&GU_)#yF3qy={wt&#i9D{FzmlDu3IjaWXlWsVh{ z%D3OIoHH|Qg0wfX7K1W#cE>vX+y!xsnozuJ2NI2<6Dgsp?F$qdA~0y+DOr7uEr+e@R75C>-mOvr-wRa;4X3aL$8%u77Sl8vbc#H7I`25oo-SJBin z29M*d4k0b#$%TmQmIuU{LHB0choG{f3X_Z2q1nFJ&j58-G3+VCjMv4&x)U_?B14ro!dZOxhxIEwR-eZA zXCM$nd$_swKfx{#!e={= zXOGdflg|A*bbC+GtfP6!VH#DN(DSpY*Lb#XM)`%C!1!NaU%MV1OoeT5wAAHRMp>61 zROYEtNjP1b2{%W9o?v_hKf@8^>E4pKHtKPB%lrr?l9#j0GV@N_Mu@Q}OK-@(JlN{% zVCTzYC2DOx!a;80bvR}^QHFzIEi+tWNh5qo5bj;vnz+jWpJ#F-qbS1Zdw7J7- zolkz(9PbaqviVkD{0$H+G6MB0SA_U4uE-fk#rI#08KVE$59t5kar>`+=3o8$&;Rk; z&+r3b9=}(;0u?{V&dQ;1uea1wK@4CRNFfN#!NqfUf46|uqZLHMVn7i`dm+#&ua#Rd zbo4~*42ckm5b53YCg1gn9srP(NuLh8-EKHcdU!p3dsvkP5spVjxDe|mVuoRdiAK$r zGt?6wC>9tdQK_ajh}aH`0Q4$j?gFxgh8R65w^MxbwO5zcE04Y%Ej&wlwYHGxYTT~U zlrOV$Ilda_scz@9Xz6e&RxazhXpi%W&A2Ze|IiZT9zgjG7qqus*i+cMcA5TYK8%(x zb+z=s#v;fk#l>r|UskHo03SAa9Q|H3T=}J4de>>NR>vhO)!AdwvZap5F69LNRpQmX zubaMk#bG`3TT@Q$Ql$f`^ck;F$J?=n-fIE*X{Kn)#0S|J&m`PQm<4ddiWF74uktSE z(>Y!wfTGVS{6*3d(_E56Mx$_P;oR*kl@3a$29A-WR6(0&nm0kc)NkICqNPNH!2q!n zl$pDMJ|)-%N>X|G`fqNPB8bZMBLV@iyVQoUg=gOL89vFM@9`p~_hGpw8q=T}P-E)n zH)@MpzFgQHwnW=0*Vk$1W2faFDtBQOz01t%LNk5!i|1c!iI>mk)?>emK* zm2W}lAh7p6FwuWy&197suJFWc+;fjA^!-yD(tanAGidC*XvN%SPO-L1?6X#8kzn4t z{trv!?LN$%^lnk#58+ObPMMBfyDTnaXtxXaHFuqi0q-`oLUWKd#1g38Qc zkol(r`q?qR5L4JO61@+ezF@10M}7l2>(#; ze>iT1Q6P~93irqSa;x3aj(VO?L{=#NVO0HrxdbSP3AAekc2m{W6lNONS?|fo{a|^! zqLI#|{1-%pAy3D+9Zs90Qx+Td(Ltz^B?*HpkswJ6QY3Uad{e;f0T-$JYv(?CZ3j^M z&du^AAyZ%Gm)Rnk$hL8i7du)w@}C zK^wWnm;M9FDNtlG%WsJlueAoL*nMNX!Lhaji5sWA!6F|^ENPs+vb{<=gHgZRYMe== z%P2G;id092aZC{->aRNQ?7;Z)LUgLVNThKCMMGK3GGRF=x=I%xlXr#)*3Q6eXc&9_ zfmxmG1ajLf*|2q((@zGLzFhbTW(){kcCK9FHuRWVXFl9B>^vZ`DeM=;zXx?1(e;_z z6E~hY;0nnR+bq=D=r4mZb;0kkgV2zevP2}}57LWxL@L|#hSh#%aYZqZKS!%(8EzoO z%lU8~shl7gNJh;T z?eN{@Nf2CsaG~fsw@a+4pwQNC*qC(Oow$B@dVWUkasa2r;VS7BkqwfD(xj#4a;iG% za+xw|azHD{3)n{vs^?G43hF&{r4Eb9x~hYY9_jT>Mrj2Aw*?wx5_|S_$zXitjt$e# z$~jS$3>HU=?ghhic^CvN=&|kq!ogxM7iZxGGdm-LU?@iYsiWd{$u{3Y6(8q0|0T!QfZEE#rOH^R5NfI*xj{~Rb7vey8kW}L%RY^^;-H}}L z!*5w)aqB9(nk2LeQk^0CGJTgEzmyDEIo2&kL00qhJ~~DkwD;(lC2`gB{hmrKyD0~x_B}zN=T%Sru@QMuW$$-L$=NnTFUMmDF+FFVv-Qn8QgHl z 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 z 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 z z5a&;E#S@g{!^}tMB;xnzmM-dt46QbbDjp+>DV#F0Dp5VeI}~6!aR5SczDA0Hey01c zwSSum+)|@y9px|BaRK*D3k8 zq*GpVKv2T`-6#d9u9$)WLx4A$`!WU<3VpX2`<0AX+Od*=91gT*xMrPBOt*skqr%sp zVVqSO$L%g`l9gL`$ZTkgm3=QFdM}dZw&?lrIWyiWtq_{Q+*e9f z#^=kle~9&c?p6Q_9d3Wl4*~x613s+apwJdNe+m9b2s+|^BfLs5I%>tr)*JfGN88uv za0~47L8l%&fk;Ob;y`IlNqA~hefpE$1jsq+6#a)_*(^Ca3T+~#@ebDU^(FEO2=MV*$tDzNWYgBZ~~4z8N!y`Gl`*x{o*X9fpu+1 z)j49ecdwIkMMHgW=f!$_hgKt5GPDy0YA#>5;f;s!YmE2pG#L{DpO6Yf`VdVRUe}YCGVp3_YYI%v`(NU$!0Yqt)z`5-~Cu zVc1;KkUC&YhzK%-b2lrZML&1BtZrh%1sIqXtc;_YjS3YYPWh+4iOrD^d2PS!E44BT z`;CbYl~c0F$qGam-ve{S%_}IxzL#E$ai&Vg-b@<@G=1MTOnstrppIv}4MDllbkSqc zl2omRDi^e>vkO3AxCcw-n$fT$An=S=h~42#%9XH2hW z2z&zvjdeV4i-R*W^$<^=^nlKdjQDipo7%Hd#`^0^7HDDol!)gmg~lo3 zUNbYtw6G)Q!vH3WUQ|iTLkj^R* zsG_Oqw&>UyUZgOuJ!T!-q`bnha?poGF{M#)FoO0-HBFTfL+FehW2}I!P@^rAwZR0o z{X)Wld1H&ZWu>;_?brEgo@x*gvK4QCb0Re_?F!z))!?uh@OFHye*aDWHBogFvWo0_ zzuNimKhr}WfF^k+oHRr+|p_jK`rtc?Z7A(s$6Zbo1bh;LQBJy|ljtD6zJy8f{rS zFk*Oa%>xuuzJqx?p@T)%Xb!B^R#$p_S(+Fs0V1|Yc86yY*&?!amZ5?ZKWq;>nC%I5U}C~Ya{x2UF zbsK!;2Z~UnO&OTf|3Cp>E9O!DKmn^hWC2h>IP=xr$jlMrtJkfqi_Oi0zigZ|d&g+4 zw+qAJ*5&CUzo!#nZyMK)AHqyk6srowO+dgdA+9UsGX1gQxYv!}dSWFU&<^i-gTSsP zuF#dhtv5uXGEvLX$X-JLD_>z#$f2=9nz%S^^QwDaUZ$BI=Utsd58}$Vyit_~$yibr z(xtabzPtH2U2FO`6cFO3UTfSYDN39O@5f9!(WPafp)plm+_qApxB)ILpb%AdLdGI= zWDvH9Oy)P!Rjpxfgu=G|h~t-&CEl8lv4bioHk)<<(D4)L(ucS$c3zjE_w(ZM^+Pob z(ktYLz`>-aQ8$~RD3SWyn<)o^wZLtnPLdzcR&8D;9Hub#9TE+M?-Up3U37IYB#poE zERrzCsFe{d0bZsmV`>h4yU363XPVoxz#Qn<`oevrlQn2_)xKhng)8H=VP>v@TEJ+~ zF*kyJ*jW&f&lZx(75tNw7AZq+&{NkL&K#qYkkBYUmTci7fQn+uGli1B=Y5iAH6Gi( zFl{bdt&IQ(oo(kSY*pTVJpf;GEU_y~o6gmBtqH?pTKO>y$yRtrPGR;8|*{gVZ)rIhYJ;DKm#2dJm(LUp^?Dfb<9p>L{EgN^bVJt(Ni(d2El~ zOHi_b_WJh0l#x@%z*~h5@*$>eBmM^w$PGp%v`BZ4&<8*SF5TsiA7v7qz$mw?x_V~kb+2>82y6!64j_e2-Xi+lXUSeHGl2_r_*AEfnc)l+Tx|x)z82|DN3uHU7~nGL;+80Lr!#uWz`BJIqaw1y#bx7Z2V8)!oaXNn{_(hflYs_2onof{WO1u-D$Xu$-iXCV-TFK6` zZyk|V{C;g!pkjJ@e1d;TV){9$v2CFPMeeh*f=Tq&klnXkYh%$un$AInw_xO##)4I6 zjR9C({bIEwej1y5Ts*ZD?(xf)DIk$5b?ILl=4y@kOUc*^_eln-#&nvU+47HcicOj| ztIkq7%*|fXz;y>~ialzEZX-AHD%T)|i0#n~@Q%Q+wrV}Zjo&leS~@W;r;S1eGHfuS zTCFKuF;I{!11c3o>tulV{fY1f+qt@c8C)L5Ia4J#t0W;9CBB>y#1a|hhQ?wxfyUQQPks>vuJRP=Qr_S zTB@16@23pD)?Vv`;u#spXwQV0t*}~IeDXAZmH(+I_Sz5k6<@Z6>bMSl2RrwO_GM}p zvtsU^IfV4$i@Y;_E9g!OWJa!%^M=3=vTdo_!B*OgAq`&(x{B?%Uoo)wzHrV-)KU)9>j!} z*!JMbwR}ZLaj!t^uATTD>|kk$c0;g1IUswDIi73$9c|r}!H* z!RO(hEOJjS?S6J%^BuZl?_;%}0qYRZT$Q|q+R*YP96Z~>e(ca&gQU!VnL~;(OHIM& zD-4TIx%^%r=Vhj-`JkTMsf~RU?qSk>&%GbT1!c$~%Z{oT!j4MJG1Eh)MAQ}#Ya7?* zXJ7PT&vUKRb}9!8KV^#lJM_dGtjvXnm;N{&QLKS_gun*?3GjCS~L!Y=0CO z-)NUac0`i)1wphX8!m!73foxDjQ>kiVL|x!)A>x;cWG%^6(3PFwO{R3@>%LOlS*No zE!s$Do4#d?@dgPWYHm0sQR~>!pF7Iba%+(uXd&zF>HBnM)|8*buO~LxkUeWs>)Sri z^)B@z?5s} z{CAIH%^qG25#X+lJCVy2I!HID0AtQFLu)K-GH96hl`apHQC8jEz$ph(BUYNv;3R(> z!SyUxd^DAO?97dH%!fsTS5%zJM!8DcqrxWh@%QIk7tR+=UN-+NJG$`i)M7Ux-{s!X z`gEExe>IX@S;)Ur4YUSR%z7&I2_v%4(z6nDREbeh3^+lj1L;k9UplEfYv5-2SaQ|L zV@;VA+)A%$AcZDmy3fTO0hx$IFWp*~WvyOvy6w7__#doL4Vjl$GML*>n6YoRb_eQh zB7qsNqwf{nO3zU{XIZaRgg0#D5XHKbDeqMd@cyPSnD*GOPHEA5RS=RvS~pHNZ`8J7 zkeMES@w^&<`6eX29a>`{H*4X(gy8oxR^lxo?Le)d0NB{M=-Ila^+M^DKmzsfd3u~~ zZ!;f43Bx*mfQI&P4I0A(@G<5BR#cb3ila=<5={a+=2of`?xpn~%axS8ADE77R4uT?L#_d!uE(MK2ZqnNx#6nGcZ)hzMd1r|n z930kTbrv6Fv@g^ch|`e2^jqRK+*3BzDIw24-7hi#&!&6Q+`dvO^B|}d_jZu^+U6Hj zaux9bN}Xt>vKvYT@uE95qq(sl`4am*J$H)amLRs_5EwAbM1(_^G@q}S!jbGn{A>ba zM62JscJ?tsse!7zs`3-$yn9Ha=<4S0vv8t!nx_tK5e+i4W?ksn)&}}X^+51`i}mhg zCF6@;5K715sX2rn==MI*tI61&aPfbA4*;|97|~f|F@z>b-qf@IN$rPwVAoX*oCnPh zYBu4m9&d6-e&H{kZm0Mm3R*%nOR{Y+6{(jT3LT>l ztv|t4b4RdTcMto#Y}DnBJ8af|%0S|^_L6G^j8xU+9?#r~sI(fc9~iGC$c@iFs)nZH z?kT`6ij*yXle^E+FC1VX(36|HeaC~)Uf%jSqYE-D2lhTHOnq_70IDT+cbyf7m`DVJGNs)rqu7iIj zycdIA8EIXyw$M;(Bsf}wof)kW^U5m$WDmyYXxMQ7dBqU^S2T?wt(`Wh)eWv8Ddq(O z>J$*%fZS_Fu4)+$y{U)2XlBF(DNNhSJZwDo6Yz(c`Iv8nK$c+m=Wj-?R3g6Ra70SS z+7;GV`&Nf>8PphLYkdVmc#Tv~K9#9nKp%kv1_HDCc z{&o})1J$X7^fk6Rzqn*;^ZSJ|^`aUNf3Ku*9GHn3fj{Ydoum$Ez!}o3C3&_)o^l`<}v@|xg*OwUMpNGT9}-gHKLEyr@r;b ziI_=)W-6V(=s4-Ze{%nJ5Y*$>!8f%7#06`tvOre~212bLyH5P-i!ao@jj?G)sq-!l)1{P+u!90_B`wv+}u&;rj4!e_c=2Lq+aaj=oxd z8~^CM^4MDO`F&L7^KCkSLyyz{g`Eapx0R0s?pmtN}i;H2V8IXLGE_ERh#ga?9tmK zT^q>9x*wadM^nHrL6kOPgec!VSVDC`ZnA)w%uwCkNUNx*09$p=1u;^QF-69MgG2BT z34Fj00zw8O^H6tzNma)U zhlc(UkW1vtW<3aD^St(!taNR+gFuTWQ&np9fBojC$$g}T!ly-ech5PG6Kp#-N2=Ad&GuP%jojLks1C%|IVZ6YORt+*g= z1O-})e8H=$W7duaE(G<^`nb%Qk=sLfN>r&g428jcWc)@Gc1~Fv9?pS}fuI%ve}K)# z6n^3g>AcOw#=p6Am%+1g7ZOv&4tk9IH}1TXn)UFl2&PJPQLA1+q9%7)@<3m4csl%h z_O%HTPrn0sXFnB^80Wy=Q*C7P9eJTG|MeQVan6W+T4tvXEE{tpg^md9SvB_Z&vP7R zz@TYjxKS2{Obhn1zGHRbP+>H&vAn`0mW`u{ z4z-4WsuD)9%vp49+&T@EW4K4Lc6j#+g@b5#O~AW5je2X`##74s*9yg1Xmie1CI56> z6N^Wskt!iK88^(p^($Vis#j9|_M$G~N|2a1p7Wi({jSR$kKrfx=b>SrzCOV4S-R3= z=fO^w)bB9zmn%!xs<=bK-B-d`Gkqq{MiGNDS$!ATJK$c=d2NB|CMX@N_$%u7CaMkZ zN)EiIPwi*3Cg`^tE&GW^U{Ba@w_^O}KLqM&yo0fL*dGM%co`R4!@ECEi?P09Zll*= z3Rxml=6{PO$c2}z9kgfLZPs+ubQXS^GqUB;s>F3fdnhm$(^{Fl5dhfebxFtU0d`bL zqIXjcn&+Ix(GFO>dw2bUk0DOc`z*YzTd9E-&r*!k8-%dtAUb2@hQ{}zQ+4a<+WoQ4 z;DRgMpJvAmuo3u{zLRtr?CK;W3`@X|#8;rmEs@_mTi9&+p=|iK!Djf$2vAv~H?@NDyqxu$C4#+hn7iM&FF-e{*Hw6rEb<$s9&`g?t6ELECmqG8WOmee?dLFI)pEI$+Z?K<3(QKWn1R4ti*Op`O@GH`0SIvE_No5(ft1W{&*gNTtz{1CYiVIp=T(8orrFqs+55=2PgL%| z=qso6)u}E3{pSYzPhp(oZ_+nuBS%vsdlfxkuQ8QFTS5Zo{5rn;7H zv8K9_Q%Jy{ML={eEib$>Q?#LD8FIf+Ih{)4XMChhx5~~RB{DuwB^s?P({SrATeYEZ|26S)ayyZsv}mVbsUaT};~vA9E+=?4 z=irwSu@pAI$bBH^KE1?8q=|p7?Yv$wCu|-qOdSf;fbg9!-{_ zi5##HW`O4cfJo#2TAS#73K_y5MqQ*1?X9Liy19Z(nsQAjTW%1(D}KXSvbufXsyb*u zRi?3>M__|6z?Q<`$D)7lnUuJa>N@&p01fdnpFf-IG+8>4 z(IFB`ne%~k{@(V279?Yi*u^{dij&ikrk`5PD3Dpr*$0u!JrFZZy5&Tf8%WMv>_#+y z^Ib-arw>NG0J54)$1TkXLq!bP6uE}Ap>oDdHUWdsf>G+0LA0;(9q5npYaBEFwFyvu zH~%=v|92Vx|8`{lCH^v%tQ61zcz$I+;M%Cc;u&*z%TPYgo)l&&bA7=9(XteXg+en6 zmE}`%pl=pB-r}G9JVf5zsm_ISQy+4f+$Jq*V5S*l3?7f`ZBuTOEl1o>w^Lm{@4(yK z(E_U7b+p3OsDrd|`bmb(l*U4m;)lutuF*_%W^~yRFZh9S@=eC5B4L5yln93yj~hmWkHXrl+yemlwA+s8J}P zxz3zNMl&$4)D|*YRQ4se+}Ui9n0)a# zzLm8aC}*y=2aA>?&EHa;(dug3zgg^>H@|2T)(y^DmrPb6)cg z1Lj0^u?kZ#BZrZrl8p(;(K`o@bj35}SKy+-{FQ7g5}#^4iQ_IvvV z-Q)t+MclpBwKPvUmG!T6@-^bX&~r7?3y$H+7b~6^+GMZ#oP(~gQM}$Dj57#Uf%zfF zd7$6-il!&0AA-G6W_VL+IGkfYne4H89rg7-|0qh%I%ENV4{Sgc?@ z+Ytqt59y(qr^ChC?bZpBZ3hvL{CA=HMJBgxs!DOZq3UgcIV-;q|4`A4$I^^HDz^>Q z>_f4aBC9kTNIY~m6ms`8yod60u9XAXa2&yhP7x_A>+MhH>$T#Du?4*#G<$Gf1v49> zF32>`KX6m753zpewrr2yzOw$pvHr|78Wa(cg@6BwsK>4Hj9S(49&iqmLeOh1yb^@! zAW0{n09TiVkL?=%Eak-M77kk+QpQ03M1TTXnj7nqF@>1j;_8CMWwXn@^s0sNW6e@9 zqvFeX*ym#Qv6ox0 z#ksr=*3#SS8EQ@v=u7FIa2?uLl#ZF&XN}EWH%RhDwuO6Kvf$r?wjS@wM|P)Dqef-B z2;`en_S}}RFb&_|H2iT89(?>)SXN-7GB0`&P(BkNkax@~Ij1q+VgEcnA|XkBtKSMh07D_d z9`$~6B{jg(tW{VDt{60)#g zMUhK>`sU8CB+CsO?Mld`(_YWX6y_AsFRj=-WH7TImea5M7MN|9R)PHL7jDFA z8E#krLX3%k!OUD^)HkSvfuv})-scr8^bvt^ZF}69z;YwvMCQ*&6|QKw=O^t^Y@`tp zK`s!)eDZsBE6+5+=awM=<^>tSe?jN-iVS!eurXkKXco*NACqGW=Y=6AhNt z??_MtExljzT-NVgcW6$zOM0rWF3}}=#A)n*tk6*YjkNnePt(7{wepxehRP4FZ}0?R zc%+UcvUk6B*p11a&bbiy@*6yv}l;vQAOac2AJEQFhcy(4ZH=Z1}uVC4&r1 zJ6K^`i;GyrmTTRGt(n^<2~A(QP@*cTHugxm*+$GS1|pM6#Z|08r74;P5uekT$SSoZ zilv-eg%pX5(w=_p02I6Rizk%WH6geKfu+``b`0|UuDK(5+vMJEqs@ItMhy{6WuAWQ znWI@-2E(AF-5Zt(0t^@o^wN(Xl^V_1JH6;h*YbTV&&mU}!APD(d?LyMFilMRK@5Q& zMC+xt7QLyx6$S!Ae0{|H=$+jLz#TZsoxD8q(+@fib!3wPtWxCVBXwXt zDS6Xco5ODo(GifDlximz6&3O;^tY3CbN7w zUeOZbe8+yB)5Weep+iXqi;dZ+zm4ahSUOb(jb93UnSVRP;#x0P?lw;EA6=S=vw<|Zqa6ws--kGvJ{2%Ce zu=vR@QPIt(!;5GaW0S+BD;$$A&ey}eR0$E)wr!$|{z)#9l;$-BJC(sk&=ka%sj3F5 zF7HqH(818ZC*^LsPohK!V%a-HfeDU&4Wh&H2anHi3+%Z404JM8fm#uN_}R0p;KiO% z0*S^vMAAWfd95wT;oyXHef)EX|Ljg`Ol6N1%z{5+pixwwr~}rF6d~6zpa{=RWDVdz zHtHi?|d#QsE$0Vd@Gnqc}2|tTauU9s0(BdJw57%hN#;9Db%wf6PfD_L^&L}nZGT{-YujM!HYrsaryQ1j zE<`$;W3H>nCe!=rQv3@){l$CLe}OQ*+W%NUN&=PQP<#`1kWN<0uZimgs}0?tOt z;|_eBcfn8O7zXai&L6ZCxCGl0Uv$@9^Jp2wTa~B(%&XRvIgaHhuyyJ#R+tlgtkaV_)v2dCEDi}RM_36{paFZu9xeyR z{G9bTq=8tE9j{MNp9PFl&p}XUPvCE~o(41JqfCqnkCvkeMaUy+a=^)wszhkqnEBl^ z8agi_Ods*-2Jzn;RZqOkNPx6?R)J-X*E6yY~bQPouMuUb_w;sUeJTIUT9( zTxE{a8L7G3&5=%s%3bQWsPCZiq~7o-a(hbm*GPmD{nCKl$U5CRyQ$S)2|a?4QDdQg zo12OlY%JE*0ycWRTgX(ONud*>37i~Z#}8%H97OuM1RMywK40x$#Z;~@H9!EpwXFdi zQ&YLa(a(4c1OXHdBn|`xFbwbv)Pu$VvfhjKU*=Hc3-m0^`P>@q{>C*nzzyE^5weA6 z^^9EhSy(7$=YOX}(N))>RiP$aBBu^a4!f@04Wj3=1$N{^Td{kX(TQa|Se;2ni9xw; zN(*cij5a5|6h|%Rsg3jrG3u$5n2KQnA z0JMJp>01}kh*G(Wj%)H^s6@E*prBbpP~Twh6h~o8z2w`6IK3oD;1i3$9lSJ)bF1f(O!5lnBVY}qBnmg8!$S8U178| z&G13>iqse+xF+AibB2=57Ln2lgsDMz@`go7Hig4!@43z`E@EhCh$LWp9_Y2yFlif^ zSX5;QOpI2Pw0VT(tj`gi$1Km{Qi)^aMu|IhcYJ$(gxxOE$}y{lS@o!&{21g0Nmc59 zZjOjSV+rPX-`vxNZ=S*=+odc_UnM>}e#9H`45+o*jciyTE^yBoV+-|tLQ-6^XkPWP z-oF=(Dc_&BvqumO8BPjOnB}G5MHyP#Ff|{bUeV=gtJZJFJ9i_H_AnEy!LGtfv zc(Q*8i2uT${_6?*r6BRgxA-@8rt_+vuex^74jvFaqTzQW9Ngi2Vkz<;v?hn z+8C$#p(xezI=O}qrxuP^xj2{QRu3F~YVF$lLs6luQe4`_QC`jH*rI&57r*d=XouS- zhOZX72pN8!D_S2B*7#1@?-pH&8PA6;K~<9}p_rnjIwf;S;~!7ZCL35#=FCySrrB@);&;AqX>ZCuqB>Di z7n$qhFK}(Jsp`M=hE?ez)qCc8LFO3}skb17xlQcB!O%I*jxx1!MiKGbTaxA~{8-M@6V4X*MXpC!EZW5=j5GbN7cul% zsg(`Z5vX(b=i{kQoDPQ>saHJQKETz1LmSP0L_Geghlj*0P0cMAA~?!~>o)?uu(B+)Gr@@Xh)t2kjg73^u|ui<5-&4|Rp#mWo% zVHVRNf@%@_LTAyNEkFlb%&Yex0z|~Dz{U9*6!WIRg*g-g%QdRP8SDL7w;e#TjSQ(2 zXi(5V5?bzKU&W&m=k4hhuWzYtiSi}UCTDNEGAs@;H>xDz6U^3I*1Ru8$29gINpy}H z!hc~Llm=R*nM9?fE;&2O-Sa%E@9)6F)5oPG(D{N}^REZCgbgqE2n6dL$ssluwEsRJX*W5U1P;;unEx$@{F073!U%IDwN69Q(L=o>YrLW zKAeB;rsT1}f435onUc{d#azKltH_BE_N93RFORN_VZ7|Eo^}GK$OR?XUO;4z)Q{}U zfU8BrDA-rGVN?tm69elG(B?xmFSZ22iQ0ppW3|YOV%ow>$E|stGLl*?ubvR^5#r$u z4<0$+_K%W12fk^*OIsf|tDFE`Z|JeO-JlHI8gMfetfJi%o zI6H&D2!l+H@A~G=@9xec3WFF!Pml_ORBpe|=Itvsjb|tdgXmQon#q~lnrqv6$7(C< ztKky_$a~ARddr(RI~#|2TkDIN%NgrObC-$>gM9s|{*lq&?&$SdP(Hs8&nyfg3_=X@ zL)Y-@>R>mJK3z4C7%>R*U)ZzegvFO2z=x*;et%!DCHT9)=454SVP^fGBCXed$!8h= zTF*W9OIjoXCsFtp`3$h0%g0LfZ}M4`*8gE6nmCI=?q+hhmN|F%{FI$t1n8Ph_exPJ z$_Z77FH%KC5GOHGTGZqXSRs@VU(#B({uW6M&gb$z2l$Oc*WRcWTIcNAo_EgHP6+hK zvaTByw}T}{8otKmE}LT0qH^5$!W^;F!*5u^hZanI6XLkbWZggYC6T{dDLfcbgAZ?< z*X=anC?oRG2NTQM?VXGtVM;4a8UDeFI%Sp*h2V(0NdK zhv_@^3cg|fGdBmouDAsw@iPq30I(}glsSRu%%;-+>6$WY$5VIbx*xQk8fX%!Zlo8p7Yk&muPb~TSvx4`}XXQT$qXodw9Mv0OcLlG) z*PfH(i_SzTPCg5nCtFE`3dA&{Y$=g!IFR_WU}R9jg2pG`Cuh>}HTU4#U#_7~0Mv9l z$rya!K&tm}+tF?Nl-uSQ8-TpB_4(cQ8;>Auh#?{hEshY)Ww_XgBcG)DcwRXb_~jlL z^^P_onxWA}X9_5sG!NWeNlFNNQa&rSAj-9t`X&__T;xN-x6%WXEz%{$JL`J7S!gokxtC+~NTy=YCYw1r*OMykMUNXZ zKO#v;kR&$kscI$7S=)F3p68k7qjpNsNvYwb7xIw`n(3QLSgw+8P=;0}G6FK~pVzXz z)?|Cih>wIdG8HDudAdkT@DEBesT2v}jfT~qRBX{$zRTc-X@1en*>%mY39l`fnQpOl zWAI{1L+nSX@)dD)CRio4JDK#P(d-Z)%(ipgMo?ib`rF8rBcyo7s^f1U;iPD!ke3vS zj*8ID#b~a)2jL(iDc*kiHq9vRqSj8g#y5m(4$-HAnp~ z&fYOP5^ZhQ?xbVe=#Fi(V>_wXwylnxbZpyB$F^!Gq2^)3MAId7mV*6DHn#RiX#<%h&^R4gmJ8X(q_k=nyV=v@85iGDnYBe zzaRD6)bO%PtM1Axpbn9v$$<8NBmWyXGj6AVWnA-FTAC>2gvlwOFi0BjD?b$ z3XFGbNELT%^Yv(<zgU$rlDXeGku@lUttH z?Jii>y`K193|ZBB^u9QBx7K{4^xR30RHj$CLB!vzYy{Ut$87O_f0M;Mz+}jo%h!!U zLm-3rGGITkmqMyoqu_{JdDx8s+D0=pE$ImZk|7F~8Ghn~f5A9%%mpz*ngJc-IKBs$ zy0HeuR(>jov;nX6J)1hv_4!Ka2xqmAwMH(GcmI_4*ICgJ>$yECc8qXA`o>WcvISY2 zc(GJ?MK!|Rh?87OF#ueCOHnVBO80iz3C&cW4&&5WOpIUZ3pX_`(J~Ts=k%d?o*sLgMI^Ec(4QjO}A}VJRj@ ziZadkZv1<&dlfB%wp1kL+O%|E*6z25FcfpL&V#JD4Arbye!D+AY+P=>vQ|4rLzFn- z+#Nxa(aaAwD}>0G#|Bi~t>8UYS?j$o+MEwubnNr?{nf;}ZdcvkNq^Y9v3Y!m+SY%L zZl-VYefK5G^6kAtR8-KdcP!}PT;Appng6sOY&fNXXBM8M`XeUYxDFkaEUm%%=kF3V zysBPl7g(bHcb?flJ(z!6bNnZ?{v}Pv3YsF3&A>`db2vfQC|M)ZvVdv$`9r*rB#%f& z9)C0sHiZMQJJ?7)1g%NZUta@35{PvA^_rj^V)rvs5*o-AJsLmayz{i_`uM{EQ4<`3 zW5SR=gmrj3-#YFlGQiUZI;N6jNfSXsHij}*7mkiD;zv5?b2K39DMpa0KhK2QAv+W? z5lqO1e@AJl&QZFsV~P z7ddgv%YME|NXM}Km=0*$>|I+qWF39!4@$c~HD}(lnAznvocrfXrO zhO8@~$FGsbk_E=ff?cM}lX;hHlkzAcoz{1jwUaz)&VWs$Cv}2ul$1hajR0ef5GEJ% z@Xkc(!GhCQ7o_HyB>Fb(-_&|=z5q+SW?32r?^Cz5HF4d#pv7SflegI``ecF z(}`SCs?u0W?eFV?2uBP8K3T`?v-6;QJ|P?*rQRZ^u>2>s@(HWt6!a+LC?>%rC?+8( z#L6Kl=-C}|8*y@G6dxn3aHZX(+QlWRuK++ai6 z!-$qhcko5j=e*rTK*EaOf=VTvSR?=2E=i9=%FVE@WeEdv832!WwF z^1t?X3I8EH|9#s26`TQEz~Bt@qC{~)RSl!~fU%&djS>(rYor3ef+S${pn!>JYQ>=g z4C2UOEi}uU7FJK>Ojl1hG6lC%?7eDux}~}2PK2^wfl)ehgSG#QOVLP%;}kFF6Zcbw z=VZqVkPZIvWjY)ZBtyU#DGCe81+dKB3lXp!VDv?ZgWO7OIke`kmktUS-9=%U6#WW9 zA>zsCAVoZx70aK2E$yY()=sCEex9+Hhs9`}W)*gmM85P`j=pjD1xxq?*YM*6PclUZOw+(9X2uOh zLxjqESr^6ikOwz@LW4f8@QHGbw=>!hjUGDiACs2lVX9H65~r50G%#po5X$7!U)2Wm zNUs3s%Jo#ObU7E@$dc16PS7?D3#40@&b4Og)K;Lu)6G2>QW!OuL|yU*7G{Zr`-SPa z4Kb{kHx8`gqFZD-o-@kD&qcCCGqI}Wm8Y+FX({1Gvq$&qST0qyRKdacJo$5VBC8Q=_V5*>T$Q>5JQq~W}p+Ir*r5UG&=ON%$a_I~T=tBlJLUR}F zfytJoEHVZJMxXWCK($exf7K_1c@tlzB|)>Qly*33NR&ti_wy7PvTx7bGh9Dh5l*51 zAega-yU1(L-=ok`t)Yt>6O9y?oYWfHVN#i)g+FeNi09(#Ddytqhap20Hk^oOstkRpKQkl#rJU_mWqFSzXiJhk4 zw6i&8p)PA9=Iqxm(1h^)?9MR@nB+L5>Ik#Ma$4l&x1X?x^x7P+OGfAixb%z;UQbqZ z^lnmDVy=|W=E|ZxiN-I{0$p4NhsCh1=Hb~+!Ek9|n@)+UF<4c_HPt1M+T;!gOc^?{ zY$0?4J>4irO~0a*lH6jMhA4U>WB)vr_ym$?AOr&Srbq9#Z`(5!5DHWMr!@>Ee0$XW5U~iHMR@!@*(3arT%C zdPcyTLm07f=NDVZ4-Pc7u^Ashwq#BV8qQS}hknmt$9qh%TFJI(g1%DLC)DeG!%6qA znFR#1ngu?y-^^23TE9G;fU?AZ7Hlg4$N4}H>3B9C+KYxL6`0_&BfeAVOjKdQV zB}X*}$PKNPcgy1L>BDPBJJo9f=^}y2>>7JNq7qpFZAa_mh`~p*)(AGCdhl{o7;;Ip zkIAiyL@pTA@C`|?>Dt|sMIz@GKIbN%kVCRu*ymi+n-gx~M)5YWm+_rZ>^%Obrj*YF zbOuj6qIe<`b$LSyC5kjvyT9_Mlh9|}N(Pa8Z+@LZIp6#`gz|Hv_@Uq8>ER~zvw9!7 zGltiT!1IMH+KxTHxlirN0JvKyv!4G5vQ;T=SO!`j*7`b>a$L;NzeKbFa^dD^bN zsMZ_ik(9V}kU_G=L_cAzlg3J5zAtxP%2SjL*!0asaHmn_EJ~)rgai=8*FUpVeoPr0 zii8X6v#Rb`4|T?1{&b?$1wgYEy#M{A58n~P1%m^t^Z!c6Ao`~#-Pq_aIn}?UV*k)` z_;Wj-_YWNimR zQ@^46|JQG@OfW6-2Y%le;OC!f$bafZD*o#iDcd?2n*FP9AFrvTsDL)~sp%IWu5;}} zeXaPD(%j^rQkanvObjd2!#=u3EQTnA)27ucq4P)Qy*%%*^aKm>qr|T#6wCBEOt30 z+i((N``}HzM!P+4+>HFR=P^w1q%H&8I-MMicoz~uh1Zua_0cNoF z<6zyi@8-dU*mp#J@WBM0m3gGJ*?Yl}CpSc)zc3{VN+`ja!!+S?_(+wo`2*@wSHr9a z03A?!Y(m>H&WV0|^J}d^##n#w15cl*H_%t63+QGG4HVeHrc}cFrtJsL85)$TPNb=@ z*Cq;@0E@0l62XVwbi4k9rsFRcE$dlj$j+q$MD)|$GGLZNN@UiG2k0O*LURfj9I)2oWH&fdmO83fKMF%c0vmQfdeHo95$d)D2Q|pf*dt# zK-Jh5E|)mwi>ZThaK>j3{jUB2w4y^_c@AArNJg(w>%*Xq7JdC9>84i$7lOYilShDh z$d6dwjYiGbg40u?PK2`vbX?NUbg}A6RpGVj4ldMhs&NF6ulAbSDKKve*k|<4Ja_iG zrhd$n*)*uM3dr^Eo~vbq(aUEgm)07yWcKV?k_nkzX*PQ=$?n`Y4sQUMOwHc(xJi_q zhlLN2JlGe%&zY3!&#ra#m@dgJMoX{NdF3SW8JuJ$D1>OASD^sGcc`DlS$_!a1M@ya zBDwFKrzg?8izlAj`2Qv>hZ)+?PyzEpPvE}9KVQFpLV5iA`l*^b{2OH-uW5^-09=&_ zS+hBrh3(i%SSQ^6VvQ8Eyw3{L&qtBc_ZK?z04c`vUcVHU!2#zNl}I6ZREEQ0|G4rNvS z;<(aj(2?va;YJd{BYK|eS?HL1Wwlk@aF=>aHj3eO-%&{?85S}PMqlSwJ0B%y67$?U zP2uu#jp4N`6R<=Ba_4LRC`Kn8NK&re-=YOEp-pB6>???%n@JN$GCrHE04f>HbV8$^zY3PFc5mJaQEL+ZGHGw?#j<&Qna;91 zZc^b0vM7|2IHq zCcOP+|2)*C>W97#^a}2ro(IrSdWNWP6I1rWcziVVB2*%eZO_j8s=R-ZnP7QeCtPrv zbkH>S%Lv1s%#XUyoae2*8Ype_$m+v2%ZDz(DTlflXZ=WWWTTSprlA?E*PBWJRU}w4{e?{2>|D6<;k#O zO)6}=pv)TO{qLktxd#22*4DRRlTNC!qEfZW1z^3tI|QTn__Jz5x?q1asDQY_Y3oc1 z3BQp^G_fKycp?FzLrmR)7Ge))aUIY6HvS55k+K#7w3@4xLHasjw|+*l!Y3o3^=yuh>9({ zm+pctD)-xkA@uQEn$C#$4ND9tMMVGJ+8s2Z;nplyt|+rcTYm)?<$_cHmLg-+RNwMG zF6+1~L!u4Jg|%aISHuuU#?Laqta00)KcoE0awHFaFF8Pg2}WmjA!NzVSeI@eqeD=9 z=`lWck@dw_8H#{nh56nEo_8O_du9p={@#nI3sT8Q=pO7fSH8ai2&*z-kdiYQml&j@ zRL2cxo5t0y>~odI{z1PY@XQeSO_sah1_+*Aj*$21)u$6bEHZ+~Q-Xi)P><@Bd%&v) zrKA2)Q6Ja1Jg9LYub-k8udOZ>*GQvISr$UAn5Q%c57u5|PM)D3TQnX-$;9|LDd4y& z>skWeCaE?M5ryQ^N$oNcP?%0udnWtHv%&S+`R#e;03zcdF*=_2N|x^$f}ZXSd@wT zKwb^E(z}NoY`?+15J4b)wiO#3GHTDB#eRZ-)bxL+?K%6)CF&I8m~_k#Ve z8yP^d(klQAa7X_&z(@ z(#IZf1l_#M;sn`h&dg7bEzmz8*X408Q zKnt-u+7H!cG7L6bW!U>6o04E*VxvY%43Z9_5s##pj58=ksz*+Hnz0%rE`(N=h-7|* zVefH@y@B<{Clzw<6=_f$gM$oYDp9o+Sc>=+T?Bu=@85C_l`V4C6s3{+m{___c{#j| zeh2xKK9w{P%sKcpj=R{0lVTn76iq*tE3Ud_*lKj+5<(_CkRR=UMF(6CFQDwGEw3tN z^<{%Bxndj(TV;%265I|T>M_7fufM(QVEQMx2`hof)& z_NV$A+vf1uHP2D@6RB6{JnD1ND9*QsHmX<%E%-Res$lVes?h>T6=!%)759{mvd$#l zeGmM$bC1A|LFXXe^H+pNjis}dGp(%=0{ad>ZOS)h3aDH^j8QqMg=pDPx_iT)4oLY< z!GD|rO@Mc5n~P->51^1kvrA^9usNu`p5Gn=^dowKlB<<{0kyq}zUAfHMLjU}>QNoF zeU2tf;0F&(o(;fQE%;&!bE!u-Bb1E!HdYB}P6`C=YPtk@;>zJMxf`EopqDV5WOQl&*Q;u~DRiVgld5}gM z*ASQEy0%MM@SEPZP7x4vaOi&GP#_NydCE-~HA;+S#*G9A6$SP4SajUE_7vAljqVU%ef#hkATzJ6^5Sngd#a4w18Nu}TW;|6Wpv4ri zQ=+_di7EwM0uobT6VwCr18l0GW)MVRoZy-;CwflePC{KKRaN}?naX<3t|&S?<@Bl|kguB-dEg)_D_|a<%2a6#6D|bHMseL( zgc|IB>%wg81ZQ)`TBlvRN#a=4SiD!eAFQ^R(2#yo|0-iKZZ2o~M${4T^=lFO3PwE~ zKvFc%M7J!~Sa2m#eZ#VLo8-(i9?d6{n31Lt;?T8<|{nkWj8jiO4B$ zDySAgR*?rM^B_{kP@g=rLzDBH2_)b=6c-y?Lw10!DF39#YF*8IRQatiLc_dp*987| zj(`xDRN!e4PEeA0Gx~4yW^GCOei59@?o6u7Svz)sd9&EDPVQUaC8o!ZV}aa|KmrU8 z;bVo|p+FZ{Ub_3hX@cAi!3ndO8o6T$p28jT^QCLJEER@whCteYzhJuqLyjyJqUph3 zIfjQ-ZEMLJHH6BK@wy#x=tQ|OPmJ`FZdqZp52Y8yYN8!E*@6M7 zf1(@E@yCs3)yKr$Pz&{5!P0-2lv}HaO|?#%CHqrq4O%DFR*r4{te4dya`znH+F0KN zdQGC2Sna|2w-p}<%fT+vW12QNdM{b{aC6ZoR@;iy-=Cf7==&zQx+p39rhec!PXN0` zJ-9u=&Nj4+W*e3}mNl5A84CO1lc&YUyXTmpvjOoEhMM7`$-tDE5u9O;J$ZcunZG7O zz1hW<1kEHZKrSu7E#1@3fNp)bQe0FI%}lD)-z~|-j$@`f%-1Su2qg7NQgCpye0;<5 zWow3QtIg?bD<-dwnRBO||Is6;-&Uss;Ol?9EVOsOVL6_$W~t{|sm&KgWHN23;aEnT+(&|D(UUV|0YjX6_; znQXzrt`SGOk`3(+v1BKF6!{ruz@&D@O0#0M^f0Wn%FuvSzZ9P+%XQDll0s9FLQ`O6 zRKge+#>m~KwGRGL`glh_0YQKlZow6-b2pjiU9ru}XVdC<)9TvE$(i6t^^aMu?1~Nx z(Dt>=t>^KZfu)}U*dfYYXnknfcd%%9eVANir5MWn_-J?DY-s+LBp_o0^LZj#k7rZ9>ApJ8E*SFp3!&D>9Ez zju|mHBy%D$EAlF08zLLhOOi|HL1o$F{*lM#V1}p^*>Sre?s$%%l!It*HhU_@5XKxs z^u7|jh(3sMl4|`wiw=?aUU`*$D)$UMaXwbUah%v5=DC>MdfOg{mwCm%zX!G1vDyko zuy46+I&r(#Z~QD)Yt3FdTMp+t7cCF`9giviK33Zsra7at7|Z&Q%=}wMh@;X3OQjK| zCCDWbgwP(xKA8JAtW**~Pg`LDyUMIMwmC)Dci)ipCa&6eH8GMBBuBTp4wdqr6zP`oCP| z8ooWtyWv2NOvNHPHj6#`f=um+v-KkAGTX^`yJu+wQ@)hy1<B1()4lX!#bhHImo z%RUp_%Vq6C0ax^@4_cng!z!%))7)zE%OB6rmXfwfPnm0cyFlMv*qz?NkM==Q_o$`1 z#ZU9`K7ppZUgC=3O<9rVz&rY6Fk9PHwT|<@N4H{45WWwp$ zPEPuUW`8Z~{(A@KKMd5&1na+xy-!s?5skU)(tfl%a}fB(BL-L&SfPm$6OWc|lk#Dv z8kUDJ4^3OWB9pXD*0~T1E>l-jjUVJ8JLemYQ=hJvyie!v4{v9#U#Q*CyP+<@7>v@} ztS)P(n4VThmVaY(f31*m!}{?hW;t_TVKfFlYjZz&$SRKKH|Y*^TehUQ)H23(Fp5P5?Dm7q@K8i)=Mag-PV70FNp+ z*X+b|t%U`ea-`|Qo`Zr^T2Y$s&<^)xf00EQ^r8<9s$cQotfJrn*=a2Sy+tb(uT>;i8K!CK5?!1gG zGqS=tDM-+G$^Con;W8DD%I+&rpSj^QbSW2G-Z1cV$oNK547$l#BYeVgudh6$wCP}2t zv#NfMSRrj{#xrGuP5nYj=A)!MAil=SW|<_cNF#|Nv%4T3MqKUZE)C;sa1=7Y!LStu_C&2stWE-IVdQJ3M>a4?(D0zAuPDDbBI8QnBq@9QyxeVFpMQA3Yl6fuZ1NOBf?l}X zVPP=gX(*cu_nYF3NvR<&vDA#!90OwP38EgKA=xK_ZPX%%>@S0vq6ROe3ax>*BcnTX z0WUm2+mR!Btg?wkkbtIm1T*_0RPsDcybz+ZJNemhEApsjo^ADt=dA+t0uhWb7cYoC z!O;m~pI-B?{9#61Vevaz!(u1hKP~kp26-#iYV21;QE73XYI|yO6nRGCbC+ZSh;SMW zzeD;Y6{bc(Ql00<$&eCgz(qLGU7c%fGERXnkaXN$U19`u08L%jV!fDb)v00g}xvhf>KgF=k*+Nn2#vbRqk2f~k zJ}gHce+TgCPp{G6bP(QWqI*ClA8Rud=W3Mjq%`|u*CEW1E027A^!=InQP-J!tKz+I zHQlgjYGx~0fqbgO0%fVh0v$!U2t9$)^+OEb@qX5crA897)DS=BCh%OzY7bqV&=&bu zMYDiMad2s@zO{5bGwv(jhBHotbwTN9&%K2Uos6pQzou%HC?db%Y=l&y3+Jeg$w# zU<9xgZ%D$UG30Jk<>r3ygdypmnxIo)eCTdfM0-Q%-(mDLJ-Btw!^dE;y~t{4E$LOf z=;o@G+W|L0;q>Tcr3N!46=?Ss3nf(7G-)Dp9wj;Kcq=N~8k7g{;NIr-W>$;Q^`gd_ zQy3h~zvvF`d#iL9jnAc9E563#8J;K_^Ji7!u-%tWJPoW{CMHtIHvV><@=C{a9}`( zKt=peh+wK3O*^%iVcqldc8JFFirPe>H}*c*nbl%Z*J#vJHCnXF)I>XLTVSem!N5nkx1!^|s^+OF2QN0?XC8BC!#2VI~5o~Fpnx*c4N zmZn) zB2z<(hGSgBvJNaE1dm^A@4+PTdAsVi0-nNrnz~6#?x8q+8v4*|YSE+D5QcDQ2Nnq{ z^Vzw)VN~M}m^{J)?DV1d;MS!3OcxR2?|VakNpa*O90`TYq2ibKZB$u+*_h1l-?B9G zqzvMRSQZ6XzWT%2{-Rz^q&~D8z^_8Pi;bK=R?9(<<6Z&FB(tu&VXpsc#V&qR`@`^I zxgiW;)qJ+>qCu&kV;B0gwq%2TWqwj^zhpq7~_Af zcq=c)!ownxKfb1{%G~u}t{Q6c*>H&RkFxB4n%9?ER@kRnWW2=`U3&*gD3`lP5S#W0 zUH@z(Ff3l4TiUz)=AfTF{p7f_>XE8kPCi3j`#`o?1t04&=PdHM>iX;La!h4wu?4CP zv;J2LaZ1*aILGTpDEwLy=j$u^TbuM-}1|{+B!KjxsgTM$0sLw|AOLn_iSI;Y_@6XlIv7!`*!%oVgqsYAanDwihL|R z+Ue`mNks)Cb<3$UZwncNLIVLzf4NV@OT2USna#ta%evm$$_YbU^_xub-LyW@r!xax zwwsj+-)Lv?%GhJp)fjnVx8-G>Y`Yrl%fX#DS$JA^>TawI<@|jtIcS(cB}!cb-pQ{* zBD+VkB%~zkHV01%^-i;>2$LxAm}IJ%^Ji_guI>z1L@geOLR<@x!B!`@d)j@BV$$>b zH63o*-`Y0kJkIGBf#ZYqMQ!xFU7mW|bhaZF_4%%8weLF9PPU#F>Mi2FW8p(TCi;2N zq`e~Djp!{t=@Xh##%1(zbkCxUshN^!21En5yO(85fP=VnWpL?Q(B4K;xmad*rh! zvz7I|%Bh{Mdeq5Y%j}F?r{t?D0Sejq#o!`@ZuFc5w6ryw)!WRTMZRLG?Qy)-KH{Bx zH9k^`0@EG$L>CsHU=m+pF7Mbd>mXQH>8w;Jp8>t#Je+l~E|M)0uhbOYwjJ<&(6Nzs ztUxZU8JV>rM9qg|7H9Bf+lNs|6L5EI7DpIht#09w4y1^9?@!htM((2*um7$4GWJ0< zqilYH9v5}ur?QBwXA#LQe&Y^JaFBi^pf>5QXt>BCih9*39fYu#6 zz?O0FC{OcE(6K<$yWmsMB;n}vdDijlROR$f-K1QC&Ufy#j3^RvqLFNG@!Ptr5AXQY zoC2ihi~ud{%|9;9pn3=J<6_@Uw?jQ|;)_rI4cswK7y9f65!-G3cm5dBl(X{YaM14PmPD+y8lyU6sZ zB7!|DDk@4e(g08!Cv=F}=9!`8L9eWZm;^;N*(LWBCY!$^zsH|`WnrDWZ~1GgXe^>Z zVd}qg-txqE#5u+3NyqQ&4Ybyv$qKYbI8uq+22GE!qASH3G-gv>)>1(pVr5%$cNglB zLGNhB>!tOXyfN|bctOH=PBn@X0hjV}&=ipT<~C7B`xN}+H(v)GQi>}~(GTC%x(R7# z$G(dF$S9NxxT4H<1r2s8jOvbwpKt4{C|Gjbi3V2rueXH1}nhPIT=LT439mHQJS5o=wh+!N-}%66(kIAb`XvHHxDCP5QE@LWYK z6}wsftnljlEbBw9!H^tO45!r$3XPKB^}Q#6BLX9`I4P+s7M^}$_#u1$j-mV0P0JKf z#pCyHF57Cf3I*?q1BR9%sbvQUDMI;|I&DLedI=tl^>7}4C&K671aH#BUk>rmw z#%rsS7%Zd4b43Bz9o{HwA#%!zqX@ zk>9r2$?vufKMMKvNKn9gFgt>pxY18y1Bi9Y@d#T4lirAbT_!=0;`)A4#M3I$%ODxGID^WoE@T%{ zEeC@u^79pi>>iqPs0n$@~A)={K0_elYNbvp~^Rb0~-{%e5eNVWcSwSAF@VL@rEjgw}SGu(T3 z4ZlxQ$DkkQ$I|t#p^g{g$?_2*!f&vr2C!_h`A;yVFUPb%E4(fBu?tmO+IsKFCwG9FlBW@rXq{fOkW$ z0)hS>`1*wh&0tXkMhk6(n|bRJ&&Bl5-O>~DmvlFyJqQfTl3WGiv!X##*x$efIeX0r zZVUj;y798z`x6l?`P-k&^0-=DpyBuM`j0ZZ)6V(2vA)n;r-m_kZ)8d22&;(Pbqhi! zEN%f|4NiJyam4^?$%LN|tr#DsKl0>!&_GM(-#}>rIyigXyWpX4? zq2IXikCIs!=}+{we#OK^INauF4k-dosNkfy`r~;BJiQN&b_%G8I8RB!B=OdlY!DmV zLdp7=I!3sC<6V2}LobOt?nW=k0_t&x6zYiG(?ltSyp!CK@Wk{*2k2z4uk>daud1U} zWLw6a7ZU+*C9btcju7?yZp>aXzu&vk3*%x#TWDJ4_88uK{1BMA);@mCuSN4$RL|~P zzoM#j>s_X<5j2~eCaM^(ku*bp zhK5*Z3l>Q+)5|O}$_pcRlYGT)x(RoJb}mz;EVJ2x89}LJ!hkuW5(%i&B5#o#BkRI3 zpD*wFTUiw+WT^eW_as;P`<(ozbi`Fb^GRyAf?5+qrbtjz2nfDL$(dKARN15|ZC4XC z&sAw7fu#u~k->P)WBLQm|A^@{cq4QX!jR95&;OQ>mtC)(R0ER9n3~b?bnck#Iq3+L z-Je};ZGm9*%IRwjXfx_Yq@pqtih{vDsP(fOT!yKm#K&Qd=|^8K<-<}ld3@^(F#xDk z1kD7B_1>t7ZUtXww!i3*$r%-d)DQ@29L9hrDd>m#3Jny6)1nuF(x#4K50qBuP+^mT z_h_0-HrP;K55@6Pdr2QK2m23lGMmzzUsT}^7<=m1KgZPCCCMkKiFB5h8L zQkAFe*&^UAH&`md6jz6h$JY-V)LCYeQl}`Jan4G08nPyeT~XoApDBL%af4J7E9FZXo@o4Qr)-~^*QW0xQy#z4*Dh0<3arb{)?3Bi{SHH@B_kh^k-)~h z1z1$e4@*^4ZNn&^=z5AZP41s;^Lh`-rlpG0-reYl68O#Uz8|RbVPYijuZWk4T*@=i z=KEho7iFaaJS=tSg-38JuSKml&CqQ(hzT56b@!3u#<9Z2rG{c(3?H!z)7eTeVR)=y zUJV<0HP;4ZC5Cw1ieDy&_JlTns`dz8OLh*EYsRpRu2|3Cz=G{%ipl%zl^|?1=&zN3 z{|WmXnBN2glT8G%oKMg{@?EQgRjWg+V;@#Gbqm+N|c%F zM3l*L*4OW%sC4-|fxKpK)oaok;Cl>|>pQLWADP6n=bC06##&f*bzy59-B(6)7tbg? zH%n%4(}CVBAfIkpPG++RL?Qgi_BX-@9L`C6VK;o?hW?x~%&*v@8T%hVYvsH4@XH-) znia-q2BER0o zQ3)|#H}Hi|9G|Uff;4g!mMFRjEE`T1>^zYvwp?g}NY^-uJc8&U;^GDK`uYunkW{m7 zww5}p+l?|GE5}5$J`U&o0l|69c_GjP{HyckQ?RV(uQKIg&1n3Bj@VbMzo!{O7whoH z4pgC7f7k0x;NK_P50p>MmGz_87_>iF;#@#w`V#GGcj>N~$)MhLIf&YCKG9WG(?)l= z1($r*W4WF$sw`_cTaomTyASUlQzr(jqP_m@z4Y@p>+=b)Xl?qh-b?=|RB$r3`&YI4 zubrhN5-X^3Vfi1qA_I~rR0?Yr)Z$WKSXq%QDU>xDrRsJq)(b|04SY+yPaO&0VZBa- z8krduQ)RQ?{#sT_Csjv1ZkS7s_ngYQ%e>0E+u(k=tKRZ~w1ePx(nnr_619^VC)Z}M z>%irt5ovx^_8Kz)7`>&Y;MQp`05@CciIzjs>$*tG*KS|N7{(bEjeMmZ-SLBb^4r%I{N==4sb2y;2&vn7uR;As4vLY|kA{rqr0mdU* z)U$Kxlm`>LbtA%;yr$C~mht1r{I6dTc~c!LnP9;T&B4$4XqbhhEU_XlMn&@wE?z~1 zD3W9;6Z}uogeA;5+PTAF&UAjS7m8MU7~VYE46J2%K2aE`&P@iZ*jM_W&QVb-)BZkz z9Rw6wb-S>MM`wTCAE9G2FUa(7ER9?FnPri_MK>LMI}q1L1|Pr1@5FMR5M9Pi)}%#Z3gZb24k0*ooXI8a~^KHbJ}1^q?>z_GO}7#pNPSY2oJQe9^6l zoLsC{DPTl1*$P=QSw0)-3x2d8N*si&p5S=1Up_}szSTChGMw_+<($DL<942j-d9~* z@g0=LdR1K(xCS;NmHG(qa-tu$*eQMOelk2Pb_7@Pr5h;(V4eUWT_r^3#PAn+Vf}5~ zo!3f+H(9_|ggeP$Z3?+~UC3wA5}YMUMxp?H(mD`EPX`?#N+@B7iLGeRQutzt^Vn6T zo<*$dpf%@Gawk;#h zAPX^R6EkB&)DP-jBta|y)cXSkq5!~l4~-GbvbV1eSzf{Z7CO31xa6zcjEK!tGbw*I zdj{5)plQ7py?+C7fmgy1&tP1BXWfnH3da~(M_qA8op}=cwW=H(yseNeZ=Zw%zLK8U znLa$j26sTk!rgb)%|Bj^_Do*yhh{_qlRsfvuVV zVm05ZKi54wvgm8@$SU-7Zc8M&aD?n+#|w%k|MS5<7t>H+Xz|4X)Ods;{$-J=-B<+2OyzZG6-aN3&Q=f1$&<`xf55Ii0TfA;?3Rq(1 z*;+q;&TyriwQUmd73+NXyOzwTF1s4yzCq8`7Y;i9#J{-k4wkni#Mk6lhUwT1AgB}) zGu_X9%84gvMCw6kBy)X>6YAU_`y_t}FP{HQ8^~yf3{BrgL8bJ9Mhc0F{`tjh*tWv-Zo01#sPFV%_Z!%{US_&_dCaoe z@A-IB>NZf?7|w9ardPZ#n^T-m>yB61zVDBaKP}A$YXhCxaIM%@)}stTo|e5hg5D@< zU&IH7{?OL1?0#C;ujt=}g+tntTvN(X@vKJeFn?S!UVe`uxIK16k5Ri*8^8pe$urix zOzRdbI&V08v3T0P{X-(Q|jYGIMxEV{V2h0F5U4)D@FP&)T=18uKuGr0OcAt3PCv9vOJ zSkD@G3@Pkb?j3r>0;8X5wSFf{?2p|png8MkL*2Zskmm-E8P-#Ak43#8Hax{8RIv}X zc-Bm!o=jRE$ngG!HJNKmY#A{^@uQK$W0))CEGaGxbHfhD~5FLt(Inm=T z1pwJAci3^jP^%DG`wRA9&ce9Vkw+++l2N{x{EPWJcC20OQ7Li1pqro4R4^w=?ym{O zOotTGR~`kq)5N3};bB*q#k1FIJTYQX)fgni9rE$ReJiR!f(Birv7nQ;b<7)x%sZJh zOtX;RphUOFw6;$$T_j8fn`1w3bFt>S5MmXkT2AyE{C*gq`N-|>uGOg=yZN5$5Bee) z_gY06F?k?djdaYd5$Qj52tg$IitQ>87E|Uj^OD4ydMf+z9Ujm1{bAM(M-)}mO7iMK z{8gZn{1$<{yADh9ymS>+5d*)N-PsqT{lgpMJz{U~;Ra)iXyH>`+BF82rlbax(CwA` ze^~ z2xCQ~OrbH~Y-FI`XHDzcP+_LdYQNNv)7N_D8#-&(Ftyc2h21K^Mj%#-D~=w$p{k+D zg9aD0#|vS}4eUM@(qo4|41N!&Er(#?n2R=;8Ik=Od++wG)U>KnkPguu#r$K*{EbQq z=*{PFTuOpxopsGD3(K-6UnYTu_$0!m_!Sihf`@#n-RbU8fpliU}vlMk|Y(X+5<(M|a<;gUnmy>8yg}&y5WOyT@HMlD0TGGJ{_E z%&JXzS>Y5W8ZEADHb;G$>QvWUlLKZt=8j{@4*T^^o;z^#x|Y2stfbFu<1! z;x~rqG!MYY)uX5FF!zS*D(ri}DOHC*^*xnZV-ai#u^JE~drLJVhDHhcy45r3yQ-`3 zoY%F>jwSkp8u^m@ZQOtRNUan6D^5>*||@YwvqZIlmtfQq3)69yz&8E1e%#JpT`8?-(5E+kK5@V%xTD+qN~a zZQFJx_Qamp_QXy)P9`=dIsJS7IPa-C&-3B^deyzEy1K6Jz3;WxUaO#l3s`FSf_VH0 zhDiw{nd7KT@?&&R?`5FHUf83|YocUgbujMbr|*d+8!%0n$l7a|S2*m(r^+K35O^To zJZddCnlwt*TYkVoYF_-ftfM_mRJx{vHp`1CBknd`t@${US+_}xb4e!~;!Chre~yn} zxc)Tm7ig+PS$D>bth_tBZM-a3gkL57`Gb}R;od5{@a0#<#iurv#JVOk<~8}nTbQ}X zcCWK!Fz)WG7toiD<7bMB)3pT#5~g6w7RM^bG+A|%b(X#-zu-0ulNP}}cRC8)z5e%h z>yC?!)*<(<@7Z;iOX%{$yOMYKZ!4*Zy$1Rm)r#>AP+t%Gx;2=-(^!|OKFcdKE!s%BSaxX*TBDwlRW?hAYTF6x&iY-S;&VX#q9mYYI#;okAWN}s;yPh*)p4Fma!8`UvEL^r?adbeqS>2ZT4 zGdOcKV7@ONvbwRt!Y-kx6INK$CB<`V-@50DUB7xEAv7czPd3(?9^h__;@K|zd>u55Mzv|YQQheG*(0t8e6M-wx%?s3B`F};s4Yi-96iE2 z{MP$DguOzg(RLp>GxPblj4zmbib#$BdMIg^;YNB7@zS7IK!nJ*-*_K>65=huybsB= zh2&SrO5p*auMb@0dsG8P{LlJE*-~RD)MU5^Pr9%o7kicVMbTH-1>YcNpi*|2qc$6_ z8>eW+N~spO;5NCsAu03~lo2J)gnWwGCAW}8#kn5RI>Nroa@LcG)Q#L&SU)kVta+Ic zugtlj=FuegL?ZZL9%w@Mkv`1h2pDG?%mSKUU*VbsX%i1n(YRXvHZ1s_q?Du-HCMZ8 zZ#3EgdDhp;hr93oaEQfnIR&L9+`QjX(u)cLGefZD% zzGt{P1>X>1cg7qBaRoU2g@>=52tT@46Ere^+Bv6$;v2Vt;&}}mrz!q~%QgoA=Vp~U z?2a@76s6o95m2EJ;C|r!L!Zmmk~;4LtBl8g)M1hTyDrt`yOX%1qs#vm8kPU`E=Se3 znUoTvu`fbY;5Np9aRwm~kr9{Jz_*($s%UNghd-~5HwZxemlEp}BmhXC2W`L^T+UAC zRmlxkd{)3XD-gvY>h_vRD;9(Du+6_f6}VK z97;z5^J=BBC^5jS2Sn{&CTweGO2`5xqe}|PWarE|*U?_p6AkRz+fVicIR#prM#O>= zBB9nyv>R!P_Sea`R#lP}p;Ui5?_%5YyV+|a5kzpjDZiYE?ExiN7$t*&bC8?xI}RBz z%_T2>jK}bwJeSlwsMfO$J~$8L$gHxFDJR^ zm*ByW#&}#bcAHxJ*PjreSuw+?OKqeHnYs6~?j^ndq^;|D(3* z46I}WhH!bpupnD(3|@Hm&3f;g`0u#xe7ru__kp#?VWCVLbHWmE4Id5zzh(=d>kOJJ zU5NML$QI^(cvd)cgmP3<+s}PP^hhTy{p;{sbL?mH4`E@#h+FC7zLf0x5&pEZG1}f_ zYq61(nBtfePzJ5atk%jVmHHfah$5D16P^OvQ^owgYGP*dOnC?aSIv=JBO^Ul+t^Xn zY_=X(k9q1{4x5a)zY{^tCMc#>vvmxX87o>^3{=e)+?08f*&{zxW;Q(R(*h=P;ja9& z%+pfToJiMkU8fRpFzQWx>!_hAT~irlC!FAmuwT>(g$IEKiqe>rllS?l;(KWHf8e(DP;}jH^xj z4bfjv()aQYylF7S%EfKOz^6#A7-b_<vwx;XZ8=N%?3pqk-7l;ihWrp4emu`4qd_CItH}N>?+O8esa%f zsYZr~2(Cn~vASCA9-QKKu7M3!Dp2d4zJ>o~>{h}vhr;as?AVT{OQl6JvZ-M4jJ>yxr_otQ!?^~=N9rY|6r0Tc&3LuN0asmI>4*H5{N zuGg1yySqx?mKt?O?d3C#0gBPZIHO&>S1i*_(~Vn}-ut(NJBUJ-t{taL z=@fl5sqo-Kmi~k_3N`FBaF*7CQzHHXkE#D)jtY5b6|U3WMEkvRz}S;(2bpYRE=7>; z)r7V%sm}If-cFSo^m=Ww9^X8y6(3Y|NFmEWG>InjsCXE8%N*siNqaeFK%hau0hV~P z){h~N>lH!)Hq`)8-Z6}5zSOMOnDhEqvT(32mE73`KvS`-li$d1={?XCLP1-GuwjYU zl4w?C)&BdKrKU5e5krDj2kFS^X9Vc+3)|&v(VbfGq{Pve2O&Y8|J5lh73*~SiCwG5 z?{4mUioCn4g#PI-*9Y!1$YgjaPvOjB`<7=tv-gDaWFA|)SIzglHkqqmp6eW|)|}Hk zZ!(OFN@UZpM08TrgToqkG{r{aD&S_j#EOAwea8E2LLK$LTb`t>9Hq30rxR7E=;Iot ze7V9WOJ_0Ruq z9HZ`H{y)ATn)d%#$OSNZ>qJ!>tE&qaajck&?8DKnFP7dPJ`j3N?07PhY2~a zGF>5fCs%{xWOX&B+<-X-V?*ZHhN8q}w}HWMYUbzt7HM3t{*0j_*6KeMxd&L0aWobn zHrXp6AX@=yJJYK(DdwEzJoyVZn4poo*)aO2&?s9>nl@$2ZV^YhDy#-C((6qS5rP(y z8df@OZYS<}HmEw2=6d~nO{7@2{Rv9oCc2yl#c2p*#A$K;dwDAQ&BIM+heBzBh4CJY zg7eVYRfitiO*1K`%T=IKZG68n%Q=6oBiR->WbHw_@wIlF>MffG|3x<$@%mm$C+W^} zdFj$oCR;1Jjk}RA;`LIAm?*@4z{_FFi*HucE(+s%)?6=Zk*DTJtzG2a`^zD7nkTkn zb%=y=O>Uqn26ndU1>aH|U(Fe>iVq%d|*OsiUvl7*Q4SBZjwE>w9Pr0mgZj@@>e7 z9A>?C_b48Q5I`z8bnlJr95^uA0OotEj3})YdM7sAHOE-%Yu;kiRgMFASt`|BUtZ(- z$16I;E>6Ldc@+?LCha4rSdCoo&L4edJf@p=1%mzgkdq_w^x8%0iCrh-#ic;ze+637 zs*X)C-*2!HEU^;p)hxV#;4JHRBDt0439s%Ou=+9QFd^3;V_ji5EU*gYQ+Adw!4mWCiFp4MvEc&t}-hFh1kB;Y-E>M+3NE^VwY&)V=TpC$E_`dRw= zNsgT}zpTOyJdkA3k)$7Euibz#BpT{CeF^aF# zWH0JSQk=+vvMstE3Oykx-iRe2-6{Pyzg65sVGR2_%W?a#J}KVQ#Usn(Ev1QGzf1@? zV$uZ_AQb&H2~Kdo;}y_@n%kP1w}PPg)wfdmvg zPwXe~0ULtva}ma8#>ovQ9n5(akaK!YN|x(9HaeyZCl+`hz1FuA0RCujP@nmrB=?0~=E{DN z3(Y+SI@@ga7?^w34;HV14Abef*gCiHZR*z`nWoWm;6KG#Z_csi16Z8R{;!PN)LpEd zJpW&hCH4OjV&m2K;8_k(!m!jDK=0zIIa#X_yQ4~rf`q~(fg|%1+h3%28Fy#&lwZRA zF*+sd3(6F1@sBFgta_VH6wO`lVaYJXg3;^swYflut1innzwU!|rJ3O+DZD%U`sH+szA0Ng7W%x{Ymts-h6#phK-VJLi3cSqQ+H&hY>9r0jo{YdT zQFpt6W{NxxdQ91V9=2|g9$ctO6Mig^1GSs&2D%6a8dOfFy35Raty;9f&oM7H)F+jY z)t8X|irWFSg;{DaQG4ETPB!-&&mQ?*=|MEM92SmC?D8m`yVX$aS-q;ycxkM*bN;ej zI4^o4;Q1C0t|#egKl$QyN$yzpm!MO+Y+UmwFrns?**jCug|xOT0I%`Cf;U^*J`}6> zcWz1tpq|3?kxPU5Felq>_n0}&CMH~_2L-m;Za{J{dq=r&UB0wZBBqTIstM{1-StE{ zP4_@yF@H7K?}00-&e`ok^bhJEsw=oxr`+@Ny;dSNC=uP)$-HxY7*{Xay)mdh|LBiB zH{BouaM(F!TnRDS*V%IG6QT|%5;jH>jt^sVa7Bqb)p6TO`p&IfIw7JdHUs%-xECU&uWwhWF z$tZOjPNvXUesreI{rwd?EY-?Jk2~#vYKM|Ps`GXsc$A%g2S0n0mO7NiX^ULuI+T7+ zmW~xcJC~>&piHwWMbjq_wBT$LK9YFDl%f`DQ{pjVO~2c`u`zGyWd00&9Sb_N6&s6j zY#kI*OP~7+y`?fBmtkv!i-o}V0&~3s=nYe;C6h5Ei1{WM$Ri%>UQcll9m&>@7bHz; zDC-`O=iq|p_yfF%UPwy>p{8d+cm;NExrjyszy2lNg9J8^2Ec|#>_198|6RPp|NK~` z9UX1|r=t!}*>*q`0h$tm(ZjXt>I%iQ>e{tId~7UwXYdI*l1HSn|Ch4 z%e_PP#;n?y#Ig8;5KVeT{OFJWagpm9(0pQgocsEE{tgjj&(8?J%(x#fNuxUdHG+ZV zNnfMuyc*-nxT3#hx%M#Rnk_!$AMnSP?Z!8CUYasM>CEb|?^n|R*+3HShUs`uTw0v@ zT?~mqEdjHchkHQ)V~ZL6Mrvw4v%!v9OY_nKiWbzC^i&`xTv2|OG<#|INL_Np$wE~5 zN(t52N1R%|4?c}R#;vgtx!AU6}N zpVj#J(IK$&r{6JBKbdP5XF{fOAgK6J+-NbTSD)K(x_h`WEwpZLwc~JNnm_V(8lzAn z?!Fd&S03w^3&0=yWCFYEh*c`M$@CW^TmFQM z)v+Rr!p-6o)xt81%&p=D2B*psY|2S_5K>`U1VZUH?!ol}fN+K$qt4{3gAq%v*0P}e zLwA)1H|>aWg0&X(^+={9>-}H4V7FxV_gx@|b^ISWtbgaE_kUiR|KYKKi3tDjSfDw> z8lvjL@)#VySTu{(?J-oYC^$kWyu_**CqUsyawuc1n5>ur3yI$0a?jj&(~y`Kfzb#Z zLRE_=-8vcAA{CcrE*`thz@C|>ZM*OD^AZW<lw`z@a^}UED4smcltIK-p=zLYI5ba^FNb*&~BDtblJu8%$hLS zqgiA0`)d|gWUTy7lSZP|*l|;+g5T23);F@1kp^uCAIrMgd% z7w>@xU`|t6R2gHQsA@1U%wB`0wPwmfR8Oko`V9FpPX|0)5%$eqEEl4&!PP)6?R5Kqnihu5A><0{h^r3cpg4p1bK4ezuJ*I$V`~qn z5zN8+1v4S|g%g4q#cE^R>JOXeaxq7#AQ(7S7e+k2r64eFhIdO~4q>z0fbKSo8#Gs~ z8$k9-^ilVj${KK(egh){bW{JOL4y^;o&DV0aP9SU$!@vB&{7z^ZKJ>t8hf&@;2;O% zxN2WNQk|el&ECaBc(-l%C2h6F$C2IZO(no{XJu!y-x(2_O)$N7lrWrtWY+5DAi{yi zNbIRsZ;W4(zjdbRE75#p{~B*V?Y_T=2Jr)YOOlj%jX zw~;5|gH_z?NL?-e@Qf7K3kp2-{5R+P4c#@~4WoIM77iVO?`?jknujz1y*?!Qfw^u$ z)h;JBl51W&5m^MS1Wr_Mc~UH?YtgF!JH&l-NVX(dNLYz5!JbqZ$s{?Bl02+WSdRkM2`!qlFQTRk%wZ)2bpQ6>7 zaR}+=|0s1DoC(eTc>%^%JvL@jwYsl$4N7Me-e|=Dz5zkmWZ8PnoNV$I+iP|ai2&Z_ z{i`vl&^IZZE6YAi!q&8IbJ^x@Syehd+r_)4 zUQZ`RoopTOKy`>G3(a?Gp7gaJ_=Xs<%mog}^?iAYU)!4qeMhtd7`McS_-$}45w|); z6h|5s(`@K0Pbo{7>ct>*s}Z%SqqX(naR3s$S#!2v{F|+nS{ct7V|Ffl`3sqS#Vx1Q835V54;?DcncAg3SWZL|DEul%Qq_bQ!o1)a$?x5vw~V zE@J9rXkRt+8+(u6MVaG3(2B}&yvcDq)s7eKKEQvHY-< zSxXMOkXcOBO5mEu-WYx;I(lqBR%h(f6XbEt_IUE1uYt+>2+TkaQ&?^5e&Ih2QceHU zyn*J@+&RREsnrpKiqyvq`S(pW_l0R8GJw3XxmIEE5x4A|(n?1V@`@ysC6|JT>Mfl7 zF$igw82_(wFY#^m?x9wc$s^ft1xq=M8dw_iBG@#tELa*08<;wDYte<;wAdN#z4E8E z1<$ck(izSeL}}6p{PFn786rap({~KKLkYVf^7=gryE{t6-xP^AxQ^qy`vg0wR8GL$ zodm3|;QLY-8=0z^9(u-<*ev26MTMen6c?-Pe_g-tRA~_`z?Pxm|B7Jy=lcCuyO6H6 z>56uO@l{KqlSx0k6>lFSEs=a=f(2`>i-)?oX1p&K6GuR-(3G*-)X-fmP1oN+odjpU zK`xB?BdHXo=Z8%8uiH{gdtL>ix1}?^-O02wwTdC3-;s)JfAh9m$&J7ccy_ONb~`?M zn@>`|?q09IppCKWAaAJ?!jT7Vi4_4XI=y652TlAagQ>qmv_nx;WX4%>LlRilr6bx| z80BQwQk&#ok})UDkT<`FoerUMl1-^Knf)Dq{T|+c^9rIkao_SYFPV$6H4C-10?bRY zSb%QYH30p?%P@Gu6x-()TkVmHkD`dx&x*eD=+9uX&`5M@0a#7#uEFK42nzTy_>e(Dq0Ow4AK(-~l1%NE#^TzsB&~bBf{JQwa4mD0wvy7OdX~XR zCWNzEtH~QvkrH8X)Z7_j5X-UQGh^3ePA72-dXUpY)?aGeyIhB z=0v2q@%T~l;O6K!`TPAomCVOO*%TIb<>?0ugFvad+F+MxJx9KYg?qXPC5K#vYNvS= zBX&R5%N_uv9Y* z)?r55Na_!!!stTk^HeB3ck9(&;8JFBORbOfQ6G zXX6@wQ%F}UTQsAi0Dm%HfVFU!lf$_@YsuSR$jBuN4zrFTRog^1ASJ1KaqT=}pLmk~ zaGR8kd$!Joj!oc}kh&m?QO8$VhS|{xVB`D2S_iwd#Jf>& zsWMG)EYe^!#}TbNr#jPpI5&AjkO05#cV(zL^Je=Rb_K?62uy7Xb}@TzCPG=$%oDnl z2uxaO_;E^;JW7OJ5gUSm#%U!ocyz}n_|q7M5=ad2NLqWA;1?!XRW_F6wVyyPk!q&* zL|g!q-1lzN1*#|#X?cIkD5bP{p(X|%sJTRs@k`V=#Q2Bw(_axhUD%p@HvjAh5e~h+ zp!nXyckd zvlO9m=7p&VROR;ALn8C#9m}ws#IR1-gBpUIb3#$|5@b_b#ggr|-@(kDaD`jf@9q47 z&T^d^$Io$($iNMIFmM@PyQpB11?n^OGg2A#FZoW4oDoQ)0Z)v8YxeH^^TBtxPw(zF zK;GCYI4nnS)3Bt?0Y**qdemKQ_koT_h24SPip5UCbLWXqCCiU>R8<{3mNN>{#69K( zKf0SH-^jKN`1wz|>QAhQ8^>QR9o`O^PJQu&x-$1Sq#i7JL8~jB9UzNJn8q6-K4HM& z5vX;FTe>>2KYp`_fNwMbTRfNj?6nKiX71{d;ut=+fyWk2Kx*hpxix$ygrMH9^Y6ro@cAQZUddbD+FtP~ZELcQ2k?UZ=m7~8&hfZ?qpn#L;C(|nAK#b& z*It#NFF6zd$BdwBx^Ir{{kys#e$L-+@=D3b;~yYt#NKGma`98ZPQG9fb2AB^`WSt8 zz6&u;4}A)Sd#^@}3?Vk{p+1?%_m~HlI6trT$zB*)z8f0D84fbj@hX~)IpNS0 z=UCDe40L(r_u6blFy|B>rMHK91zChpw{Af2KyCT|S(;pMMsfN99 zOmFDZ7|id3-Nxx&Jm%S0ad=mt8L-h~S97NDmeoQHB4?2m4v9f$@j}GWMF;ABE9+Kv_Y5j^UD_a7CVT_f;ftZgw;w%4uvl z32#}D=^6ke0dh}(c}qgOATQAG-|0;yL_n+QSJ3132xFOa4!ti0W9z+im2W`K>0$Y| z0r8Qny&1RhA<&x?h4)r$VU9Ycu~eJAuV-pe5p>(}Am2S7MO+>>4LhvfO5gHv5X! zS|2xrM{ot!ocz3Xhx#g;B4@7gO>V+&O|xeu<(6#b@lB-JtWHP&uQXGdtsUI~6-J_y zfdr~hbC&sSeoRh#jR{J@%>!&~94wdw4h4pJ7A;{(@je^94ENU+nOxRgK8vTZ#*~Gc z1ZJBCf3U=(LZw^1!;PKN$e4B#vZ9Vd=RmK6%I2q*A+@i7i#LCd*Rd&Jw zh!j}=4pP=x;-ffx0aAlfCN>L*14Qd42j;xf{u2sulzyE^=JjP%a6*GYsA1z3^8sBn zdW!8}A%R`V!ZEzi#6#|nEa5CGf%1J;3_oZE<`Zz&NVhfCeb&VZ&JY2oxTJpe2^>(W zag~MOicSkgeo_Fxtm%#nfdT#=rP4+XQw7=tqM0Kh<8N;@f9>^=Nm3;K&KO(J9G>tz zD!cL6Jog1|c;D^NvMH(txZ<0VGtR+*60AVs*BJ?@yjnVccOv)mfW_Knf0uER;f3j_ zDyg)M`4grM)d z3{!_#Up2VkHdo?S9V>_sX@SacupKNn{We8y>t5<_ixMT=Z`P!1J}2A>m#_g zUH1pqFVKIcOrRc}x{Sanllgy?@c+AMJ@Eg>?!VW5{@W)+GZQ~jrcgqVv$_=3;9esyDlVnv=elXGhDPYS8u7<(@mUnI4z;Wpj+mwO-ynNqJuN8qTPK#*#x(tApD(O#ZNJ(fIw7Y&#~?{P8E6d)Vt7 ze$p8@hmqaX2W%bR;LjR>R zhY@Qf_IR8U?H-CaF;iG64c9(5lQ;*oA3`v_!NW%Say-}C=wJYZukS<+G!M2eA_THJ7#@RQ?DlI zISM&8+=*ZPp_<^oE!f;M=R=}~uY+p3!P4fyY4GBJ( zmZls|@fI?7>oJ3thb!>Qn%ev>y|6Dl&;kO(0)Ii3=H^93%S?$Q(5+=-6a|Ox&FGw3 zD&0Y3^Z@qso$f+CtRc=1ut^b^RcQ@Z6o$)MiI(|`mPJ+ZNWDYR@bT|bhjDpZ%j9yW zAK{FiA13Z8wNoEd?AH9z4c35IcV~VoxSdAZHq!{lrG?xKd2YR8v%d@;Jx3r|GXb5h%1N%pa6*M*X!rLAp?x{D+LvR z3V{V6et^DE+;H9?-q0C?dSQ7Xc@brS2OxYvzA)VI0iOGbf`mW=K|kUBK>VQPzY%>S z0xJMn>^BPP0}TZGMEn4Ip}JuL?Dhu+DFx3#r+|4!n-qd)L8XD-2mcNF8w}C^tv|S5q<^5Fq`#>DyD*Luw-a~+GBp(Dx7c8cepO=} zCvqorCw3=zC;A5bpCFnbbio?J6i)aJxY}U&NVy=n(7E8b@VTJ5u(^=x-#C#$LWH56 zf^3N4mq1XA8I<9~gRzmJ^ohUaB9aHACqc3b6DT9qfZ+zQ1wBT%m6PN#M2k(S@oo70 z;2QbSImy?>mEpMd%Un)R$-AbqqP45G(g5}DEsA_PHD_~^cf&_9J*>%1Cy#u|*ix>V z{8)06SNC9ZcKi26p2Nm(#k>?NOII~t1GGH(e8)G{yv@!Wz3NS33AR;157)&f%Fc+z z`K_If)>>23npR6S%UBX~xH8GgN@adZLZ&oM>6viVSaB-CsDsQlE_XY9!fSbZ+a2}o zm5rT!H&0IwEZGx4LwrAFA;KEG-M5Wk*I>j#v{TSou+HFGVWb9xHN*>$Stv#jMsP+@ zMo7kQj1Y`qKEYGLbU}2%f&f~84FDIQ3*ZI#03eO2oXDKeoY;ONZGmpVZb8C>w1Iho zc!GL<^8|YaZVWwt>k4`gh6)k^hyX|c-;JSPKyM@fC;%0JT)%1mL4Rg2RS;EhMbLKt zVn17db3gM927m`p-GAS|8iW;u6`UDV59S+`8H@tJ>*osA3Q_^+^|u9IgX}`|LUqIX z5qTka5xji6fnMsaJ3PK8|0gwSq0cgg!FK{EkD;@?Y4N?Q5Wc3RwR&oyOUynl7z zakgu2KPOdS;=Tc6&WyT;N$&C{&*#i}9<3Wl7j1b$tj9Xx+kf|;~oP8`qO-@Rk z=0#{fP~V6ziAeRJmB2!jNU>&OKrS3|)xwceXioQ_Vvwdlxre zQCMiSAU_+u&koqB}z-e;-d>GqhZTVCP5<%Z)AWF4JvabF^vW*0IYn6_i- zJgrcM+w=}!cLu4NtUO$vLmkx-Y)AWjb?mkU0^7Z_i9lun+Ij$&7c3fu?|AgS#DLwD z4NOIeNVGp1>NdV~3tAvWB~ND5o_}-;#D1^Qf=`ncwcK&-kui?@O;)r{ZjZuu``|)A z`_Y5_#|V#`mxC6mO@*_yqq5VV3ubT6f?b0wHut5--2;jv+i%&` zry_h=vw$vm$xBF|tk!H@DnMPy?a%Ux(xLbd`C+WRQrld!g(t`mO2X}`=WN}msl=z; z))u~VixLn1OLAw;B+ZcQc2RUk3m;SavQ!UJA>wfM=?5R{jj$m%q43JA^K#p!S1o}y zN;HqA=H`Hrud|xmSEswSOS#qGf0Do6;JVFCJr29Yn)bHFy}va(7E%-Oy=x5PhGYeW zcUTs5dVIDMGA_e6z^;&x`+jO4 z+5C#J3Oj$T&6zZ?puYqVKhrBq$2~FqJI0}3qvHxH(6dWLPzS)T3iWaElqS zo?Q2=4@bETuDSD*0CsNy*8##vd8slqb2=YjK>gesBeWZLF!hWZEYEw%kegNKrIg*E zP(P3`r${OAT=`oaTEfbFqSbXZuUQESEALf6!Mm@&cPnf>T2_ulu+9f>kqI}N^9IV$ zk!mq3-ZwDEOFJ{b#|n92LK<|gptgu3E5db@Wulv86sfyy@-SfKas3O~Yj!c=m$wK!}l1bSgN0bG{akZVWN72t2fWAR=dMtwMy3#=*ukiA^x-oplZ|_P_k&-t7w1%R5U^DRWwEd zG%gUgEb1em)`o6~eG&MF34{4AZ1}JC)<>>37r+>e1z>gu|FwI;xzKs> zd6Im|zEHSnUgPSYvv7>CT-O7{U)0`EKDh$$*0=_9*0~1s);0mP7dd+;4UWN%W{#1L zCPG*{qdVVrr*~j>2X`PGErpN*7=5|AL;dNxQ+uFxMtTtf2;V)txZV+8G@tJG1TL`p z+Zv6acV`1o{Gi@PZtmBaf{pqEXg)-rrT|!t&x1@BefR+|?-)07>-AwqqdQWD^gbQV z>8tIzcv`;kbnVXZtL-Uxt3L694*Dk?b^D`_h6gqdTL6x_y-~$_X9g~Z2i#TX1Il`5 z0WOCpTrQ`QUE7PpQ3k^UNr$aJ91i=V_J#)*4)9*_0S;SN91eS<1cnEi4qIm&4hN$K zhNeMyp1$#$9nOiX?V)(jKJk1V&IPOOv3OnGquX2UyS7_H@lf5PJzLlhxX;c9BK3{2 zcu3yy?;W=dt6o8PVuq$kct$t4NG=Dlh6f}L{QDe)Pq<34k>M1wBcGyZaKoaFS$|L) zRq>_VTN@;zs>o1DB{Í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

>~7h50ID!ky*?nK}O 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%0D0njVWi$IQdS?uQ^V$7@JHj+Z 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

    is9pb;ukK;?EFFr&svZLB7Tz%V?^ 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%0AJgQ)P+5H#+$AV;Sw}MZ!F3bfSh3&mzFs zT9L|ps&Wllel7ULJ>>Tg}(XjhqCQPpRxwj-0&!;OtaX}AGqM0Gf>;&p^%Q;eOo|>cDs1SA zWMoqNZ49Sj_6V|;Q0I2`nmWOFj0ff4gNp4f_fk{EtNE%KFxUlRR5a*I7aAtJ(Opep z2XV_}%c36=eg#kR*3!#ZZZ?Wm6=J&RWa{kFm8VdI@9L9PhUHu*0f&`d4aJm$HGdtr zsxo3*C&F}Q(CdhEiPEiP)2NSW+lg6-FI*p+QGknLsXAgDq2-K#bB@6*3hDDaVOZI# zq4D*Kg2&g@Y%>d}T_Fo-FhwYUD_%tgpJ5#wgaL~_cAidJJA3>dtoO1takm<>qG1#Y z)5TtFcc3Iw(s3V_spFnk4G|xlrVU>t?${&`(s9p!!2H23TNtuc&>h3PJMbAoFKY7c z=``0M;PY*Ie^T2zc@JU@v6#w@AKulhjnyNRUvJIC!_Cj=WKYe?lb+hl%NES!=0

    NZ0SfK7_u=>l@r{NMrX9L04szC_HFrpJZ() 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�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 l43#m+ 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 z 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

    Fb{an!*8}`8bX0SOD97n<* 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 z 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 y@f*S-4JD}PAC-p0KaDoSV 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%0D!;vc6_)#>kLaJztpgKMW6?JyKQ9(;Pi(cj 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 JM-RdbyXqcvG! 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 z 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

    v3hj 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Ðz}?N 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 z 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

    `2QLE?$r85_1GGl*nas*~1DiK}4CCI{~w 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

    feOGkR?W3M4E-W%Gk9#TiCsY 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�T9=<`9f7 zlk-+w{Ar@iW;q!AVlg%ZiYE#43B{@hO4J$&S(8Vxk!U;1VKPZtUG%%DCAahnNKqWr<>V4JQxr@u5Iwv$+YOn{;mBm!ssm143OOW>=^tR> z?B%|pDfLHi5vrmi@uA01O7nBLV8*W^zfud%)>_t!jva{&Tlvw<>}^K(iZzo+0@~o} z?nWUvTttc{Ys}|JFpebioLsz=u&b@XSO%b>`C#azh?>jlOrqHq6Lmz?)B06h!s_aqxqwT0t7wRzd7>NlZu1Ak{Z=jG zw7b?5d%CqQrjFy>#+a9j2QWS`GOah{?s!H!N2(a`gGytdpc?nDS?#25 zS9NtQJkx3eW6*Az4h`s(1~VAgvJqN(4m4{9y+ZS#j<~bk!ti;lvypkL#kHz*k=KM- zN=6H@rlg~J#=k_PR64PAqI1_u_vW^2kIWRfrX?pzLyJ|N&grmN%~tNYayfr35QXlA z$5^lilhDyC2Fk{dYSJFdbg(g=?OO1nn}OOU(+f65f!N~(S)Ij8JI`!GZF8f!4^xkq z(Ap_JbBZ@Ay7iGKJ?9t|?%LUU_HJ3A76 z(%`^2k!M`lkUs|g@JHd+fAT9h2)V3k60fIedcX8)%w@Y1WD8A3;R7BNygYacf#U8O z8xjr1)KhB--axv3*8_>6#0^UK0cj9Xh=lbEH*ty<>MPcP7;AI~7!TAGOrjwV&F&C8 z%*l7Z5yGJx&f}K)U1YC-Z@iJiv?8nrW>xPHW;?X>Mv(Z^mF*s8`+alBQJqDOO|lcN z*bRR>$-trChha6gn&ci9uII4#!DRoVRa00fflHFR7jQibV4c7lXqgYD#w3w7EHrLT@E8$+QD!-cBlc zYowfL(}ohZJ&FHRmID+fd8(}i<}ZKCl(hECogV>)9%sQ`PDMVF*V$e3nucysdI6Fz z9Ad*ytiBe3arMMEbQ{4y@!#!e^1GF(Y(=^pI9W^G(G5yJtTx}~MjWC9?q7#EH7|b; z6cXkXWi5(ZgQStXrUuRb@TGev+O^(yz!!Mmcf`GU=Z)d@35L&pSk*l`rex@bTB0|Q zv)#0C5~=tk`a;aQD>_*5J5#zQ)lczer=&T(uOY9F7iWxyLI4nlx+ z6)R*2>N+w=pi7uktPkE)lj{eDd_VN*w%sP4%R>N=$8_U&NRIS&%m#g^^97n9@KJpr za^E%pe8fgdJmuU8Fy9raUOS^z9fd|xJZ0STHEvb~}n`fjV==0}@({u=nDzO?JW@QMGEcz~#O{80q>RvHi#j|||xbNG}T32@Tu@T)*l zBLR%@rj{x340IN^a^OYdbeDkDGN7?cZ4?qjVIhlXFacJ~GefDLHXrl4I5FVCdYdqz zTD>l6n@hn)*xZL>p-M7VKL+s)`Z}j?acaW}V3_n-e?#^n4*{$)4Sub$^;}HF!!r*7 z7A;Gd!7Wq^>3>U_lnHCG5a6iiTT`U$agqp#j98+5N?0)UjOh+Z(qaw4xk?Nbk7FN* zw0K!uBRN5p$4QCaz7gQutOX~npCf)=AlAy`K?6~5$xI=}oWtC%n%!u#}Ab6|7*BQ{w) z&n5QainBc$iL9U0kMiIqQH+l#yl4wCHTCzB*A1hHdXmHyix?WMlpX2bW!Gt3thftX zzdB+Nj3+12L5l`*u;^GQVjk%>%V;Iz914N8r#d}ua48MJ&%?wMlhCr(t~$1&-tTRt zLMl%k9SXd7IrJiW41Mr`?ZVL}ex#fnmwU-($X_8H@Gdm2g?nMiK4sp^ZW$RdD8S#L z%n8~Q?_e&r37W+G+oCBm-Rt~w|6_1~Z9T}Ti!=7G4$9(>M@XfeL<{xGe35Lj0u6&S z`nXk+MzGJCv^*VBONm6cnw%Rk%fD4F>irw$R<+lq^3|;cwoeD^k(OuhLt6kH#>(rJOGgvgOSHr*&OK5n1 z>I-*iR4#&xW1*HE8fz2}LG%wpi^DryLXwD(s1nKp>6BWe%5i3EF>Hpw*K>%LpyJH+ zufF`u8(?T7YZM+C7OwL=uT;MU$UZrBW>My(Bkv$YP!Yy8R}L zgE1{|nADw&1b$r?*JYy_HVBJm%a*f;-)zt?p=L|FV%q&aDyzIn!cwx#mY|%Uz>zP< z20X^nzpOd3iI!xs$rh=yWy_b-xMoYZRA`CfZm`o3mx~a@9jjDInAvhUE!&pR#n<=fGQWI^(sqJ6REjggA7_=fcdZ&VBSk<6z(J5h9D|cFSjSnY;-V9EytSo|_ zhFP{*60$+pDWCV=5aRN~lTfZuE}^hKMiFRnk5yn&haJ$~{8@26BRq1GweGS=ILiN; zp`_thWx6JbIXqLu66o}pii5iXg^7;vz*K>xgozVw1{EwW5xggjqt*7dC`aBuq?aAJ z0kfNG+3!NdXT(Y1(^J;!ZuN%LoVj;m_Xx!+>#todb01=(6Xhv3((MoqT5O>l1O+Y# zf89#4-?>Mg1yUHTk9mRd`l2^*ZdYPzP{l=nxO&OKR*bxae%qLKq;d>G9xG7iL*obM zw=fMf`gRPBYm+HyHOeSrL%qCFz)4M|H6^Zx;z)1KPvBR zgc4;WJM*xUbSZYj5YAg(Qi^a!k(%#NR;>2lme{DXBE+)D2~kz1o$Edoy|Eaa`_z_6X0p|4$+g z?jO3YlLsL~G45^?{Gz8lss4D2w3n4N`F61-^F|Y4Q!Vj!nrRrIp_!(OH)L-awt1B=XpzUMyaL4N-e+zOk!(%491ici9n1!|$j) z$4(=I2Sr2g_qoP-cS0t9oxtsVL9YUcKr0y*@E5pEeO@dJT006C7p4TfhWB2fnvA!c zDSvGE`K2B@Si2Ihvo^!vW&!r5?!(Wk>t6fO{oo`=yc00>E`gVi-A}_z%jN_4XE8f zuub%oiEAX&!NWLb7-a5~{r2IlueC1geP8K-p*irizkiBv+C3$2IiHP0WDzM=W~cvN zNC;doSK@+ug>mSS-J0UgoQ3BU^-w>vwBxFpaZelMlif~yHb*@b_*ai8Kh89oZo)z` z3`6J{pQ&5A#9tg4ax)H#(_!wZLcjH_;EbbffF3s0Ofzbm+LE&#m_lKei)nGz=`+qfj8N0%l><&_L?hC#y@U-#I*IXSj{KNTms8_Wtk;zN#%!>^5F=h z>-VgjyFmn5+RH@`@0Yo#vJtZ1I@pOzo`!uLYv2i$mPOEBD$96W=G2k4F+2(Nq11od z--Y?W1y-BpG5!y@bMjEhRgVa(b65ch+wJ6ysgNwr=;>TDb^ln@Gm^I)63w9G9hPjc zcl+C;r~)xYmy0)Djb}^l8g4Mnvi+cV;p%c^flaNd)V>u{-D+(Zaw(3LpB_&P`-GLl zf$K%vm+sd3&`gcWNd!IqYbDC20N)M708~<9+28a^(BCV_nLO7FJlpd_qYfsC<#g{J!2I{57;0T6Co8<(DRF}`KFs+S^2^QCEYypSN6cI z2V+{W8B?M(Pf2=YGWOZK;OZCAJwxh7a$Nbhi$Ogj><7DDk#3qL9OmtM`a)J;cKv8a z84q6laN}P2`uf>t4n>~C^(N=UGsoXv%or@*T;cnI>zkgBT$%euvCb;W@?Lq$wIDQ9 zA^RqD%=ej)`=+x}MtJ_&w!7U*TJ`O>{NZ>t7qT6}q7xGf@VWVEc&Zh_^4=4-N z)oK^A@OY!*Jg_Ie&fB~NVh;qJ;d|{!_RHOoik3BLEH$E>fCSOKs>GqmV^sFoulo41-0_jbyXLYkiHdkaiEl2 zgpli>wqcQg>y@g53oXZVd1uB$Sc&%!Qxl1+2UGi)=*X2`eK;a-g5tiHi;;{CnrbcEA=>Cie6LEL|QD_5Cjc~q}a zAG^&7W|h05Y}cxtNrw_b&IRPpI-1qHE~4uN(47l^H#5Z{nRiXtq$y(1kKN0{@pacv zbf2@oOy#1tC;W{&e9&WgI6tqn{+km z_hJ8Pmr@47ecd7kj!VE%cXFB{F8mRN6E$6gX`LlKCH4a=F(o9w;6LL!3;NV-@ZEzo zersfm3?R|O8q$ zfxHV*&S@gAy-K2=|L7ly{FhyUnKNsYry|@WBLn?;0@97)ITgE%LmCQdIxMlkf`4QY zQHU5<4iZqglds4##Vp#Tm{uo=wzsRy+E!-W$}gU)Yn9Tv&w0oHVpQ4C#Cu(59s^*= zxj~lU7`4@z$1>=hM+yGtAh++5XzBf{EqDHxw*3EXyZpZovZj@*rHGrk`Txe2m8$Qk zqH3ajr-#x-UDV%Jj~G|hazLNcSlUPjf7xK_YNjD=0nU2)u+UTlU8ygXH@S?2nGpNm_No)DFi$RSoE;sA^^53D3Gg{2- z<@T`9q7mFVlP4)AU`W(UvgAf5v4l{Yc%s#7bp;6^8{B3XR%HKjI3;?o?STdoj!>LnCLpG+fWma;B%J`;`_ zl=^KI5BZw&oYg+q_I>z|1kKB$cPDu~T?l#Z}VL0Y-jDlDgp_)p$275p^S zoo}|@qL}Jq4RSOrmR)=LjUAXOD^uuhbqy4*8VWvi3cG9A;r_nr42b%c?CJuP3X6zDHI;@zy(1A!WrBpHg<)u6G`Jt25FskgVSNon zYhk)2vO+6ipRQpyC5hM>J6hl~(^(7C{;s?fkGs`MWBJkcN^`XqI2PXoV3+$Ocm*?C zpUEs2t)A`@TPHf!P`5}&n>KvZv>nh6?!81(d0z)={PvLXs8L76effJDXcLQ%YX%;kGV&pH1v z9OAovDg*(;EqG$E#L?jQhBDRdg87~DGK+~Ls4m!aNOeOaW|A;~)*YeGU}S6@>*)Cg zCJOZlv3^Gr?%a$Olz7&sRUhIO^CfTg3mzJg(cWRnq$|R4INoRJ zY9-}=p~}mI7tVQtmY;#oMUkQB6-!7k$1}??7LG)>X4Bi z&B%G`4^T0;tX0Misrn)&l5VNZ?(Lc6S#QERHO`Nh9KPwp0CBwbIEX|55Nvx9Z-Bpq zfOi0Ur=Jw-*rO+3-g6n%!=lg$EW6lNPCn(o-4H&vE9sBQOn!PUzdtUu;3}KZoxve> zS9-}-_o-J~eL`sl6DfUW62)=8j6{@s{@DMDocF)QTW9{Orj3I6?}YGw2yIk!{)cQ7 z@%pcgucpmE^~3U4s6*0dpfaw~Xi#GgtcD~PJ zx*uWunq&Nuv7mu-D>D(~KKOMOVEK`|MHUDxYFL&h=RWH->*KY3lKZl?H5Tym4H-D} zI-dXw45gQvF%R@?Sd(3%d1%%Hk>R+W5Cv4lgwan{x3sISmzH6p-oY?ZKM{20wtz{)&V%tJ5@|>H)RPc}Z4iHjbve{>;N5es!3OgprZE%edJ)`hyzApL$Kj zi*&jCzgsk)cVXcN^?whr`vbC|%Y zW^%AaS)2J*WXSSXrUp{2wQ*bkFQ(&;0!it?(E4C4y5W`D>G{%s4^$W;X9C3f3!G}e zgKfCW+Wtn%hEaaO9X_I|oBng$>SQBz@kjJD6vIlo(vIG*TXT8USDr$}Z{DS4SR>}l zs=8!3nwIM5ju@8Lv=C`JF4}A4f)T174+Hbfse(w+yXI5&q_(Aa62amtSn0Gf(yRJo z(qRxwVVFjj)f7rF$@@Tb!Jm{UNWH0z{-}`TPQ%5TJDZE(u3QfjpDDm^_W8kY z4nTv-o)qGPg>yA-i^Lo;^Zftmvx#rs_zh6{NIKw6nzr#NyA+`Qah%EwP( z&#g^!Hkz_)hORc2qlx87k(BFI^j~e}ifewpRYsO)zl9`ithCcL&Yk}_p~eV_+L)Fm zi^kEF*^V+JRcJ%d!y2>tZBO`8xk>!paHDW6quZE9v$X?0a~#c8&RW=m_u0b**@Lg4 z`Mh4Bud8`%pI^?jzVBlBIly&pKPOkbC!~HJEkWni*}|{Bf_L07iL-ywh0e$E30OU- zUdrnaV%g->KJE-O?<2a|<86n1YT9vJF`dokwz#04(cKkh&mZ!SM^tkD*AIH5OCTf{ zx`DB$6Y7%>!l~o+G>^m;8q#y^h-UZFAQ^u!SJisFuOrKBiTiUI^_IxJz16cChOr0T zx)s5>AYm0;_a%*V#UcB%r1}L6U$v*N57VzoFC#>t}&lS5|?E4j)0uAU7!ua8=Di<(63zC zL1QxWP41>+GmTA29)hCi@>4S9kpvSh(Tn0^@;|u!vzTA*#l)QA)udt2thu)(Dz1u4`B+b!mM9VtIVEmH zZh!sfZVdXQ3Saxr1>8mW??wXq|I7tcvNf{*U-MvEQ`ZGg68+oUqclmPB<4sLZF9ig zR;!jQ!J!jLo1~G>Wc^-TM|=>0EY^K+RK%6Q;^N68_YU{T#d^Tki31@hSI`dDT0${`5mA^i zb|$sWQAixr3FF_Nxf>1%T@W zwrFq7b%0hE@P~x1k;-<}Np!EPWEiJj-I`4?KlJwItEga5_n{b0TE*FrCi^|H5uVX2A(4oLpw|BE1w*;HdSX1q< zeKrfD13NfxPJZp|z$2^S)Tq)ll#~A}-AR$xj4~Hpc*F&CzWCwHam!L({9qA+g_#&Xq@jCt{k%JbMxHxt=y1z~T_ z(VO?xYE88YBa}9E*@cAaRe{`a4YM7bsl`uoOm6|~fi2Ro9wuE9X_wdU!t$b>T+ZdAyDPuq%#4*cgV9Oo(1&>; z$0OJu3XSXOxbaTOjv|8DIBF(y!~0<3w{xwJvmU}pt^lIoU9@;F=Q z7sbk{%*4)#a|p>p)4d5HAYj@W|LE-_x=t3%BXWfax=%%Ni|H;_N*kEwHse`L&&y7} z=p|2prjblm(3_I&g$Xc=afDSwSXMjsthODG!k8mQm+hEC_hNKVGvar``xJBjp28^UzV0+b{V-9;sI?Frc(I-rR%E5&Q;q6#!Q8;5Q z-0`D2>^4Qs?iNPf96<8;TkfNb%H#E$@NBa=fosb1#gkHOC;yGO%Z!@cccDO#KBJ01 zeNBpLzl)EegYZ(dFSEDEI`aNAfwjGSmmfuVK*{58y>HP`b>N38IL0XViSmc#4!y^6 zpZrrNq;*6#?5)~j|9n51szJ_u^_@qMRsRAHzPxRqUpZ)LCWfcxU?4gCvRo}s->JrT zM4311i8N<@HTsU?)nF(PbvRGcVFbEfjh^*#uhy00&lMKHbkSl(b$!6j-||YH;_5BV zhI+tY>9NrzgRGIjF6;-`;K|PQU@km|WH370YnwrRWVD}uc%kPy1oEA3fGj+5HAw$( zhLU{9E}{lt_p2X%$0)~wW}#o;n;DpAo{>95<&P;UJ7IJI;ux!y*tFz97GJSB3gk)Z zZ?YL)AwA~76O+J|2sYO`e|8T-oomwHbvu&Y@L7O4o{g0`28%CIS4%C?lUvHQ6kLOd z#&8Di9GlZ`ApXuE_fDbKYrr^8frrJ)Tn=ub|1Wz}eBPD0AI$uu@DV4xUc6bN5K8Je z6UIKFfP&JD**&hAeJeRbw3Ao1sE1dQvwIM8rZ8|lGEx0~0!Q(;sUJH^VDh{{t5Nb& zN=wdCGVA~yX_U&?WHJsr8SiKnUPaI;tp_v##WU=%#&i_bUUjBIgE8m+q!Hapyq9AIFn?8=dJ9--06Q_;uT(+LGAxS641OXaaGWwVzCKF`2Z)#QO&rV2v*;dk`6VxoM) zRmQ^DpCMrG8^O-_Ekfgja9YutqTUyk4alD_5BwoXbOKqrP_y)op>fT~Ar=!_T1;m) z|41iAmUlLM&)gALrA~Gg7n{%{w;%<1!NaOOw$ zmOrWTn^&9c?@u^Yx}7ZeUTsEn(b6wFjxAnz_o?hW@HSo36P&+7ZHkKV2Byzfzs5+R z)3+r#1@nHFhRk2<2tPGgA<|s%+v;oE<7~eCg(f!77X7p{j{IbZNmHaT5sFYV80#;{ zehkzgX@tZ^bG}dk{1Wa9X+S01dN7n*@E!M4# zKi_Xx9zcXexx=aP267jtLvoOs%{a%dEqf;T9=B2PUUU^k%62!_S_|`0iYXoC$7c8i zdkYFq&w!ghCIq2t-+9%`BR{5!!kiktTcqKERvHv!HatCe6k&)EKKBqP%?KE@p zQI|tR(q-*R%)00D4E^1|d3ld}T#Yb~6 z(IDCB8RvaVj>V>g-X>f*2@Z1yqFU10I!+gBb~hEqolB~d&K$uNH3}WcyQa3my4jw# zoaHK484%Je)$2=i`4bJa_RmdIq-ygp@Hs!c98=q~)UOEOb~AU?9e72@FhXg+Pfz2{ zs_=m~6c1)NqJbx~o{1;j)U`RJ6F?3=%FrDF^CMa#=y0>>ACf!PBd4C}JH5gOf|Kfw zKpW49Zr6W2sZNmwn6HXu^z+e*YMcx%K3q%Zj?v|h*T52ErYY^SVH82|^2uL5L=#~C zBB5(Vgh7bZi1as!!g5x8qMPo|m}CfZ--lSEQi1b?=j@$jOp$c6Zp#{otaqFz?lZdU z5G?>D&DnQ%{OkiqW!lrceU( zo|efmucg~D;n&1!)XrGKF7B}WoOAM;$*oPs~l%lMWg9SUynQSo|#H z(CgW&$tkl<8tx|GxP=_rnmCo%KezScNpfo1)fw>i2=aEhB0j=j z^drx~W%y&=ArXXYX3t7T?x#K(D$$5jR_(%>^4@OA&{)a;EIJix%FB{#a}wY7H9mc% z3*>KhP5<%y+UU-);o_% z%`va7NztCUg8T2j`wAPLB*$P_`qKLqhwoIZ-b*wEO?b}WY6m|xXI$UufNgOiz7nWfrzw{AWg$99Uf+l)TjmTK`<4a?(8#?E0RB#Rr zM?>XqdbHwQR`9GkAiSusq8O}ccddAeowc+$*bc`AUtR*@D%Cx;C&e^xZ}sQm!?L7x zZ9_3pcn{6m<10gTh9)bHg^?93r4l~8sIA15wVfDVQZXdL7aezy?gDT~?vcck!Hdu; zy>hb@WLnj#Ny%fFek>f;y^SEs^7dG1u@qLe8djcVCGVlj@2#EqAj!_Ybgs|qjXJg| zSTsq2D9^qGaja@F<&3mUxR_3qU5ynycs z%I}$Snd}*_k@H#CEPlgogZjkrgm$-9C*bX6LMf?KH1 zN+`wScu$9HXQA(hGSoi)_a8~7-iTWP5=4G8XzG1#?5DzEzavtrFED2DSy1QaH%YTC zu#%kovl1VrbjjyAw?O-Fez6k~6UbAeS8g6m1O;(p#=5k6lFOVw-%_E31b40juy-6q1w`qL$gqoGhT;CrNB7T|40vV*UN?l|+KL4>OWW;y%0RmhBtP zpYNyhD4Os0g}v~CT~PXyOKAp0jYOUY{a#Zbw(syCy_>8@{vGj8?@<5w{{LsI@PB#< zb2c-zGBI*BbNR0&xem0i+VZlX1uzF7&&P zQ1H6@pJh11{{m><;`KV)N#GY3BYlHJWOp*B5ML*iM?|y%sCxH$J33sG_R^i1$=27$ ze0YryaW5Qpy;31Q9m)}(-54>ROgIKcK;9D#%)H#rU#1*m1;M*NAPHm9xQxlLPECUo zbmhXDd3OkX+B2Z!8f!O+5tR}!93T@AOpHOFQz8Cqq22f7Ot`z%BA|pi05=Lol20{H zj-Y%%LoDc5<=2~8G;I^1D3fIs1#Y-W;LyvgFfz+U4fc%(mA4*G|3) zHRy}TxEn?wkcH{x$y`9vENg09`KW*{Q7+vq7cQ8zeYU_W>J5ChEK{%G{j_jO^5J|| zn;4b00LI@FJ)3GCYRgD=4%OK?Fk}=DB~nu1-71CR<}x+pWRC*83iYhLP~-N%!&z{3 z>;mwu%USJyom;$7l1FH_Rrm3n+N)#JO^UTbYyEnHVAZTsBjPHdBba%6-JoQY$Bt! zqA?|)_v$+R($xtJmg1mhj2Z;yI~9rqDi;GH9Lq>%boY*NHds`-CJl&{UA1Ef99PuS zeVZ(AHOV5Y-aZ;CnH8ELBYquZm|hIl>0p{k0&A|FB}YL~ z*-AEk-2oVR)=_9055Frq@P6f$RR)ak{>u71E9l83SbO9e*wECfGT=n*Up7z8I7R$Z zqfe8L`W2N1E0=k{lfk>FtfX|ue~Z4*olj(hw0cEhzJ@_cG`9R17A5B zJpDA9IBBoDx-)4ktCdGQy?N82=$J?)YH;BRY_O)X0iQlz+p%Z$#{2P(JY|)+b^Ya1 zQ{mu8LLBFyL}-7Ao7xEVBCP?t`=c_oMrK6A-$QQrGKh#=FyS-qyqFzKOq%OsUQ@e> zdoUn{HE%&WC|oNC9iwfBXYISUP?{&LRL>bsaxqy}jku50f363JF5kDd~X}62u7i{06fLH5noAwKr3J zl`EUjXLtnUdR}Nz0OFnZBhX=|tTl;FtsQKjyjU zBKlp~W|b+Uls0CZ#DgpwYAX*TH-?{|D6w7OO@@L+cc0qYO5TM@ZwzPy4F8>^~ z3ch+e@ei#35<43o(eU zT#F5t;NHz06dg&w&8-tNgIS;26#CYEmx+lE;dL`(jMu7#ktrS!yDFsatSKfM%VZym z3AsxfMP6}zg1UlVHE0XR0&}Fq1Jj8m8+I(lsT{H*7%g5DMuz7YB}HLnl~+iUqUARQ zwh3Wq)dQo>_Nn_X2tB-@6f54*QYHoxU7xj%Nsqdhuu@v5fYCv9B7biMT>)t|EYrxxXd)i+L@ zKLdZR2=C(%B6i+^U9yiK{# zE$&?~e}ZF|zHKM+0r{RG(Y}a})2m2mSn`+@^HXv6(W82R_-YVJ@ry|B#^o-eI4ptf zT@CG)(n_Grk4fhjGsREM9pz``Xh9T(AS9{4c!03}X~fAiP27FB>Z1r;YCG1 z;GHTdrpp+~Iod=mtzB3tJ{XAKKxmi3e|;^8uSLO%qQy#}a0FQMCw>2zmG*_vy8UX{ zUbU291Abt6?XEAP#(3Eia{X1?hlh#%3oo-t4i`X&EG3`iE32IGYCe88FivEu%C`U% z1Y~0V}udY`IoS(cu3$Hfc z64?&yU6BkD=67l7>F$PX_}*nPe->W}Kl!V2ml~q2FK>6~k!;Zl)~vEOsb7Sa#n4 zX_IK=EYV$VVAiHg8o7F$PMt`s8;%$mq#`bd+tQHEtyTQZ>-aqfQ55pme!{3%oJqX< zGkf*Qt`%L`eRZ`=Dac|p*aEj6JI&ImN<~g{BRj@BLGD#QN`GW4C_0z8RnI+VW4NX` z9iwdUJ7&{;j1&S1r~i4fR@S2!!G<%q<<}D{{Kdj^x8b_=Y%OH|?vA8BQgXgy7EZT4 z8%MF*g;#rqvg;&j=-t!;Wg2TPgfcNwbSYo}MInSY6Jzm!bh{@B+8frwOj7-0U^%FY&2I7>C&PQ)KMvqZTYzUuW7{qRsEOtK{`-r4rYjvzAA?2 zi1<=MLgN|iqEJkx9abn$tV8D z@Zj2nOTG(&dq=c0ooi4l>-URmRK0HLK@BlLR}JR)Fn>$afvWA$kj%;zK+nRxKvP#X z@$X(PN4*^-o(8_*%Qgi8w|)X-uwz72o(u0|)I1SHd6Xm(6hnQYC?LwpmQ$RmY6#|_ z*0oQ5L2Dy!tJO>B$~FQ&3HQkCzFJf;C&q6oQo1$)ffVth5n&`m#?oAA9O`Tj{Vpx< zWcv^{=m~8>nBl=5pix( z#db3oQd(P+Z)i&q9DWCP5;X!k?;| zndYL{;{U{rChd=Cf8zj}h$DKRqHJaKe^K_1F_wnix^7ojRhMnswr1J3ZQHhO+qP}n zR+nve?b_d3IXNdMS=sydd^3~zW9A*tc<%eUI+s`x2`o%TGAs;D%HuWF)Xh7Ok|LT} zSeply=(a_S#Kn|0d|*spR$-i=h0DXk94KUIyHAZLCzIZDq)*@%+fTX7xJORr-&S5r z(RKOIDtK%LA-@qjl%nYhVa`2Kw5|7b1HV@nM3#GLL4CR*diy_j(tave5WVZ4I|e?s zEWMdiHzp6BnQz_M*LAN}`CgAVMb)Rfpkt(7i+^W>K0U*}ggeLg>2{>e{~ee(T$ecY zej`ZuCNZYDBu-+t8OOCl37I>wZFo84Ys<=zlOk1|ffoN2pb*SUL6Do^PJ64|B1&`*rW8o5I&7FaYZ{7BEw5f|q-9XCx-TUru5;QfoF0;5hH2Z7o+<&1MQ z>;f9ME!^Wn@)yRIlpuYI4ipTF92i7}B%i1Gsm;U#)`<)Ct&4gEE;I?!SA@r05 zhFGm4K{vnQsdNUv?L5Fk)q2+!+@M_>X34eQp#jqanmhEI8#XvXlRJIwckCbSKgTUC zHv6c&ghO@PN^#oYeEdu>yHd0#E)FHp_Q&jO^Z1t&n!gWkE2~k;s!@`PAov*6h}D3R zI;rTjE$Il3k*!MYLjoc&{wPK%Lq*$%leaddPmmTt=`%&I32_&nNbgD#p|x5VK}yA( zdYkpnngWI7PyQaZH!U<)`w^r+ok2`9)Qo*Gn+u6JNmS5J4^mc|Pc*-$A{nSj17p+7+?Jff!179c#T30K!Bi8&`fQJ_s5}pq6tAsj z{7Zykn!+Yui)jx(=qZ%#DO6AyrMV*sLBp3A4)t=FTzO3#m_0k@7`o1hEO=$UBnUU_ z%`q<5{FnQg`y=-0O)08kjqqCR-V4JcuSblpU!xlw&ThrH&cvnXz?7$=?R8?42%aRA zw-im=ootopikrU<^J-cIix8bnFH?0Hj4euLJ6(I5u7Z_|rWcG2^y$AK8cv6P8YD-s zFW^5Zm;Cffx%DBKqYTn^9@#WX&+O5v5I~MdKZmnYv_+(0(GS?Qpesy2@!x4ym);XW zPPQIU%2-)4e0PaEQi=@nJOqQ8^HPhXZCy1=Gd8`eN6wj9-G59$<+7-tbruOw)QT25 zK6jvNCyS=p%ux8|XMXivfgMb(EOkIGgWvr+wZxy{&F%7HK5B%sae$6K>1R$4owK6N z0|oaey|sg^&ouy-wQNtLJwogN^1nr;EwuImaE}?DBH%{yam45x-97%1&4Y7;^qwM{ zI{`>%kFJl!4%c-6KOzG56drX%W~B)*MQibQjO3ut-d4jnY1KS<2xlcH1mHBt+~)3M z15=04XE}1E(!il3H~O%#kpsS zH@9cYH13z`#rxxWU<1*1s&rklUg5Z4Q*r+>ZMZAw=(4By&<15%SQyZpqgMp?1(dPfo1D4u5j zNF`3P8@xbMY@gf*zh&}qyMjFK%f&w(Y5ujNe!o!vTa>E3IAR;TFtYOEr`m<)K;a<@ z*QJZprAx$Hyg7X#?d_DxmY`v#$}d-+Zjx*I0H2oeGhtgCFE|k`qXeo@P(wVcK+3ZS zR^G1I&_7t}`dxxk)Z;~ZWDg8;2u|ojB*i76$RVP*!P5ntfn%&MIKn4=)SNYIOuL5&ymM-D}y9ivDdk-zvM9hYPR&B7tq_Q0Oj9EGZ0+?q&G&A z9Wz6H$u5WYL_}E+yvjUU?w_c@ewMEYH{s}acsGYwIK$u!Hmj2vEbLqQ(qA?mQ1=0Q z%y3P@Z5@q-3A;iAGvxbj=@8hr=9Q`@U=ik%#dw(QGV+w`B$JqNCmV65Y|ei5D5*2& z8UGkrCWA-#2M}Um6FR}b@^XdWpF?Bmq+e%tLbn~ltlLwE>yt>6 zMzwXqTI&-eTxOB=ltA8LGhSf=zpcc|2x!3GD6D7*lHKe52unC4Ts0_&BM#!+kT~3# zs;*&+;<+eNTNn6xuu@#%VD_(=vu+9%dUB8Ne?9>-qqr&H^a*qFNh172*Y1~{YyL#m z9-W;-^@+JYI6337$p`)<^qvN5!|NUL@d=JSS#`tc)mPpDi(`i!&=@|JZ9P9-l#l2J z0zM1Ie-Car(y9?seizLB`(q7gKC*bwCQ~OZQ`*@2 zXZ9ar-O^u2@BV(q`5NpxPAT6LAyzipRm$|H8#h^$W`H5x1%3`Z`aLdHp^)xnHW+l~ zYZY!u>OJna$c?Z`r^ey_`Ag?7&c^7*{dA;lRWk$u%4~Zli zk`02sh9E0La&0a-)iM;Q82+)2$o2C@MTl^9Br=U*y$n!SPxv-l#L3?>9B*h#PsS}B zkeAHc?Gs~l8R>e<&Nyc*wPMC7vhndsQ(BQR_jX2Y)H`j__tj~B`3T4js$`-5MIZ5p zW)2))f9;`5{>2b5_t{g!*h3Tb7W#>Bge-!D=1$-UGf&D3u*5KG{6*(CWfxiCh>;g> z^?N!t37u0&c0qTI_`M}L6u+G{gHiH3M!ACEd_A>b8hKOlF7#|ld!mb)WCiO=1fEJAkU56w@C}i{5fLLU3LT#EErXZVR95001ZeJ1DacSMiI+$} zYY~Z;%E$?_)#yoZ&S=IhsF(aeDst2QBtIagHY~lCbsvxeA6qN#rZA$2n4>ZmY)Y&p zcT1gvq|rmW?;bJ|l`LVOsc&f@l{shNzB)EEl%-!{0AXv57ijcw2XNI2;X>+2j-H=k zz&#|=VuD#bYAH81fNdpf!&#)s9Q|{3IS*(pjd?Q&g2!f5C^4MP4)O9#-t9-|_ReRvF)j!wuc=>n~Ev3L*O^ZixP;4W#I;FWCmNlUmTaTmkBInPqTCgQ@kh)}c$k{D@-^5_tmzqY*v^%vc;Te8 zNRP1$>MrQ3SLu#YC-IgF1^AVvd0SZ-;Q!bWv|Hweq^kT0+naiu62ZF{OZks@%kK7D z#ifh{&MYZyJj_zq!GPkR#C?c~DZ!Q83_&-FHNq|@{7AwNs{aH5^o^J4QQJ2%@wO$R zH>|8DuvbB!vUqWC41IO{+qJ4-dLBsHz7_rR`FVpD)2V9HVtuqOr0)ZDOSC|lnYtss zie!IifYeSC^o-G34@n=8CoT6^!d)2PqT1@D?!1L>l^AZkx;QkKPlh|fG$m&6z{OHXvbzVudDQa zt1d8HSE^S-9EMkS96)xKCC3*lpJrb9!R9&P?)5R`0(1MUdLJT4oqb0;Ab(j*M_ z>9rxDS>|+c#DJ6IoQ=n*yQ~ti!-9CtH|V4-J~s1g)>KD@Sbuv8Jx{uCUV|-dg zOZyA5RprpGsPq0o{+>UT1fR z48bN-*zAYnAE{q%`G;+FKVY_b`cOj1HhfZ_f?9WA24hPj){P!Ji~lDeU@*rYSmG{5 zf(_1=jDP4*#)O+CylTgeo>E$W!Q!yRWd&s^(uAHRI^K_;I`LNt1*{$w&VUIvA0x00 zL)0EBMv+fu;oQ?6eX!0B@{m1R-0RoLEq~T1cuuHHu0R$Km&hHbf*Y`*8x}?fdCcKW z-QCZkm+ffUm!Y54Fri7do_?mm+HFWOptL^5Nb~mBS*o}J-Hsr&Q9>jkzg7V8w!{Wl zKD-E2416tVf{J~V2>*aaEWrUqq!M{a!jy)6fSaQ9VDBw_eJv5zKYr9K!b!3-;A8!+ zScQ9R@8;~04+`PgL-B?)a?J6Z(J{v8gv#Euf`2s#8%MQgO{7HPte)XwItDuLHS1y5 zzYXXPTPD@$WPUwlZJpA%BFvSg4pV%l_@HEXXD#*E+rIv%`JHT`qYnO47A5{4)g1qq zXeY9@MkV7Gi_)=P!<)pD<2Yx$*qyMce&Vhx!d`K$Im>B}fX6rtTjzHk+-CJ|y42O|sc}bW-?-2UQ4O z=GV*EyFI^;K%OV?YmpTXN}o5s7v>AtZ8|<~Umy^G_%#&xwd$4|aj5V$OOJ=H0NKn{4$c907IwXug43#fwWdOtFh7HEC1gM$D(b>MuC0EBeRVfn zmd}WZS4YEkVHS*KT3ATZ6>Kr_?o3)zXHN?A#hERJ6Wx^XL$a3vT$K#PXPS_l=4$(> zP06bwvlgR zW3J@PFxDywF*K$FUPw7NWl?b*w%*Q`el|C4T~3`t>`|JMc+`;5dgd@n_oUDH@gwD$ z3CPaa|EbY$m?=E7?|zx4L{wn@UeyBuYr>i)O-xaG{hXUHKv7CKQ&eLPUdV_hd+%l- zkkA-~D$2;zY_7)1*}zL~K%NpJLuL&wxrq&lgqU2mXpxu8~`WKFe%##tH-&Mm{bhVGLIvI%C$Nn?hp;7%PsVRoYyqKlv* zCkMa1oP1Io!6!)_Z<(dXoa}7SK}6fE$kslUA-pq0ODwe&B>iV54Shfz>89UPx~Xum zj{|8CoxvU#P0DHn70G&SqOf$Ff&vFAU`b5%b7sfZ02xi%$uN}9(CLAX=tB#ftA22^ zgZlpKj}Frv=QGt5$DCT4{ZOy|LBifRg znIF)6_VvL@cSYl+pANAi@rv~N=cc_<_>4?V%fT5a7*!r=C=?@>=Vrcw`k4Qi8Joj3 z?|6WF8SXScV-$4+7}3Qo$&hB-He$}kW`1YQ#tb-L1)7VuaL=`=2+XaeI%9z;*c4_r zJkdCSAAWg$_792nk(SYA7$LFki2(aD|J*XI_vuP~qWCJRu|?_|?%k070~&eAeN7$c z60mT6#3{&UvZP_PQwuuWu7vLpIMH?iqwU4yi3yoH8Z6*Z@{(H~i%NImdf;bxAWpmH zm(wp^+_+X%)4uGYn(D9=%vL3=&5h=URDP@>$`o_b6n}mRQI~cLZeJR}=sL-B`FRKX zW!}SNDZ$MbQXdnSvyLWiZR{{_98b!o*+WhTs?~z#tW}-i51jp-2i^ai8k?e5^tH5PI=)j@AZ`=YqV4neZzM zZF+8cZamETmjeKH`%b#Z06GHMpq9C&1x1`}zjg08N0l5|9qLM`pq8Ly{V%M?!J9mZ zUZgIj%+lIm16^*l3AnQ8Pgdr7wGyU$jdqoMJEncaCc9ZG=HA|5&z+_>Z>pCrZEg;o z9^4q!sMh=Q`;|=xHywwaiH{{sR}V|S4wwAU4|3O8N1DS8Y#uli8%z=LHgk~TL2{^C zToLzI>{0ut{}_J4_<8|dm4DKQF$?PS6;rF904BdtgoA(zv=$Y;(BzPHn|qKv8SQ}W%%q6 z)Z))({`vl!#Requ>heC}`iCd2mG0nbf7p(nUpqK-%FV)yY|_yJSx{N3?bBhuGXl~V zU4^z3DOi#gt*11s4sVC&z~J;Hxy(iZ<{)$ct^o&sm+ua_Ei;2{i31zw9j+=-kslEo18 zyix;*y(Q6C=NFcC5QDke`-i!Wsq@Y!eddcem_`M$qc*dkt*rZRq688MRavV5>`%_1 zxP~txoo6MUzqJ+So{s{a5DTsWCfc*b*9RhnKu? zxgx+DiNyz7<)KC~YC`fe23x=g+!EQ+p&DfBM1O1N>VdjF>LjYP1{cbG&Y{*b!*RxT z2>V};#EGmvu1w+yc6&%2xal}Y0BO(e>fvu=ox&wynS6$sKvN}(qzFv5J|AFekbgE13U!ya=W({(~zBIo6 zhGYLo7!<*TYi#0?IJ8IA-M56z#Lh8_7pC|Lp(n`9JvaN2LuD=cr|6KxIV<}X6zQH@ zNvGfEY$|cpApN1KXljCXrnm(hnXTH&eYErik!ikvv_S6Os{1bquDU)M`n&bi(Z!L2 zI#z@9X)|vgO39U6N9|_qS49 zaDaGqISN!8xX;)wD_|ka43l0yV=&o5lIk;sjNu;Y@wjr`WIPm3pqXKxYqgW4H@cKrUNY zH#uMV%}?xVuPQs*xoSZcoLqCpR|vjJ-U4tuopc|9$um_RYC|TE!W7!Ox__zwybaJ_ zu|VPqxl(ynDcIGWh(T;3Vu?Y?L{*cI?IBc;Kvl4$$M(r8$C{`2Ut(Sm8mln76SiR_ zuxUvRub)6niYaX#eUC}SX}eJj%>9J>)CeEW2j4*lrQ`rOux?jC7Hz$Fua$lCkW@zaT^O>K%W?4K{kg<0;VodGRTo zb*$B0sniQty*R%>1*JY^{I!ZF*5u+|E(mV#xr5@y=QcV!>{A&n9V zb{*^Kdg2;UC0BdQ)}v4ltEr+8;T`;&cXz~d2*rH}rN$Cr=aLD%2eB%BlI;uhzr(6M z6oPieKU^E@|B-9+e=I^4GB(k7wsI0O_%R^=e}L)Ls!(po%NX2=RxWIr1VMUXfS@vP zeL--1@IP_{5b!V%h{T{uS;Rf&2$pY8yd;)Wd@e0cqr8xJ!=~?&DEu~t-Smu^TPV|G6>B4Czk3vGyEo> zoDhBIeK~5Ipo7XNy@4e;xzz@%bpe>`BN!@7&2yHd;ppeQc6xMrgULXV&~|3*OXfmM z5vQQQaA|@I!KF(`t7UoscPopHQ&zdYhoY#PBFwZ6v*nb_A~>jkJrgEl01E?C$9mKX z@qxeI^nlsYsXWzKSshCqkI@j4d_y_!*wMpBr&|`E4K$blYhghcp=B=$nSqJ+1_I0m zrcAw-CA4#flZ53`9Gc}SeFxrafe>E+Ka__mdj|yqvrG{|K~z%-rHf?rT8IkMjCkTl zEG*wz>2LEu6m-<)LOA58>mZD)a`P+Lny3sFRN{V|aI+=oVMPu~RzaNk9I>rSEnFB; zaLtr{3E>6`c%&AxA0?tMK5VuLG5U46`jBjZt;iww1kuYUA2~d)%;3TVLEAj9grbVM z-EuIOI`LrUZ-PdS`tt3lnxs1M;!v)rJxU_XI9Ja(lwJ6|&gMWSU0WB7aJ{acY(Sgv z!LdsC_{KNf+dm@9p zCmMjNwBpSZ#W^xy(8lhaMPI}*M%hmu;|%sOMSaY$q~AhpwupH<%yc-kmI&-hCtJqj zqA{Jfj!?Q(1f(d~!7^WgDN;9hErq)@qmV#U8guzPl?BtPr;4trFm@zw7zw(A8ul{Y z%4HU^GRj7dv!{P)*r7ZpP;?RwY9`tk2iFIl6sxMRpnXYjYR&&t_rtVA< zW=`&&yc5hwb9-jhb~Fd&)TmF$WoeD6B>%%?YS;IvJDiUUR)jDssnkp}FpZ{RMP}Dtrd%J6pW;FvNfMhHncTTrcD~^#@mZeJ#yVK_0M$ zykj785rtkkYVAS>-9GR3`@XZX*wRl^rx1h~Opg+uJ*(Fbjb9K)g8t8wnVv60AKtC# zy|?(thgJ{Wv|DbJg1p4Dq%iezqQT_N1KaC)}8=QuH=_z-rJ49&N=tkO)%9qjhO59rH4vv z->~Q2m2keV1)Y~qHJY%G&(fE2H@Zt@!@~Fq9Nwn-5HIo|Mm9r}7jjJBeA=`bP9SL7 z;M$Baa%}K;ItnVBlRkHz$3bX`2jVzj*fVhY1NQ*+cAXu0M_`Fim*(%JmQk+s=PUM* zEdF*daZi}9bCGgw*la@>`w$k+K{TuVnK;7VN*zCQ=erM)EORbL%HFXm`+u8qU2wxi zTv=0+9_vS9%7{c83!f70n9!M_&_!({4Rt}InB%{z><$<$_V0E*FsaeWunpvr5htcxc`HK+T0M3;LvmO8G}Sz?)&0n|X}XtvNjKz^Jq$05 zTE`i#E*kH!D@u}5#x<@oA8z)@@t(MpnUdcg#6U6`&q$^GD1AN!>X}x&472i}ow;Q& z7MYi$?UyKVCtt6So(jQTsq4WFeYD8sE&5Y@$}a6Xaq>jLF?Rx9%Qf*2U_lufFwXNp zd9-8dJvCWJo)oLzj(+#rmWSTc`7I+qKdS58`&Q{{K;LD1A}lGxsCS}b)oN#VypCzS zo(V#?^-AmXR>yR54Wyuh=I^{UVaxJCSnliMJEtMVy3F-oJUx)w)Nx z?Z4o{h1Et!0W<>pXqA_8PG$_&LkV@2YT~@4x62p{^4DUc!>=JQnuZs${>Z*Ae}lQv_ST3k-hp?d`ZWK5e5U;V zWKA@qQ19`!vS}vPvFTNYpR^+rxl%=)YozcFjX{y+dA`EPUp<4gzx{^N1T= z;mP@elefeztO3k)e+!MwcTU^8WA#{84zPN~jw<8E7cL=kc!=81yd+baQMW5i=R|rb z2PrN9sh9j_Oa?Mn$vP=nQ+*-fmB8?gAk7iM2)6p2L-KZl%+L#Z4xc#yiDn>Nb%!HS zGhr82kT^R(iNh&*MWb{e`=C#NlS%Vy_QB*{Kx9P{Tasi;PzB@eq#*j;|LX5b6R)DA zWnx;YE6l`trNmnWV5^wbZp5FNV>$C@!~*qEn`)@c1fZIi8{ zCQff_MVm#1Yp}O=7v;(HQ1XY#J^xJRcx=|vWu0PUk*&Ov_jMXJzxi)CUOc$U_}8$P z=~xDYTs=;nVXp@DDszleK^>3TD)S2xW@xuxRSowzd!iXw+B zUNw8*Ejm=E5dq3QCszH6idZW)onwPzg(h88JTCGIeeH04h^+-vQ@s!F{D-jlvUS7pvek+A?_&D}=ts#xv=$=-(?WpZ z?{7aZB}5Ow6hQ%?4xwPkiWvx?$!Ic*fl5aThLSBa8nPpeKw`%jrp66FkOz=vj0WE$ zA!H4l3}2!J?Ig0i67~?2_F(JZP@u>{-Ki3;`PEjuYJjvJV9a}Ix7lg~VO9;8Pw?2D4ERitO$yFrC} zJKq+QkWKcB60jR&oL5mt6lthqc+6A$5#FKfm^0-PlwGNn(% zEUSm~K5p$a!KzoF(~(lHjj=H?E%0ovvJ3LvBw9%ifDIKz1}rbi%ocmR+a3G$WfSzd zRS3LQwTnxoF*Ck{NtRXIVn(4g6g zXOO?d>^G27u4$0k>mv{b4sGc)^`$XT%hsHxa2n7-R|Oc;1twr0Cm0BdBRV$LBN87U zXG|Cnly0lR0&^T)O<&{=>MY-4&RD$W zn9YQ@|8RgPeaiBocoC<8U{3A~QF!NX6}xH&L!&T!_xtf~51T=NoJp|UD zFdRwywLGlA6HMmZnp^BYiz4ZBjwO+D$hp|f*x;%v0HrM*X5>yUSak(6ELTXfue``j zpZzSvTEetb*UgTF74eX#{0_GtpKE?`wV_R}{jPY9%R z%dm08$r$Gx6~(-7A|*P{4dpiW!8vOI(O;J$a<%}o(WV?94SOrZdJWbD*tc@H83upK z2PtE{#qJURci92kf*XQ_;R6?V*SP#IuJxKECRc*6?XrH{A&!kp%R|F8(6OEDB{?J6 zHMqK2Q=r~~_g}q0K9-ofB6;Sx%C>fLB+;Qq1uEuF*|kY*lzluiZ{3%c3bJC?`nAfO zt0TC%II2JpI&HuI_C)Y;t{pOwLM2SxE6MuF=|21(=*sW{H2a+}x$p{{3L}3-qF2ry zu9(^jmJRb*tJ@Mg*jx)DZZ--ObczRi95(TTcOaDKpt9e&D}N~0BMbsFSW z$lWZ+%R>VU{>rs_xR!9a-!HtM{n)sB=gtGA-aU?vWi}S+qtdqfCXfaKzF*iaS_2_O zLY>9ugsd$gbo(nrG`|6;H9cX{4{KYy3VV)_7wfR`mHJyjgKJ^(Rs-@@!86b@^e+j2 z9kS#z@HG>SzVxvNm~jJ!)idQK4gZYVL&C}o4m)CJ4?=XssPoX`9VOn`f5OP_<^H7Y zD5uM^4UjuA1~E0(qh$+1yU5V}!EPzan%aWNy~~a}SfXx!nPMb*Iq^=2zT5yb!7w_d zUw;K|38HlS$cg~Odg<&$L(51Ec*QJv&c$$_>~NnJ-Is`#9uTg_iK31Xa0vr!U&v2B zq2HmOcp?pb{!lnC!SBFQc@v7iW7KXMoi`yn1cwtjkc?@ybNlrO)NIYKdSPI#tuvCr z@mGsgnz*z?Fq_d1S;48)d55Hxp1n1e4MG7t=?+l4hCCh_Er+nXIRv{^$3`lR-dQ|+ zW$t(RzpqW9K`sdP&2v`wscV7GVHL>uHoX(3DK&Pe)}bX>vEH7nv1c}J-|kgoZZ9tI zigRWcPS`6ach>$Z=NVi^2eI}8JxW6TpK_j}|CdvQg0Ypplez8BRmcBtm?&0*@Jc#L z|K{D5I?kN((oY}|ybm7C3*Z1phzAD_Aa(#js<8_bJCeLd_;V8GXjk@R7Qf=Lx`J}m zVgcu&(Zrrspk~>u(s{LUtw5up4d~e1zH+%(ao)7P`u;L;h=&mU`bv25?tO9FIr-$B z<)ZsM>I?;%ikp3{!|)zn3%c>J9|K)~@Pm`x6K8Q;i!4?8=ElnzdGU7p!z)*4`sD`8 z`*`U7DaJzgdQ0eYImo+5rt_&Z{aMKQn1IInuz&JO#`_OL)akPTo$e5Yt|-{lJB7oz2mWz^Xabg z10LtU#ZZq=6_)Q}6Q9zWFWcs)7oV=k@4G`dH`(fcwH7<7)8B7*qMza{-?cSwjWNBi z^kCjPUVS=wn0FB+9;vEZIur*ccV)KQR65IOp2MQ)L$#6n$%uF<6X>}hMM|lRcpJoJ zlWKS=g|U}n?YaVtGAt-ri4s45S*3EHu9yqw^gSIr1h>0lMtPhxp_(IT?Fw&3^%g-A+E`{Ib zNAojcU79%7Ru>XOnC>2#+h(pCDgZ>;&G9xAYpM0|E0>1)RhbgPawo$^N5999qj8>+`ZW23*V!!E2XbeA#02i6=TCpn~oL^rkC zWOl8@9pl=0G>EOKrUuzA4$;dP&acu=>hsPjj0HUpiPw)S;3$g@4VASMYvbC{XeW>D z8!;MZVgZwtOOFNY?X47Dv8ZO^LyO}=N_IPElXSN>`DRxtUa5LV;wWp$VjIz;cMTh) zrR9%X8w3;T^X=2u5{Vshdl6d#=M`p#qZKW}T%DIX&RLb$OA%5T)LP~@lzRI>gdN?B zI!NL6>M0Of^-6FjNwV^g{Pwnt^PO7}>q_Tq(ZK*ARoDfCr~6L>ev0(yp{k~7j7qA6 zl0A>AU2Vx0jq>7nf@{z8zA(}%8=n?pM*CswBv}2?WZqo&t{zOTnhAbf1ornWSjUIIM<1L!=@Jgr$0iTqIF308&B~fcf z%!71_sF4r?f=%p8Iv$Ls7mDylLOBBR*y5ngg$eZ@MA10i@jl-7QudVAB#Z96_)v>7 zE-umw5v5f=?OWR6ZeD!MM^RCkuYPOSMiZp-_x(r9E)o8#`dpvSB?}C+vglem=}n&1 zMcdo)B~-(gZ5ylvi4B?6HB_DnPRZ9S5Gd*KZX-HYrJXGcj_xr8l>pb`6X|iR+PINlQuGSTiW__-b;PiGjUy z0&5tw+2S}TRHFFg-A5Ly;r8GX%a1u&MiWibT#_UbyM1ZGjI^21hRT(k&t^wVCW*WU zXjF2y(}n(TM9WDWbsis?fiReSiP%wGHuQwM_Pp1G!*bc@ z{)L!Pg7))4Si|vOB!YiV!x8@0W0-5d19XkEGFvwPx_R(CAWkF%(Q21qI>aoYpN1ql zr3u4W2@9oa2%Z<|q?(5?k2wiq9%*TtpgZJDEgg9^vrop6w)3T~hfKxS(K^DUlc7QC zjd?*}oeH7pZ|_%bL{M(uR9rV4XtQ=#Yo>yRXc0p>o3j>ys(Xm@f36-G2%?S~2&RlF zXlppDn~aexn22>!vl#_fF&iagR;MIKJtwNMOuLyW`4k(3U?#w7ub?-mtY9?c049G} z1o#tpXLmI#S>Zz23lwv)LCeb%U05&zdLk^FXJ45W z>GM{mHlYvY_$EY^rP9k&*YQ8mxy(o|lu+}0vI$bbniTbb4(xFp6^l8aK$H7ea#NpdKH{?jlFRV?&60N{dd1$ ziia;g#^Jzz3EISAIlrY5;Hf@u(6C`Ni1O%mG6d{aJnq5SfvgZ0#C()#i&s~(WEAi$y0x7kQ1Ohl(~T0|l#Jh> z#h5E1j1P#ZdKtQm#T3w_c;B=KBmFuQccs@R&ZgGs)u`yjEGo){%F1by z^d#MkAL8!wu8DucQo)zxY{)3Xm7)%NC`%ORsPEW_cR@^TeMinxjR9dvcYD#*_)LM5-fYzv#KT$q~tmBzlcj?U5Do-N3lqbUYO zR-@)kS%hu|@dR7Q1`qzb+>07+s?$;fCGjxH(WJ$yK2e5y6QO-W2UGq96Tm=E!d`eR zPei^hQ7GblJPwAqP+AUu>sdBo$ps;3a{_aziC*aV& zI0N?4mhZ>#sGi@%d%N`bP-wkp?*2SBM)%mJb-SN)*(6*)DEN;bqt$gGXPK-sjdH)R zb5bV$>W(NE?@eRvE`7lAu^AU7LeWyB=LPCt%wBWHTaH6c?+G%yq8}t39DC>=sFp)J zgRvRLqm97`F6UV>C}bbTTxZD5v~F|~$!aC8t9Yii&SOSr*Yb!QujCY8a!iih$svQ3 zd%V~RCgoquQMh|VmLgBM#(Oz-?(5+x!0}7=UefrZWbAv=WDbf+){%;N?65Ly^&YSC zzLYtfb)M=#>aydv!2^xgLqj2f^}VLI$&_hI^lqVD29+YZ)5+8{GgNHf7xQ~Unakx4 z(q(bcN*?(SF$Z<2<+?N2Wy^~YrBbL%OIFl%jeS`ax*BL`GO3VI?-vV)ubAvt4nAb* z-V!SmV)*pztBB3WL8o1;FPQ-bdA#kic-!kxU(ZqFYeCcSYIcPZ-10ym%NMI>ZyGKh zJ$~zG_PeZFx$IPBldCX_f z$yWoYRH;pP+y`$PNXX}cL-{C}6jOu*yFTm(sj^odEwl64e$#Vrbh5S320MxuK!gN? zWFx(Ft;XYXe#M-DUhf%$w>Nq%!Q~MS5=gFSc{<*+e!(ADGME_|g+^1eF(yrU*IyZD zyg}zMB`^4-ruHUld3~l=!|5fpOR5^#!|Q*Uxl0VDXs)NFfpmTzBLQoU$^zS;jn0tJmNu>_!S6j6v%Dl& zvMu8cGv9Yel&~;^wAbfE8xe04FfWroqZf=;IcD*|lejpS-lm2CZD3E$q{JbWdM+W))G3kt|z z0OM(!-d1XXqaB{EvNJBTq7wl2dYzVV#mitOr#j}Lo#VTj-icIx%o=|NJtml1w}ao` z+oC=W4p7%Z&zhZQXNm;vk7Q?rVeJpLP+AW);YX$Ek9~lp{b9=)>ib|2wyDyDjv~Va)-k&^|Y-)}x*8nBxn0flRi}S0G2Fd!>}S zk~b|u6xo++I~52VEM0w3(Z0Mi`LOhhopWe zKosx`m0=?lo=XFvk5TCWF-jEc&=)k{3dLgHA44sYLrwNP)sSJo8bvkka5}4={hYW7 zCtrvT$y6s_t5&|D5TsF+V*8>E#a3>lmHdcdE0XPwq)V{as=sh3TTm$H1j3gN!P#ec z@dm#1Usw|Of&o4e%G!@|fuy-j#AHuH-4Dx%!X^o2jmFYGQOlouAu!Vz%O)P(CK38N z?!vzGvR~VQ>pG?LR=pkXWem7YwI`%IVfgDF*h|JIXm(Qe7W54iH%a$^z#T_7X?IWZ zp0qi(UXBaOTZ21iX=Yg8nl)zybq~XuA!pg; z(EWyBUk5&o@08x2XZJgIdhy8VFtqc%L*uZQdY;0eJ!l z`xM?>eY457C4}}a$>JN1)wA;rctb8hD^YJ>0yXFqj(bBiM}OzUjV%>aYUp+XAywfp zDp$5|t1MIZCUfi|Va(r6t8-v=+m>-3 zx9#vul-0dKvLKYhZ=-U$PHXk!^q8uuYcu$v(-qo(k#=1`VT*GYW~GF)=~qJiYSOSc{wUf`zlLgB_+ZDVX3p?q9?A6A$^FO1 zmA9U)IyWK+h&SzQiH_@&?RSe|N_wwhZ`AZtX;9Cuw@zNf| zf5(?Kg2P9?jYh>E{r%nK^K{GnXoRh(q%;NvxdmBRL-imaqiMdV~!M$D(^aOPc&YI_*w>-$Ft5 z|4p88M5Bts0HqV*B7#>Hg1(`nAex=mEO|xl5_;G{4Mj|LIRzt>U9!N>fKy7D~ysTBFenVk%1&@hsh9DsT@UP&4+ZN{s7zo*pT7QZFJ^LyrcL z-Jm|Dt)^H$rdS>+c`Q4O>}l2btEjM_DQZ|BSVd_7;Tt2651z8k=ws}D0K9;n7Vpf z!Lid@fYS&*ZjV2xteKg;0esuODICJbkD1NTm*XvYA@aE zFc7v=S;CtB?v^kV{$`;+&ZbtUP55k0 zR%mCTYK^2-c4on8$}Ew-94;oo7SAL!d)$U7G$N*+M%54(9Dhj>sC^`YaZ|9lVYy7i zmL}AvC{t7x!zxxZu@u_^cfM=)Ig8+C#*L`eu)H;d=R@Mn;}iOyqaD~kJ@YtVt?<-G zo>`BjAKGX2+NP6Pr01}NnR?9-`bAW6){tH7mLf7ra1Y7n8R`Ve8*^}_sxQ_-dh?Ok zPDE7=Il!(sR@2C(grw@8+~J;3ph1#{qX4fUW&$|sk5b53!*Tc~qBW9njEjIlo!`zJ z3y()eA{wqnAZFT*(w~c%nIg&MI{_SymQTnT!(*yMV*K)6IO{jyfjgI2<0^~3B)Y4i zXWe5R*Hq_EIw!ZVqvL$Pz9nyV=a3|9E`()^3mH?`&N<9;te)G-dy1tft1>A`E)ja# zOj5@T9)y)o=d{jwp^qyDTyVvzR6#SJhHnO-Kkg=fcYWz`zkP%E@{6v5u37<`LFVj* zW_)c2#WxZvl0i<-*(R%kgWy+Jm4qUo6wI^T_5&>pigM&zrYzbZG?5v}3d~Z7yWsOX z?>=^v?4o}bMW5eNg;@6myXXmULpL8j#&Jw!W-OuCq!xy;HSRvHqyOQ{@ZMVs&3!0b zit54=y;GG(;UFTobFi}m&DtHCE9{N<;a4Gm=xCq1r|tVJi5q?2Me^hQhbn>X>fOw4 zWBhEk;K^wDi^$+?>+Z6|$%EhtMfr=$;B2n3a#-LtVvt`(#SAN~FV3qB>ir1eeWQwR zjp510&9KBt4dMNrif_K5#cx>}XfI{N7txBIMMf9+h4@(lXrW%AC3Tz-_BD*cJOSJw zzvzlu4%jKk+Q9An48KU$gvK`3)%=u-4&TUu#e?dq`zOkG6H^Nxk-_p`<`^ETI~78b zFO)tuwe#}=*n@y?ZSE%{ok(=ud0HJ8VEVPcl%cPUmwqMx*r^1qoL(;j1&02@j_b5C z?ymA<_d`TBH)ZcQxUm*$NBh~KQ+fBNHXlnn?3PUN3a~@$+n&hlw@6tu{xhN`%99L1jDY(LgJ?gJ8Qs_t#|SyY+v|Dfx#M{^GCtVb`xm~CY!R9>ctu9TLs!dw zY%e1mI_2QH1UCgvhhSKnT+DH>Zv&zNV%w1Nd+sxDRXC+tn^q+x-RQ=hTl-*Z+cAv5 zQT`QMc37x4uM7X>^>tr)cuLsH<#x0O?UU+{2Kp9XhRdL=d}h=ykLAJ!nW8y2#Bh!8 z{9w*lV*7YVQ*;USq&`RtEKL`CBJiyMx-GNWO2OaoZXM)4J?oaXHx7dvRte?>=!@M) zwhXAZ-usKiCJ@4x?!dTyC*KN(=2KCm(%{4Vq)9SP>bc4BD#(k%$)!D-UWce&ew~0$ zjIuw)p3xA4O}ZOoVGH+fw&u3hsVl$;9n%0>ogHLb5>VYH*~BOow=Rq1D`jmfH_OC5 zRNqg+18?FJ1vFQEI@z^i!Llx0rMkc?^&P6^u|?6q+pzCgQ>Dw7^4B`IdRM1$>BDe9Pnw- zw}CL1at&A36fhMX>)@fJMwNHBb?$02Mbf7L+%KxWHUz=dN0+X_(Oc_WEH^kuH; zXY@C?FNYqJ*o7Huc=HqC)bCNTfKHNJ$z03HxKGK3FJ^J6X9chS4>iAEI)C?xnr_#G zPxRyU2bEdn%F;q9cOeTtCAxC2Sv@0~X^Jnd*HRZQMN2d1@a)BVVoFgh6>HW+OYWO9-p}M) zYo6Qlt=99OYedi)^HVKhCrj1Hnn}45jHF^cU-4a!^FNz_Ua1`r|J552DtH$w;A3bu zXZxJ{J@sUGS8i4+-k4)$Ce^sTid*$}&VR8h&8mjH)glQ^pz_5LVf6$Ir~Hp}TNa4A zMXwG^@9;@>_yAbij(M8@BjXf*NjkH>B#y5#-;%%a$I`;O+4{PfzICRhb!PhVGV&R; zp6Z<{Z)L%WJo3Bt1FX~MKh1JD5L}N3zjPoWQ2!}qaQ{E1jDMwyYV}ul9Cf6eWK=*x zYswiXRm{0aNK<@rlarK|!&_c`W+3*G9dhD+QE<&+b3;v2r9|bBTmU zPne=#Fp`!woA-{pkes2pTyI=`9G&Wwqcw}h6vwNL?pKr396Ous&b1#8I|%&b1@HHg zX%MG>8Oct95yco9Jg6iDpcl}+h-3sxa$RNt_fn7-#ksd9=Dbh5y*(3!>Yn%5v3kdI zWat72^9%!vvi8@2Oj^J3eRaVXSDtRPl8qBvh<7;okCfpn4IQ%^_{g2cXRt_t1`Wd- z`bdHLXO>7B+L{Ir1_^(t`B%XXaz)1KBni3G4y~+7s^SE#1dB*V_*&%XViqy} z@+?*Kr6TT9>W-33D@Apu@dPd2O7ukY2`fjg^yS+OuI@SorK!;5suJ_q+xsw)e4v(^ z`lOR$vcnBGyP3g=v=~Bwof+D2|bZ5e1l(&{R>Bb2`i)vZn(WO_x zjkTFDCL;>9r$lJMkP{PGlGfOAaaDbDq>%(Ct8}`Dqm=Ye3?LXI!bCM7%A7x5A`34{ z5>b>tlN#$^kg}B09Z(POu(~c1xd1OLO3%nI)MMdN73_X#q`u$CYlR^yJy|=r-z>=3 z)3KYgsbW9bL#1z?-}C8jDhwI@Dali-#Sm7aD=dV%@N47ZraxmqD%_JZ%!`^D3BYCT zt=e^7#v-?JV$fMx-mp*ir|$NJe_7{@v`!^QTHEp}yi{kos~tT;Os`6OmUXCXWw33( z0Ss=i>AVDk^Xjt7nVjr5N9btabMjx$X}bv^52~WVRJo_Bc%Pql`#u$~CNSJ3K|KY| z17s%Di7Tdu{9ckI^*5E&2y+6nPJWJ6_zN#up*Q%Q?zUfWPWM&W>}_BSo8q$1P7afc z@|=rHY|O-L$-%p6;NTx?WVL}utVL?;B{h}15lvL@F?@|2CNoUybA}tWbznQYo;6kj z#;6|U0;dWsHK0r3cWGA@&@tB1URg5UqOz3S!RqKo>c>g^Z@UMNtmfY>k{aVCi%OPH zv$Js`kR02uRd7aZcsuimk?)*1;^tijTgtMJa?fpw^k$2Ytd~c8a0c!-9L&DyJ;V!q zF1a%9ib^G&r*~tbOWDaL>Gigw=riZ@Q_cP!l)D2mqI$d1l$W6Jc)h1x55x zOR<8vDHFriHf9G6f^nBXd_yLh1u8F8HhnVxs;W#aJ-)6aMHsil%UtHkv=oNbOs(u# zDzhm0QH_2OR-QMF5(cKVQK-#hNz;6$R2JrB4-@7}=PF$zHEG_~N#|otUdf%L(~W!7 z$Wk)yIxN37HCFmOk?aSWu)!w?czK)HDz<#BZr8dsq%|O$y}u3Q+yyuDwJOFUOGx=a z4AwDuG&9G{0Qs43V`ovl00BqjZcL9XSlckU!~or5=o!5fHjrqu!naNRwXGxj2@G}k z8NUMq$Y5XwFHexOH-!Bc*}FFWlY0B@UUW>3H{4D6mt861mf)brhMo3;AU08h82h?K zw%z31#g}#IO)T*c5AXx02h2l`bi1@qz>?N6yJfOQaf1!|S)A!ORxhbY6`H@vK6{-k z!>EyGh3cSCoDn7E1i4vvWaslkIhx~}h!A-ort1R#pKpG!a~Fc&-ANLV#vDy{5mynk zAHSWr@B4z*U-ZueNSaK|EL3~bW{zkAk9(%$)&fh^Cw&_%yF9c5nL>YU2XA3HT&!^;D{7Fe|aM6)A zfZI_NV~sq!lQ54qt7tPjgF82 zC9c~wPFHnItgP@CH$+)Fc9|ZAN-bEhupsG^<6DZUu0GykHL`BI+*V_FkbiUwyO}$> z1x3K41)NqcOm!`Nss1poTwF>SADtpv-t;$DKd>_WMg?>5KPW#BrA}%YifntJZ5F}Q zz|M)KsMM9E-sPwsI;F~c>3=1r4LVYRQVtgOV*eb1&a=;MdF2Y+FzXa(6zk4q{q6wq z4b_r{A0M5khyT~8i2g}wt?_|1_5=rG=z?0(YSpR=lFJ$%?&!8_#7mi$#$ya$Y{f4YUkucf*W)G~GMZE-xGchLwaHmxeAefL9BoqPC>n zoog!FRdaI9MPA#{f;c7$a?6inEAj`>J6Ec;0>{}!^H@c5=!bd(dLI$TwKK?vAj&T9 zscgWV31=TT%ySgTayN7D!j+I8(inrU)iPIzndUJjwI;&={z@ylXbV90!!+o6A|!Is zCLNfDbHvuy)l-g}nvI(~e4+!8W!;7F1M9Q5OWR3s2I(-EZQ_qCSpvC3H`ulVU05w9 zt^ujXlznBHlI`t)ya92s(&XS4ve*$UXxql+BmJE^!wE;VY8`Q>i_$$ zmqYR#{6%hINH6b-JG^^!DMsu)iqKU7r1b`hzFGr)N&8|NyNcaQ&7gVisaoYFc=UMI z|L)oDZqz7E@_flu5itLMmnaH`=Kpr^D^`DX##uu9sA;-g zpI?Wda1%o2fr26gKm>!z^~Fe@ukIQg8`3aXSS-&cHw$j7s?i95(iPLqq_`9CYQ2DD z2w75OTV^??fAc$o{e=Dew&3ihZY`R?XT^-4>;1)4>Ghs=pXOWnczpfz0pIm|V~OaN zXf;4!rX`KEL3JJ*HrOSOG}k!LyTzzr5ve4gZED<_+E!NNc`nsRoPax zzedS@gL~#*wNGJl&l{QB;6W53`;1lFowt9icuzRBk3p+va+45|s@hesuZmU+)r5M_ z#bs!Aknk%FF-#+}qzN2euB7^JQBR(Jk|Y<6>jER5Wu_OuX3}F|Q(~&ryq=sK_FafG zZzi48aS*?GnlptapF|tWNLD!ynKpFPCiJobH5;eQuQ{9WIr8WNlDa}{CNBJ{go{hK z6o7}UaEK-6AZREMr4`ls%JQ4(;)FupMPdk5Z1RzLarV6VUD0V;)4bP5lO4|61q~X7 zIVw1W-I0c5jr-P*4joD`gl$x#^!OWXl7Zib>{`b~EPCTGjz@2+B(e^)9kQeB$A4h60mzjlAuyoepwNhwJWH#mU%25}qPLLGeQd^eQj_iq;ioqNf($nWZ(>Si8ZTBG5LpqEy zRz8GZw(_!81tl8Y2k6)jPbjTSVzb{>9=PHY!}E|Bz!l?{uR8lY5|f!Zw5c_J!-*zc zua&t>U{M>F133QP=s&86^drcvG$imV-@_kbyC=@y)7vcFSI5>H#i8C_WQ^iq?Fw#X z>-z1^_J&=``UcUvbj^c)wdV^*uq%w#yK)WbQ?wV$S+Xbp+!!LxShmlA%|Ai`YRi!l z-B-emCZ?X>)g+UnkqH@c{!ogI52@Oh1A#ert*$fYkdZAgxNpxXx}=lc z8=nwABcVNL{+uv^sqT!N_T-v z12znYZuHJpBpxe5AN3Vv4y$-9_kbR5^(|ojNE-YZ?Xvi(e(BEAH^T}eKj3vv5N1Hk z-Fwj`VI3X6;+Z1XDrLIdskDj2)t%al1_jA@$cz17tp;hj$=*!LfNWPztSzt7Gy2LA?rJLu* zH6jFv`^YGa`v`ncUG9-CtCt$2Po>@p*-U!qcn){#)r7kXM6N6UjXmY3Xhg_0G;yMD zr3G@@pHf9M4N>PG+e!cj0a>A~c2yB!&V`-s2+Y`URSOd!R`X+|YE!Ty95hf54pf>@ z%1J=QsXANdlvw?82=Npl!3{HZeufi%k5+8!7s`PS5Bb`HrAXtjAeL8Jeo@&xf2BC|%$FMQhB zcV+IOInxBL+Qp%mg+h`=_Ab3Io!#k*l56Zyn>uX{bP5|Lu_$wZDdBwJd$i4h6ur$~ z2yI>Zo*xDFP8c)oke&wBY}eKNU41v)bwkJE3duAI150(sI6-`ZNZvts#qV9{MN;i` zfjl*8dw&CuO`W4FKNp6nWB*?0O8Su^!wu z>|eqiO!Sy=wSyHX(hPHhRXB9SIL#M(VVy!<@5T`*&@3WOV-iSng6aP0It)Dj*VW%K zn``zO0t5sC`9D2Z1^*we{$I~kOFQ#_?oa>k4uG{f&I;PrZwNSK<8Lkf->`oFHU@xd zH=nJujj#@ZtCwHHpy6aJ;}3xd2a(2-;%u_kmP9Yy$MYw!S}usskND0))T*8zdR2E+ z`kZLJqr4-$f3tnc#){UQ-8Y?@c&EmOStVq93cgD^STgTn*YnX zmdax~*6S5`wtv&*(M5>Q5HTtZt@kKA%rP`d6a7ryvlOQ8sN8Su*R;E_4|KhGj>(1I zL2I}QpSg;h;TQr!Mn4nzk*W#U4P|;r_iy;Q>{CE*D_++SY(19;=2Cgc_s@`dGjZlv!AIDLXw7SLTC~Fjh_Tps?oCu~p z>Ihygve42I$Dc;9OclECrZA4tNvO8!77ZB@crvA@kBiHcnCN?06VOoBA$b)U?&8UH z4o$)0;?yrCl``Jl(_Bj0#)aFK)IrBhd~l?=2%;P@hSh>X)=FXnbD{ja4Egkf{0Xp7 zI4i)>8D^;82!MP818>I!QFHne^}CSrM&5%s)mJzw-?{J!6?vX6-P`S8fkt_zPW}3$!{)XRSwAy!A_p;YC^V=&X3TIV4>P3pDbGzkEDwwG<-J zY-y)w@GTvaw2-Fj#8SdoFlrlOX@P9tJWpe!JC%T^St+QUa>WT=i;rI*-fYU%6%pq> ziTW0@2yN+I1P1c^s626mxd0D;w#I&|Ir6V1u9WFaDBmGO61KLFI$lcHO3n}fatqpq zX=;?XutA( zbr1diFS%Frq%bBb6cU7g;lA*u64P%@v|~rXVfz~%wBAuuG))r~oq&>E1nLwdWk(2e zv^PbI&+zeDY)Wc=WP_IKM5zxI(o?cC-mP`&6JPI-;beBt}JloCF2*3Axo?SB~{$PVO`F496%PVXs)s1Y8 z0P`P?2~MM}$9dWCX+&{zfgZ>L)e=yhe`f>{JnDac+J=1`_|s^Mjw-d}o^c2LooaFK zMYzuFwmq#cr^DLV^lIeO?Jl%9dcoueJUB}62SPIM#9!-5?7fy{w!zF$o6w)N-`5C1 z0V*wiJXH^1ToL(f`E z#%tHEZVNv8Zjdg*8Rr0<>pq!X2)4JWEx2SaDStbeXSxt_;!5R-Cnb8OxAMX$mKBy7 z_@Ekyw~ng815rx#3R)1eb_Z`khWo_fQhKA8>v?NJoRXjPhkmQTRG&;pt z4UMn+^=*b4_JuzO<)MB?bU|z&&o%fFOvaLf-od@0Q%M(grrv*r*c!u3_xLyP9Q>Cmsp&F&y{nYbm=&NG0`yZP!+ z;*fv(x;m|z_*h%2%n0IfMK<0unOowdGZ<#;OT@`m)2QV`T%wyI^5eL)+Ty;cV_IIc z> zbVFqr)Fx4Wss&D!QA7PDA#*^@f>)}Vaz-cC$SJj!Av3~Sg4LgziV`~vDE~T6Ra9qj z>A1Oy^K5IJsAQv(iP4DcT&g3Ae$I6rU`*&wMjy!7ZUoUD@U=#ry;HI9(qCs(Al(DX zeK(|$`o{2~PtWLcCs52m9|w|W$yl&gUB4gw+Oq{O;$|(;JmYuOtiQxXAU!_|8JK=C zbc#wV(+AVlW?*eBc5tjsiU9wfjNjDEAYqH~ymmx^GYmr21(;-a9m zB_;>!cUQd9gr8VI_xn5H1U{i2eoBsW#m2h-knppai}GwuNu36C>4<#8r8`B=%ik1Y zd-b3>$#u%qL$B|I5NbLu8`)gq81GywW=s4@3)Mg z9eo}^WPj?e;(6uJg<-d0-DcN~@%c~Qec=9NpUhWFfa^b+?Ed_(OP4RWps9(1lf8qf zlZ&OPv#_DD#lIT^*{a&g8)B#*==wou?M$SkOmwzC0;EU<+mn$u$S_c_DIn(424+iX zZ;eDu#*@j+-q!u+{O6ij;w;U$ea~e4mGGJQXn4K==MP`ax62%Wdyn%Y?&;3cm#5t> zI=gDrZcT(eW9_~+ZBbl5ADZO>>H!+63Z+u@E{|nn**-tM#Dg$+?EVu0$gP4(UC}O+ z@WB3ZjlnFy+b1{E(154puwCusbpUR1f9?^={<7v;EQd(7-kKgkD0fru@l?%XgKM)o zos0vKZSOd?T}{McvjF+IMH|2{pG%}!r^};Z5_UQQA>4JMN_D-~a1pUo*F*Q_+H(96mBEL96Kw_QCtdBBV6!Ig7mb6R+_`DODZ1g2ogBKsB>&riN}EE(I2{6 zuU;_hP&3-hTx7fAG$2P7z8IXyv0&xXmW`7u)ojkfDDyDK4EqEj)yzoa>wnq<%wd9n zH@HvkbLe;C=Brifnr$6wpaZaNHwqk+hJ?Vhl^JLbK6w=6741>wSYi%y!J$wtWM}=D zbhtrDUa1RIg|qgk*@c8-P?)QWA;2Gm%x8~zsbA>r5L{q!s_?~1^1Tc)vJHJvW5D9W@eyNiSDwTv6}`XQU-~0FnxD`A z;Ya5cBkZ-|d^aM`D#9m$%=UioZB&I3lJzoM?XBufkx_f%#c-xOUD|IH9S4iyRWxt! z{Yy{HlTZ^dnr>h`V-JyyGEBIGQ4iL>*+W$wVyZ=5{ zxEh<^%ex;6ouS8U9di#8tO?=R=nIw#p#>EwV*OK@(k4OoqY(kU* z2gTkD5&s3Pa$&+k3e(AB=$0BcdT*EkMpdP&@P`Ka2rB7j^kajg~qJ>B*_>vOHJ0sHG}n zL$JdBvFNk>>nBfkIqZ9T8Wl6McZWSa@%qj@gfVd=diwlpdPaZ#+7xeLE4B8-1M%3! z2Teb*7Qxa(W0d5%BL7g|W%1bTmR|`6` zt2uuAitU%T7mDpis(=^%r182UR%IdI*~~&;$BEivEa+U@4uIC$O2LX9N=!lFDC`e9 zJa7K;ct&g4S7Tg^$4aw6nZ*N~JMM(l8{ZQSl}QBIj#{-22Bo!=nDBH9HtxVaX<9x7 znR4&-7^EJL5G6(zcaJ+AFH zTM7LR9=aIn7O&1|1j(~pyGGFRl8D4JZ69EwAH)fGPrHhb`b~r;h*r5JlhIIA(USo@ zB6e6ylj_5YfER?B#8Gv2@JO~^O)8mFLxtnW-ZNocqpwiq)%w%YN>!b0CevJIRb7U41?NVVEz#9Vw_rb!wq?(z8CTQzQx|Y9gjl>+mQCm< z8F^4(u7Hf41FX1cPN2aXJ!o1i8Krm>`8`3-6S$);>a|hrKx!riPF|dCWY)mIc`sUn zaHLwj2`q8$lU|GqDcic}{&Tz3QdmWp2p~F7H{Fq-crjOW;Y`vkjRBwn~i05@QtzZYFv5VbFU>N*rERta{J zOTi-j9O{d_L6%LzE|9UXyx&B#4Rca7{DIfWrJC*5P)@V7Go#t+l>x6I38iV7hk)c} zokm@e}~8CG(K!+qiAg{g8% zhv|L&>Bb)yYRhi!bzbHOR~65qLfJ7mhR(v|?-A%-iOh)tRSY%v@+KmVq^;ia2+dI- zrjO!*y6^E#^ck8_x!#j{+35P4Ddmf)G3hps*w@#ku_{Afu6UD_>LYBitYaunjS-pH zIW1835$-Y9ufwKJA6LAA8bK{FNFH$GpW2@Y0Y0|`>7kuCZ6+CSKctIOiiy~tZdTHh zhNR-?F&~uNnuBOm%u#Q=>9wJhT#9MS8A2+R$pWQM#?u+@+v9TBa3i^y46EHtZGH0{ zC+p498cg85$&w#igaRWF zZe1E4Po_&zG=%w|zJv~_>p?kW0n(6)-Bn2|H-HIjz;u4h@B0xYMfo}?K$CG=8WU>@ zT!C5o@_Jde&;^LVHDIU_tc+)*e;td}#(Gf>82BomaEp#Rw4oS_93VZKz7el1Ur{0Hql>gTgTvjK@OdM-Do65ucJtp=Yloka%MNVoPoo{@D#l6rG9kq4{3_Y>@0WK z(QKCU8=pIDvN@yfvhhebZw^O8Uaj&f+$AMKXA<5;nUsmRWF5&Sr69wnl32PYaqKxx z<5&thVJ0p7(G));)%k_ zCo?7>yb zk0OZrQGx+|;Y6d*wF{0&xiLXa8CV?*(x1j^QMT9LYRj{1o3h2dRq!s)Z$XUddky(q z7-jCZAp}!oDVw>*ceKwif+v^AB5p}^h5Qbp*18}P_C_zY79Ew!+Gx1L$<63n{ z9r^%DNIdUKHJ={ckHY=cKtn$5x>&Y%5eDaIfB+m|Z(v@wdSVy~Ln~fgrnBav>2EP+ zh?Cg(e0IhzY^HB~(Gu*9$fQ<)_FJ;*K`xeB2b1Tr)^an&lVpEoi|4@3kIsQ$Wr5jP z&*ZO#PjckyBg~Q%AUxJ|D~Y8%n`>p!A+DiDanht2p{+(pq9Nt*tF?^%Uj_oE?`{{w zsaQDZ0%dr|?H-lKvO)!#oq3t!9gIcWAYjvwzyAPSBJb))M0EijbMRZ}lApqI9;z)Q z%W`_PtYAs6G&=B&PwSy@RF~^1g*fQRY-qi_DTnT`QilT`rsnjTOfpGriH*S|01G>? zK|m#@x0K7yu37x^Xt;kV@X=pm`0s3ycC*P z0X52qHpmrxrY_$AcMg#qjaOVs5Su}0jB<4VSNO%>Ez+g^f#bm1$TNOiTW#I5{8*7d6Go00knUC$ci>=#Rf5`U1YCO9Td1`>6bEp3uD+ zyu!Pv{r2<^tl3Q8Pknw~!k{|EgVG|QkHQIEd84+4YyYD0ESHcZ-y5_|$dm~3$vmBm zbAfa}O&YgB+Ap*hd5ijKN4SErT_E#uQ^Wt9EORxy0|)-N}Bu|mQbyt`;Vi; zw}3z`oe!-ff+|?w1djF1Hy}hrmXRzvf|c}^T{ncg&F0JvV=(qQ_c<>-jsZ`h0%%%F0 znbNpN8TF=F1~8 zMC13Q22qz=9Fn#}`-5K9nlbTnY4XUjg-;!J&@KT#o+mo#Is)rgh|JS^6bOV{w1*TM z=}Zopq1Wa3d&AmYi1Q1y?Als`bdMRVU*}z*#7R8oq>vClDb#eEX3Ay1qVFIaMhtA-|`CMx?;{M4o8I!tn7K+OYACCY?#SuSmG>&{|BgLfkM$ z`(aYimedE0vzF9Vg<6IjN;i>!eU5G@HP3Ya7?k0k7w{vO8l4vwtybJ#%3&V53$~S6 zkWK@Az<&>EMqovlmBtdrhSEYX3R}jC@X6znyZh<*fmy}*1Xs_{6b+<~7XFy?C5nD2dEH0Ky zK>Kq4O@g^-#!Ym@#{xm{h>^2kfUu_+{^TqRH?37=NtIVLs4T=~SrGb^Iv>@cXP+uz#F{EdAf1 zgT6c~e?JNT^@{laI0^p{l>A$|ssgZE_=(DwXr7n`A(c1}S^NdjYaJ32`Vmiw zOsHCc8X#3j*pZoL>EMvHzbdMEBTV}fRJCpw?3r>1kH=9`yOJz&5;&diJl*ZSzvJ)s z0eTH`NUPMADu`^&Rb?z}$FZQWKv|s6L@MAhfWwB`}=7}T}n1& z=x$pZ8L%R&-F4kTx5w%MC>WFJHg~8T$5X!iNAORdv+#0PTCCSN*w~%=?%~3SKcT?c zeD`u~yh=DdH!Pd3^C}k%*>8*NpBs}jC59>7=j)N_ctO~`FX(#VF4+8Lq@=eNQQqS4 z6o|oGn?k%Z=Cr8!%nWOXGf-ex4p|HqB9w~YX6lN2HMYg)bGW8b#ST{3D8Dq4*q1PT z(elx-gcPD(u3OzUo%QwE@)A zp+n~09;y5tUJ z{0JgyjDn*dXshj_^`5k_Q@q95L!{02VZKndMQ?dW0Ge+Gl=_&F66L?#;*A!Su*oiP zB8DucrPm3xIZt@3wmX5xdNY zMeQnIvD*#)pJMmF#$5c5*!@yn{|_Wz_Ww@h@-IZHP2k^=zPo5cpnU9ktjH=+s0R6_|fq6>E2 zRNsJfv~WBCQZkC{bO=3SnpK8u&Hcr)htg&J-g*z_s$e96n=Tv4Q-cZ{S*UoZRjoo~ zQDvi5qHIWMX?#*a7jar++~PXe0;?`%$n{cFd1Br5T9Q=DBI0(gPMT7lk>YXbhAp)0 zQ79XqUSWIfmMyJ(@!B7Dw|>rS^I2}86%&VUf2K<`6SUYZ;)~O>o$uRY+?gUgl1LE% z7LqJ2%X|=$eJ=-Tmm_0itS}^=I-ctLGgDjEH+D5s$cvx{Q`sfggIR4Uro6-f{!N>? z_HcANvDneP|AMj2G>qLsEiUpr+ymQ7N zYbo?FOx?hUc@Y0RdlYQ+!uDK+SHj7it4`@w1HvdAaY*a!>Czu^J0xAVAIUHZ%<_lJ$bNMwf#^a@d0(uD=SlJSUBSfa1s zh9Lt3;KWy80Y&aQMZD~M@mUB6PLl>u?&0UDIwcGoW5(%HHAmh8|Ae(<^FL|USbW9+d`nh0WC}Ur zRP@xM;hPd0*TD0Pkr=Szm7Me*ihj*~q>Db>YEUvE|$(^6UN^74FB zx}x(WU#eiAJ&bEO{AoPN7-K*)DSpr97tH#2>#Fl4{gd~G^cP=SkwZP`iI`SDuFcI6 zr9(UtV4U#CQK}zwyKGn1qcN~`x0-pogfOf%@(_=Cn~Hs>I1j0Gc)D|VhG*C*6{J^u z#2bwj=quPoK%n5jaft+gG~KMs15Y6!K%RLWx-|@V35$w-xnTmYZqpwbMLX{UW9Hu* zr3l8%y#+1^4MBoE!{RGBK;$OhaDit(cSSK!J{QD2!s4ggkU>3^u(1?wAZvxlTTnDR zjId4Ct+FVw>=|BZGsq7|sR(63BaBv?q(RD`81j`^Q;{70ag$;hjIqmIyl~KJ#T#@S z1jGL|J0fzv9A(DwG50kBB)iI?I9R`qUd#E) zpp^wNjx4rlfj8u4g!B(I(-)G@S{8Em&x1oY#I{(uD`YPwO`~zFlc5Uh8W}}W;uxXa ziepNqPt^3S7MYf?Y9Vfzs>t^ir_X2#+s)Y;NkZJ%JSq&P-Bynh~=64I@(K^7H`(8A=d!DkG%tI=eh za)X{z#R)Dq;g*N8;~{zT~l}> zxhkYbnwj;vbTfnPXRL{dXR9sSsk14Se3W|@kF@BmfHLtG&;Z-nP*;nNRcwG`yVo+k zp-yqvGSqR17Rj4JrJqin6`bK>H68h{ust@rxj5hwf*XssHld9b&( zDeG~WYh+Ojvn4*G^~ho63WI$or$l#l|-fmQ?+&SfRmo6#u7FJgf1mViK-61fmRyL({ za`j`$_Z~5CEO9C_^FpExN%!NtyW*gEknR)rMe#N-2OD(Q^ z@fY<#^T{yYuV!<^OWf^Dk-Tf(e|ui~tA;x!I>aB3T8s8!`s+^dYuqzMC0)c(Yxg(2 z;B4x{z~Mxh(j)g9MEJE33h`BGnL!Lf=Kv81%ub6C40*k3G<-M@t{Hl2j*~Eclq0} zhL;htMqQHhiBllCV-$!s$sF3NE<`l|xKMTyhgcK*cRu#Q+r!la1s++cWmk@F5+R1x z7?%VsupC!0EnryrkQ5_PYRCc9QE7K`i!Iq&H#Dv}qFxl~q9a6Hr9x70y7F^+t$Q9% z11oc;{dbf)Lyrh&=Axis^{B!CEcQR-wgql+^XNtHpu-G-4n%eXAY=|W$_(}}&<~eg zA1?fQap1RL*@8HnGER4yha!J=I5!04By|Ewmk4QX2D6VrZR z3kQ!r4jY$#UQtb5sOP)l$gu6 zhba_Cy^vaeX8o}+b!A`t<_~rkcUac#2tUQ7{j$>G@4@r37#YsoVlk|bzrKi!j?fC+ z`8lJVB#@Tz$HnxwnRb(ou)!T2LrPOGFf z!3UfrTkoA&R`bB6U(o-ByN%DraRhz@_nQBhM8NWYiddBGtu3783~m0`l#`+=Ylp3h z!fR)0J#zIE_?OsHpVUriL-xmr+~P!h9wSqruR4n$LrrRxp+!F_BD)@QT{S`DNxrUf z)p?-bS_h;Mnl@Bi{GJ7&0qu*jfsnUg%4GB>FP=ZtpvL(Ia6YyfQ;?zO z=G={?^${50$Ngi39;JXZ~sc6d)!#9fU8dxSBW@D ze1)`Vb0@l#AiJ&EoI2>GekrR9ebG#6w6d~5%4p5~Sxnv%d}hG#n-=W!J$Z4%n6Dd; z$_`Vm$Tg`Y%)8>l!}6fq{j!m8^=y{IFj%8XBNmp?RCLwZo5%=#BOy>Br#pl_Px%GVnrF-EzDMXxK1zS2+$Pxt&^d5jGI~8 z!sr3h7F>oml4*8}pQy}(&At~2wTI6m$w-9%spvQk=Opvnp<*sswYoiPnHg7j(OKIs zY7zY-To*KWdwGVi&AP9-n3qv6#(wR%8(;E%?&7WL*>^L?C`JBBZ`cJnbTEl70Va*? zwMokvhY0Y~Re6SIXT?qC3rjyheH-FZceNR~yVb}vRvtVW{)N{5|0l8ObcX%Hqs3;fW7B}+)q`Md*paYl30 zZ=660>i-EFnTi$>4EXWYwEst1=>ND%_Gcmy`staK`LW{tzdHl(ZpbT$Up2IvEuCV% zzXHf?B!rMOTNI@TNb7~`V|25|;SpSbZO*FxV%Mu|rMRgZ%(1`=EhMt}^vFo-H#y*2 zz@L^+IXKDT_uL47m*x64DuvW-AX|HSdtYBnZnQCPPv&?%*7|)v+Wq2-(6b)! z^)A4@cbBA44wb>?3$RWWmg8%Np%;(06Gu5Nth3kS&_}5tSPX<|S+!qN95h0qut%ZVjbaI@ zu~9L^N?(EwO%h78eitWpqbkO7cyLnBXtBNq>y5h9y0;Eg`#V((=DSq4(VTQa^xRmo zh2%6cIB$|vzRp}aF=av83g zyQ{8yRn_oyK40B5vmx)A`ln(=&!{1*@dAYwrGt$uwvvyo%Q-j@hEyYT~P3TqyJcMXuY`uuQ6Wey3KAZxy*OoUjhPv zPgw0GEr?QW+8ZSb_Nybp0aF5kDq-XG}WuchbQ4Li8~K0s7c4uv@Hkfo`at zY?S07;B0E!5@S>cO%t(vNA0m4@@GL8KCxXhy+0Oy;GPi|V833M5OU*NrNk4D)MG2| z%A`iOlQp`)MK36Mn`T(VhnNxaKz^!+t$WR5N+=rls7__MlCwQiV1v-SEivIeR#T7C ziWOOL%a@Cc#mSr7*M$0A3q5|%dSkRzXSX5jxbCLx+*gC5*Ul%aYOMnPt&WsoydHJk z5Zn!kxdAxH$AM%*XJe=soV5+8 zPvzsjrZ`<=b)Hp->jd{@W{Vl9E^j|a$rNZ8)=#hNlyNKd$P zepuH`Fq(x2mSj%6#cdrF9#~!aR^E1@-?Yu@u#r-twm&IL<%q0ViogAlw#z_$Yeq+s#egr@6hVhF7 z|E2mQ6;HN8yWO6lQ8*|p))^V>#V3E?`7gsRZmR;Dl=pH5Zy3 z$xrZ{Y3(_5#h{AduiBiT+K9~{QvZ5=C{3_zZGJQS=K&5hj@%3NuG6r_4>-1PK#I0FM$NoKmMSWQC&Z zCna}?vIa!G#eNFmSpFv`PnLT?Kmc-@Dj#IG#2;xg3)nK4I|P7iu-F7vrrPHb-AOXc ziKMDTH46#NbPWoHq#)hvO=$nuh(u>o?{+$?j4n67#d>RONcQ|h$=x1zQ`Wu5lpJgH z7;!*4pn4PaQ;Q-8WKU$LzZ6oGbZ%z;6~TnvoYfgtY#Yln6;X}-b<-95GbQ+ORAg@2 z<-)R`^JxD~XCmb~ee}&v z&c{D&dZS;wgTEy-tZju)&dS~R4VcH%H2)h7@0}Z$KVan+46h1|r$62w$5kMSYeWDY zGD*4`T7r4StUj1#+&zQS?FOo?mg(MTm+5=!z-wRX*CHWM?vY1^ky_ShOoNbV`t}5m zT_Xo(uX_>LKJ2ngW_LCj?%oIH*UWAssz3$<$lIA*pW5BKoUWY8RC-}OI>#0z!ESar z?qcJ|w~l}h-V7M0+Q;b^S}e}``+p1cZ%OVxt3T)F1^j=arFs94;jzR2l$HFCzWD#C zD#ib+s;qdh!b2pJJwU>u*eeAOK^2H-`m3l=5;T`LoY)$b^!3%RN9dwN$Q%7eDhmX~ z?-eJ!TD1@~hjSp2S(__w{{;+hJUG`a#7}C{!LBeY#z`6FYif&&=)u61c%i zF%VI->-ZXb3J=Ak9ZK$M@4cJzZCr$#_B`a~NSR0fOse_9su}EcCZ2e?Rir!vni0VY z61k0DTJ$av5@$YF5*4gDbG=dF+LbQDYbFx@rP@Ka5+@fu?;9|=@54aKe}lMm3Q)-d zmK7?5%d1XckjWU0CosWecw5;C1knv01^_+^F<3Ll`D zJ5Xb&Mh=meMQIE(!f>6mce!lrzJdO0RI8PbC?@h;yhi3d_EcFEO+%W9!;sCvpe$#< z*ZbR+VSqt~dqJj@;bAm@KhjV=5%vAmLIw%W)9!I=ef!IG`%231`~IEz7YF=0e zBOuM64Y2;3w{8wH>*lv4{`?IhEdIhz-5C|E2No0yiiH6q06!=Z#9@LZ2eomO1Q1V~ zZX&v=+?vsUC&S7zV3=BP7CBYLYf9OHYO0#DQPXY8D8{8u54G^!6GF+ z*2q-scZyhR6V(ljs=i>-)m*eHJFn0y5Ex`F%2$t^OwAu*R&-#|9b*J%7spmN&E!N_ zPuHbPQ-vN_HDt~~#ere1*=n6^pmt#{GEjBHQ6t$mH@CcpAQTb?&a5AznNo}a>Igz| z+AU(vEZ}TJYAT&SM-oBXs5%+51k)~0zMs@mzHi4CY|KA9uPC1D=)rJkVKHX$D8mt= zBELtKr9aYfL+4+wPq(ousjn-x1k;i#J_kx$vW_$n8PN5^G@u9s*V3NcP= z5oSHe4=W-xzLW{{4?>UP))u__9VwAt=)NSI`&Wjg2m2I;ZA;3Fb;ok1T-0^%$1OtV z6@M?{J>M^%4XWmk^5vso*&gji$no0s!gVfo9^@#U+FZHfxYg?S3)7~Fa^irt@=RuG zwE$X+MHG{7CUVNkAAV)pU=_qiDU|Odt}hj4KY#3osFP&i7tHt#4iEhRw7pX30!hp) zgVX>6Ed2mAk_--6%kr^jI4oT?k1%XXLocu>SXMz`*uX8)_m5u`-i#-G|( zmS3p^Kz71Vr2n`N?Y%8qtkAe-fbE zT|?=-3aWZLD9X6?3Fm`4@w~FjzcR&LDvJ|IME4@C6QV8!s#u`V4Q2PH_Tmt?zapis zpB&^HWHx&)*zeWr>8LI2;#s4ct*x_S-#-O)_4>>vh-fI7N}<4CI|s~`8}}Z{CfD>v z`)xlOO5Yf+qisE^raz{boe!k!G@78hRK?pXN+s@E2@&P+B=8a@oE!buj~T_|CJg;`q_d^zcb!4}UKGFa*t;h)&Ysv%UIm!74l9x=^1g(E?@NPUUUL9IbvO zJGI!G@ongo?Eq{ddZJEr{`~1ULOq3b;sN%0ah4VLX!1K{^B6M+8%>Nz4*0vM*(_85 zslwGxiXSpnZNFFdT~qCb=)-rQ#(`OQ)AxA5#Y%uPC_!s|2rKi+5hf2RlSa_9XxiMA z{%~H|J+-;?E`yF!AI}hc#&sZK!pZY+Kd>RV$mN zY?h2jkrS4Sp_^)&o1<)+vve=IuW3K0bJ*=tJIxP9I6ofq8kaVhdnCsTi@^rXKy_+dvW!RdcLlX_dUcrP_$)uDF5RpqwK20Z9TJy#oR8^I#45@#4$#khz~FoWi{MD5ic}h?!(0nhf5gKj0-E z<$Lp83>5r2GKj;^OM6EDa2MJ7k?+#+tb1k z#hgfdyD}TrOhr(;4OX3iMriPq?*guHhf&3}xlBaY=w#AO^D@qMqWP>SEdS0!Di3tt zGN+n}A`){gE~iOp%oW6<>ab4X;4y%MPYKT1kSP%#&&x%`Jc>DbEf06z&O<&dbJJyK zfnTu`r6yc3?(IJ+kE%`#OY1&#XjeJW)VNkHk{H!5h71dkP!m_(TCu9ov=*vaf{vNv z@$>j4fnBey5@_bk+lWqWu|P^wZDbN$}b5r_g2VtB1G=SW1;Fj>Zd zRfaBco{LS0BrU5k1&FL9BdKDQpuaO9&Ad8D-7Z1`@wR#(Er8tIK3L~SH_V|PndqyIoR6woDs_0~@z0GZd4zTToz}N>e*mC3B0K+q=SRR;jIcZkm)0>;-U%uSmQ`4i*Ok#$|tDeYjRkpUA+~H{wu|c?>V9SvvMGoUoWCtQg$pOGrV-FYa`d@A9#B zFF{--kcIsC-_}Rw6Ex3cbyl!Xn(Cw#bq04e3r)Jt@@QA-3PvhE5c`wPwQ#O`<}Kd> z>0dfQ*Qp3X$=)_w&Rw>y{_v403Lndy#ot!wA+d?CbZAn?@5=R6;gY!o17hi&&S+Gc z9h(vl83%M&Y}{mt9cV5+l<#_%o$ZB}sa;0u=%|oyGLh5Fm@53-S}%*3Yl^p;H08igu5k^} zf3|xow(cBIG_bLP(0D@sju_p=cBkAX{#6^SutWKEYh%L15Z(CCZ_c=qd0Weepu?sI zCe4Oxeq_dkq(?0HA{J4u1ktGUdQ9-BHR)CbXVOEL2@coW&-i6iZFsQp-w)t>#o(>!O9- zf+=Z9V^78xlNNpzlv#-Hd+17E+VO!HX;lZors63@%ubsG#a_*=gI~H>E%Xt;o=R%- zC;43o;l(Ly_N~aeYJ^Jo_=37o!=olif(df2~WO zg!jep3KR}-WN=~`qtTjzRhz=O%qKj;i14kqTc>^C;2SdBVdkaijOk@;oLPfk6|fRo z7au$tHce0mWx$QU!j0yl73f0D7^rm|r0A2HAQ$lKYta^3{|Ux6D1YsK@gL zv`!57jykJR3e9SW%C1}4t){v-G(Mp+0m#&J(TT~S5vL$yw1q;sE{v{|TZklK zH`|bm*=6u^I|qxt`~rGUVaLoaQ{~ngp&r0e05${AJ6#l5_@BUDCT4> zyy?5|>4X6oZCBWAdz%XkG#;(J5nVwLwLtzd&5TTDoc2Xe__vKKp$rJLdrto82{H>93u$TF90Lz*Q8Yq3QE7z-zDuYE21gQ&E>~VHdWZegFY=*GgO?3@&_Wi8Wy72Z?!FjJqnM+dNf2UliGdgfJ z|J*zD@Bj34r2l_D9ZB0i)-J{-P9i@hYzu4a|96SKS^ZrfWd-$ndQ;aFKZpkfB}fc7 z(1c_p`Y9!opu)F;RZDJqtab;W)F~=3m{h$HqL@ z;;3|E?g44~4@Gd>26sxoewvN9KB?$C$@a5+twV+`>_Bh0whZoUFt;Ihm}(ea>5{I; zIH>l)nS3b>b)}e_(wCCLF;4-hi3-cyHM#0V7Sim6!kI1#fp!x3vSn&(izJJOwJn^= z!m`m~VKmC}(RkLS$f!vrXe)mziVqK{_9b~4%VN$brJ3(*PnF3}XZK&TfeO9;j73l| zjx?9C6_!Kt3Kk+&Aj(=Cc}zv;N?RSNIG58S9+48)TdbJJ(jH7?CBZ$pN#M zqbAkav6eg7%uC3La+{w*bMgU*J9tx)a((W!z|#^PbeP~HK9W@Lt(qb4L-)THhfo&u~cLGX#;oU$cOkY zF&IFC%#jRQ5SJ%|i2u9b2k)W2@6_b>Swvkd?S8<9w6=_~ZNjKrlsv%%DQtiE>1u6H zCZQoMBnfd6D-S+-Kq9XC`!64D=>(TJckYAbnI59ava()B!b=IZ)sloiUYRwayq&T zqxs3dA!D|X?@`I(C2D^dX;UifwnUZkG*HiRTLRb7RK69MY=)bPxZFY>UmY`Fq5}s` z6zbsLGd{wNc*sxFGqH-?f&(dBDa{QVu)R=%5!7Y}4+vZ70oznBxM-tloXj|EvM!PPYJJxZ%EMt$U;b{WABcX1_WF3^OkY(y#AvS2 zeu_8h-ZcAmNbO(bvC|#bgQFa;n*CdaMv8&dqr1A9&!&G1?Q^MZEpJP*LBkK_NM+mW zxByK89G0u)M9L#>meZj_a5?(II!P8>-vaiBw?IJZ4P{s8%GeMj{GzE3`Bz3uh2hEK>eX4f!8?zst6;XO6w*a(OTu(6}KSbEmmg?*-to$(Q&&~)dbh+80 z0o)6VeDqBE6g1)_EVU5I&=I7_sTJf(6L>$zDfy*tQKy4h!IIGJj_Urc z+?6@f+I3AjomEHhLZw+d2C*f@#wL}zBjv@&q6$Cn;wT5?dlLSqrpd}-t00i{nv>e8 zyhY3NXiY;(Q=_aCAZ-AG=7;27|9q|+h5sRG`TPaw44*No< z$-nG1A=hqny~0I>a6W--3&6=S4+7LwA8PyW=TlC1Q-wtA@q!ze&Vpgg7oh~qm)Zqe zbU1`fs0&YxhhZYsBW8}DkRt``+;^d*gs%m2!-x#IKKP_`!z>4&)fMre zR$3+vH<^XnpT>Hew5=0hPWhPN2MOIpxIgv;tr5iQB%S|cafH5~Vk3^&XjC1UR*93x zu8v>M{CbGL?XYLDy0U#Mjg@v%bE5ilaanMKGyaCfFCJ_{LPb)jPbfi}j4d*6ev= zAPE@Wr_kQdNG)j;oC69$iR~k2NseTMigr+mBCi+4C__euh$7Lv#esuB78ix$C9(;! zAWu1~Lx%qozsT+HsOnGxcGBg{sF&-q1yN2subLN>sW0*M#0jDwj+h8d{OfjRn} zj|=0$ptHpimH9-wC+m(?I#5H~xVmvh#?y`U%yWeZnDibVxz`HFT3tOWzugcb7~Gj~ zpXZ38WvRT4KXu02FN7v9j5uSINOLg=)9mhqxrN!JFi!cP&0Hp~6J{7R)4>^bqgPF8)5{Ao#1C(s z=CH6#^-Lv-W`vd#M5+XDrvdt@hjVoy%BcI zQO^ODdr;dP(XL3fGe~$(i;ci7AByVqys#g67{bWa7shzjof5kpfjkEN^U$6};*j9u z4IvUbI47f*$&+^QGoGL zE``s}jwn%!_+N&Q zf&LIl8R8h(lQ7K4XmjnmHGsm<K1^pkc=t_Xr)@mimmImP36*6wfFJH^U;(H zQ-HBR55MDa_xly^bM`jxde?KG6+Z7X&@YvU8ID~CYX$oRWDqvvzCQqsK2o{5Q}`Gi z8kapLo#|#&9TtcB#3<-CjiDh+I=Ve0Sad6o!FHNXj1{weQb3<%bBvCY)7)f;xL_?Z z>&8Ja;%ecJDS5O|UZ8fiJsR6hmUISbPts_!qqe`5U`+_1CB@3HMihW{xND=cel&Oq z2(seN=rz$B@VyX;Ka z>>T#0-LsINcP>BN!O`6u*L9(`E`zypuD!AWY3Uk>K3}qky6KPJ>}z zOh9`IcLd2<_LZUdEjofcG4>0YvEdET(c>syvXMVlr=)LHbN4*JjzVa> z5#hOSNWt+8Z(_M_Ovt+fN3z{<^j&sVFmhM2>q1|<5%taBwsu--oo>lmyAFHpZm!uq zo?P*sX~BK7{CWmJckgsRas#)I`Cvb8*j9XdoADhl#dY2pk-s2UwszO#Gy3vw*Ylh% z(RDr&qx2otYulc%$-mJ2Mpi#^qxkCx{EU~kU3T(tUd+J1Lh`npcHTRg{0`;tDP9VY zzlV9c0{zr)@S(ntei|a#Ea5mUyrb zpF#=+O&>a=!Oon_qzR8L6kBJu;iVc{)z?wVbg*o7b1|fnlO?pRDzkn&otC|A2Ae9g z$mCC3+`o1qshCkzdHCSDC9jxj^^{a*QQlfgjm(| z1*rQ(CU_)DUUV24#;QcFb{3*uqKQrTadI`BtcJ*pf&GNkWK8!0+C0Xl`sZ&WhtH57 z0H2i`hWPy0G0P{W_<}qx0&7WiVx(2lYw%DOzlAU|$CsuRvKvn`5EgBYBcj!!M!x)L zRyT*bE(v5O$jkgDRSlEV1m7Y|d|Sn}F%C#e?N1=z*0q4&qUu`4#J~2p;$#CCG?3By zmnSnL8Oj0I_L*{hoYRA!b~!!x)2jFC%dh)eo+<0wC1d_2%EDzBCl|5y3>Y@ap*$V} ze>`AfX3_%LC1+$ZWVC}Jrud6hA4*slbw|hMdAlFtJsgQn{r2w<#!Fsz4XipzrCX{9 z5)icH#zfy}Obj6I_PAZx9xYmp*=)Wa={=4*jUU)MIAOXHr$v}#kieK2F#AM)>B*E^ zU-ruME6_;w1Qq}`i{ie{C}l#U!Kiz1HTW{9FfG2&BKs!s`&N_ww2bG#9(h?Y^u7+i zo-^gxTKJ1L)E6V?WMD2ZHt-4WIydGdP%`ocPn{FKQ;t3A(U38pJJ-!|X835;ov_Gd z3tnEwNj}+3nEhIcz98Gae55-~Sb?LvGD$q(Sv(?%7{deV`|0WK^Cy?fV6@el_!|SY z%@Ir}3A2by+uDuq{4#0G$6g+mI~pfzb4nbcKdam_nXiWmkJqmFPuuORhU%N09HJI^9px(G>AE1RLew;yr9)KPV! zQf}ukOZ#N7gmxyopW`T>bkbO!p=QMbl3R=xGQB_&X&UzJ-=DX@$@M#yaSr=xNr?%| z)nwO(g<{Vo3le0rQ7WjhyuqBoaf2j}bO(0>NxeiQzi10h{gRb+mr+=2fm~M&A;I}n zYu*y9)GGt&C3xX@@6}`&BM92h&%X^4NoMJ;P1Wv; z^U%{%&gCLxbSqMD0=rk-61l;dmKeQ`YIt?9Y^B>A=G^BE=vL%3`EncA@jc8);fAaI z6FOptldKhaxZFXxiuPoF@8ccM&cP~NW&o$+4vkI#bH1OgA0j*}8X;9n{0B95ppvQ+ za)$ba9`!rsTX7fDT`i=xR}i%uYNiq)NDehO$QE_WzqaxQtFxwG(Ook{eJ4Hgd+3|e zT?myTn24sL4l0Z4LP#-0*too(vO%>V5+}IgH-0I#Q9PBSDBc*^9c9+!gG|l{IzcjQ z@NZR^l87M$#j^g68*)_`)B%+j+7CI@0nu(Kzk|#uE5DsJh>8gLh=d9ZQZed18da2t zMpZ_!Xw@MOGM3zqZV+)5huHM|e(0M*s>mS`t+Qc+rj!2gBUOuu{In` zl?EvawO#}@#;BYsHR3S&_-T>$Q4k&)l*+b_(~5(DjCZ4?-kdP!R` z3_;pmB2Ga?kA#+>HquS%J5g$sUF9J(hjOBi3Ud>_dLh)`h{mw+mqox-=2l|g)~Co$Du3nMR$%86Xd zjL7Acb2RyiA}27ab@v=qb^5%0GHpJj>NSQO(T=D*qg4N%?^!+x+z*JZnc4%sql zqpn1pt2zV$6j9kDvQQnOsBBSN%Z=dS#}O4(H|R!9uMymoRLt}T$+0H+4Ea5M61bHP zp2ApL-AcU+{_M~hkru-l@kY3#bDI^HCEv$mscz6-DGup5(32`-n&%Q-DGz-X@($J0 z*lZCs0?ISW9GA*5CEXN-`VyT+lcQ6sUKgM7e0-312porV8(v6Ml)4QR2KnY6@pP#V zI~=?l#l5&cN9LS&vk%dit2Kfc8pu!oehm%-zGP(1B{$Cgia(pOr4;7;a(br}rFbh$cvJut>j3--D=iPU*49c^cLwNUZ zSa76iFCqh{qj6Z&Q#ng787oBMyP>!tP3jA3x}N!}?e>0>ZgH@)K zD0ha2$gh>Yr7x+(cb}kkMAB;_Ofa6;YY~uoV%oM}dCa}raui-K6*BZ_;UnBK9kJ-G zb}NIC;C2U8HBrE=N12bF(-o!)-%jmdH`Y5#EbL{C zErx&3rb1h_wQ%~Qs?#lR4R1Z<#q@?`J!IF%=UHAZ8OuFw<=FbvO(F@rW(}#AYu`G| z;U^3XSDO8?9=Z}=V0y_4-=H|VCKp)R=WT;-Mi??P%P|VX&LV@Ll0wEBrV~=Sh$VRK zxb^jurxh=!x?7^_d67Jm+-VBsZn6WvoUy$I(UzK})y<-}XF-B+irlKc>2`Mz7So+e z44U{9bVnzDtg|Mz^$76!b#P1=u_2)M>apR=9(J*K)Yi9*fPZb0tuzE_KPw+EM-j!0 z6$gUYwt0DtGggYti74lbWL)y(m6w4P3f7#i{pVB9$+8DtTgi@1-o;|UEB=dgXk*HF z#gI0>Q?41)kCdQi?@pA2BDAP+y4J2L$#O(b=)2d)cpFd1)bL=xEKOFAnn*^%OxD5< z)5#~IQcib$Ax8E(*b%w<4qxCjOx|HeZSFZk>do)BYWi}(z`q*|9=Km^41sa;>M zI7vMtyQ+=bD<`k4?z$~KzxC64?4&$F7msOQz#d=8c)Nhn>gKN-66JamZ4s=v`sRPD zRjid+UjHf{T>BlHIFDiM;@=3uP0$hSSw?z@8?UUi{5uFhn-;}Gch^Q?Ku2>!OJ!w% zkYZ(#nh`v%)PHEi0lho`0st8|09NS}D+6O+3m0dzJ*NVN?=Y#t???lyzBhf98D&h!}=1p5&i58Mesxk6FX#ikL)8ZQF>?@C9#N zl^=*tG$ZVQhDspA87DZI89=}Q`ZVO=Kfr{i^Btvh(8MgY#i$Rp7~WCNVMr`E3stl# z`{QeYnR3RbQ1#wtc^W)tK>$M{h(QF=iWF>E7ECc2z-GBA)@uune-TWe1ExMe=Z-*^ zh9EaL#7gK5;VVNG-0*~40jc>%gSKI~PAjR`TO!bcvDZ6n%@>NlD6!93NnS5Mt7Df2 zsMeej(x{l<3}!mEFMTOGsIduoI1wmDTL?bZhoQddZx!BSW=mq3yc_(X3emHBXJLJ8h+V%@_bOD^l;1^5C9Fw9v3DE zy8yyA;MN|yd=oDns&(O=+u-*GB=wH1(x{gK^M>^5rugWld>8+pify{lfV=^E5-xUZ z3a%Zj7t)VN1q^wpcdHlJDascut&tGZy3wx%%>&mubQxX>(S4VzKuhQoM>%aJw4hVa zW5rvDgXA$O7|YaT(!Ut8XHYi`DRKVDcpu_b3E<+))(cRms2Vj0RYOr@UaU&ihY?2=<1593IKN*BTR z*b@@Cre|2}Suv9eKIfefB}!YONH-VF?ka^Jd?=+Uo#gAq$S_s@T}&ax z<}$R%HcgdNwqy6CXEy)IZY-GJKR`T`GET97ze}8NaIC2+a{yG05R90(aJJ`5_FAUx z=SMtI^`k>%(cJB{9rTFD?^BVbsmjWkqj46fF1j)r{*y6pNtC-FqOl_*?hHe@kzRC- ze<;dgIUw!7ffc&Vx>3ivEzrr?G+rE15Tq3!O^2p9@)oc|DO99fZy2pYA7cxPPP$d~ z2LCeUm~q>=zJV{#xE@Vu9$n+#)o;4eTzubFX++$%>+{>`F(9X-5Bu&DXBoj}*@oO( zB3$ty>q=Tgkg>#dunc#wRADYF2v-({R!qtaRC{YI*sKffnWgxd&|sSNl$JrM5wRvZ zc7%dm)1^?QBH;$kuuiLW4|M6dV5}^yH|tzstHG+L+OfDTlDethv6&(PL(l#{ti4loE$_PRJ(JAXwr$(CM{FB2wr$%^W;kQb*tTukI{B|}o%ZdU zv)bOLozd!Uw5qGBxB6TC>AwyJ+Yj8=9`_39Q2;;?VTY#$!;KR)4fS$FV2X!zYL^XI z1B&w^W!%sum*eu%BRM(3`oEjC>=Ljh%;!82ac*>5=cU03V?S^A4g*&DK^#vF#^@XS zw|B9$!U63MB&)yD1mG9tT8gmQDk)u8bQbpsWFFS#mfdR4N$s2a;%v=zl{H;3*4Jy0 zdBEFyq+#DhVl{=#hHC%Dh0&}cAn9||xuP+$fk20?^fW*T%ld_}D%;1FtKliv@RaDf zo3os$uxSSc#(#7ps7C~gjM)N{h+}c>GdhQfN#RPFk1*ia{y-_2soZFHezNu+y$+8) z7&^&cpU$RR7Qvc^rL|gir9Rl#W?xd*Srp#>UDs-@Qya`W`ii1PFIrYtKPy4|dpiTb z>>I6gs00J8W;ne{mu=P52o0>%xhYeo2BHD3k4WLhR=&(J+~)`}0-5A2OXQphd}PQv zuYkr5Un-2710T(isL=YOg9BPKK7lX`UTsIH1r3{ImRdrLK1u{VhF~1qfXXLgagfei z0Ow<)#BP%|9xV=B5l8aOjBx8Oj`)swZ*9o@8_n)G8RJodRH;jopzPCn0$9O!|E~El z@z6AcH}2r<76*=9WuIHY#98g{Z%X8F8D3~bDd9bfHS6tM0E3D0yNirq5Y#AE0jLci zUUH`CgQ3sF6LPVk4<(frY;Db-0`)wsXVTI$U&jkithF-OL^c1Q+f9aw9Ff;hx( zvVzFiL;g>bRLC1T8Zu|ml|g;zmBCT#_{Q*AY7T+`Qgus#%8U& z#vtqVizG`&eZt6&cgj@O8X_WQFq<PX|u?kjnKFutq-1Edjxa(QYr;rz5AU)3EGF z*X*n*$cyYl+i0JitYFPEQ+O^OA!gWPti*n+%YG&N!&-(=5GXpfTfV#C2jO7~y`0!S z;V`F=y{|t+gWxct8%_wtxj^9+jgN`=7h$1q+`|!%K$Oiz)sZsqLw_M#GIRn0lhhF$ z97*udphit*YfiA)d5vrtcoIG@wV9!0^1I4^t&9ZGGNE12a)Sj*OmgoM+8>s=tQsfJ zPM%K&g3-YMS-k2nwrHtdhO0d)6(=PsW(MoTjESZ1i4dtvgrTf*5|TzIMU1xQY&KXm zXD9Ssjov&BZu7mi=2mTE91y!KzPhBc0u|z+#UL<xEi8gO#6V zGT?6!nSH=2t=I`e`+zsi-nn>X&Oe6Q^L|3u_T+Z!JTuRkEhIL-bzcKKWz(KA7_M0L zC&^QFWwDWHXd*ebs$KNkgcPE? zVe_{8Q-f=r0-{}N@+`w`y&rwS*dp*6G&Q*G?@|`w83OL?%TTgSNY#S>77_{zZd8m2 zvrQ~g)e*=xWP+lL#)-+L zQ=mY9M{F=ifyXF?PG$;BOp8i2oaS?vp^Q}YfWWiaZ$3yFIZ#!qm@0)}3rJNp7Hk>@ zOI0vv81`3Ugcue5+bWJNJI0=Q3kD~gOm_Frk)$%giln$;oo?olz=h<)N5|0Av1bDB zm(_Ev4)fO@;*lSO@G>lcu-!{XwhwKz=ixfYcuuJOW$4E(&a_Y$xZjsqUF^?shyM@0 zt5qxb=!Ny;$E?hMn%eoFf46Jc)`-?Y-^z80wXNsg*Q+yodETPz-4qvt2;HDeU}E7J6zn=~VuvV;mKy#tUDI^XWRiPmQ!~fhM5J3EJp|DxSmopE%@QI&Kk7lTI%Ci8;K@9z6D&|IjYNAv6 zGZ&@+UA!gtJIeTyx-thd!AbuRKXx$UboT~BMel-PjrKKLzPlstidZZMRW^OGWB{F# zCj}VW66%39r*lhhQQ1Y^RZ-WvM&12Qs!RS?br-fwdUareZ4B}Gx^TF8cj<7sGS%wpcG+i# zLsC$_YK$MdugKRHA^vu3iI)guUdd7_$vio<=N=${Y@(AdkZ4>fLC_^I0GtfLqLHVB zFTYa`oDAvICNTGtOE~YuVGzcDGO5nN9~gK7#XKd}><-6&GQqT(1vQ-~mYSDG?-dlU zO-w?Eg4t{=J(5TJpil^JuMoFG{ctjV$`YRbMll>F)jm2kRjP|7G4&1#f9W=x@YNx-UDgIqSAD9&_=_MSa z75+$*{iT>lEoxQWcg_}Af?jD4^4AI22E$ytIKb|FH+lIxGRFS)Ox+7>aRgp~Q?d@)fgjQ)WrCjtNa0eG4{Lox$0@3Bf)LE`-hJ zz>q|iZOLyKT_u4yWe+8Wy-`S#j13Kdl`f1=IaR2Q4_{(5VFleAv1jq;Yy{9jLi?{>6x!{lsCM1Z(rvOddbfgYzX9=ZI^La=b+UslTPF z?^8y^9ciF*{PeCm2UN(|tcjb+5t+VyWLpJRUT}!L(BSVt^d`Vi0LBQ6IAM_eAF5Rh z=`DteHa5uD61OtO4qP^bm__jnY$4c`Szg(m{X^28lAP0_A8gq(jwHda%Gg1ksvKBy zlLl?A3T3bJ>LZ3^0y!Z5U|_)(Q` zgMGI)uw03mec>#-!nw;t+F@FYD`KaXOb0%uzAOH9Ha6uA8{fOJM}kl2-jNAIsX))$ z+1dG#sdwE>Ir9(iz>?#a0eOYaUGdzwkhg*8KN0AksgD_4>0Sw{lQ~~?0Wq1YpIfY% zDzVQQFtledE>`lgOdBX{=Cokj|UFQe8!IUg-O-kdsOhnkexz$CxQoP_~I`%Zke7#!FI;LH@S1C|7*FV;ew{ zWCpRLkV!0jai)$Nq&7<1$T|0^)^I4sK-_a$qHa$PTFW(xLnI<#o+r3H*Pzk}Ww0=) zWvr~mv?ydl=~)iAD1$%>x2Mr;<-{0l>ge4h6p=7Wf=P#L?9*hgj+HN&AMW2gR;pGm z=O{4tnj|OPqY}(OjGrf`jJ42jW=)RQ7jh`$q6iBbZYnT$?sD|4nt zdj_#Uh=ua7sa=r)I%CYSLd0G1Q^UJVlI5^W-ZoW=D~u(VC47X1-!d`G__=~zR3EWI z#vD>8Clo(OA+_vPtR_NC_}4%~((dP;623K5>LOckDs;jx>2WPZx-xkI$9!||VI=ms zqIn*gvw8p>Sh$T;R0(o&F>VLRjGtMZ@S7=$fb{!(mV;e!$>_IlU=3 zskPctob+sCO`^=Og=R5EF$gQi-19tAk`c8L;tk6+;j9%5=^1+{&7@hbA@E6`cZIU7 z#U$@Tkc0bIkT(*m7}xD$psZ|u8R|8_QUaYlsusDC3V+u54Uaos2x-E3Y+{lLLW)3wfD3F7vkS+~ECGC3gGrUx<*^`ieE-B2pXDLCDB_Dcw z{P4Ng4Te?T#RvxImj$x|o$C6b^TZ^`#bR(tSA`C^B1s03fx7tSD}dD>)qxhVHF5<8eOn7BztyGm@~oWN{Ht%S3A5qvm}QjZnzWZ*Jm0;ubI5RB z33!X{9N&3*-E&U?NB9tdQ!{s5-vgRVuqU*K?nRJvh)^SSU-a&yMk(8oIjH%#b1`VzCyOHukD;aal6Xy zuH5Y@4{Vt5Te2Y2sCmu`4O+3XD6j}3A zX6HaVKhJx|-xBJu0Mp{T>6=~bh>1IwsQnH17H7I3`$5QK9-nw|HGtU%o^|)_?%vBM zhr3dsD^n4}J4Dp;;Y?qSy583Tpn3;}u3RWQX@VAgAfD$2@J=g)Hf zg*0vBr;b7*JknnDU2S$ zM~_X8&q5)p+jY}}en7%*c#&PUA*q6OmdEU8p!DRgTmz54^hwzrZnI=%;!ZcCSJa1| z-6@})Ecf(W*_*M2`)V2emX*;W0j5~j>FAowzxUCrrOWl}P!sz)@SM$#GKU1lpJIBs z22))B;)Ge?VBlZd*67CbNh=sDO2bC{Y>=uDMgtVZjnG@;_LXQqOO3> ze-%Ffnw*4B#l_cdWUWlW8bCPb(P%)$hqqO}=M_e%>liz;PiuxDs#_4 zTEp~Xko|HmTYfXzq%=aUN4A#wOq7ye)IL5~E$5G_46+Pj+bla9;eHe{((DtgR@n;^GVzK82MJQeh0=MDl7@Vg!_^qQ0p4uok$4d{$st zWe_8l+yc;&4*N_9Y!>cUJ&-^JpImWX%1b!wR_?>!0WnnpxG5A{b(;>RD5@pY9lA9h zrAXW!`B)v2D+IGQi}oyGQ7{%PcG0WysoA+2s=PLOKpBRz8|gROYY~vysUTLSLYf13 z5|k8`uPsFOVZ$|S0Q^X{pL?_$^7e(-u>*Oat|TZMBwam{4|Y0(a!#C4L1&frd6QZw z5iH@ZW&?!P`rc)Cgf_o4yH1PWxb@T*jt=i|=l1WFB07*VlArqlM6xd)91Znc5@~3g zv@W?hO=m7$_3i<%u!oR-ZuDu1s6NM{3n4S=);47pm7)ey8O-TARv4^UOs> zSKwvC(nj!A`w1SaPfhR<-|wzmO_eXd#;f0**ZdOjD_ih;nI~5F5Zg6I#^~9t(sflGC`P8niT(;PCWs4vowGtX=p)5XDJ zOw(ipk*1@0ca)iQc|5CfedWRLPKeoZ++`7b;zzT^C?#W*a@>p_pfopkwbj23IG4KN zs)O%q`Ye{_n)4$2YKPGcqUrl|HwP=adVml5MN2wtVDal&y~Y=>8BHGGK*OuEp^$Xi zQApZcsC8nSRGm*XU39IY!xwc@7U6fVEF`)c#`Fxe%P2y{$QOA;gRP!siu~pnH2L!u+SKXP zqFk!EtZQC#Y>u~vwjA$y?4ibBpA)=^KSD=T-j9_5z&YfB<+JOQ<^*B0E*Y<7tCTiP znjZ+Yyf7K~ie72tu?-e@7IQoaK0hS-PSNw6?)s_T!*`zExJ|N;iK4MQ$rCs^^n$NW@URMO1xIVK!;iw$rjM%mV0v(~m)@6l%(oiTT zUO2tV!M1r0F>1Y=vm|BFdkbPd%Fap1{#`ggMBWDfId<0_acf{_MEFX1T-x`ST3=jx zdPykyj}cZ9Ly#C{u_X)e-+N>MI4`7-zG#?) zY|2Htn1(lLSqNUK%)vA_R%chNTKpmy8s-$y5Q|w|jQC+YDb#;NK{Azz;ozB-XqByO zlM_e^CNav+gjY&>0SJ7iujDE<|+bAC7kqUIN zxhf4TMeS*@6N26TIK$Lu6BZ!WH0K~4w?iig_9xo9Z%K|i%Gy!(Vy{8T7(Re0`rJh` z*qHFck~#I*hwTryd34}4uRgp9#>y~jZf|*u7jg3oDxMj5m7~H9;V5fXC?LZDRa#Ed zZdDj=w{U6Lx)io5Z!R{Bvi3r1UBU{8KeQ$_{xWu&fTIz}6%Ujh6M7CGe($O8oV@Sc ztoQn8h8}_2M{?|#Li>EFA;U))`xurh)<=5nShlFBIX+}l6zUaZb~1OH%{L_IGXUeA zy?@<^Li-cQ?2R1f$ygBV7Cj4R2xsqbqFajxMKLPtccJez(0P41dqib`NQD zO8KRoCt6SN3u|h-5NEsD4ecw?>`t6V?arY%WeB=qr$Zrg*vu-?J)SM_cZ0iEj0>BZ zRb;D}*63K{LWj`W@b3mO-9k~fs>SiMM(G#r3ux`qjbXwIw9TT8F@vh)X3JOy86m_e z;V8V==?CcK-S@bcvtd%(VXjc0;Qn*}e&^u_2>1L@jW}Cs)hS^)CRdtzSAd|}VNCk4 zg(WyVm`(uj4DYk1^EexbhlCE2|=!;Mt#WtzuF_ z)B?b-o#_xiIxWb61?PN(twA7crCDi;^ESnQ@%HCXKC4mDYFOKBTgtY;>RT#sY7 zZ$Lucph4365v&98OHTw$PsZnO5ZRpx zU@~KDkn*@}bW+#2@2h(x zOJRSd!kF>Qe&m{L^Q(er1O-m(jK5(Czv*{FY?#J}Ubq#6szk}w1$&@^0x@*O9EpA_ z0rb}oJ@5sqq_t^5!stbma}^8xcqhNghbCnsa2usDMVfuI7uf^ofR!6U(LIEZIikpT#4k1wWhUX58$B7}F8aXsWNrkJ7~aTOxIK-oI^ z8GYqElSXaY3!WcXN(tZDGqoC=4zeW3sRd(^=KaW^RnkY3KB|sgJxsxNuw|}J)-q4U z2A{^(xXMx26~v+>I6IJ6Q$Q2pC*XEG{cK^trmVOq(C!FkhtidmKn#(6R z;2n9jmp?fFGt1@rw-alZnCtb~J;7JT>WpvVR&8)Qh-gtYz?C(M7&;DQDX+TX$&dCL zB&A#9b0xBPw=l*2OzE}R{Iy`Egc9AaPH;9>0qk1Cq{yz+X(^I_Q)evhGi=MhyaW1j zE3o|&a{Vi~q#(CvNI~QyJEcHx;H%)_ov-M|E^`f$0dX#Btew*`d%`H&2H>1k7!`4# z_o`k30E2NTUH(Q%X{`G9%I2Awi^Cee9X(FB(FOn3+-l9GQ_0YMt7RZZxJgQG?1 z)Kg1qg>(sP(q{eZiu8?0$a4 ziOwh0he7p??>{z!I~P&(*Efxw>$~je|7Nh8a^g%A(|V6Xk;dHKC&JEZhdf%;QR8v<95q=?G0gR(+pZ_C-j+s zs_oxZ;IM!q@}p?e2%<3Z^Gr+I!-Dw0^eQmy4>4&c^<|2NjUCmlCteeWC*c!M>W}tW zaH>Nw`Sj|l*$elSbwkl+%ZbIFYVJm*%bb+3lG)cXXW+nDEj1GIR*JV6lhAC)nBUlI zve%rMa+H+rj?`VBE7KyCDCV^cVMv&(4$gzZp+-1T%!^Ryjn3C#Hq>=Eh7s(vq+mci zsh7lKY+KIMreK^&U_k=SOf4PfA;zY2>5XMwV2*`_az{4|Oq3pm>zc1fh_Mg#@)Fpj`%B@TeU|Fk?3KG-1N`4D>rR41+XaG@nKgF zsi!tSH>g*tpk)atUy}yVKX?|x#py{G-;12Lq~oA*Tno)x=f#RbtY_@+mMtvX?OFU1 zHd1t(D{nDiEJMF_S4fy$rcsToUoy*GAyuGiuVCjyj?0d0=%Y)w7F?;Ktf#kcnf8cB zLy*FFZ(ycZj1>6>SLIEYTS+ok?QdQO8XzCGR_!KEl6f7FWmEIhdYfGF^^A5 zZROEH{_+*nXtW^AnO7$!M~AmpT{4`5sE68iG7e*7Ym%Ps1odb1lDio88z()YajS0g zpqVIG`)ryi%lWf>WC02j(M6taAQXe0U<~|%Wz^meP>jr^V#^a7(5xh$=oBdcSof2m zX5LV78-`$N$|z$e-sf$nM69_<53DVhZsVd}?ecRx zo0SSUX7I4#+wVX*ar98rUn__jQ4QMXr#=b$sXABVVxg2VV;JVhLRp)sHa6SJ+R;zk zF`mX_=EAs~dn81EACWtzSQ+>M+EgkauGd?q-U+!?zU)zqEn`)fu4%NyYE2^2xL zotW@SiPApp${(sZNdO}Ie&G~!hX!_iO!M{I@l&lZp4kEea&d+`fF3tpC>$ELNxnry91!9B>Np^jxcyZ`o<2`*86 zMu7xq6gvWBzzRevugnLD`i~9~G7Lg!jdED9GQu8=P{Lm%G<<2SP zo%mi#0Mxr5tb^`Ox==E7Y+YNAbWvj>#QIGb{@15t3DWBczkL>?TXdbRI4BoJx*VD^ zdZA;+3SXe9(;kk8J!B^XM|+QQvptY&dZ1@ZgdJiJhtqpMegQnAA9)skUmWg6rbrdJ zF0%BJbc3o`S30JxDQ1I02|`UsdYK^N&652G26lcxm`%f|FwekbDEb!i(a)+R4X>QB zMaR{3gQa1|EaSVD=dYw!wwbOID3@uu8xr3<*`p+vZd-<5zPdZbrp{aEO=+qm7-;1Z z3@jTOwVm~z)@;iUz9)>}GTStJrwta|{5f6-%{F0i^&H>@>{e4}Fa?Equ|N)cu-H=D zJp3PQtHHkCuPtzhM@+C0&2MtD4#IzWjs3R^{r-zvE^A=xu4HHT??TEd)iot#K?Gi8 zU~HlNf&e$58VZu_ifvXu^f)S(T~bPX8a=j5pioVhl$CH%ybsu~0CY<4Ymmy@9{fM& zD>Qi$s3aui=Z}w0Q=HzW9&G$RzTf<0vcuVy;1L!Y8Rs3gON_JX*7bV(tzM9j7>gZf z-mz=inyDooLrIumwzmn;B{*XIEc&OYa~!VYq(9K!N~&tBzi zs)rT(NxZi>^b$)qn_N<9N6YE+_#(sCd4yonLHcf8@k&RMsRB19bp{BZiNOfKyJHNF zB>oty6DrQ=!M-wdBqIJ96 zZ53e)HE34?!VRLCwdJSdgR-DZ^PndHjLlfQKWQ(w*q4Aql4#rGcfE`bni>aJ{#e0N zdtx}4=F9*C2~UwkwWy@8%U6sbLc+4BB6O9z4wVHOtlN`r#q}lU^XgY&MeYn2P_3e! zQfxZ-hBzPd9tGzBzqe#i(xozYxT&B;v&>;`khMe0)9Z56Tga@|DEM3JaD-IuG9l zhMhJubUk#JebZt5d>~A@N_!m#6rCgYV=6@R^6`jh*6F48bduL8v>e1}l26eBm8(W` za5=Ua5g2d6SU6N&My4TXj<&5K_;c!^+0+{YKsx zQB^)!C3Vck}bIGHLG9n82V~@)w%Df)-$L{lAb%mi1sD&Kg(=6+d|LGYO z{=bl#|2(5=<|Ym%|5a{os3D7^e90pHiL+J|oKY`ZEC?YGD+~iJ@WU5ngveLVTd++4 zN(tGhZLiB)mVf*BSmt{iFq=Z8d6+lK^^p6D|3tUB8YcrH#3Otptgm;xdOzHJYk!(N ztnu~ngxRL>fyo0hQYjm1!Ptb_w$Vnf$A;R3?1rZeBT<5y-5o*2LFf(t0h=fYFrb3K zorBthB?!a>75l-;Fd#s`^20@62Bto_wto%{iQF#>VGD4L7nrd?W6PmN%a=dJIDap1 z#olNx#!OZSIW!wR0te>HMy~?PJmJ}5s@*tF(^vkP#EDG$VS#rbsksOnsuhwFzPjEv zQe~cD#(e12P#dT<>D6qLN!eQ|b(|P-xKA@VtwASeRuq{>rL62hCacSUgYAnqZylp` zH`8xzy8OL5Tta+tISaeCVeIZaT&7+a%|Qg#q{`_p&(>h`HnTZ_43SPn_oReZ;rYu1Vy78XW0 zJ;Psh>z+)g{P`!yy^VU3hBbI-|_osl>|k2@=WU2CG={?F+&n}V0*Kr6Kp!k zAdj+Q82$U4ULP3Ul;KD}Zyf9~D#&H12f!VQsM84h84ZmFdhsUcg63;XoF-ysaxjS; zmr;`1JY#IHts#@-{iJ|)(N0brh^c4@%AhPTgr{v#HZIpz&;^~xTwIyNUsAU*a~vk8 z6eH_wHds7LS$3Rk+-$g@lmeROC(l@_$9kPtNG3U3&?<^@{M2+zwG%1ATVWYrVb-`~%5bY)5D3G~!U>>lP8B+r_BBFFB^ zzo=p;9Rmn)@bq#EWl0w?3^VEF+b+mji9O4#e+{%S;!qqYQiiUM%0SGx&z|u0QD`IY z71Iqm)QmdIN-Pw+Ug8q(@sM5Ouk2uGvhCaO$q%UPrClQRJ=%}do)>gKLatdGhARDb zQ=ECix>$a{K-<_yJLP`3&z8l{zMcVRc))pmu11WO;47z&KWEMGoR+wnXEv{%UKI?o zs0!cw3_?e}=fQP{K;vwHkS}sa+&t9Vi4@oDs1pV71o+OsAxO2;Bi#mjjg=WcJSfMU-F|~|TVIRD9MfeE8ErwrEZ34+{?R#x2Un9Fq7$wM6^8AhsXzdV3-DlxIQjc2BDrq+_Te(YsfvLb-$wM zz)+h2CM430H@6g>lpAFjmHZuvi4xYKJ^(e=*w`m(5V)+}p@QlB?K`>@FgLbg9}Ln z$4el)VHn(ag(x>;H|2up&woMm67!snalQp(@qYwy|F_%A|BGP!|Ha}$%9h=nD#}pT zl4ORSt+WuN)ren@-+SHzmXw;rQWgI!5Hu|dXc2^k!*2WTXk*|7!);q?=hamjOTLZF zMjzf2L%6T8Z-0X$E_op-Qh1}q?f@U(QI03y(Q}s7*UeH*7f{+z;7?K?kH3)*2py{o+YPEHoY&*>RXUG zzU2?Vq==O|T`ygsG6Fb%3sKR}>rxI{RHTc^e0i*~u%mISEzi(2a@+YL@-sX~U5s+s z!7W6J>Poyc__B*dJAjL+mxnc=gQ>M#B7D{n<=G-%N>k^BIS>#N@; z%xaZ5)9BI(K8s{m-j8ftLv=~0M4oWuxVVDSD}(`zjXBW4?;%{p((K@Syb=pn!invuqf9ZhD`n$n6vQl2&b^w^ z?W`-#z`KS|kOWfgYYzI?tSuz7pv&?l&XphIn7us0Cnmh(!PUz6%nL&@4~)v*<4LhE z@Y)sdsa(KMgjH=pW5$T~@DlV1k;p5ALWCXHXpm(=%@d&g6v#k;W4d#YfnT7U^a42U zf248%B$OhnztbLs-vz?M08|6L@(^7j`v^uzc&KxV@)UoB`$?RV8-!kQHT0U3W42(R zRa{)Sw7tUn3(udtJL&Uqow$x zp{nTJEdch>mK5G_BORxa2%~`|J1^*7f;vf$N7&Au=6mOkE%` z@~j!9#neO$!5Il}axOBx+i@PTQpmPOROlv;xoagPZ4M z&AB`0t!g_MgG+b-IlKv3DdK@j276SJ?uc(ZhQSOE0~eVrV(-}LRfgv%%Y5b zby;A1aS~*9`6baw@vHuuz_hPSc0@;;jZW#MR-&(tHKIp2h7g@C!X@TzRZcJ!+h594|HKe@$nNXHx4#yyk4;hAO$}wOw)(BbBfuCyMXgbyGauS z=E%^9obCnnOEd8_8V&pHJmy6kO2YerRGY6d>1JV>G5``DvGck6jMN6D{dH09T#0qU z`1BrYsVVW%uru>SIn{9?GMYt$A|3N@0kn@dx$UO2phAyI6cxrGDA)sUAVo_UJcdU_ z8*O@tDjKa^PiRZO{a;CZC3{R_s2oCaBl-LqDLMZbZ_uguQoQ$1lk)8!K}S5Vs4$Rp z%w}g|^HCKRH7GXH#r!X?3H5eQ#WAmNQv}MC9NrbpN`nvCQdFl~zusP_X;Z5LXmN$3 z9K4x?0$H^S)b_Kv?D6>v8 zi&0M@6k#Gnb^%37i$nAW+9C1;pnT!xXR|}#3zk?w%WB0UybL@tiA@P&Cqji6G%7_o z?q2~{#~)#b&Bg3Kf0JFzi>6Sk+ZpZRLw`h9-RL1=`bIb9@{}5^nUA_mAK^IQhNVZu zTI4GFNiHqGJBf8;;Ob?%HDhGO7tCJAVq}C#C9(_e>*7J+3Pb9@d4_ksK3!40+V;YZ z=cDH)=sFe+ci=k3uRkC?%0q~RO~&YBF|&k(9nfS$&+@aQkC;w2;Xiao?~-LZc2Bf# zE748)02#0M>?qm#M#o%GWx(B18#eE-nYfpS_;jJ?<3k5YinNH5XG4rRi9xUt5QS|q za$#;3oM9XRKZ9)Wza@2QC1wE8vo_zPpD8qg{19sQKU>AsaTW3ei|LLTjQ{|Ec@vH{K?&3Mny_8&|9r7vLk1$?CVtE8u#=nSEP-aw8pY z**(}wOx^GZTIZZ)?NK=xJ58((YNgIgvX)I&nf2CoDvC%QxGCEqUr&z>wRLv%(vp82 zKG^&88tf~@rimOTTzze&Zudjv)+)sY!Z?uS7KE^hgg=h=&rIeI#7^m-pQBCg*Z%@R z7asgU+4`{o}3^T#>>c0)zzmxD&wR1V|!kNivNI zt%cZtgcf$!G=J+iMqE{(YSpQ*L`vZE)vYe7X`TIk_^xO9yQP`@mBn3OU(f8CARF*; z=iSQec(my_`Ar^loZ@_%@^<;) z`HusQts~&O9&fj%ADa1Se2(^>?!e33;!g1j+C#nH5q-k&@Qd5G<~EG(cYjfR3dH&r zwe!zxAOm57T(kSzJepVX7}p(mixaBccxwlhI8e2=&#Xv-%0Uh<|SUa zQNONx1V5P;I)(Igi`$lzp3mNM0UbL#U$;H9@3J0l)WKhwU9tndJny*pX@N03WIOU z1SSEoFV}MEWimv-&|w8aL?vNi=`x}~J!wLDk&02ZjElIkvN0uX<$NuHr-w$kyF7!1 zGIu>1qfS&Y#fD%#*^;m^cN9Z!+rU1}^6ACngWSbImxl_Bsd(~vyCRl)QWr-%@6>nY z>H-5oRA`EIX%VD=B*pf`GIgog0{}olQBo8Yb&O}!p$M&xXoR|~tmKgu&x91#1(kOm ziC?b7kd=3FCQ{klsT7IPif7bN^v_~pNuQ zBTQ?M?kTXt46w`13C%MV_LJhoEsCwMS=VGlxls*zR|G}LQMJmJr3Toj+RB!53cTbw zv$1jo2hssvxe>U4@8QN3K$h@8D5R(jZl+MfUxxRf}lpR<$7tZ4l@QXxO(xBBf>g%~@>1r${RoL>MUubYyWCzE> zKv{VWH_WMI4H$v2wz7f`vha(1f55G}(196TR@A~an7V&mR1nwK61NZ*j?)i`C$j-$ zR_BgxHuuU2H=-xa)VqHcoT?NV_KXwuCM>_jJjwQ zO`19BQSg>F6V4m#`b%oBWW~_0U(slW0KSZO+l*qBsI-n?Ze?*n#ny&^;cF&-Rv;km z?HJ6zZ%2e=_5>Ev#-fzEt0ZmqGfj*a?Pu@9MGxCPOCTns5-WW*z7W@6JzQz1Fz%6u zPX+HE1E8c43yc^=ymQ^4?8pStGTJxq&pr^VsJC`Pu){1C0?y)|4D&%(9oahq8fApF z6NTEr^3)IHV3ryXM{?#;KR|7gykdsLxDhho03xw}u&-E>$6b$w?aDt&7Qw82SvOU- zaRY^hfL_-E1{Q1ttGHRoI&C1Fo&#wi?RBn;38yirsx7xj^l1=u5W~z8eb*uut2hKy zL;CE#GoReon85`bU5!ng(|7`K1d+8SR-VFn-guM3)i&xXtJFd4y(c;V$PU`7PcWO7 zz+*Nlu(HYFJF;1HU-7(r4`#UWPL0fGK_8u+5842dS)fAGa9`+264l1%X4homev^wT z8~?``I%U*Rk0mBwapu4z+TolOv@S8h6iK4P#-^q?NC6~lgg6Y^o;8Uwq@^1RL#H0ticSt)u&KcX|?dq)1h%8Ijnj(hI*MH>^1A0U6{e?|6i1y zQ;;S=l%>nIZQHKuF59+k+qP}n=(6iC+qSE^Y)#MXZp6esOzb{oMn*nooV@p*?(DrA+Rn909pPnL zn9FXkEt4*yv+N}tuE@h6%?#Q;0XHUv@K3PAx%sLmGXoKrhJfPV?I7aFnLBS6_le$0 zy|1S0FkIvjVk9eUEHqWL_H4BU(4bNlQl@R8ooN(i#~GqtV@xs;jPGj<;out1yKw;d z&TlX80l)Umj1Y%pd}*P=mJ)+3jV!9} z1+yUlM}Eov&uuk~G(ZQ`$i)jA1~wY;cy{1F3hZPaQc_T#$T& zwW>YV2b)_^`xXZ?XgIe-w*LZMuCiHc4E4s@`w9{W8VIF`R!f~FJ8Yb{QSKZ;eP3y* ztFQf{!P-#&U7k%{d%jWtqQqEGt!N*e>qAZU|iDd-tNt1f{GCH)y5@%(vv!y;-N z2fn4ck+QU*6p{@cnZN{c3pEUdz({A#MabY8GttUhpYW~XidoWin^+aKS1E?LSs1x2 zg~STT+XWL=;5xq_L@0_MZ#ZP|kQ0?CLYWpwNQ5MOSnE~)psX!P1VWf}@j59#0SRT< z5(;St#R_yFb8FeLLlWDd+BDEygVAoF#6Wl8W4xSm3PrAqR%2}kOHqru2!Gi|(;!QQ zv$yMk7m$?BtQai87D`2138lkDjVhb#3QrS$7M}cHQ{c9;g0U0}{_@8hr-&N~GE!Sw z`b3|w2E4Shomj%su2@Gf zZNh6(X)3LPBEq?-Mjp4y8yi7&xnl7KMQN%%9F?#*5mp|jN-^4N)xzA9ehiZkC{VBn zbl@c@mpG`9a$WBPPgjI(vT>>KGA*}N210%|$}E=9K^&M$cxmZMg>NZuxgESi2ua7% zv42HV7G|E~leUlQ2d8IlQbJTG# zqxO{b0_==-_oM1j)z<_%QdCiEvn%RYm7$y=95R|IO*-Gi<@|+KN@vh3C4ziR>D5&# z@~MG92xQ9r>?h z?<~MT!0LpGQn6DN4I*YCkzikO*gqBsMxo?gj8`?(e0NKK+Fa~N`nVu>&sr>L(65uw zR@kRn1+PqP6W(~$N-528dtw25K<4v*27t&m&6x`g=iYyj((zbcqBws+3fgZ?h{vc?(6qrB8uZ!D^Nj`Nh z7GyG@veXY?QN zR3IB<#dL6Milzyyb#?y0_-D7`s!g{Q4Rt1g^z1(79m{QoHG;~lW1U5n67av492=00 zI;FwzwUSGlOOjCmU*Uk!erZ(3_luM2W5X1=XfJL8+?u=($ZTT$fLnFRI0iy95YuIH z@4VXhL`}Nmn*`_~RI+t6XK0=YykpKA0~0GF2V$u+SViYKnk65+tkJ|jSbm8a$>Lm- zk|WqV)&!0T7|TfWu2t0Xb8?)L3?uwQ?|@ZgX_(~~18XYUYg=j61dGFgf0>oga;AAS_2eK`SQ{5i$ zMEQs~>RdyrH{VH7R#eYP;leP7<<=DXvdui+I*q3!A678|*= zh@qme)v#=G&s+91OF1c}G)=o{ETZzWAc3N9!$ckTN+cV}3p8d{6Oxe~n(~oFb8hUn z9ywh3K}ps=E^Q_>EaGxDLcHDln*(fLnoHD>sEViRuLx7b@ya`Q&=X{od~QGV+@T;v zJ$d3}%ZU56(gL8zr`!x>aWgXr=tx@&wAHK|2?-m>x`~LPVl~~#xh5-`%1+Mbb+KPg z?vEY7C<%EEKPK=4(a>$_i6^?u<`u>rsmv1)W)=~%P>(4xMvZ)+2TPpUc)_w!d2zYd zOCVc#8GXtPI72QrNm;fa;TImOeKsjU&Mww;Lwh2BHZD;1-c4?Tw-VF;$cP78-ar^O zTm1uR0cvJlQMOG8^Kr>O>xsmnhv#nKsj#LcyuRq!3wx{Ou#PQBN6n4bHJfF@-!4oh)3747 zNb?SODtcYqs1P}c5==8*+35Z9xip99Asj_jn|RI*G{|_K4_XV(BK*h`Y0rx9vR8{!Q4x<*Xc6Xq34P7l8X7! zy7wLeN|txE^rf+T*XODby1+!|3cG8Ydc*?O-yJ;B%50$q)ipV~RWz$j12mH*2Nr47 zP3u#ogS@wOFogZ#G(I5tEE(&w2GXY7Hc+4nnc<$Q&lKL1#X99pWsd1ey*kr6T- zdL0ABTNO0FN-vn#6gndR0+iCtE0(>~>YI|+lv3>rF#9tm0E%7NsoJ-dzfB37;c0N? z@&67GH>R&$(`3(LR7}jKXwSE6aPJODs;aIJW${ngR^2-vW1cy^4Bx*hm(pktPN;AM zPphPEruI}hK`zvNCb?G9<-@;F^(m$Du9H?dr8oW4c>>OC7#h_R+fXVU;^)s)$g1n| z7JrXP=PjKZRsq1Ws@wr^Du0U)3Y?;=KC{5~I4A5?kKIL1MJK+h?t!|Niuo#N5UCNp z(Mn#B?mms5F|xM5|9#orHC&TJ>V-n<_i@pCLx*U1qs;74CO~N^m~*7!M;k0@vim8j zYC`m;3cLRO6Mv7$>6JDaE_qO)doCGM<`*`dUuks08Wr+YH61#NX;42&7-Q2&n^n@_ zipGj7HAc{@t@EASQ}wB*j#ez=Q}It6P7tc7NgTY1*C>CN@C_LF*oV8e1ar`MXYd~= z<_#0m$Q#b(k0BFUeY8~Z34`35UwmPv@<$@t5DPbbOD)eT-EmfVqg~#D$Gt)Ogv{CSx%PFr@UiHDT6@N+}>mAFcmQ&kT@&#WsrTAC#iF;}v`-Qo3`$SBL zQ~fBuSsdf1#;fkAzJVR{r(#mwY*G#q!>GNX9fQ&csJ-3!Km-#bzzA*qfNc_)9V;uv z%_jH>q^B25D+#FYOTS7TOM7y6W+jOvRQU)lFb~rlJn#h5lbD_(*ATcyRryr zT@wYl-A>cc5>4aEX0gDMBM1b=tEvrCR8LJOsgxBQv^(h4Q#5xaUn{L&!kxaev-H<1 z+_7ME6I{M((X7mEVpjYWp)o^_etfi){j^miLT5LD|(@hgrD2i_7ESTyprx5 zDhe!IxiV89#m1Day^^BTrQv4?9f-(VwRNdHhHt4kFA=$oSw^snrDXYoo-J^~nqR^$ zAULQ|&}1blN-eb+GrVBCauYgy+JIk{Y{QBw2cp&2khKzThxJ=Dc;BKzU@T&;nEfEy z=NChEj}M4)dFV$=)^Aw@Bao<>F%Vw=_|k3&^4O%uBrMuCNOrl!ZO}8h1zvvC4MhxmSB%l05uAJ9Ur#EDy%r}vxC{h^Z^bS>Vw2E^g71utX z7dH?Z@vJ)CW5cVL()V z94Oh_<_5@-gIpTL3I4(OdfGFJ|I&t^+MqM(I!ued@rtw5Zrj>z2g}xPU*jKKAU-$mzeAb^fn5myEj9 zfY>f;+z*U%q!*_&iYvhh`l?A9O`Rp3unz0Gf#bBH@USb@B>Jl1JG=Z%`fM2Pt@z%* zMwMTRAAYTV{6f9)i$zHA1`P$heKDr0Y3xqj{x^zrGU`t{$=>TL4$S@ zG*lN5@&iY9w-|UKN6Q}rtMJs|nO2-7C!Gj^^+c=afh`+dNKu1T4SWzPboyYJIS|wi z_$5R9OjykD!F@v#uaGgJ>4jK&fyVo)8Q}GT)St=pLj;TLQfp3aAZPY@44E$CEaM~i zlEow&^WB{q>^r9xHx1^o^AEnkqqHLt>cp;GMr{z@$)DF3hY`-Y@j+Ga-iS3Q!2}^M z2NXTHEHHlqW44)+2w2TKV4b#+$1cKb99i3Oou2zGyf{rb;ZS_T+=TxU^!zkO*W?utV6hQs*~V!r~jTnU@(i8Dc>yCSoc!Du$aq`JUYnUhwT)6$%|sZ2X7 zFwcsYZjHAaJnESAjFP@7TH%tZOnarh@V56d*kb$!H90E-0N7ODe z2&D%xK^VlG(PreniN{8zVYbB#UY8TZq*RAK0g!v55_XM5UGE4`d(!h)7 zu#k1DAY_ZB6;P{*t*~r`&)cN~Bi-#plD*4;1tMwY(?(B=Z0&f zYa@YH+}VM-;aDEzj_&1(QwgvJzMSo`$FU!DQLNAv^6W}IWq?&8G{N(t20kVSFOqisI`8wk~?mVC8P5q?Or6Jf;;ocAW8 zpYS7_rPa*-;f-Y-M4=TD%r?;r5PHm^R^03Cj8L+_#1?YRC zNvdRQu-ESrZY*+}l}zxM-6$=6(Q_d=)jY2MrdEmKy8`cuXk%oqZRlfNR` zZ3Z(f_qs!Ls}6OF>m56A>g9;GC!+f!Aq!Fj!A>%-WN-=xsUI7h=d5z9jg0DIBRe3f za&6K%==q@6<%i|Dp&rypv&foAP3YFY8Vr8X(NUVpiPlHdMRyt^>tebO8Fez8hmpHX zi~T#}K0}*tt-+l*^HSo>5m9#;(s9wRLfPD=X-E#tu;VhF#eTSd%|{r+*Ygu`Umya zm|YP6mD$>;UFgRefk(nNM0|7p(Bc*5Ey^ZreKYSK|1<4t%Jw+c=4khoUD|XfvsIJ< zSPNlsCMdI@xw6Y0ZdBZiTsLcn)`4#9T^&GSeX?OWKGCbolYhCYzE5(lTQ5*1;q1Ip z?b;LQgYT@M98GNE=~2q0Hg}C(&4^GkVQrgB7-iQccAC>0j+g)MUbf=xaDUtlQh2XY zIh!&J3d)<{cYdRDt`Qc;_OubI*%n0tZ6N;vyVcfuJ~2-)oSIu51eJ6ig<9$zJs6c^0qU~-)ir2hj0vQ${vrLFp zjY-8CeTtyXlHko^Jh$mch!q=WT#6bm{oLwp%Ft;eM= zMfS+sS#PNsnUge*awG9>&adE^^rbZ##h}02gy^r8XGFxbDbFB%t>R zhjZgpSR)U;1|#X{HV|?oY(@m`0KVpw0)ZdOmPKuTg*Xu1y$%OWUAcn-{P9Knc4&1o7yVhc0rfFK9qt)9tNyEu%Ml1oOWrgI(6 z@>|7>LUl9%(H_@_`ymDz;Dk_nHZIaw2^x*3Cnr!0CU899+ zHsO)Q7UWEnLrXCuzG;p)${0t!%4#oj83~K1Nzw-Xs{1>XyB^p1caO-3^2;Da=)sg#wmOp0B;EQ0!t}%{Xxxf~khCM53E`)ME8^j+q zLcCJoPBs>jTi?j(L8hc%P{FUl6eid_ESwb_CfE>73GokcI0^6N2(d1`;?DTue+ro>Y7mMThJ)qh{7Him#|_|bX-kiF-bNcSw^5ZlRn*7 zW3e>2oJxtfmIzxJi?p12j>9ceVbrM1rrZWuo3v%>rD6386Gg<(_h0P6w;ECi!ZA{~ z%bt5`_xMUqvJ(eY{mF<-G-Vv2lJn>yFKGO3kdWP^lbOn&eSEE zPDnFau{(q7=%UD6o-4FG3NCn}D0nBgD`CQ0z5s#vsSP-kVgP6;htN#fWmGQ=+MICc)K+lJ z{rT2@te@eJ*9)ew3^JMfS!@Fi;;^awv1mtIL^|k z4Rr5kWu_>c80A+ipD%^dX$mk%)(E@$t?XtYRJljVd@0Ht3FRYUON-$ab}Hu;vdT#| z*aXHRRns>$UHu3(Qsd@Wb0`mBcpszRf%s7i&F^d|&we!u_mv>dL6Sb=2@FHOr@Eb` zKLNih0Q0Md6U1C|itSZtxdgjuvmZ%GDAgt1u-_Zb_lV^|-ej=~hKNec|vv;(h@6!U+*hj&ck3tss1*3H&CEpQF5ul$)z> z7VfJ>oTDUu1ktMyu8&)EN^=LQb6@YjahL>FYf+q=c=3$%}-d5qDx0A#o5T9WV z%CY3(-gI>m8ylwwIKf`2v`4t z3HoIe7Ps#`#?i>A;sK?EJe~)&<;ITV5T>(+P_?MC{=FIhQ+-{ zFH-m!Dr@>{py63rLQP=kE{oOi90L5D17-mpX2BLMhe)bm}6n zlW)(>^SA@iPIhcviLN_kHW@2xlV140_U+ZL379WaT_b=Jx1ZKCRfIsf29H`Qf)v{aTc5%37F*3>@uPnaUBZ;TKJbj$ z&o-Jte{-@Z^aVl3!+#y#TmhctSiLoEk+!a5&oLJ$vrcKud79OcYIjdT;2$k#c zjW~HVlnM8UgSin8byL2`?b@3OU6jqZH>607aV~|HC2wtsfQFnYb?FnsM06d^Ah*J} ze3IlbQMJgL-;p&gTrMK|NE77uD(8BNt*SWbloD4so*;iV%plZATC4F;+K0TP_wE-< zR8}=A>!cGdTAiw_ZB+8ZRO(#|ye#Tf>XUhlrE7x}^NE)IjNjsUDY}-#Tv3&_uYNzN zOcoKyv(sN(mUat_Ph6&fRo10Hyp!QB+e$o{K~_b3AG?AAlHIB%YrFr-BwPU5r`&aJ ziMe7b^=t=Pz56XETJ3~bWO*tGxz?s$u%ecD1*`0(X$<7%61B%V#k=*P@4O)p*h<$E zT#NNehVARohDGBsg?Lo6LhMj5*`$duLDoPqoDWs4#2E}hSkEk~w;ElyByzRn_CShV z!paKfa(TMApZIE^S;4~lPFp!n=%()ry%;O#rVstA3o)&`mRb&v03xDo`RLp3*lccH znhD5bmJkXRG#nJb)caNhx(kNH`Wiz!>#P$}tcf>W`QhBR4M>bj1OXDbhvFMpgdAA* zad#yq8b*Ap(-Qsk68*Kl5qB0!JRaq7O@i@vi=lsxqx$V>Exd2s)vkN+ed>D3EOyXv zZs|#~UJ6reP0azK59f{QdUZ#AfCmfl?h}fHnb!LCxI51L+JAu{YJ6pP^&f9Q zTGn+Dk1pGm6fE}BCZI?P!zG2CkzVJ}3 zzj&)2vL0J~CZG@1f7AlZrIud}X@fpKDgeACRyoDhj&j{Nr)x`Gqh$cZ;xmCDD<7!k zS4EY>QM{$K3FR)Fn}jOITv7jv$KpT~_HWdrdoZhc=*H+hJdU?Vc%~*g}ns! zqgNEjyHsH$zK!z&puU8k-zUHVRu84Ug15UouS(5c_dsu=5hvkFeNT$fyB8nqKYjUU2XEtbE;u&I3WCxkFLJYhZiRdEsP#_jHf+Ad18(qp;x+mixEmpU2a=CuV7uuMKX#*hAljcdcajBLELTFho|NmO)r}Ae z5dWqz0kV`oLJsxCtwtF76pSG9WBcpiCp^)GQY=J$fckVnKNiO^B}I`j#&Kdoc89V0 zG2&nU7RE{9U;GARTeJ2Jf@Qha!^G0+EFn6K>9OVzbhtjXc=!2`2%fQc_xcbFvy5Zr zxAma;1E|Ld`S@H%nxA5sHlOs4V?+2vv#G*ue?y-@@9&&E+wAC`b@McP@$Q{LS5xpm z%UQ-&BIdB0_(;$aO4+oF*Zt=3(iUxG#h!vs8gk66Noon%AYWx!#%3uIJhMQLz(38f zk1$cfY_6^~iRJhIoF!O4vB3jCMUg!e5ws?!GC29`7iWDvUT5h}>G&wf{%j=7&Bvvq zh#y?TLw|(aB$B*&`zQGP4LD-zlZ`qe{1Uv6J(MUxdB5+soigM;QinizLnZiHGU@S~ zNS;ZNYa0jvgr#2qA zj705R3Y^>iRA(9ck->ASf@6tFz_{NXzd>2`l|jEaFcUbIN^>$|zztb-={6ha(|C^T zU_!Ms+zr+_7H$`OgL3*o{7;LKwfv2wDgzMEdgcE#8UO#vZTi0k*i{`&3|;^Z4HuSz%mycn#_3@v?IzG+N(~Hc6a802_I{fWkQ$uOy|N+v4_m!h(@v z4M;C~;yV~RIyhZuNjJKR0+p6e(LwO+DB&mV>nneA^7!AGl68tp#?u|{mz@Xx)2)AV z><<&0^1l!bP`}ZK#kPtMss+Iul5msJLJcxiS_FTIZZyx670bxd+D2Rz#M-O zAl>T{@1pL!1bZO;Lb@Na(upS=zbd5p)Bxl|o$k}{ksKDQzE;MR3wywsgMB*^%R^;Vt%hY~x?faZz5H%!vMH;sm8LN&m54r`Z*r0@?cg>4Lju+yEWwAVAjI(ox=z~hP zi2Jo3yUc%IgyPR zLw?jhI$ajZy1gbi7ZSUT4vm}d?`=}US1;|7B$Z@&JiV{D8Kd19%mnfTrM4_CtdGWV zvtR-#8KzY2ZUaqdIaHDH7{<~}wi>>y)GG^f>+KaDH1fE@a1$${ z@Ua4^)iaaRE7f}vak{4Pv2+9jSk;#y%4j^eK0?-ksfAu^GNrY?<0>(!9Q<{N*oTr{ zg6tHrg)t#xN<1CBf0|m^@N{yDwK2&J07KGKE_qsy$tgOWb(?k1wD;YYD<4{RXN+{) zrY(ws^1|jbk^I5MfCN|IJ`7_k^ju3VA4GH&nK96e9~f>dr8H?+{zJ0Zuyy$~!*S*6 z30<=TAKyCbGaZvol~@2oc+=fl80`P^Nw$d+zzL_sVJP%c#xHt!2;Y-`w#kLqyi}hWw;`L{detUaWoR~N#^QmmYD)J$ zE80nI*wxP9o`yKP{|}A(vbMRoy7-?b+qmRs`KNC;m(JR?gC1Ek!WjZGlgBF`q`{2*kn>mS?|JM(WvPhzs|NBdlLzr?lqF4$$H2Cq}uu%l7|7 zSiR!UG#k#ez2NAL-mrfHD>hAmJpdMN#Xo4xhT+$5DUrX;;YnYk!=Sqh_p!cdnmJ9M z5#g_kMwxTw9HJAT@m84_j<6^~IjOrz2T8djvf1#$##d|x#wT5%(TbjG)=7tMg3&uK<6^}0Fl17?LSeOE56^k@3S6tm#ZmzG+NSeFbf5iIcw6wan z!kRyUXBmu7b~GuW)jiY#yBLR_@f958=RBL}C-sU7=)Q5c&JbJymg;{ig~DT!LS@gz z#6l4TRU-|Se)i(TkOg$V>`x{&<*Z75C-se-*dKE?ub!|DT|0(<;U}2<5kINrZ{z)N z<0W0pInjtiYPqSH|oh%MD5 zEpL?J7%KsAaD9Rag;LlbjRXcXQ`{7fe^}lFXZaxEI-u4KOm|law*z~{tt+lxRam<% zvGZPJ;g=47d76pqHWz!E5$?qt&og^7im%s(smmLBzP405&6$l>gcw#QqgQoaRJ|^9Q4sXHQ&|H#T+sGjQYFaFKVr z=h@ZivOhRd|5BUvS;|jCtrJp5MH@qM0l8PBA0<<}->({VtQob1dqdrF=Dm4Bm097< z$fC489#SbMknIk-qIYlqd($wK15aS@mVt>p##}qZEW2;ab6AP+H=z}Yzceg=&=eT$ z{gRdY8^-e!-6`~5^9eQ&M*en7+*^JcnNKO?1R+oHe$C)@%Sp6w1rg14GK!5};2i?6^O`u(W8Kpghq7vZDYeVi`bSu>b#9aw>l z9R8dzLIp*EtjkT7FToNfS8qmeRY!#zp`Eb>!H<<^#h>+bFXjqHM;}kUrTFRSiL|ZR z0a=&ZF8+f0g@Mx(hg-NaAB5iR-sNZ@e)+joX`pwrw~EjfkT!|)*{>JWPdVuKkfew>g`)d^}*7AOztl981MQdd$4Ky_KWoIV(|<8 zC3#cr^ypN7K!uF;fCZ46y3?f+f*Z(hSz^=NH8b@X4LlMGh~ zAxI#{rjoJeX6r85Rk6@)hXidL`jcSIRFe$ckboDw(Lz^`gZ90Ti0 z9&vzE>3wjVKH2D9V#l~)cS)c4;TOqni37e!!h}~tC_gYv5Qj!IKfHi^Fhg7&n1fHe zNKce>$6$ww6?FQ81;GtL!quSy?3-)q{R(WsYEi z=F6~8vv4a1DX^HIxU5W14Wn7%rxwr^T0o~sF(2tAu}`sCv1^?HTxd8dnrn)hBik!8 z=%(3FUn&XIQQ~DTGIKZv0ujh%dHU1tbXdk+1klyx8wpf}>HM|E1^N@59CVf`AkcLs zNsAjE8Y(7TWF<#ZYH+M)tq<(JIaHOWzfiUgS+w>Q|A@QAN$p*Z$uL24JXPZ0j+KsP z3e?1uV|g+q_czdB>G=Gi^gT(5xp1geU*ku9IXqaYM#-FG9bE%~LDqmQEBYd#KLW+9%~YVGs_21_F~)8M(Ttdm2U{?U@n|AgG(*DE#{R(H#w%Xy&)SYA#(lx6*JM~ zas|xCtrjV1#(-INZPdpttvp7>X7o3H*|eEBj*T@$OB+;!_EsDB8qEZEDC^BfwlWLj4yKkeBi;o$Aj zIvEc4wGumWch|~gYj8_0v$2BovJdqs6=r;EjU6{6i%k%gF40Xg)YAZIe9ourEhj5` zi)aw(@xY9&7rM&yJZj1X96#28sAXzFIuGt``maO(A>op=h6riG1$NDX7Xk|WnhQr* zJY<7T0dMA$UT6Mj*2OObG3|EK8VqM;w zLTMrE#Q`#DCB^|ZaUmLJhdo~X-+#HLdMl5Fo23U2D=#j^3>TI@ zaGQNasphx0`SzQ?GijOy9@Qhg!OF{L(n8}#_wxKiEA{F&B`>qEH+L6i{z(Bq7^3)D z8>LD>Q$S$kz$tJ8AZ!$MK+GwO3Y|5tK)K_l)AJdA9~|ZI?w%!RY`VQ8BAiu7+`qwp z_A2LhTj$ciaD+R|7!U44Fk7EaIC3;DC<-NPhg7jq~C z*G+8`H(87;2|g%az6mOuSFYk@KbUB zyaCoBx6TlutyAtrlFe)C(B;E}jeHCybBQa{M{LYQYpMh=asor!gDuX1U0&xXT)I8ZXlAYV2|`G?#0z9vCZ?kagxM@1xWleya+C=Hp z#7S<LX5>hejpt^-WX0^B%8%BLLcrXG0V*>GgSFC~dEfxTnLviemf{BUy=3P+ zxmt*V5Q!pl*E8l)=n(N>^@_vJ;cqt)+c%TXFvpJlN58y)g+^}?J?553b~=pC-fUO@ zY&OKkE1VhxtTl+M50{!a;2o3d5Vtt`w7`X^v;7hv+KVyh27c?$N?4m))jmB*r9Tk# zLt_)T3gcEYbE7f6iL!z0|GdVlCqipQ{wxA`#~|tDwh$s@+i3}-{Rh5jc69bveduRj z<7lJx!v5PnACwaG;X@zoDnOR|3`iOAGU*tsf(ed&Ho}iv}!{8 zEG_5$d?j_TJjnkGQ4JR!EF@#ah5!MF2L=}+N(hliP!1)23x|_2JD384)@vbgYqjcu z*L#wwZ5&a9ME*mdJK(kCw%z8|wS8?B&)=ziy`tN-N&oTH^W*=`DoGJ!^0A-HdDHXb z-S^?seOHdzD=XssX32SN;>6NL9bXy1mvegL!@0gr0o#>~Z|8&!Tb`_I_nDMKpTKH| z=&kYKK#V!AaCOv3K(mj6Ep^<_)uBUiIy&hT6h3PtYv5rzdwCRTmo>%3D(Oc#$uu%z zK6#@;ncn4*m2GzG!p$cfmg)3@N11C zT8Ah1YKKQ?^rdO%!g%%8((oexR)2MFH$awtiwZOQ$fG$&^Ku`fSK@a~GGZ-DP5SYO zUDXME(-ze!$GA=NRNGjCYMc&9@J5%)o-W0tEelnqt-I6MIBy1k?9qb@ZM|R=bzkH0 zAdH7XZ(60D4?~trc>X9%p+x-8PtCz0?d}`V6DZbToPv;jGMk?z1;-W&se z#m$`XyaQY1XmOzg((jkEyS-z6ukJs(HxUr4fG&ol(5ZRCV@Y?;{d4(p*I@W8PbDi2dVw9-AaBUQa`)4zv z#YOheNL_>TZ4&Zb0wlh*UMQm=q`s4a$pNlQVa5ALC}p2f6Yw%^$Bk|dYBAMb&ho1W z{JjD#q(Qk!01aFh)S$2i4o=(g8KyJtpJrC|a!TQSsN2mAqwOAKrw|TbaD2FkPn-ixhEZ@m<_+e z2Vs{ZG5XQqS>9;Fg5WN^`#l`6%V7F>@YPYqMN{E#bL>Q>+8YO4Hq?nzW;nJWzV>@i0L~Lr|r?lN!D5y3o^KLP%sXiLB1cwr5$UX2y4Aoc& zihPsn7}1X|qNoQ_+zN4)(V~JLY=&BbH&6-v<<*-!2Qp{lrV&9hn0bL$O>lBlc!aB6 zM&6HV_$4jj2R%*{bl=KJX-U|sDY-gqHqCBJ6u%syz+(%2v1z1e+m48acF=>O3>%SR zdTN^~J8_viapUyq8;FV7?E{Q#wj=%~=n2^?w>whC@J9ZXz|xogbFv^MI9vi$4vS84 zm96ERAi(7u`=wd( z{iE+0iBnDtyl>G&jdrcN(}n{sXyhxCtL9u*#>(Dn2xf1Il!L%;RAK#X&XU6uD&nLn zPH~TZjTM4=97@&%(5TSmVwq_dN|d;QF}1WKPcjvwaCP60fax%BvQgIp$?PmCA*D}z zci<~D8D3(6>B15uBHtG=##k1M&`+lgh_AXA+-HJt)rr1GP9dmPy*_2~fiT*xq|}~z zQ!S=z63gTU6mL{7@(S@I&rvT^@Z=Csf5WKEAypbNv{q+o+gw{!V_m`b1_)u<@D4?y z>uwh*(dQ_r*)l{=>nXdKMi{SH9?Q;WrPax03+whDF&|l!IbeoZ$~jXzO)dM--F2ZzKFr3SDW zhG;;-ZIvl<>Iw{E{|9OB93*SJY>Do+wcECB+jj4^ZQHhO+qP|Mw{4r#=bV{{``(*- z=FWW;QGb0Eg;n{>FC%m1T5>h=@$RW8*?NRUbIcpnb<@}~TV-~nAz7W0`FJqCk~)ksVA-S!guJt#Xjo-C{m@cJUsWouUPtr`1er0~zE?v2N&M>> z_Q>Yr%iitH-Y=o)0mFQbYksw-9Tm}uaVwboHQXGQnyZWr%*d&P_O*3#T z$0n)K*4?jDE48z?7$astG*YNd!(5V*c%+)ZzkwSlf z^OoNl?1X&~dAEHjdn@eM+$v&x%5;BeAJFsR!o)wWV|OU&{B){< z4Ej_aCD67^c=(k|HSPM+I&onjv1uNIf#Ljf!Gb^tm5^Z9V~^PyiUd`09J$V6$_!s< zEHV08)wU^N%#=Q%y#wf0u_NKNK^ggkGzy+E=#`Ws!1qsFQl~4>ynS9|WQexHsm4=A z2=@GHk&s8RJ%AzdkJSQRCODE*#$&xSVVqpf11mIH!*a?X#CAmG?iU{%&LgE?z66#+%V(nj8T3@437JEkbqSdhcqGF zB~h_V{hScw0?nigqCAf9O~|HW#MN)<5moUarVNq=toGlW=>T!n z`4zVljxbsl`W~nzhcYKK+@VEISChO*Hob1i1ehg3 zeJi!i`z_)x9Q-mGyl#ePvU7n${kwMQCUox0@^=i(U{WF_z)~Xj=9UQ~QkM_qlz&m5 zb3R@V03y=D4tiBZ_e--$<|JZ!Aipt8VVEgIj)2^#M>`ObbqgTV^U%gn{iQ?UC3S!#ZmSBJ+Ub1LxLk4H-h=4%9#V1Ni|fHm8GOKgthO9Mk##n|607udee~$ zhU1r2$-Ne(>VO8>1Z*@58e1igTZ~o_CCN7AJ~WPFO2td+F%jSn^FHv9jEzXev*Hwt z)$Wi-30&J@oYS&%3M<0wO|W7N&P<7a6hhyA#hbMv#bSPvZin=j;5MVB!e$V%bwEvP zL;uME6wQHPttp^Uhx(%f#wyFG5K?Pfqi;wfAe0^#m3&zZvMv}N_fEAo^CwyIfJcOp zC1sLJ;JA}XC}xbx#Q8^|{fBWOP#RJPkxhWi@-zCQ*a$m^#iFQ%tQkDZF-^YM!ZGBK}t(Ep4!^6Sjs@80ziBa!qTrP`3j~@16xiXXc#u zbsYfnIcKBb1cJ=H9EgNl4B8K)W95r0OK1Pa4f}OzwFbdcJEV$3IAU>$6)26$4&GbP z_6~52{U&MXCef(&QDpT*ef1br^@L>fJHNDlH$X;9Kz5ZQnhtg-7VG{X zwINWo`0yWHEHL#RVb~pNx!9}+h`W3aQkBGJkI8Hh5GfE%@fp7wF552_S4lrWarDC% z=ASh)wBfRXpbg*30UOonin$+ zyBHZO#u(#(X=%aw&tYjGz`?6)b`*hDx+ZqKW@m`u0mPrAF|yNv(IDU=LcD`#Bf4MQ zp?jq8=iB*WFPx?CCg8k2F%ORp>jK}Qowoo^e0F+oO$rkfv71sRN&kP=p^l5F<`!yt+KDz8Pw2pJ(MTD5kj zZI9P{uNtZ&A$W&`!m4cmy#klYL=4kWiX16u_vOkr)XH&@rK)s=CjtY6DaNyCyN^A6 zm*2WyBb9hcmc)M7vpQ)zKRbLT{xdb6(B*(@6P@{khuVL4`xYA_G&T8zFGN6&>m*P# zTS{|sO^um7q~&QF_G@1~S3T-Zp{QtejgdZKmjMmR5-UMDok}$vMEPx0kRD$7FA&t{ zeC|-YDH7XeW^*|rMsks;^VlQn<3{EPTBn1!`Uu=%N9oTh$4biXm3NWkhxIemNuF)cI@q0ydOZ+IpOqzXxkKY6z;FBqdJF!Wr z@tn1{MTG%~T^9Qrd9i)}r~$Yp=q$th{v|6nTd66bQt%Y}Sw?I@*L#L>8-P(b>=c>K z;vs*<+CzlkS`}I$?0nDSarxVeR-l|!a~cSp129$(!$%~zBF}zr44g?3Z=~Ue`Z5m< zjLj=svc?r)?nXj==uql6Q)HYiys63mzA6jW7JhZK=7|AXprMC0H-+B)1V5$5G z6Q4Q3G@8Yrh@z&YxbuusXzCU9_xyv`@a6-AO)DVr+^?ETgrbMi$FE|NxLqVU^Q0-IEs{yiI6&BH%e6Pi^2J-k zVXD+C%wlW`RSusPD9dS9n>%ZUGOtc~anQn)l64+=L*UOXM|-lyDTg-PlvS>VE7az2 z%4~oqx))H-%&l`#7f@)Y#vD`FySwhU^n>D{Cac2wP-q8S-?T~Y=X>LCCr{@IGF6Y80K#JI;f^HyZY?Ek1p(KLn9DibxN z!;mdZB#^ozPFb;0*KzL%vaPRU@$F{t=E{LmCB6csTCx>N=<{+}D+d2sqOirvPWGLS zFTBM`AN(_mv?a;dmNI=vS)~FXMwJhUA`g&22F8)+qry%h`!&%^WK%&7GA2)%Q9fI0 z$6M|_rW~whoZneq^!n>8@?178!`twvc)O60{YN}k>Iq73m!KOUx%pgnZ{z_&^VERt4WU43p zm>#okvQT*p)@>DucpDpysF!EDclb4LThJWc=4_D#^s|Z0==*&&bWi`JJ|7c54FmrS zW3jrbm}!Pzs2IK$a8bWrPN{kqsCvKk0IFF4I;469uX!_^wv9Hwxz7ytzlw_gAYl{< zJN#N+<|&lfP0@?2>D|+rs=pDC91I#CRh{}$Ov^wV{hp}o=gH$uExn?X2l*sLYHJ=4 zXxOg3IvVq00^m`jcnYEUWAoG(o(v2N7VLQbfkAP(UmB$4?)^H0ym z{3@268l+#p#2EfvXY{{n#PiR&^#8LnDyL`vGr9g(f3)aNgb&gZ@)yaPVaOC84gs3H zX7(Bp6vB-kJfF6o*zasY;lGjTCU;Ab#4t-UUVj~!FU-Me4fss=;d@INE#h02QpsU^lvKMFMPQav zkB7GR(ep-cQu6*`N+x)^|he7wSjSO-8j}&+av-b<&0w`f6lZwj#Ai{4yU-3zsE79_W{!&z)z- zukNszZ+(Z3+yybgHM-n$&SrY>9)rd*8Rj@{y~G9gT~&{!VEcT}c2bP9nS$3GyW7}d zoqlRe|M%f|)qS^zx`vnza2Jc|ZKJ`z(k2@^>LMM|nxVqkv{S`~<%^kPF;1 z4)%#SRn-{fFn_IUhJZ0Y&19JmV9J&MMD6vS&>&}gekL>BvKRE<4w)#nj@(65q|Upy zL7r+;utxa8(OOR0rQ|G0hn=DR8hkgN`hN0|tVzI#m5cz)y_hVEcbswLYMDZT7r?qG z@PMFP+dq`?N+-LzV9q*xz#jzE7#oqS-kho_r)u&{6Fj}~Qvl=+%8{a%jl7ZJ9sN#(%Igtn(S>pz@OZC8_ zj>X#f2#j>cj?H1*+bh*n6{oRd^LJP$l(6CDgJJ#C>iL#>c)w|bHBne-i&zcKiXd`E z-~YEn16hKL8w#?Oev_P9SK==~)$#S4XKIzsc#2ZL@8K8LXDGUK5+XCnENl4 z1x=KvyIe~8JiA)HWYxtrE4nn*hbR5Lf9;3$^95g7wx2urtiifvEy~7P%En71-W=hJ zB)XMeQDKeXDY$;G(yBC|#*B_E>i(e&eQ@ZBe476zHvx820~I&gu{Yuq$V~53VRjT2 zW{NOt>pMkfD(yq>>r6wZVvAP09HGx}Qd35l$ma-AhA9eP=ZjJt*Pn(z>Sl%B^yHv& zLLGigOg11$V+hbJBj81eCw{D)b21!pztcx#w*&igsK+GI+sX>w%86U6((fAtRjo56 z&D>;@f2At7Idz+$T9MzTz|ZAih;}anHSqjbXH|hw)JiG7L>%-`8W}3x$SX6jGaMjX zk%WsTYc(yQB^XuUE?_L7&5ZnGYY;)F(+w=LNG{;iYM}JT<+fXb;e}& zv0O=ClQuM)gCkyA5?t5FG*!${+l)(ytp>`;s4j6*ZJCFZC-7Vc!q;MG$dgC>lDz$s zY0W$Jc#V;0s=@MP=4XXrW;tE2#?_Dbo&d-*%ohuvK00287P0e>Sk4Og&UqkrLDqetEq~|(t%papnX4AR9ufiwFSr)~@d4z=P zCfXB!&>j&s-6=A#Z(wt-?>5-_=(a};J$o7N1yu&e5VShiUE~OX3?Em%q5iRQQrg`* zGW;`8|M)2#|8viT|5n*3WoBjOs9^NNb9DG$MyrZivWWah+zVExD-x1H6cmt^dI_gcVZZ})cz#a6A``HA5VX>J!f)u zZ2NeAg68_YgB;Ywio!;$Z!8t72w^9)NUl?v)Wr{(qh#VASA0d}$%#ToOf_#GKjn4N zw%P_>iqj&EH)vVI5!t{PDm};IZ^v`bz=lZBEz&MF8doXiAYipZCmr!5IjlUncOp}q zK9VWtE=He$KL&4`dh!P5cq&HpBDDpK zuS5o`+Vf@y^2cv<;a>ING^}iNAro3E!DhIPAPGZeB| ze-E$59WXvDgkh41r9>p71To|EbN>j;&cQEzK_^zvmDiu{9#vo$Snr7|u&x2zAq@QC zkeJYLhJcEQU?Z&j$OrHr5zT#!0ipL}1L6+y?;@K2ze5rEf15QmsY7@wEwz1jXNVi8 zZUh<%_{IVQk`X2FApzhA)+z$((c^)u=!sd!_l-$qrjfPoC{!$&Td-=FHkn(QQ8u>{ z;VYzA>o!$c6*a4GH@vNPFLyt`wRh6g$Xd1uc+8LE;E zyw*311rISWjgApBFpbwPj!3_DMy5=(AbV?%RT!#L*I0CRF3ToyvF2`0;hSwjrzbbM=_n9$>8h8U6VoEb?OW8B-f#uYWfxVMYR z?b?{I7i6>Ysgx@+pr2J?Mt3m2*5dH<>*R5j=*6EqV)$(eFsY5-$%zzbJ zb=D+!(xDO@z|$@BOXvC+^F;)=XJ&+T?Csslv!QZ(Zy#>-z3R?BBZqgiW#R%Bo#$X5 z?)^n3?`I_bRhpAOOR>yLLiU@%b7LlFr=#;joYp72j7)E6AaB%}G8=p(AC;xXc<)gP zq(XmAhyh938cx`~Y9m9^S*ld6>6?bcN0!W5I6*^TjHZ}xqI(uO?@f$sU9E>19Zr-p zh0e`=k<~|*YuR8ZL65ReDKchrQ{^3HW&LHsqw2-4Nu|EZ!U!A)o)yT>+)0?oze!6f zC~j7HfaS<#6iVy@+=W58xpAodoPU(3Vr$(ZDF4wyF^6ByTBEdTLjP{4O78v0^x#+V zuBk?0%ceOPItyIam~EkVMbhAxoyNdFI4P{rjEo^ZR#;=Uh%!hpei{%L=LWlEisJp| z5yF23Z-G$31?$P|ZB_m_1rc7x62W%JH3lLI^c^)84LiaP%oQTX1QR^YZXv65YC}|Q zo`o*kM7vN1l8aM9cGbCdAnQOZPl$+FG<-sId|>Z_|FVG=uB+proR^br^|p|8o%+gd zO@eQjGdyPg;kp1X%O7mF0L>B?OF-9fx3)R)fcN{LDK^-4t41| z5qA#4Zz#GB|B*>D=jY}G5>E@uL^8M8Hg5_WPBdhqt4m+}akdqydMOtpi-XtT>EOsv zn!(^G(2a?J;WtdDe?v(1?w6=`!t_`Yld`rzB?`(iGbvVHiQFRq;oEO<<>JAJvx&s7i8w=MFUe7&$)+08&jehd@`H9;~Ozvh6Vu2YZ+4 zq7^!0HWtjU+vcs4o6K%5PE-SkWk45C25i$@=^*k01M!;mI&+bv6j;t*W1-DhBD2fl za=t*;SBEU6Y6bzo1sK%SF_Am@>+;ld&U!|mP6h@)q7meCpe6!tnmFckYM^Qp5($?7hGMJc8Jx@O7-2azWD_EzpI@{@G}gxND*T zll=L~XVc!4u#Y4L@h{tTuP*_*?P3jLxBz$Z_ICh)f$-G zv|x;)pH|t-QkK zsoW(k>QB&9Edz!;EOV#&AGsBN$UX2WbSxOX-kMa<2RYWWr_?*`Rgm;&SNjOx@rL|M zbN?%v^=^?KI%khVC|Ch|Zf6N9Ia9?WX2t}Um|9I6F2|w+L3rFh)t+|6p0PkxbXmL{ zgO<)c%*&WI4RYE1`3WKzy_)Ps^IDEA;wuXQ%mKxyIH!36z8%)wB9icu-$dUll57%iy#MNgtInur z&H5cUP$JzPU~NEvCfp8EeIXpDHzfVV;REzm#c)dOj-Ftih{~*7{~_Hu#r&%Az{$o3 z`4#TU<=C6NTOr5egQ=gdGfOKk{l#decEV*gA9BKyAUl^6OopAdZ%8zIz!toN?~=A# zaX}g0W>6={CP9?h$Y`4F)e;ts=Mjs6voOBBs}53l2A$XcvV5bQoW+zl*0KD-F;|ME zNJoW45L+-P7QA@4TdN?c11?skoG63F#{ara{z?qTY(Pd3!nlRW=Zt46lv^7SSGVCL zWgfs!Tm=p99HV|?($j#Bc}2Mm5=@Ub>Kqf)Y%z`AbVjBkAGEuwW?*)i+Ym?*pd1t5 z2i>4WMm@SXVPdk-R!xSrwdlVd$S{#9Q`e(FjwhOmO(34{Vk4lTv5qssY0r5fVYZTb zrM>;C%}DvzPtT~K`|DN=ib^>)NvREgK|0#uIt$x5%=t&!q*M#Tvcp(|qq*XsQf{JL z3%Dj+Sm?*lKtV*iv;<5UUCL4lU#z5v*z7&Te}MDixdM>Bj*trLb@tS0&E-C!+~soI zllBVgJX);O(&o<`1tn!i;YU=n#yhKv;VD9f=!|dNjW#yKQks)Wp{SA?e2Y6l9*YIp zY87sVTNHJE!SuA{79Y0tLma-KOl@-vSKs=6;$KlW zxQc}kI+;AK$dveyGgGXo0)cgD;>M71a-oo0qkNbM9_bu>1;#i4%19TB$oo1lWx_)c zH{VY3Rd1)}Ec-EqS}Bi|U}E^IIe41hX)Lb$fF@t~%5zd3NU6LxNAzByU-cS(<@GI` zhKCmQh9u(%{ydV;7B{E{EwKtXo{_^@`TaW(ch^|CA3PYOlue(8#j_xIQ2x}edQbqX zeMqbP62A{&$L-&+xO0ha-QN5~8f7QEMJ~n5e}|z019ZxT_2m3`Cf-n;73?{}U;!_m z=lY%N`LN2NQ<-s8k_EX02e<^+Q}jhF^X*stxfW{EE!jy0;*h1@+WYNYP542}4tn2; z;++7G6`KcK%m~m^6k>*gmyA^shItN{0BTm>I|XNtn}m(8Q!B%JsD(BzuX+rC+9&0p zSL}^ujvv{GG+qrnY_6Lbpmpq943cYz5NS%z#9X)_kuIeZd;3~_Q? zM~gZGFz%A!m zTdK84YY@%Hel%)Vk(+_y?=2}(|?E6f2VZd2qmJ@y&L-`J=rb1y{t;G&L6G`tH3&WVCDCL z_M#1Zl{4%5Rz@j>%U3XoQ1A!f?s&G(f(9Xxy)bdkg$@y$OLAr{@=iW8N!M}xDVKdc;3_Yzi2=K? z0cIWljYE8>elPA7Z)zOjJ=H5-pgtHVn_JQ$o#Mw1ryPB&N#-aiK*@m5tq)Wd-Fb=S zAo)<`K~YQ4`o}}0axzZu3UA57G(^3B#R2Ih!~SLTFPvm0k9fr4ob0hRa5x8ykHjYY zjT;NZaT#I_RNOwO8PBK;c|{V5?gtFuC8n53Ptd?OSeE2>lLQjaT+jzudLbI{T&RF%$GN*gBuE!&5cxnbyog43?r7K*K^b zsGxcPP%~%=2S%n`1Y48u*z$gVrpuy%>iHaxzxexi0S^=-g&A>V%8z+vrYvKtuX$_i z^f7_?-Y=_Nh{g;_@^Qqn6ws%V8~ zzMq9|3BOe=5a?DU-S^{O@VXvw*_O|HnBL@jFj+bHprKdlenlKeYGN%U?K`BNq~m-Z zb)uOeuSV7EA+KhXLZt)~ScV^!5F)4EF4?_R2=mxLMHW8EHzi{W$10ZcrQvlYBr5@6 zf^1=)Y-wRl>4di6ayIb8rFnKu(Fj*q>f^S?=yUuj2UD;dNo-FXr+d%#VAOWNVSef# zr;0sPr{0&-&_s=^@!GcR0+yv8)!Ze!4L%Z91$lC)4MrfaUD_RKlo~g% zcXz@_J6cL(s3v`n4pHaK?ppipS{9~FRoQ?UF)(uNC3DN7;%;+|G#X%-PfR#@_Mh6u z*TKCShR@l=B6|$mPrp(Ai@OIEb&%P%U{Ek>cqKoCV7AaidV8Ds)lc3e8yuAR%DY@GdGoc#VCVBWB^R$j1?@+)Q+9ly@`q&oQcPEF}S1GCu z+6@v%1Bzn#2odXRJZ^G~RRYE?E3#Dbua7%k09zqGHo?vZQ4FM%jb#I@SN}$+bQ^(9 zYb+P%)k-wyv2^hO*5nS?jJSY#q}|ycZ3v*bQZchXGyNT&&)adA-*tyNqVgTSwvB~; zy-XzAAdXXGc!8ap<+Vs5sTTMFJnHs)`e)Pgu%=@)^$6SzR!bm=D?amFPnY!a? zO`!Q5)zmp(q`D{&t6fr@Y9%hwMmA-1yjghxAuY>z$)mvAX6d?_NKs$u=Z*x`o)duJ zokMba&y?U3DD)0Uy}uyVNIP%*1)()ao9F13*8YNws`JjI6Y=ZVWMI&urf~3`#Mp)% z_V*I(??n*)ac)>M8wB>%SGG+n5(&YHnmJ(aERs7~-RT~GkMDJ1<=Hsr*sbOwt8cQ6 z2_|csTFtk0rB1mn)Nh2l?*ypS6@Vk<79+s1olL3TaM54yl)j(TP;_nfh`Kn_PWF|X z)oCn7$OHK6yL-}no=|HaR)0)cuuDmf$$uM3?-Y#c*%(hd%!e`Gk*(Yq<3Ev1wb2T8 zUX(<@5kfvLc)*#!!i#tpyOR5CEY_l&npet&i|_kU$qjepB5}xl$f&yNz|RF%LI0?b=Fa zpgtohc`jl#JTQa~=P?hrV!~!Q>SMVYBLDT5U%g*wjQmbaN9A{GVGfNIRR{_R$mMhI z{C=ZGHP-A5m5QXteDj5!jap%{fS?9sK;Iposqa&`9OQrBrw*%&*gc(&afPK$&L#lkWVf}LEh-;F{~L{Z4=cqn^O^$HO--cJAh$5^4)51uMhq~T~>LN zR^zNIZ50a*|5jIGGkV7<2H^qIIMm#Nl+q>ri(UV6RJui)w1UgIb~^@j3)2k18UMal zfNJcAMIg%vqAMyIW|GuZNt079x2BR8E%P$+QXIO_V z1{Wz=d&49nUtI}BOuImw`Dmm}X$RCrP+9+~=t9(lX&QoGdO>4f>qZ-uRxq9pY(BRV z|D$GJXmYnxXj>Gl17@27{c(zq-aPS;+06*SfbihY%koUxrR4~d=J@QTIloX$r7l6&YSNvfSRGCXLuA-B?r zYJlcEh5oOnlsrrk9;hCZiZ!ZsStDAJy4@0wvWtJpUeHWT8Xu$l`o+lp@4D*$SJGsP zW>&VAMoLDmj{lKbl%=BOfM|r|%_5!7vNflBeG*9>jjDYXnX>i5_yKn2u;tYOfo78_HT~{2 z?T~#R_wlqM%L~*B_6Xg)qe^PsCj^?nM$lnOO7^+B+9YKAcgl9cI&bXiMun07Hh#QvQyIlsSDh_K|lR$>MX{%`9(gir0A- zfVw2CJ`M(>KDhgCW^jxzm+%%=J3)8hW|r4URq2B;X)gy((s3>)&FW2RT9XQPpt;0F zqkV@GF3Fv(rjBD)L}wp$YgY+)?%WR z;WS)@O{~?#E^J`s*0#;P?~dHYKyyv?&{WIBGT7_L##qP~U?Kjv>T|Im5`yZHs+ALs zE|3P^Gz)E~g@@CGNWsb^G&u>*+%W zSl;MkgDnhjj;%Jre=0ZC+B%q)wN*a=%)ds?@B=JYL!nXmlUxWqC{`B(0GI{!omw=! zG!(eMZ$m?&z%4J3Kt$<`_vN{gMW#f+89KgwN(jTu1`X}qwUY+UoAc@7K4)p`@ZiAw z?&IlLh>X^>mA5R}N($(UuTQAR*?;FbJLO#|*+_+q2EuxnRPksrp1t207*Jd2DH_OL za30Fh{e?Eh!moFSdPj>DsR{IL(ALw5Imk8;NL|^7^~#11er#2|HqoQ^cahr~TVlT= zWwR#N3{YNe3K!B_!B|&`OQdfKf4YAB%VmVCkjO2jAWF(|w;;)sL034_h=NoLHOt69 z;y7pxjj18r1*#DABeg=K^0%7xy%B@6U3XEnwc>F9Au6V&(Ni-LH|Ow@B^vX!)gZ9i z8He(rCf~qCP@Z-ZFia|L7&`0>KPvyB`6N$1JwL9aZA3y3{3Yj}1-(}KHS z+Zcisd3lzZ{sW2yx~4B1ZL2HzDycbX^$dmM*N+b9m$mw;So<5ehp)<@yWe_ym@rk7 znddpM%@B@s?c^0J+tVIEz&^l$N=xk{<@}ftQO2Z5<)xW^6{oQk?h_{Q2(*P(5P&@~ zj+JTY=!x$&A>n(5>sk1%)6h%%4W2Bb`XfNWI=xv-*2lv~xRSmRYMk-d^!&DuL~Oot z`8*vO$O)bq@8AVzl6>&4V_%@%t?WLc)Nvq)v9;c}6EC3kfX zKubz7j4A?ZXvS_3bo6~?!EmmJ+BP<#sq?KCn@p2uR<=QsAZ`gK#OoDI|({Col3o2}{NOaL;yliMci$i`LXQSEz8+Y>)9z(nFXag5OJ8Nhz*We+FPYa+d>^W<3nQ^ z>!akj>ls+BK3JUNZdKm0lLQ!;pl#OT2_K(@6FxY7phM^co8<1+1N&_6Owuio;Bk{w zlvkkNx`50KS|uf@r)3i}6LmhEX~A#>g=;x6Yd%Cz*NShXWnAkw`LjMSUIj2KnR**L6tOY*?3ON&yn}M8o)u(@;ch zl}PD)z+guINSVPteTQbG#7b0~MoOOGw03G=rh8;VGsSyRR)D#N+-VsPc}xa9L!1CD zPlkLXy|hA%>S_W9&}#(H!+%j=;?u6>A%cauF<+kOP8q` z#`A3+m{a@dC1Os~@aZ-E_USL*wVs&fVW8vzQy%!?M5lU2!Wg0``Pnpd#zC}PC&|kkSq5s{zjP(CJ zA+|R%wlp$uqy_q+PJn^`y#CkE-1(o6|C~y}_H+IJpbYiD-d5m8HA>-MAMr2RZB^`) zIUqlLV8!R(QhNH>kku|WqLnU?cugUEDE0#unoEWWwthCq?sPC*JUHa}bF|nEz|#RG zSw&Bf$5$sdK-XTjK52iA{?>;|Al?q${;#km!i|!(#%0c`O6R0>T5}pfnbwGDm&?c| z4s}suhp(BeO~iGxC;pQ^SlaBsPl0OgeH8wz)#D9jZQA5*%ayM9c>9Crjmnr$oKNHT z^Ae@z0$Y1HZf=37-_W$)I|2G#kHkG_6ADv72J;8-IN#GK)7K0hzyeTHj+_b@9KNQ{ zmE1(6T>{^QK+r?tt;sDxbFBY>QZ|Lw{qP5F8I(o@wD}-^aWGyz=RWn{ksSK<>JgzU^aUc(rjsYA` z^E@XJBvH@6P}fjb{}+G=iU_DNC<Qhy9~JCBBhLq7Wt=XWz5{0x-XhErf*_8?Ak|TV@d4jr<;t zvvCHxu}QF-Pd4o@Nkei_^58)2v2405Z1YWXqeki_`kJLOrBvLGumtnLbm7Gud>VcsB<)+mVs#D<(w@P`v<^@+5>dxbz4CM)=k>9LDzyg7` z@>KT-K>nY;cjErh5C0@IX=jV_=l=ZClb`2*ehUA4SSbE)uvkhpt*yO-GT+xDT~!13 z$3v^_2~_?)9ichRHQf*PLS_fY*)Rp&z&Oy!JA>+rJP$koOeoN!C!0D2mt@_Y zDM{GcRL|PL=s#p8qW>5mMgNoF)u7R#fD)mc7Y<2=d+A@@ZALdd8@g6FCj=8FYv}CZ zXO>*HMkDkcfg1+LV?jXwwgYz~iheB>$5aK759jdw54wxT@$}@3&bH65)+kJ3*H#99 zf@%y#?r`);42P+K%n&y?D8M3VVKd5kYIkBh0#LDI3ZE_s1*l1uglQSFXTuDEaCFEj zH&-z=1hOqf^}}b7Ba6AZhqrdVyg9QtzP2(Z?yb!*au1sQ#5jqDgi%K=4>5~zjIs;ou-m1+cnL=738o8$W>K}&Ib#X&X=zKztk}~%Gr06~@jH|a z>TwVh^C=dnpt41c-GtVu#H2U6LFyrAwxpgR&*X3^D2Oh@sriO!nhuL`OC$T%kPMOj z5i}I9$lL=1r0$UP7!E*ONpLPID6W@nZpcWuCkor+z;Z8ppT&)I_R&)VnT#3N0ZNE`Uy9l!s75%(XD;Xfj7k?)66h(b}+>h!6Lj4T&BuT}Psh~pz# zGbDsS`<*k|$SKBZwA{EE^+lc(7_}F`+ly<|$r#bPCT&;%=iuRSwBf*Od^9p+vkkyC zoDPKPQbHHzW`t5)7wR#-(Nbr*?-zv(dW?r))10h-Vmwgv$b)0v!?6>V`keE)gRPsfI%|ZdCi8jJR;abcAbj zUoHP@hOdH6%6`0_GF-qA+FDB@&Z?Me24oj=fE-brX>5TGRqcMbVqZ%9R&?cl%i5oG5Dp;vhG3*<3Z3{sA6>v`>3^OY6q`nS=8 zS)0xw8&yJ&Oq}YI>GAgTK-)t|Sf~rOR+a7Ga!&GsOT&V}sNa970$4Q}2NLL&!4AAD z(z??}K0rofLb_^LpUlWK&id(J95sfqT#U$Ebt`4R-SAw6Z2Cb5h|$O@(iRHHE9w?j z3Yh~Y8Z`*6Vd#+*AiI4*9JtZ=tHAD4@qn^n8%Di}-opZU6nE&W;p=DN3O>($pOi3) zxsyimzCn#=<}c(r_dNO_q|`;4oFOOrbGTr={1Ek@K_9vtyx@>G7T<8J<4PWmzp8oZ z%fFLWOAO91TdNALchaLvLc)nPg%45x5qmmnLUiCi6Rbtye$pBPjsWO{zn6FrySlvP4w z^Jy}Tb6ph)f|MoGsd2`YWV=nzvybUJ_j4C|upUyv6OhBT*H7x3ey)7(TKWFGWByff zJA;R^C&jLQvx_J2A_gC`Bk$%Z6+B|(Di9nqeq$Irptk#-8XYq+KqKpzR%_B<;4W z(W**2EA6VZZQHhO+p4r}+qM~L+qP|f`M&3LkJ0yzK3|`{tMP^^ej*l${QHE}kPMxK;h@XM3k(}=>f zXeLF4?byN@v_-z9>$ci;E}Tfhou;+yvl?04dO-$5JegR^Bss3B#NW26otVoc?KoWD zw3uvd6Jc2_G25_c_jp=qw4RaTIGivj&w$-Ru)-@g*UV(H=BgVSWK_19fnp-=L?sBJ z56Lo3=l3Ue(}9hwe`Kl?M-0vCjiEA3N{Q8}3Ycgic3o@vos1oiUt`p7jt@;Iy?Cls zgr?o&3XH^gN!wl|zIQE{kH)=knsjCKR_g01+g_u`jIW6K{%moy^fikPJ2z)Pjh7IA z`xl77Gnm)rP`R^N74C|*y}OKI#0dH@vmrp3Pf1ur^_MG;5y(fA#6rcWhD}KkaFa_< zEpqGdTB#?&q{X&RRtkJT6%e0%2EQk<V6S#KT}a%X4V!zF^GYCC{)HT&_-x?IKeO({Ul&~1$PZ*S!U&F62$IDzv(-!Gu%bAE|O-yNAxy9gD)by;W&)T(fqtjS` zTxr3#A_QeS`;Of2an5N<+mS)Y-w^do)F?f<0iOz4 zoxWjBIn)bClf_gAvk}t;W^?x16NtMT4ra~I35eaM$_EyGBhne|D1LjLMMsA@lBT2R z_|-176fo<^0y7%0@8ZyBCkGuOm_GeVw7@F#{WWj+N0<{o)3NUwqYV(Z5gpPoOnCvs z$p!Q@jJj)Dj^9Y5pX>QrxAax3Perr(pmaYfxBd$%QEOxt<`an5uvxnyq7J<$BIO^{ zPn=aYEluzP|ab8%c4tI|8s(U zBKij&7OS8~%qR8@ot$4=^URD36FNr8m%m(}F&bU8_S(jI=Tu1R- zs5_rgy7P53T4RB1TjxYeUM`d47g{iTcXjQ9i)x359uyXFDLu5j#80s8Vh8scm6e|~ z$eIWB!m-VDW*9pQtxhC4-Z`lvXkLvPD@5?yIa3fH*D3E!Rb-X-2%C@A87_^~T=M!< z2s7CMd-~QiEk9e>Fg(es-e^E?1q+$W0|#HFNSBOfsNAe4a@|Yn0PX8b-w8s` zb4-uzn8Ga}nLqjQ=Yei35O|y$*oZAL*|Q=$+^9_0et!9uHa3QA6bar^FeqDj$c3t? zU*6Ie$|t-y@Z{+ZZhrlZ+fukX^X4+Q5G8zO9ZsKKN)HOBXm(RnQeAf7R(7M3Q-DS+ zqa%J7KdSt}PH=JCs~t+Fj0+i0RkT{H7%q8qdEI>UydmZQ)P&pHBgGcb!)Q7iHD@gVm^U1wU`ny@-ptCTF!J9o=Xhm&t7A z#}zg(3HN~`+-QmhhUDYMUlCj-?dMGjw1~1$UafROOqxRrJa<)4)VKnX36jEdtf23A zgEgEprn(P~SJhTs&RG?h85WqLa;~w&%&F6FOb~}-mhIUx z1`&ObD39c{NQdf<-)n^9F~GV6Z@hkay^03jATez*Anri(dxf6A|0FugW4No)h*BG; zO74-}51wsdV2jW{v%nxcD{z;R@nRduCoh*NM^`VQVEY-dJ(&0EkIj!vB|*6bBLuqMzSSRNV?K$e*sTx2aT z_^0DFzX-3K4;DE8d&i&WBn2QuN0uvR;uZjWD!e`Xa&sR8`cW7$?m+kE2k>F82l#ndR-3f{`$;vmX ziq7(Vie&+VaCb)`OkSW=H1bU+jqQyMr=$?vK77213B1o%CsL}_n9S!g z3IT-WMD52&Iul6g#rEDxbr@8m#nKs1k#oe`cfO~PK2bf6XpHJ?en&izVnQ?g8Yy&k z30w5XC-WsQ37-mem*PK4oQgzY&a{cJFTH5C6GVv*10S(pd}{R!=F^~T_Bq;D$^oSu z+&x(sc5R<#Ir~oMXLKeOfHjPgoH;0d?oN<;5o5@J8y{1MjTI(xeCY{vdYAd)`eO2m z_9IWwwXE6HOs3ME4T9ypn)^W?^}WzZPzw~K;@z#yop*q?*2I6hCo78#Ud7nqX0yqN z;ocGGFaZP4FKJ%d%03!SegK|;2I$EIEf|fW66ln~36{bSd&LXy0WHw79Dr*gi*TwU z@CQ4npF2mi`peC7Xh8QIHB|Hbj7#?Id)t>q7dDxNKzStJmgKYpF&7ZEP~FvRwJgOw zy7>1rs4_92G`Nm{zcJm=+<2$Vuex&u=wC$y$^QiDu(x)!(>MILK;8d=;H;hDKi8G} z=Lbn$D_!INK-LQ6mc;;nm9Y*rjAmsEnlc(Dr*uyQdZfWS@@3g_SGEX)Y=n|JsgNHD zzIabtU{A6;8TFw`yfS*EC z$mflgo-G5dUl_N;0_Pm!H24FFJx9xsLO<2DGesV`EM;1Cv#rr;1=gB|B~T6M0>9XE4T+!asKHLd`9x~ySPCTM5nKA`3xL|gYKQ74+$L|MQFH8 z_zqT18(n%kt9bmy&$jp9(n9@u0w&IwZvN2vXrJFL?){j(fDiL3L;eP!BL+7x!oR}F z=wF7Dz`qer|Bu`LU$&PD~-N-#={MlPG!3sfp zM9{GGEcCq9X^L$okK+pu{Xv~if#<9|qpbH4nX}xbMVlEA>OUY?lG?_dyDpu*H|;Lp zZZEUEzc2Y|8~9HV>Z7&_-WK}fpbH))*n%1xrUP6dtcR~~wL+ne;%ugaywD4Rp+cGr zHF^zyDL??xk;TBX#qy;mO_31dQtIQkdY~b78~~z^s)nX$DSD!7ux)=yK;YB;&~s4? z1W`A!@fZre%tNRgMguf2IcWB>L-)6)NZE(!nmdSKE8?RI&*JMz($B;czg7g~t1

    17%FxHet|(6&@OZ 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�{^C`n@lf{t|j0 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

    PvNYs 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

    y;`uTi^=Cc@`oz|$g~wj%rs3*YN$GlE8+4u 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
  1. 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
    @`f$BgXBX{49?|P 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
    p_jp`-a5ExGzOFL7<|eg|KMdLzpyp6kzg( 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.bukkit bukkit 1.4.5-R1.0 - provided + system + ${project.basedir}/../../lib/bukkit-1.4.5-R1.0.jar com.lishid -- 2.49.1 From 5ca2ae461aa403230682c832326d3bfe797f71dc Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 17 Jan 2017 18:06:35 -0500 Subject: [PATCH 091/253] Properly use Maven versioning for better support of dependent plugins Closes #59 Bumped version to 3.1.0-SNAPSHOT for development, really should have bumped the minor version a while back. --- .gitignore | 1 + api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-core/src/main/resources/plugin.yml | 2 +- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 3 +-- 29 files changed, 52 insertions(+), 52 deletions(-) diff --git a/.gitignore b/.gitignore index ec7e59c..5fd7686 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ **/bin **/out **dependency-reduced-pom.xml +**pom.xml.versionsBackup diff --git a/api/pom.xml b/api/pom.xml index 5982258..c0273c6 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 1247798..3434d70 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 835f733..9090031 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvcommon @@ -22,7 +22,7 @@ com.lishid openinvapi - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 40c1af4..92040e3 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_4_5 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 635515a..e59ddfd 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_4_6 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/pom.xml b/internal/pom.xml index 07aa5f7..69ec088 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index aa06f40..cce3865 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_10_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index cd13e66..3a8f614 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_11_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 6cb4a93..c55cf1d 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_4_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 20b7a15..9f628a0 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_5_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index a304ea6..76b5f5e 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_5_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 3d9947d..90f101e 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_6_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 9bd7e39..8608798 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_6_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index ed49ca1..51f6de4 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_6_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index d5be01d..00a16ce 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_7_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index a4166ce..ca26359 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_7_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index ee6a076..7798a96 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_7_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index cfcd689..3563086 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_7_R4 @@ -27,7 +27,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 470b496..9977871 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_8_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index f6cd3b8..0e6dfee 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_8_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index c1b823a..97ebec5 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_8_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index 7e3090d..af0111b 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_9_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index faec01e..ad83d57 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvadapter1_9_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index 23db1c9..2b7f8d6 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvplugincore @@ -22,12 +22,12 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT com.lishid openinvpluginv1_10_r1 - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/plugin/plugin-core/src/main/resources/plugin.yml b/plugin/plugin-core/src/main/resources/plugin.yml index cd626ba..85dad27 100644 --- a/plugin/plugin-core/src/main/resources/plugin.yml +++ b/plugin/plugin-core/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: ${openinv.version} +version: ${project.version} author: lishid authors: [Jikoo, ShadowRanger] description: > diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 4b0cd48..4e3fe0a 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvpluginv1_10_r1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index a386781..3539fe1 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT openinvplugin diff --git a/pom.xml b/pom.xml index c9759dc..10f30e1 100644 --- a/pom.xml +++ b/pom.xml @@ -6,13 +6,12 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 1.0-SNAPSHOT + 3.1.0-SNAPSHOT pom UTF-8 - 3.0.7-SNAPSHOT -- 2.49.1 From e34e51d12718e0eef705b169846c0fdfab35ee79 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 20 Jan 2017 12:56:31 -0500 Subject: [PATCH 092/253] Better support other Player implementations Closes #60 Removed all volatile comments - they require me to occasionally manually maintain them and NMS/OBC imports are already kept separate --- .../internal/v1_4_5/AnySilentContainer.java | 6 ++--- .../internal/v1_4_5/InventoryAccess.java | 1 - .../internal/v1_4_5/PlayerDataManager.java | 23 ++++++++++++++++++- .../internal/v1_4_5/SilentContainerChest.java | 1 - .../internal/v1_4_5/SpecialEnderChest.java | 19 +++++++-------- .../v1_4_5/SpecialPlayerInventory.java | 6 ++--- .../internal/v1_4_6/AnySilentContainer.java | 6 ++--- .../internal/v1_4_6/InventoryAccess.java | 1 - .../internal/v1_4_6/PlayerDataManager.java | 23 ++++++++++++++++++- .../internal/v1_4_6/SilentContainerChest.java | 1 - .../internal/v1_4_6/SpecialEnderChest.java | 19 +++++++-------- .../v1_4_6/SpecialPlayerInventory.java | 6 ++--- .../internal/v1_10_R1/AnySilentContainer.java | 6 ++--- .../internal/v1_10_R1/InventoryAccess.java | 1 - .../internal/v1_10_R1/PlayerDataManager.java | 23 ++++++++++++++++++- .../v1_10_R1/SilentContainerChest.java | 1 - .../internal/v1_10_R1/SpecialEnderChest.java | 21 ++++++++--------- .../v1_10_R1/SpecialPlayerInventory.java | 6 ++--- .../internal/v1_11_R1/AnySilentContainer.java | 6 ++--- .../internal/v1_11_R1/InventoryAccess.java | 1 - .../internal/v1_11_R1/PlayerDataManager.java | 23 ++++++++++++++++++- .../v1_11_R1/SilentContainerChest.java | 1 - .../internal/v1_11_R1/SpecialEnderChest.java | 21 ++++++++--------- .../v1_11_R1/SpecialPlayerInventory.java | 6 ++--- .../internal/v1_4_R1/AnySilentContainer.java | 6 ++--- .../internal/v1_4_R1/InventoryAccess.java | 1 - .../internal/v1_4_R1/PlayerDataManager.java | 23 ++++++++++++++++++- .../v1_4_R1/SilentContainerChest.java | 1 - .../internal/v1_4_R1/SpecialEnderChest.java | 19 +++++++-------- .../v1_4_R1/SpecialPlayerInventory.java | 6 ++--- .../internal/v1_5_R2/AnySilentContainer.java | 6 ++--- .../internal/v1_5_R2/InventoryAccess.java | 1 - .../internal/v1_5_R2/PlayerDataManager.java | 23 ++++++++++++++++++- .../v1_5_R2/SilentContainerChest.java | 1 - .../internal/v1_5_R2/SpecialEnderChest.java | 21 +++++++++-------- .../v1_5_R2/SpecialPlayerInventory.java | 6 ++--- .../internal/v1_5_R3/AnySilentContainer.java | 6 ++--- .../internal/v1_5_R3/InventoryAccess.java | 1 - .../internal/v1_5_R3/PlayerDataManager.java | 23 ++++++++++++++++++- .../v1_5_R3/SilentContainerChest.java | 1 - .../internal/v1_5_R3/SpecialEnderChest.java | 21 +++++++++-------- .../v1_5_R3/SpecialPlayerInventory.java | 6 ++--- .../internal/v1_6_R1/AnySilentContainer.java | 6 ++--- .../internal/v1_6_R1/InventoryAccess.java | 1 - .../internal/v1_6_R1/PlayerDataManager.java | 23 ++++++++++++++++++- .../v1_6_R1/SilentContainerChest.java | 1 - .../internal/v1_6_R1/SpecialEnderChest.java | 21 +++++++++-------- .../v1_6_R1/SpecialPlayerInventory.java | 6 ++--- .../internal/v1_6_R2/AnySilentContainer.java | 6 ++--- .../internal/v1_6_R2/InventoryAccess.java | 1 - .../internal/v1_6_R2/PlayerDataManager.java | 23 ++++++++++++++++++- .../v1_6_R2/SilentContainerChest.java | 1 - .../internal/v1_6_R2/SpecialEnderChest.java | 21 +++++++++-------- .../v1_6_R2/SpecialPlayerInventory.java | 6 ++--- .../internal/v1_6_R3/AnySilentContainer.java | 6 ++--- .../internal/v1_6_R3/InventoryAccess.java | 1 - .../internal/v1_6_R3/PlayerDataManager.java | 23 ++++++++++++++++++- .../v1_6_R3/SilentContainerChest.java | 1 - .../internal/v1_6_R3/SpecialEnderChest.java | 21 +++++++++-------- .../v1_6_R3/SpecialPlayerInventory.java | 6 ++--- .../internal/v1_7_R1/AnySilentContainer.java | 6 ++--- .../internal/v1_7_R1/InventoryAccess.java | 1 - .../internal/v1_7_R1/PlayerDataManager.java | 23 ++++++++++++++++++- .../v1_7_R1/SilentContainerChest.java | 1 - .../internal/v1_7_R1/SpecialEnderChest.java | 21 +++++++++-------- .../v1_7_R1/SpecialPlayerInventory.java | 6 ++--- .../internal/v1_7_R2/AnySilentContainer.java | 6 ++--- .../internal/v1_7_R2/InventoryAccess.java | 1 - .../internal/v1_7_R2/PlayerDataManager.java | 23 ++++++++++++++++++- .../v1_7_R2/SilentContainerChest.java | 1 - .../internal/v1_7_R2/SpecialEnderChest.java | 21 +++++++++-------- .../v1_7_R2/SpecialPlayerInventory.java | 6 ++--- .../internal/v1_7_R3/AnySilentContainer.java | 6 ++--- .../internal/v1_7_R3/InventoryAccess.java | 1 - .../internal/v1_7_R3/PlayerDataManager.java | 23 ++++++++++++++++++- .../v1_7_R3/SilentContainerChest.java | 1 - .../internal/v1_7_R3/SpecialEnderChest.java | 21 +++++++++-------- .../v1_7_R3/SpecialPlayerInventory.java | 6 ++--- .../internal/v1_7_R4/AnySilentContainer.java | 6 ++--- .../internal/v1_7_R4/InventoryAccess.java | 1 - .../internal/v1_7_R4/PlayerDataManager.java | 23 ++++++++++++++++++- .../v1_7_R4/SilentContainerChest.java | 1 - .../internal/v1_7_R4/SpecialEnderChest.java | 21 +++++++++-------- .../v1_7_R4/SpecialPlayerInventory.java | 6 ++--- .../internal/v1_8_R1/AnySilentContainer.java | 6 ++--- .../internal/v1_8_R1/InventoryAccess.java | 1 - .../internal/v1_8_R1/PlayerDataManager.java | 23 ++++++++++++++++++- .../v1_8_R1/SilentContainerChest.java | 1 - .../internal/v1_8_R1/SpecialEnderChest.java | 21 ++++++++--------- .../v1_8_R1/SpecialPlayerInventory.java | 6 ++--- .../internal/v1_8_R2/AnySilentContainer.java | 6 ++--- .../internal/v1_8_R2/InventoryAccess.java | 1 - .../internal/v1_8_R2/PlayerDataManager.java | 23 ++++++++++++++++++- .../v1_8_R2/SilentContainerChest.java | 1 - .../internal/v1_8_R2/SpecialEnderChest.java | 21 ++++++++--------- .../v1_8_R2/SpecialPlayerInventory.java | 6 ++--- .../internal/v1_8_R3/AnySilentContainer.java | 6 ++--- .../internal/v1_8_R3/InventoryAccess.java | 1 - .../internal/v1_8_R3/PlayerDataManager.java | 23 ++++++++++++++++++- .../v1_8_R3/SilentContainerChest.java | 1 - .../internal/v1_8_R3/SpecialEnderChest.java | 21 ++++++++--------- .../v1_8_R3/SpecialPlayerInventory.java | 6 ++--- .../internal/v1_9_R1/AnySilentContainer.java | 6 ++--- .../internal/v1_9_R1/InventoryAccess.java | 1 - .../internal/v1_9_R1/PlayerDataManager.java | 23 ++++++++++++++++++- .../v1_9_R1/SilentContainerChest.java | 1 - .../internal/v1_9_R1/SpecialEnderChest.java | 21 ++++++++--------- .../v1_9_R1/SpecialPlayerInventory.java | 6 ++--- .../internal/v1_9_R2/AnySilentContainer.java | 6 ++--- .../internal/v1_9_R2/InventoryAccess.java | 1 - .../internal/v1_9_R2/PlayerDataManager.java | 23 ++++++++++++++++++- .../v1_9_R2/SilentContainerChest.java | 1 - .../internal/v1_9_R2/SpecialEnderChest.java | 21 ++++++++--------- .../v1_9_R2/SpecialPlayerInventory.java | 6 ++--- 114 files changed, 693 insertions(+), 403 deletions(-) diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java index be34e71..55ea5d7 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java @@ -22,7 +22,6 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_4_5.AxisAlignedBB; import net.minecraft.server.v1_4_5.BlockEnderChest; import net.minecraft.server.v1_4_5.Container; @@ -36,7 +35,6 @@ import net.minecraft.server.v1_4_5.TileEntityChest; import net.minecraft.server.v1_4_5.TileEntityEnderChest; import net.minecraft.server.v1_4_5.World; -import org.bukkit.craftbukkit.v1_4_5.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_4_5.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -49,7 +47,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; if (block instanceof BlockEnderChest) { @@ -97,7 +95,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is API-only if (silentchest && block.getType() == Material.ENDER_CHEST) { diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java index 802b914..471fc75 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_4_5.IInventory; import org.bukkit.craftbukkit.v1_4_5.inventory.CraftInventory; diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java index 104b282..c9a126a 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java @@ -23,14 +23,15 @@ import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_4_5.EntityPlayer; import net.minecraft.server.v1_4_5.ItemInWorldManager; import net.minecraft.server.v1_4_5.MinecraftServer; import org.bukkit.craftbukkit.v1_4_5.CraftServer; +import org.bukkit.craftbukkit.v1_4_5.entity.CraftPlayer; public class PlayerDataManager implements IPlayerDataManager { @@ -77,4 +78,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Arrays.asList(Bukkit.getOnlinePlayers()); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().f(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java index 0405f7a..fd3e707 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_4_5; -// Volatile import net.minecraft.server.v1_4_5.ContainerChest; import net.minecraft.server.v1_4_5.EntityHuman; import net.minecraft.server.v1_4_5.IInventory; diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java index abedc51..ab2cb5c 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java @@ -27,7 +27,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -// Volatile +import net.minecraft.server.v1_4_5.EntityPlayer; import net.minecraft.server.v1_4_5.IInventory; import net.minecraft.server.v1_4_5.InventoryEnderChest; import net.minecraft.server.v1_4_5.InventorySubcontainer; @@ -46,12 +46,12 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private CraftPlayer owner; private int maxStack = MAX_STACK; - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), - ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; + public SpecialEnderChest(Player player, Boolean online) { + super(((CraftPlayer) player).getHandle().getEnderChest().getName(), + ((CraftPlayer) player).getHandle().getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.owner = nmsPlayer.getBukkitEntity(); this.items = enderChest.getContents(); } @@ -64,8 +64,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - owner = (CraftPlayer) player; - InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.owner = nmsPlayer.getBukkitEntity(); + InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java index b989c48..fcf3231 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java @@ -21,11 +21,9 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_4_5.ItemStack; import net.minecraft.server.v1_4_5.PlayerInventory; -import org.bukkit.craftbukkit.v1_4_5.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_4_5.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -35,7 +33,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; this.items = player.inventory.items; this.armor = player.inventory.armor; @@ -49,7 +47,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; this.player.inventory.armor = this.armor; playerOnline = true; diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java index 20a33a1..14d440c 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java @@ -22,7 +22,6 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_4_6.AxisAlignedBB; import net.minecraft.server.v1_4_6.BlockEnderChest; import net.minecraft.server.v1_4_6.Container; @@ -36,7 +35,6 @@ import net.minecraft.server.v1_4_6.TileEntityChest; import net.minecraft.server.v1_4_6.TileEntityEnderChest; import net.minecraft.server.v1_4_6.World; -import org.bukkit.craftbukkit.v1_4_6.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_4_6.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -49,7 +47,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; if (block instanceof BlockEnderChest) { @@ -97,7 +95,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is API-only if (silentchest && block.getType() == Material.ENDER_CHEST) { diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java index 5d0e844..2fc37fc 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_4_6.IInventory; import org.bukkit.craftbukkit.v1_4_6.inventory.CraftInventory; diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java index 38c91c2..e708908 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java @@ -23,14 +23,15 @@ import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_4_6.EntityPlayer; import net.minecraft.server.v1_4_6.MinecraftServer; import net.minecraft.server.v1_4_6.PlayerInteractManager; import org.bukkit.craftbukkit.v1_4_6.CraftServer; +import org.bukkit.craftbukkit.v1_4_6.entity.CraftPlayer; public class PlayerDataManager implements IPlayerDataManager { @@ -77,4 +78,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Arrays.asList(Bukkit.getOnlinePlayers()); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().f(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java index c613a7b..93e1589 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_4_6; -// Volatile import net.minecraft.server.v1_4_6.ContainerChest; import net.minecraft.server.v1_4_6.EntityHuman; import net.minecraft.server.v1_4_6.IInventory; diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java index b863941..e019d03 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java @@ -27,7 +27,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -// Volatile +import net.minecraft.server.v1_4_6.EntityPlayer; import net.minecraft.server.v1_4_6.IInventory; import net.minecraft.server.v1_4_6.InventoryEnderChest; import net.minecraft.server.v1_4_6.InventorySubcontainer; @@ -46,12 +46,12 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private CraftPlayer owner; private int maxStack = MAX_STACK; - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), - ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; + public SpecialEnderChest(Player player, Boolean online) { + super(((CraftPlayer) player).getHandle().getEnderChest().getName(), + ((CraftPlayer) player).getHandle().getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.owner = nmsPlayer.getBukkitEntity(); this.items = enderChest.getContents(); } @@ -64,8 +64,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - owner = (CraftPlayer) player; - InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.owner = nmsPlayer.getBukkitEntity(); + InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java index 42fa710..722ec74 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java @@ -21,11 +21,9 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_4_6.ItemStack; import net.minecraft.server.v1_4_6.PlayerInventory; -import org.bukkit.craftbukkit.v1_4_6.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_4_6.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -35,7 +33,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; this.items = player.inventory.items; this.armor = player.inventory.armor; @@ -49,7 +47,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; this.player.inventory.armor = this.armor; playerOnline = true; diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java index 8dca3aa..66182f1 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java @@ -22,7 +22,6 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_10_R1.AxisAlignedBB; import net.minecraft.server.v1_10_R1.Block; import net.minecraft.server.v1_10_R1.BlockChest; @@ -43,7 +42,6 @@ import net.minecraft.server.v1_10_R1.TileEntityChest; import net.minecraft.server.v1_10_R1.TileEntityEnderChest; import net.minecraft.server.v1_10_R1.World; -import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_10_R1.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -55,7 +53,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); Block block = world.getType(blockPosition).getBlock(); @@ -114,7 +112,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is pretty much API-only if (silentchest && b.getType() == Material.ENDER_CHEST) { diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java index 8e7e028..ae1e7b3 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_10_R1.IInventory; import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java index 1b784fd..ca18f6f 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java @@ -25,14 +25,15 @@ import com.mojang.authlib.GameProfile; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_10_R1.EntityPlayer; import net.minecraft.server.v1_10_R1.MinecraftServer; import net.minecraft.server.v1_10_R1.PlayerInteractManager; import org.bukkit.craftbukkit.v1_10_R1.CraftServer; +import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; public class PlayerDataManager implements IPlayerDataManager { @@ -85,4 +86,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Bukkit.getOnlinePlayers(); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SilentContainerChest.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SilentContainerChest.java index 0185618..8705bc3 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SilentContainerChest.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_10_R1; -// Volatile import net.minecraft.server.v1_10_R1.ContainerChest; import net.minecraft.server.v1_10_R1.EntityHuman; import net.minecraft.server.v1_10_R1.IInventory; diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java index aabdde3..66adece 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java @@ -24,13 +24,12 @@ import com.lishid.openinv.internal.ISpecialEnderChest; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile +import net.minecraft.server.v1_10_R1.EntityPlayer; import net.minecraft.server.v1_10_R1.IInventory; import net.minecraft.server.v1_10_R1.InventoryEnderChest; import net.minecraft.server.v1_10_R1.InventorySubcontainer; import net.minecraft.server.v1_10_R1.ItemStack; -import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -40,12 +39,12 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private boolean playerOnline = false; public SpecialEnderChest(Player player, Boolean online) { - super(((CraftPlayer) player).getHandle().getEnderChest().getName(), - ((CraftPlayer) player).getHandle().getEnderChest().hasCustomName(), - ((CraftPlayer) player).getHandle().getEnderChest().getSize()); - CraftPlayer craftPlayer = (CraftPlayer) player; - this.enderChest = craftPlayer.getHandle().getEnderChest(); - this.bukkitOwner = craftPlayer; + super(PlayerDataManager.getHandle(player).getEnderChest().getName(), + PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.bukkitOwner = nmsPlayer.getBukkitEntity(); setItemArrays(this, enderChest.getContents()); } @@ -78,9 +77,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - this.bukkitOwner = player; - CraftPlayer craftPlayer = (CraftPlayer) player; - setItemArrays(craftPlayer.getHandle().getEnderChest(), this.items); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.bukkitOwner = nmsPlayer.getBukkitEntity(); + setItemArrays(nmsPlayer.getEnderChest(), this.items); } catch (Exception e) {} playerOnline = true; } diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java index db86309..de99b24 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java @@ -24,12 +24,10 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_10_R1.EntityHuman; import net.minecraft.server.v1_10_R1.ItemStack; import net.minecraft.server.v1_10_R1.PlayerInventory; -import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -39,7 +37,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; setItemArrays(this, player.inventory.items, player.inventory.armor, player.inventory.extraSlots); } @@ -89,7 +87,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player); setItemArrays(this.player.inventory, items, armor, extraSlots); playerOnline = true; } diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java index 5464f35..98ec7c0 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java @@ -25,7 +25,6 @@ import org.bukkit.block.BlockState; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; -// Volatile import net.minecraft.server.v1_11_R1.AxisAlignedBB; import net.minecraft.server.v1_11_R1.Block; import net.minecraft.server.v1_11_R1.BlockChest; @@ -49,7 +48,6 @@ import net.minecraft.server.v1_11_R1.TileEntityEnderChest; import net.minecraft.server.v1_11_R1.TileEntityShulkerBox; import net.minecraft.server.v1_11_R1.World; -import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_11_R1.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -65,7 +63,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); IBlockData blockData = world.getType(blockPosition); @@ -156,7 +154,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is pretty much API-only if (silentchest && b.getType() == Material.ENDER_CHEST) { diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java index 346d82b..730e83a 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_11_R1.IInventory; import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java index cc376ad..af39f4b 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java @@ -25,14 +25,15 @@ import com.mojang.authlib.GameProfile; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_11_R1.EntityPlayer; import net.minecraft.server.v1_11_R1.MinecraftServer; import net.minecraft.server.v1_11_R1.PlayerInteractManager; import org.bukkit.craftbukkit.v1_11_R1.CraftServer; +import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; public class PlayerDataManager implements IPlayerDataManager { @@ -85,4 +86,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Bukkit.getOnlinePlayers(); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerChest.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerChest.java index 16c15a9..65df1e6 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerChest.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_11_R1; -// Volatile import net.minecraft.server.v1_11_R1.ContainerChest; import net.minecraft.server.v1_11_R1.EntityHuman; import net.minecraft.server.v1_11_R1.IInventory; diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java index b533c20..9c235a9 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java @@ -25,13 +25,12 @@ import com.lishid.openinv.internal.ISpecialEnderChest; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile +import net.minecraft.server.v1_11_R1.EntityPlayer; import net.minecraft.server.v1_11_R1.IInventory; import net.minecraft.server.v1_11_R1.InventoryEnderChest; import net.minecraft.server.v1_11_R1.InventorySubcontainer; import net.minecraft.server.v1_11_R1.ItemStack; -import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -41,12 +40,12 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private boolean playerOnline = false; public SpecialEnderChest(Player player, Boolean online) { - super(((CraftPlayer) player).getHandle().getEnderChest().getName(), - ((CraftPlayer) player).getHandle().getEnderChest().hasCustomName(), - ((CraftPlayer) player).getHandle().getEnderChest().getSize()); - CraftPlayer craftPlayer = (CraftPlayer) player; - this.enderChest = craftPlayer.getHandle().getEnderChest(); - this.bukkitOwner = craftPlayer; + super(PlayerDataManager.getHandle(player).getEnderChest().getName(), + PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.bukkitOwner = nmsPlayer.getBukkitEntity(); setItemLists(this, enderChest.getContents()); } @@ -79,9 +78,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - this.bukkitOwner = player; - CraftPlayer craftPlayer = (CraftPlayer) player; - setItemLists(craftPlayer.getHandle().getEnderChest(), this.items); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.bukkitOwner = nmsPlayer.getBukkitEntity(); + setItemLists(nmsPlayer.getEnderChest(), this.items); } catch (Exception e) {} playerOnline = true; } diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java index dbd07ed..3731b70 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java @@ -26,13 +26,11 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import net.minecraft.server.v1_11_R1.ContainerUtil; -// Volatile import net.minecraft.server.v1_11_R1.EntityHuman; import net.minecraft.server.v1_11_R1.ItemStack; import net.minecraft.server.v1_11_R1.NonNullList; import net.minecraft.server.v1_11_R1.PlayerInventory; -import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -41,7 +39,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; setItemArrays(this, player.inventory.items, player.inventory.armor, player.inventory.extraSlots); } @@ -91,7 +89,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player);; setItemArrays(this.player.inventory, items, armor, extraSlots); playerOnline = true; } diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java index ec1e7b6..3ef4bae 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java @@ -22,7 +22,6 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_4_R1.AxisAlignedBB; import net.minecraft.server.v1_4_R1.BlockEnderChest; import net.minecraft.server.v1_4_R1.Container; @@ -36,7 +35,6 @@ import net.minecraft.server.v1_4_R1.TileEntityChest; import net.minecraft.server.v1_4_R1.TileEntityEnderChest; import net.minecraft.server.v1_4_R1.World; -import org.bukkit.craftbukkit.v1_4_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_4_R1.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -49,7 +47,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; if (block instanceof BlockEnderChest) { @@ -97,7 +95,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is API-only if (silentchest && block.getType() == Material.ENDER_CHEST) { diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java index 78b42b5..eddf654 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_4_R1.IInventory; import org.bukkit.craftbukkit.v1_4_R1.inventory.CraftInventory; diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java index 796d272..e89517e 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java @@ -23,14 +23,15 @@ import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; import net.minecraft.server.v1_4_R1.EntityPlayer; import net.minecraft.server.v1_4_R1.MinecraftServer; import net.minecraft.server.v1_4_R1.PlayerInteractManager; -// Volatile import org.bukkit.craftbukkit.v1_4_R1.CraftServer; +import org.bukkit.craftbukkit.v1_4_R1.entity.CraftPlayer; public class PlayerDataManager implements IPlayerDataManager { @@ -78,4 +79,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Arrays.asList(Bukkit.getOnlinePlayers()); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().f(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java index 24c4018..9554dad 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_4_R1; -// Volatile import net.minecraft.server.v1_4_R1.ContainerChest; import net.minecraft.server.v1_4_R1.EntityHuman; import net.minecraft.server.v1_4_R1.IInventory; diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java index ff5e70c..7108e07 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java @@ -27,7 +27,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -// Volatile +import net.minecraft.server.v1_4_R1.EntityPlayer; import net.minecraft.server.v1_4_R1.IInventory; import net.minecraft.server.v1_4_R1.InventoryEnderChest; import net.minecraft.server.v1_4_R1.InventorySubcontainer; @@ -46,12 +46,12 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private CraftPlayer owner; private int maxStack = MAX_STACK; - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), - ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; + public SpecialEnderChest(Player player, Boolean online) { + super(PlayerDataManager.getHandle(player).getEnderChest().getName(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.owner = nmsPlayer.getBukkitEntity(); this.items = enderChest.getContents(); } @@ -64,8 +64,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - owner = (CraftPlayer) player; - InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.owner = nmsPlayer.getBukkitEntity(); + InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java index e3c760e..4306769 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java @@ -21,11 +21,9 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_4_R1.ItemStack; import net.minecraft.server.v1_4_R1.PlayerInventory; -import org.bukkit.craftbukkit.v1_4_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_4_R1.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -35,7 +33,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; this.items = player.inventory.items; this.armor = player.inventory.armor; @@ -49,7 +47,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; this.player.inventory.armor = this.armor; playerOnline = true; diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java index 5cb2c26..76f2cb9 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java @@ -22,7 +22,6 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_5_R2.AxisAlignedBB; import net.minecraft.server.v1_5_R2.BlockEnderChest; import net.minecraft.server.v1_5_R2.Container; @@ -36,7 +35,6 @@ import net.minecraft.server.v1_5_R2.TileEntityChest; import net.minecraft.server.v1_5_R2.TileEntityEnderChest; import net.minecraft.server.v1_5_R2.World; -import org.bukkit.craftbukkit.v1_5_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_5_R2.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -49,7 +47,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; if (block instanceof BlockEnderChest) { @@ -97,7 +95,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is API-only if (silentchest && block.getType() == Material.ENDER_CHEST) { diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java index 932bf21..bf22dc9 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_5_R2.IInventory; import org.bukkit.craftbukkit.v1_5_R2.inventory.CraftInventory; diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java index 50ed22b..38bf6b9 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java @@ -23,14 +23,15 @@ import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_5_R2.EntityPlayer; import net.minecraft.server.v1_5_R2.MinecraftServer; import net.minecraft.server.v1_5_R2.PlayerInteractManager; import org.bukkit.craftbukkit.v1_5_R2.CraftServer; +import org.bukkit.craftbukkit.v1_5_R2.entity.CraftPlayer; public class PlayerDataManager implements IPlayerDataManager { @@ -77,4 +78,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Arrays.asList(Bukkit.getOnlinePlayers()); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().f(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java index 60e085b..e7317cd 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_5_R2; -// Volatile import net.minecraft.server.v1_5_R2.ContainerChest; import net.minecraft.server.v1_5_R2.EntityHuman; import net.minecraft.server.v1_5_R2.IInventory; diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java index 50355b7..26c0285 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java @@ -27,7 +27,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -// Volatile +import net.minecraft.server.v1_5_R2.EntityPlayer; import net.minecraft.server.v1_5_R2.IInventory; import net.minecraft.server.v1_5_R2.InventoryEnderChest; import net.minecraft.server.v1_5_R2.InventorySubcontainer; @@ -46,13 +46,13 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private CraftPlayer owner; private int maxStack = MAX_STACK; - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), - ((CraftPlayer) p).getHandle().getEnderChest().c(), - ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; + public SpecialEnderChest(Player player, Boolean online) { + super(PlayerDataManager.getHandle(player).getEnderChest().getName(), + PlayerDataManager.getHandle(player).getEnderChest().c(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.owner = nmsPlayer.getBukkitEntity(); this.items = enderChest.getContents(); } @@ -65,8 +65,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - owner = (CraftPlayer) player; - InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.owner = nmsPlayer.getBukkitEntity(); + InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java index 81c949e..b47eaf1 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java @@ -21,11 +21,9 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_5_R2.ItemStack; import net.minecraft.server.v1_5_R2.PlayerInventory; -import org.bukkit.craftbukkit.v1_5_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_5_R2.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -35,7 +33,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; this.items = player.inventory.items; this.armor = player.inventory.armor; @@ -49,7 +47,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; this.player.inventory.armor = this.armor; playerOnline = true; diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java index 7d011a0..f5393a6 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java @@ -22,7 +22,6 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -//Volatile import net.minecraft.server.v1_5_R3.AxisAlignedBB; import net.minecraft.server.v1_5_R3.BlockEnderChest; import net.minecraft.server.v1_5_R3.Container; @@ -36,7 +35,6 @@ import net.minecraft.server.v1_5_R3.TileEntityChest; import net.minecraft.server.v1_5_R3.TileEntityEnderChest; import net.minecraft.server.v1_5_R3.World; -import org.bukkit.craftbukkit.v1_5_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_5_R3.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -49,7 +47,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; if (block instanceof BlockEnderChest) { @@ -97,7 +95,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is API-only if (silentchest && block.getType() == Material.ENDER_CHEST) { diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java index aa09220..a58d68b 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_5_R3.IInventory; import org.bukkit.craftbukkit.v1_5_R3.inventory.CraftInventory; diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java index c0b181e..18b6be1 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java @@ -23,14 +23,15 @@ import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_5_R3.EntityPlayer; import net.minecraft.server.v1_5_R3.MinecraftServer; import net.minecraft.server.v1_5_R3.PlayerInteractManager; import org.bukkit.craftbukkit.v1_5_R3.CraftServer; +import org.bukkit.craftbukkit.v1_5_R3.entity.CraftPlayer; public class PlayerDataManager implements IPlayerDataManager { @@ -77,4 +78,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Arrays.asList(Bukkit.getOnlinePlayers()); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java index 59c452e..e0b217c 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_5_R3; -// Volatile import net.minecraft.server.v1_5_R3.ContainerChest; import net.minecraft.server.v1_5_R3.EntityHuman; import net.minecraft.server.v1_5_R3.IInventory; diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java index 06c52b7..47ef32e 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java @@ -27,7 +27,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -// Volatile +import net.minecraft.server.v1_5_R3.EntityPlayer; import net.minecraft.server.v1_5_R3.IInventory; import net.minecraft.server.v1_5_R3.InventoryEnderChest; import net.minecraft.server.v1_5_R3.InventorySubcontainer; @@ -46,13 +46,13 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private CraftPlayer owner; private int maxStack = MAX_STACK; - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), - ((CraftPlayer) p).getHandle().getEnderChest().c(), - ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; + public SpecialEnderChest(Player player, Boolean online) { + super(PlayerDataManager.getHandle(player).getEnderChest().getName(), + PlayerDataManager.getHandle(player).getEnderChest().c(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.owner = nmsPlayer.getBukkitEntity(); this.items = enderChest.getContents(); } @@ -65,8 +65,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - owner = (CraftPlayer) player; - InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.owner = nmsPlayer.getBukkitEntity(); + InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java index f4668b9..f212392 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java @@ -21,11 +21,9 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_5_R3.ItemStack; import net.minecraft.server.v1_5_R3.PlayerInventory; -import org.bukkit.craftbukkit.v1_5_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_5_R3.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -35,7 +33,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; this.items = player.inventory.items; this.armor = player.inventory.armor; @@ -49,7 +47,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; this.player.inventory.armor = this.armor; playerOnline = true; diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java index 1a79320..fb5a306 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java @@ -22,7 +22,6 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_6_R1.AxisAlignedBB; import net.minecraft.server.v1_6_R1.BlockEnderChest; import net.minecraft.server.v1_6_R1.Container; @@ -36,7 +35,6 @@ import net.minecraft.server.v1_6_R1.TileEntityChest; import net.minecraft.server.v1_6_R1.TileEntityEnderChest; import net.minecraft.server.v1_6_R1.World; -import org.bukkit.craftbukkit.v1_6_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_6_R1.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -49,7 +47,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; if (block instanceof BlockEnderChest) { @@ -97,7 +95,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is API-only if (silentchest && block.getType() == Material.ENDER_CHEST) { diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java index aa3b591..24c7ccd 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_6_R1.IInventory; import org.bukkit.craftbukkit.v1_6_R1.inventory.CraftInventory; diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java index d1559f6..b186ba3 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java @@ -23,14 +23,15 @@ import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_6_R1.EntityPlayer; import net.minecraft.server.v1_6_R1.MinecraftServer; import net.minecraft.server.v1_6_R1.PlayerInteractManager; import org.bukkit.craftbukkit.v1_6_R1.CraftServer; +import org.bukkit.craftbukkit.v1_6_R1.entity.CraftPlayer; public class PlayerDataManager implements IPlayerDataManager { @@ -77,4 +78,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Arrays.asList(Bukkit.getOnlinePlayers()); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java index 92c910f..e1ea429 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_6_R1; -// Volatile import net.minecraft.server.v1_6_R1.ContainerChest; import net.minecraft.server.v1_6_R1.EntityHuman; import net.minecraft.server.v1_6_R1.IInventory; diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java index d10b591..a1051c8 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java @@ -27,7 +27,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -// Volatile +import net.minecraft.server.v1_6_R1.EntityPlayer; import net.minecraft.server.v1_6_R1.IInventory; import net.minecraft.server.v1_6_R1.InventoryEnderChest; import net.minecraft.server.v1_6_R1.InventorySubcontainer; @@ -46,13 +46,13 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private CraftPlayer owner; private int maxStack = MAX_STACK; - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), - ((CraftPlayer) p).getHandle().getEnderChest().c(), - ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; + public SpecialEnderChest(Player player, Boolean online) { + super(PlayerDataManager.getHandle(player).getEnderChest().getName(), + PlayerDataManager.getHandle(player).getEnderChest().c(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.owner = nmsPlayer.getBukkitEntity(); this.items = enderChest.getContents(); } @@ -65,8 +65,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - owner = (CraftPlayer) player; - InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.owner = nmsPlayer.getBukkitEntity(); + InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java index dc397e4..ef3cb03 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java @@ -21,11 +21,9 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_6_R1.ItemStack; import net.minecraft.server.v1_6_R1.PlayerInventory; -import org.bukkit.craftbukkit.v1_6_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_6_R1.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -35,7 +33,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; this.items = player.inventory.items; this.armor = player.inventory.armor; @@ -49,7 +47,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; this.player.inventory.armor = this.armor; playerOnline = true; diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java index ab1ff97..1b20b29 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java @@ -22,7 +22,6 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_6_R2.AxisAlignedBB; import net.minecraft.server.v1_6_R2.BlockEnderChest; import net.minecraft.server.v1_6_R2.Container; @@ -36,7 +35,6 @@ import net.minecraft.server.v1_6_R2.TileEntityChest; import net.minecraft.server.v1_6_R2.TileEntityEnderChest; import net.minecraft.server.v1_6_R2.World; -import org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -49,7 +47,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; if (block instanceof BlockEnderChest) { @@ -97,7 +95,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is API-only if (silentchest && block.getType() == Material.ENDER_CHEST) { diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java index 25f85bc..6dbaf56 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_6_R2.IInventory; import org.bukkit.craftbukkit.v1_6_R2.inventory.CraftInventory; diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java index 36160bc..f0f7b69 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java @@ -23,14 +23,15 @@ import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_6_R2.EntityPlayer; import net.minecraft.server.v1_6_R2.MinecraftServer; import net.minecraft.server.v1_6_R2.PlayerInteractManager; import org.bukkit.craftbukkit.v1_6_R2.CraftServer; +import org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer; public class PlayerDataManager implements IPlayerDataManager { @@ -77,4 +78,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Arrays.asList(Bukkit.getOnlinePlayers()); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java index b8cb9dc..d86ca95 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_6_R2; -// Volatile import net.minecraft.server.v1_6_R2.ContainerChest; import net.minecraft.server.v1_6_R2.EntityHuman; import net.minecraft.server.v1_6_R2.IInventory; diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java index b7216ec..86ae0c0 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java @@ -27,7 +27,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -// Volatile +import net.minecraft.server.v1_6_R2.EntityPlayer; import net.minecraft.server.v1_6_R2.IInventory; import net.minecraft.server.v1_6_R2.InventoryEnderChest; import net.minecraft.server.v1_6_R2.InventorySubcontainer; @@ -46,13 +46,13 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private CraftPlayer owner; private int maxStack = MAX_STACK; - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), - ((CraftPlayer) p).getHandle().getEnderChest().c(), - ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; + public SpecialEnderChest(Player player, Boolean online) { + super(PlayerDataManager.getHandle(player).getEnderChest().getName(), + PlayerDataManager.getHandle(player).getEnderChest().c(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.owner = nmsPlayer.getBukkitEntity(); this.items = enderChest.getContents(); } @@ -65,8 +65,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - owner = (CraftPlayer) player; - InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.owner = nmsPlayer.getBukkitEntity(); + InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java index 3e766da..f25c8cc 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java @@ -21,11 +21,9 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_6_R2.ItemStack; import net.minecraft.server.v1_6_R2.PlayerInventory; -import org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_6_R2.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -35,7 +33,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; this.items = player.inventory.items; this.armor = player.inventory.armor; @@ -49,7 +47,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; this.player.inventory.armor = this.armor; playerOnline = true; diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java index d97d39d..a7dec1d 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java @@ -22,7 +22,6 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_6_R3.AxisAlignedBB; import net.minecraft.server.v1_6_R3.BlockEnderChest; import net.minecraft.server.v1_6_R3.Container; @@ -36,7 +35,6 @@ import net.minecraft.server.v1_6_R3.TileEntityChest; import net.minecraft.server.v1_6_R3.TileEntityEnderChest; import net.minecraft.server.v1_6_R3.World; -import org.bukkit.craftbukkit.v1_6_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_6_R3.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -49,7 +47,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; if (block instanceof BlockEnderChest) { @@ -97,7 +95,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is API-only if (silentchest && block.getType() == Material.ENDER_CHEST) { diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java index 9bb400f..1a41928 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_6_R3.IInventory; import org.bukkit.craftbukkit.v1_6_R3.inventory.CraftInventory; diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java index 4f8758c..f930485 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java @@ -23,14 +23,15 @@ import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_6_R3.EntityPlayer; import net.minecraft.server.v1_6_R3.MinecraftServer; import net.minecraft.server.v1_6_R3.PlayerInteractManager; import org.bukkit.craftbukkit.v1_6_R3.CraftServer; +import org.bukkit.craftbukkit.v1_6_R3.entity.CraftPlayer; public class PlayerDataManager implements IPlayerDataManager { @@ -77,4 +78,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Arrays.asList(Bukkit.getOnlinePlayers()); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java index 57675ba..19b20d6 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_6_R3; -// Volatile import net.minecraft.server.v1_6_R3.ContainerChest; import net.minecraft.server.v1_6_R3.EntityHuman; import net.minecraft.server.v1_6_R3.IInventory; diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java index ef0a51e..810fd72 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java @@ -27,7 +27,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -// Volatile +import net.minecraft.server.v1_6_R3.EntityPlayer; import net.minecraft.server.v1_6_R3.IInventory; import net.minecraft.server.v1_6_R3.InventoryEnderChest; import net.minecraft.server.v1_6_R3.InventorySubcontainer; @@ -46,13 +46,13 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private CraftPlayer owner; private int maxStack = MAX_STACK; - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getName(), - ((CraftPlayer) p).getHandle().getEnderChest().c(), - ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; + public SpecialEnderChest(Player player, Boolean online) { + super(PlayerDataManager.getHandle(player).getEnderChest().getName(), + PlayerDataManager.getHandle(player).getEnderChest().c(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.owner = nmsPlayer.getBukkitEntity(); this.items = enderChest.getContents(); } @@ -65,8 +65,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - owner = (CraftPlayer) player; - InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.owner = nmsPlayer.getBukkitEntity(); + InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java index 9031b60..c6d4aac 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java @@ -21,11 +21,9 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_6_R3.ItemStack; import net.minecraft.server.v1_6_R3.PlayerInventory; -import org.bukkit.craftbukkit.v1_6_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_6_R3.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -35,7 +33,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; this.items = player.inventory.items; this.armor = player.inventory.armor; @@ -49,7 +47,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; this.player.inventory.armor = this.armor; playerOnline = true; diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java index c9e82a1..2e71862 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java @@ -22,7 +22,6 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -//Volatile import net.minecraft.server.v1_7_R1.AxisAlignedBB; import net.minecraft.server.v1_7_R1.Block; import net.minecraft.server.v1_7_R1.BlockEnderChest; @@ -37,7 +36,6 @@ import net.minecraft.server.v1_7_R1.TileEntityChest; import net.minecraft.server.v1_7_R1.TileEntityEnderChest; import net.minecraft.server.v1_7_R1.World; -import org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -50,7 +48,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; if (block instanceof BlockEnderChest) { @@ -98,7 +96,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is API-only if (silentchest && block.getType() == Material.ENDER_CHEST) { diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java index 372a2b9..056d132 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_7_R1.IInventory; import org.bukkit.craftbukkit.v1_7_R1.inventory.CraftInventory; diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java index 1b94342..e063345 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java @@ -23,15 +23,16 @@ import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_7_R1.EntityPlayer; import net.minecraft.server.v1_7_R1.MinecraftServer; import net.minecraft.server.v1_7_R1.PlayerInteractManager; import net.minecraft.util.com.mojang.authlib.GameProfile; import org.bukkit.craftbukkit.v1_7_R1.CraftServer; +import org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer; public class PlayerDataManager implements IPlayerDataManager { @@ -78,4 +79,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Arrays.asList(Bukkit.getOnlinePlayers()); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java index 232c4b7..ea7861c 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_7_R1; -// Volatile import net.minecraft.server.v1_7_R1.ContainerChest; import net.minecraft.server.v1_7_R1.EntityHuman; import net.minecraft.server.v1_7_R1.IInventory; diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java index 2d0cac5..9ca3a5a 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java @@ -27,7 +27,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -// Volatile +import net.minecraft.server.v1_7_R1.EntityPlayer; import net.minecraft.server.v1_7_R1.IInventory; import net.minecraft.server.v1_7_R1.InventoryEnderChest; import net.minecraft.server.v1_7_R1.InventorySubcontainer; @@ -46,13 +46,13 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private CraftPlayer owner; private int maxStack = MAX_STACK; - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getInventoryName(), - ((CraftPlayer) p).getHandle().getEnderChest().k_(), - ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; + public SpecialEnderChest(Player player, Boolean online) { + super(PlayerDataManager.getHandle(player).getEnderChest().getInventoryName(), + PlayerDataManager.getHandle(player).getEnderChest().k_(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.owner = nmsPlayer.getBukkitEntity(); this.items = enderChest.getContents(); } @@ -65,8 +65,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - owner = (CraftPlayer) player; - InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.owner = nmsPlayer.getBukkitEntity(); + InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java index 885369a..911d2fb 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java @@ -21,11 +21,9 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_7_R1.ItemStack; import net.minecraft.server.v1_7_R1.PlayerInventory; -import org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_7_R1.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -35,7 +33,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; this.items = player.inventory.items; this.armor = player.inventory.armor; @@ -49,7 +47,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; this.player.inventory.armor = this.armor; playerOnline = true; diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java index ddd5e43..2252593 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java @@ -22,7 +22,6 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -//Volatile import net.minecraft.server.v1_7_R2.AxisAlignedBB; import net.minecraft.server.v1_7_R2.Block; import net.minecraft.server.v1_7_R2.BlockEnderChest; @@ -37,7 +36,6 @@ import net.minecraft.server.v1_7_R2.TileEntityChest; import net.minecraft.server.v1_7_R2.TileEntityEnderChest; import net.minecraft.server.v1_7_R2.World; -import org.bukkit.craftbukkit.v1_7_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_7_R2.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -50,7 +48,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; if (block instanceof BlockEnderChest) { @@ -98,7 +96,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is API-only if (silentchest && block.getType() == Material.ENDER_CHEST) { diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java index 1012348..bb8464f 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_7_R2.IInventory; import org.bukkit.craftbukkit.v1_7_R2.inventory.CraftInventory; diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java index cd786df..d079981 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java @@ -23,15 +23,16 @@ import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; -//Volatile import net.minecraft.server.v1_7_R2.EntityPlayer; import net.minecraft.server.v1_7_R2.MinecraftServer; import net.minecraft.server.v1_7_R2.PlayerInteractManager; import net.minecraft.util.com.mojang.authlib.GameProfile; import org.bukkit.craftbukkit.v1_7_R2.CraftServer; +import org.bukkit.craftbukkit.v1_7_R2.entity.CraftPlayer; @SuppressWarnings("deprecation") // Deprecated methods are used properly and will not change. public class PlayerDataManager implements IPlayerDataManager { @@ -79,4 +80,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Arrays.asList(Bukkit.getOnlinePlayers()); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java index 7a9ce16..d6c943a 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_7_R2; -// Volatile import net.minecraft.server.v1_7_R2.ContainerChest; import net.minecraft.server.v1_7_R2.EntityHuman; import net.minecraft.server.v1_7_R2.IInventory; diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java index 0bd4456..1b12b80 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java @@ -27,7 +27,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -// Volatile +import net.minecraft.server.v1_7_R2.EntityPlayer; import net.minecraft.server.v1_7_R2.IInventory; import net.minecraft.server.v1_7_R2.InventoryEnderChest; import net.minecraft.server.v1_7_R2.InventorySubcontainer; @@ -46,13 +46,13 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private CraftPlayer owner; private int maxStack = MAX_STACK; - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getInventoryName(), - ((CraftPlayer) p).getHandle().getEnderChest().k_(), - ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; + public SpecialEnderChest(Player player, Boolean online) { + super(((CraftPlayer) player).getHandle().getEnderChest().getInventoryName(), + ((CraftPlayer) player).getHandle().getEnderChest().k_(), + ((CraftPlayer) player).getHandle().getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.owner = nmsPlayer.getBukkitEntity(); this.items = enderChest.getContents(); } @@ -65,8 +65,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - owner = (CraftPlayer) player; - InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.owner = nmsPlayer.getBukkitEntity(); + InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java index c08d9e0..f259f31 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java @@ -21,11 +21,9 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_7_R2.ItemStack; import net.minecraft.server.v1_7_R2.PlayerInventory; -import org.bukkit.craftbukkit.v1_7_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_7_R2.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -35,7 +33,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; this.items = player.inventory.items; this.armor = player.inventory.armor; @@ -49,7 +47,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; this.player.inventory.armor = this.armor; playerOnline = true; diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java index d057b01..da958e5 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java @@ -22,7 +22,6 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_7_R3.AxisAlignedBB; import net.minecraft.server.v1_7_R3.Block; import net.minecraft.server.v1_7_R3.BlockEnderChest; @@ -37,7 +36,6 @@ import net.minecraft.server.v1_7_R3.TileEntityChest; import net.minecraft.server.v1_7_R3.TileEntityEnderChest; import net.minecraft.server.v1_7_R3.World; -import org.bukkit.craftbukkit.v1_7_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_7_R3.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -50,7 +48,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; if (block instanceof BlockEnderChest) { @@ -98,7 +96,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is API-only if (silentchest && block.getType() == Material.ENDER_CHEST) { diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java index 41ff36f..f62dbc4 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_7_R3.IInventory; import org.bukkit.craftbukkit.v1_7_R3.inventory.CraftInventory; diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java index ecc6cf0..d8a7070 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java @@ -24,15 +24,16 @@ import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_7_R3.EntityPlayer; import net.minecraft.server.v1_7_R3.MinecraftServer; import net.minecraft.server.v1_7_R3.PlayerInteractManager; import net.minecraft.util.com.mojang.authlib.GameProfile; import org.bukkit.craftbukkit.v1_7_R3.CraftServer; +import org.bukkit.craftbukkit.v1_7_R3.entity.CraftPlayer; public class PlayerDataManager implements IPlayerDataManager { @@ -85,4 +86,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Arrays.asList(Bukkit.getOnlinePlayers()); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java index cc1a746..3e89651 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_7_R3; -// Volatile import net.minecraft.server.v1_7_R3.ContainerChest; import net.minecraft.server.v1_7_R3.EntityHuman; import net.minecraft.server.v1_7_R3.IInventory; diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java index 60d5e4e..349fccb 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java @@ -27,7 +27,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -// Volatile +import net.minecraft.server.v1_7_R3.EntityPlayer; import net.minecraft.server.v1_7_R3.IInventory; import net.minecraft.server.v1_7_R3.InventoryEnderChest; import net.minecraft.server.v1_7_R3.InventorySubcontainer; @@ -46,13 +46,13 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private CraftPlayer owner; private int maxStack = MAX_STACK; - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getInventoryName(), - ((CraftPlayer) p).getHandle().getEnderChest().k_(), - ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; + public SpecialEnderChest(Player player, Boolean online) { + super(PlayerDataManager.getHandle(player).getEnderChest().getInventoryName(), + PlayerDataManager.getHandle(player).getEnderChest().k_(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.owner = nmsPlayer.getBukkitEntity(); this.items = enderChest.getContents(); } @@ -65,8 +65,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - owner = (CraftPlayer) player; - InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.owner = nmsPlayer.getBukkitEntity(); + InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java index af2b6d3..5126447 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java @@ -21,11 +21,9 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_7_R3.ItemStack; import net.minecraft.server.v1_7_R3.PlayerInventory; -import org.bukkit.craftbukkit.v1_7_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_7_R3.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -35,7 +33,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; this.items = player.inventory.items; this.armor = player.inventory.armor; @@ -49,7 +47,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; this.player.inventory.armor = this.armor; playerOnline = true; diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java index 0b2b855..c56b6b9 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java @@ -22,7 +22,6 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_7_R4.AxisAlignedBB; import net.minecraft.server.v1_7_R4.Block; import net.minecraft.server.v1_7_R4.BlockEnderChest; @@ -37,7 +36,6 @@ import net.minecraft.server.v1_7_R4.TileEntityChest; import net.minecraft.server.v1_7_R4.TileEntityEnderChest; import net.minecraft.server.v1_7_R4.World; -import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -50,7 +48,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; if (block instanceof BlockEnderChest) { @@ -98,7 +96,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is API-only if (silentchest && block.getType() == Material.ENDER_CHEST) { diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java index dc7b7c1..4f5e0c3 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_7_R4.IInventory; import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftInventory; diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java index 62f85b9..0b765ae 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java @@ -23,15 +23,16 @@ import com.lishid.openinv.internal.IPlayerDataManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_7_R4.EntityPlayer; import net.minecraft.server.v1_7_R4.MinecraftServer; import net.minecraft.server.v1_7_R4.PlayerInteractManager; import net.minecraft.util.com.mojang.authlib.GameProfile; import org.bukkit.craftbukkit.v1_7_R4.CraftServer; +import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; public class PlayerDataManager implements IPlayerDataManager { @@ -84,4 +85,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Bukkit.getOnlinePlayers(); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java index b816cee..1243cdd 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_7_R4; -// Volatile import net.minecraft.server.v1_7_R4.ContainerChest; import net.minecraft.server.v1_7_R4.EntityHuman; import net.minecraft.server.v1_7_R4.IInventory; diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java index 3ff6db5..7716d6a 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java @@ -27,7 +27,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -//Volatile +import net.minecraft.server.v1_7_R4.EntityPlayer; import net.minecraft.server.v1_7_R4.IInventory; import net.minecraft.server.v1_7_R4.InventoryEnderChest; import net.minecraft.server.v1_7_R4.InventorySubcontainer; @@ -46,13 +46,13 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private CraftPlayer owner; private int maxStack = MAX_STACK; - public SpecialEnderChest(Player p, Boolean online) { - super(((CraftPlayer) p).getHandle().getEnderChest().getInventoryName(), - ((CraftPlayer) p).getHandle().getEnderChest().k_(), - ((CraftPlayer) p).getHandle().getEnderChest().getSize()); - CraftPlayer player = (CraftPlayer) p; - this.enderChest = player.getHandle().getEnderChest(); - this.owner = player; + public SpecialEnderChest(Player player, Boolean online) { + super(PlayerDataManager.getHandle(player).getEnderChest().getInventoryName(), + PlayerDataManager.getHandle(player).getEnderChest().k_(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.owner = nmsPlayer.getBukkitEntity(); this.items = enderChest.getContents(); } @@ -65,8 +65,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - owner = (CraftPlayer) player; - InventoryEnderChest playerEnderChest = owner.getHandle().getEnderChest(); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.owner = nmsPlayer.getBukkitEntity(); + InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java index 1283d4e..c4cadc8 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java @@ -21,11 +21,9 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_7_R4.ItemStack; import net.minecraft.server.v1_7_R4.PlayerInventory; -import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -35,7 +33,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; this.items = player.inventory.items; this.armor = player.inventory.armor; @@ -49,7 +47,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; this.player.inventory.armor = this.armor; playerOnline = true; diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java index 9b2ea34..17b195b 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java @@ -22,7 +22,6 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -//Volatile import net.minecraft.server.v1_8_R1.AxisAlignedBB; import net.minecraft.server.v1_8_R1.Block; import net.minecraft.server.v1_8_R1.BlockChest; @@ -41,7 +40,6 @@ import net.minecraft.server.v1_8_R1.TileEntityChest; import net.minecraft.server.v1_8_R1.TileEntityEnderChest; import net.minecraft.server.v1_8_R1.World; -import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -53,7 +51,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); Block block = world.getType(blockPosition).getBlock(); @@ -117,7 +115,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is API-only if (silentchest && b.getType() == Material.ENDER_CHEST) { diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java index d348ca5..6f39a6d 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_8_R1.IInventory; import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftInventory; diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java index 4e5c5c5..14b9fd4 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java @@ -25,14 +25,15 @@ import com.mojang.authlib.GameProfile; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; import net.minecraft.server.v1_8_R1.EntityPlayer; import net.minecraft.server.v1_8_R1.MinecraftServer; import net.minecraft.server.v1_8_R1.PlayerInteractManager; -//Volatile import org.bukkit.craftbukkit.v1_8_R1.CraftServer; +import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer; public class PlayerDataManager implements IPlayerDataManager { @@ -85,4 +86,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Bukkit.getOnlinePlayers(); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java index 5a5a8af..c47baa7 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_8_R1; -//Volatile import net.minecraft.server.v1_8_R1.ContainerChest; import net.minecraft.server.v1_8_R1.EntityHuman; import net.minecraft.server.v1_8_R1.IInventory; diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java index 9c2283f..b404385 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java @@ -23,12 +23,11 @@ import com.lishid.openinv.internal.ISpecialEnderChest; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -//Volatile +import net.minecraft.server.v1_8_R1.EntityPlayer; import net.minecraft.server.v1_8_R1.IInventory; import net.minecraft.server.v1_8_R1.InventoryEnderChest; import net.minecraft.server.v1_8_R1.InventorySubcontainer; -import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -38,12 +37,12 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private boolean playerOnline = false; public SpecialEnderChest(Player player, Boolean online) { - super(((CraftPlayer) player).getHandle().getEnderChest().getName(), - ((CraftPlayer) player).getHandle().getEnderChest().hasCustomName(), - ((CraftPlayer) player).getHandle().getEnderChest().getSize()); - CraftPlayer craftPlayer = (CraftPlayer) player; - this.enderChest = craftPlayer.getHandle().getEnderChest(); - this.bukkitOwner = craftPlayer; + super(PlayerDataManager.getHandle(player).getEnderChest().getName(), + PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.bukkitOwner = nmsPlayer.getBukkitEntity(); this.items = enderChest.getContents(); } @@ -56,9 +55,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - this.bukkitOwner = player; - CraftPlayer craftPlayer = (CraftPlayer) player; - InventoryEnderChest playerEnderChest = craftPlayer.getHandle().getEnderChest(); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.bukkitOwner = nmsPlayer.getBukkitEntity(); + InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java index 0ba51a6..ad1911a 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java @@ -21,11 +21,9 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -//Volatile import net.minecraft.server.v1_8_R1.ItemStack; import net.minecraft.server.v1_8_R1.PlayerInventory; -import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -35,7 +33,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; this.items = player.inventory.items; this.armor = player.inventory.armor; @@ -49,7 +47,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; this.player.inventory.armor = this.armor; playerOnline = true; diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java index eeb18af..83680c8 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java @@ -22,7 +22,6 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -//Volatile import net.minecraft.server.v1_8_R2.AxisAlignedBB; import net.minecraft.server.v1_8_R2.Block; import net.minecraft.server.v1_8_R2.BlockChest; @@ -43,7 +42,6 @@ import net.minecraft.server.v1_8_R2.TileEntityChest; import net.minecraft.server.v1_8_R2.TileEntityEnderChest; import net.minecraft.server.v1_8_R2.World; -import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_8_R2.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -55,7 +53,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); Block block = world.getType(blockPosition).getBlock(); @@ -114,7 +112,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is pretty much API-only if (silentchest && b.getType() == Material.ENDER_CHEST) { diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java index fdeb50a..7a11e0b 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_8_R2.IInventory; import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory; diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java index 4106af1..febbc68 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java @@ -25,14 +25,15 @@ import com.mojang.authlib.GameProfile; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_8_R2.EntityPlayer; import net.minecraft.server.v1_8_R2.MinecraftServer; import net.minecraft.server.v1_8_R2.PlayerInteractManager; import org.bukkit.craftbukkit.v1_8_R2.CraftServer; +import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer; public class PlayerDataManager implements IPlayerDataManager { @@ -85,4 +86,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Bukkit.getOnlinePlayers(); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java index d7e1196..066f771 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_8_R2; -// Volatile import net.minecraft.server.v1_8_R2.ContainerChest; import net.minecraft.server.v1_8_R2.EntityHuman; import net.minecraft.server.v1_8_R2.IInventory; diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java index e353cd9..278aa18 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java @@ -23,12 +23,11 @@ import com.lishid.openinv.internal.ISpecialEnderChest; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile +import net.minecraft.server.v1_8_R2.EntityPlayer; import net.minecraft.server.v1_8_R2.IInventory; import net.minecraft.server.v1_8_R2.InventoryEnderChest; import net.minecraft.server.v1_8_R2.InventorySubcontainer; -import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -38,12 +37,12 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private boolean playerOnline = false; public SpecialEnderChest(Player player, Boolean online) { - super(((CraftPlayer) player).getHandle().getEnderChest().getName(), - ((CraftPlayer) player).getHandle().getEnderChest().hasCustomName(), - ((CraftPlayer) player).getHandle().getEnderChest().getSize()); - CraftPlayer craftPlayer = (CraftPlayer) player; - this.enderChest = craftPlayer.getHandle().getEnderChest(); - this.bukkitOwner = craftPlayer; + super(PlayerDataManager.getHandle(player).getEnderChest().getName(), + PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.bukkitOwner = nmsPlayer.getBukkitEntity(); this.items = enderChest.getContents(); } @@ -56,9 +55,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - this.bukkitOwner = player; - CraftPlayer craftPlayer = (CraftPlayer) player; - InventoryEnderChest playerEnderChest = craftPlayer.getHandle().getEnderChest(); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.bukkitOwner = nmsPlayer.getBukkitEntity(); + InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java index 34bd8ab..0f4e596 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java @@ -21,11 +21,9 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_8_R2.ItemStack; import net.minecraft.server.v1_8_R2.PlayerInventory; -import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -35,7 +33,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; this.items = player.inventory.items; this.armor = player.inventory.armor; @@ -49,7 +47,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; this.player.inventory.armor = this.armor; playerOnline = true; diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java index baa29cc..fea742a 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java @@ -22,7 +22,6 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -//Volatile import net.minecraft.server.v1_8_R3.AxisAlignedBB; import net.minecraft.server.v1_8_R3.Block; import net.minecraft.server.v1_8_R3.BlockChest; @@ -43,7 +42,6 @@ import net.minecraft.server.v1_8_R3.TileEntityChest; import net.minecraft.server.v1_8_R3.TileEntityEnderChest; import net.minecraft.server.v1_8_R3.World; -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -55,7 +53,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); Block block = world.getType(blockPosition).getBlock(); @@ -114,7 +112,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is pretty much API-only if (silentchest && b.getType() == Material.ENDER_CHEST) { diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java index 5b18964..98c3357 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_8_R3.IInventory; import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java index 62eee4c..76bcaf2 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java @@ -25,14 +25,15 @@ import com.mojang.authlib.GameProfile; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; import net.minecraft.server.v1_8_R3.EntityPlayer; import net.minecraft.server.v1_8_R3.MinecraftServer; import net.minecraft.server.v1_8_R3.PlayerInteractManager; -//Volatile import org.bukkit.craftbukkit.v1_8_R3.CraftServer; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; public class PlayerDataManager implements IPlayerDataManager { @@ -85,4 +86,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Bukkit.getOnlinePlayers(); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java index 24c4288..ef20562 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_8_R3; -// Volatile import net.minecraft.server.v1_8_R3.ContainerChest; import net.minecraft.server.v1_8_R3.EntityHuman; import net.minecraft.server.v1_8_R3.IInventory; diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java index a8780c5..1b4b8f4 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java @@ -23,12 +23,11 @@ import com.lishid.openinv.internal.ISpecialEnderChest; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile +import net.minecraft.server.v1_8_R3.EntityPlayer; import net.minecraft.server.v1_8_R3.IInventory; import net.minecraft.server.v1_8_R3.InventoryEnderChest; import net.minecraft.server.v1_8_R3.InventorySubcontainer; -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -38,12 +37,12 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private boolean playerOnline = false; public SpecialEnderChest(Player player, Boolean online) { - super(((CraftPlayer) player).getHandle().getEnderChest().getName(), - ((CraftPlayer) player).getHandle().getEnderChest().hasCustomName(), - ((CraftPlayer) player).getHandle().getEnderChest().getSize()); - CraftPlayer craftPlayer = (CraftPlayer) player; - this.enderChest = craftPlayer.getHandle().getEnderChest(); - this.bukkitOwner = craftPlayer; + super(PlayerDataManager.getHandle(player).getEnderChest().getName(), + PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.bukkitOwner = nmsPlayer.getBukkitEntity(); this.items = enderChest.getContents(); } @@ -56,9 +55,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - this.bukkitOwner = player; - CraftPlayer craftPlayer = (CraftPlayer) player; - InventoryEnderChest playerEnderChest = craftPlayer.getHandle().getEnderChest(); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.bukkitOwner = nmsPlayer.getBukkitEntity(); + InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java index 25d0536..8483a4c 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java @@ -21,11 +21,9 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -//Volatile import net.minecraft.server.v1_8_R3.ItemStack; import net.minecraft.server.v1_8_R3.PlayerInventory; -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -35,7 +33,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; this.items = player.inventory.items; this.armor = player.inventory.armor; @@ -49,7 +47,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; this.player.inventory.armor = this.armor; playerOnline = true; diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java index c9d2c38..08933fd 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java @@ -22,7 +22,6 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_9_R1.AxisAlignedBB; import net.minecraft.server.v1_9_R1.Block; import net.minecraft.server.v1_9_R1.BlockChest; @@ -43,7 +42,6 @@ import net.minecraft.server.v1_9_R1.TileEntityChest; import net.minecraft.server.v1_9_R1.TileEntityEnderChest; import net.minecraft.server.v1_9_R1.World; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_9_R1.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -55,7 +53,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); Block block = world.getType(blockPosition).getBlock(); @@ -114,7 +112,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is pretty much API-only if (silentchest && b.getType() == Material.ENDER_CHEST) { diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java index 8b2c196..4cc1f93 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_9_R1.IInventory; import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java index 3a89a49..b2e3988 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java @@ -25,14 +25,15 @@ import com.mojang.authlib.GameProfile; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_9_R1.EntityPlayer; import net.minecraft.server.v1_9_R1.MinecraftServer; import net.minecraft.server.v1_9_R1.PlayerInteractManager; import org.bukkit.craftbukkit.v1_9_R1.CraftServer; +import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; public class PlayerDataManager implements IPlayerDataManager { @@ -85,4 +86,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Bukkit.getOnlinePlayers(); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java index 3a25cf6..fa11826 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_9_R1; -// Volatile import net.minecraft.server.v1_9_R1.ContainerChest; import net.minecraft.server.v1_9_R1.EntityHuman; import net.minecraft.server.v1_9_R1.IInventory; diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java index 2306fca..ef2b09f 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java @@ -23,12 +23,11 @@ import com.lishid.openinv.internal.ISpecialEnderChest; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile +import net.minecraft.server.v1_9_R1.EntityPlayer; import net.minecraft.server.v1_9_R1.IInventory; import net.minecraft.server.v1_9_R1.InventoryEnderChest; import net.minecraft.server.v1_9_R1.InventorySubcontainer; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -38,12 +37,12 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private boolean playerOnline = false; public SpecialEnderChest(Player player, Boolean online) { - super(((CraftPlayer) player).getHandle().getEnderChest().getName(), - ((CraftPlayer) player).getHandle().getEnderChest().hasCustomName(), - ((CraftPlayer) player).getHandle().getEnderChest().getSize()); - CraftPlayer craftPlayer = (CraftPlayer) player; - this.enderChest = craftPlayer.getHandle().getEnderChest(); - this.bukkitOwner = craftPlayer; + super(PlayerDataManager.getHandle(player).getEnderChest().getName(), + PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.bukkitOwner = nmsPlayer.getBukkitEntity(); this.items = enderChest.getContents(); } @@ -56,9 +55,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - this.bukkitOwner = player; - CraftPlayer craftPlayer = (CraftPlayer) player; - InventoryEnderChest playerEnderChest = craftPlayer.getHandle().getEnderChest(); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.bukkitOwner = nmsPlayer.getBukkitEntity(); + InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java index 1b61828..f86e4b2 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java @@ -24,11 +24,9 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_9_R1.ItemStack; import net.minecraft.server.v1_9_R1.PlayerInventory; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -38,7 +36,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; setItemArrays(this, player.inventory.items, player.inventory.armor, player.inventory.extraSlots); } @@ -88,7 +86,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player); setItemArrays(this.player.inventory, items, armor, extraSlots); playerOnline = true; } diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java index 550cc08..539c45d 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java @@ -22,7 +22,6 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_9_R2.AxisAlignedBB; import net.minecraft.server.v1_9_R2.Block; import net.minecraft.server.v1_9_R2.BlockChest; @@ -43,7 +42,6 @@ import net.minecraft.server.v1_9_R2.TileEntityChest; import net.minecraft.server.v1_9_R2.TileEntityEnderChest; import net.minecraft.server.v1_9_R2.World; -import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_9_R2.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @@ -55,7 +53,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); World world = player.world; BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); Block block = world.getType(blockPosition).getBlock(); @@ -114,7 +112,7 @@ public class AnySilentContainer implements IAnySilentContainer { @Override public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); + EntityPlayer player = PlayerDataManager.getHandle(p); // Silent ender chest is pretty much API-only if (silentchest && b.getType() == Material.ENDER_CHEST) { diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java index 0f00bc8..fb2d2cc 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java @@ -23,7 +23,6 @@ import com.lishid.openinv.util.InternalAccessor; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_9_R2.IInventory; import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java index d5fc3d2..ff004f4 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java @@ -25,14 +25,15 @@ import com.mojang.authlib.GameProfile; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.entity.Player; -// Volatile import net.minecraft.server.v1_9_R2.EntityPlayer; import net.minecraft.server.v1_9_R2.MinecraftServer; import net.minecraft.server.v1_9_R2.PlayerInteractManager; import org.bukkit.craftbukkit.v1_9_R2.CraftServer; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; public class PlayerDataManager implements IPlayerDataManager { @@ -85,4 +86,24 @@ public class PlayerDataManager implements IPlayerDataManager { return Bukkit.getOnlinePlayers(); } + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + } diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SilentContainerChest.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SilentContainerChest.java index d0fba74..f08ecb8 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SilentContainerChest.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SilentContainerChest.java @@ -16,7 +16,6 @@ package com.lishid.openinv.internal.v1_9_R2; -// Volatile import net.minecraft.server.v1_9_R2.ContainerChest; import net.minecraft.server.v1_9_R2.EntityHuman; import net.minecraft.server.v1_9_R2.IInventory; diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java index 01c4be5..d95ea82 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java @@ -23,12 +23,11 @@ import com.lishid.openinv.internal.ISpecialEnderChest; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile +import net.minecraft.server.v1_9_R2.EntityPlayer; import net.minecraft.server.v1_9_R2.IInventory; import net.minecraft.server.v1_9_R2.InventoryEnderChest; import net.minecraft.server.v1_9_R2.InventorySubcontainer; -import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -38,12 +37,12 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private boolean playerOnline = false; public SpecialEnderChest(Player player, Boolean online) { - super(((CraftPlayer) player).getHandle().getEnderChest().getName(), - ((CraftPlayer) player).getHandle().getEnderChest().hasCustomName(), - ((CraftPlayer) player).getHandle().getEnderChest().getSize()); - CraftPlayer craftPlayer = (CraftPlayer) player; - this.enderChest = craftPlayer.getHandle().getEnderChest(); - this.bukkitOwner = craftPlayer; + super(PlayerDataManager.getHandle(player).getEnderChest().getName(), + PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.bukkitOwner = nmsPlayer.getBukkitEntity(); this.items = enderChest.getContents(); } @@ -56,9 +55,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento public void setPlayerOnline(Player player) { if (!playerOnline) { try { - this.bukkitOwner = player; - CraftPlayer craftPlayer = (CraftPlayer) player; - InventoryEnderChest playerEnderChest = craftPlayer.getHandle().getEnderChest(); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.bukkitOwner = nmsPlayer.getBukkitEntity(); + InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java index 4682171..b4e23de 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java @@ -24,12 +24,10 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -// Volatile import net.minecraft.server.v1_9_R2.ItemStack; import net.minecraft.server.v1_9_R2.PlayerInventory; import org.bukkit.craftbukkit.v1_9_R2.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -39,7 +37,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private boolean playerOnline = false; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(((CraftPlayer) bukkitPlayer).getHandle()); + super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; setItemArrays(this, player.inventory.items, player.inventory.armor, player.inventory.extraSlots); } @@ -89,7 +87,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = ((CraftPlayer) player).getHandle(); + this.player = PlayerDataManager.getHandle(player); setItemArrays(this.player.inventory, items, armor, extraSlots); playerOnline = true; } -- 2.49.1 From d6df1a0871c335f3f2ff70586fe54af4dc3a1d3d Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 20 Jan 2017 12:59:03 -0500 Subject: [PATCH 093/253] Bump version to 3.1.0 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 27 files changed, 50 insertions(+), 50 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index c0273c6..b331677 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.0-SNAPSHOT + 3.1.0 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 3434d70..ae55488 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.0-SNAPSHOT + 3.1.0 openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 9090031..9c89901 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.0-SNAPSHOT + 3.1.0 openinvcommon @@ -22,7 +22,7 @@ com.lishid openinvapi - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 92040e3..6f41394 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_4_5 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index e59ddfd..0d24d0c 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_4_6 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/pom.xml b/internal/pom.xml index 69ec088..8553745 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.0-SNAPSHOT + 3.1.0 openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index cce3865..791f3e5 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_10_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 3a8f614..8086c10 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_11_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index c55cf1d..e767e61 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_4_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 9f628a0..05cae2c 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_5_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 76b5f5e..8947a27 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_5_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 90f101e..f54afd3 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_6_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 8608798..1c7ba09 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_6_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 51f6de4..72579f3 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_6_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 00a16ce..382e5b5 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_7_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index ca26359..bb1b4db 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_7_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 7798a96..bd75e50 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_7_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 3563086..ee8a6dd 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_7_R4 @@ -27,7 +27,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 9977871..a0bb685 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_8_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 0e6dfee..36746b2 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_8_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 97ebec5..bbdcd2a 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_8_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index af0111b..7951edd 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_9_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index ad83d57..cf44250 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0-SNAPSHOT + 3.1.0 openinvadapter1_9_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index 2b7f8d6..e66bd1d 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.1.0-SNAPSHOT + 3.1.0 openinvplugincore @@ -22,12 +22,12 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 com.lishid openinvpluginv1_10_r1 - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 4e3fe0a..d48ed14 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.1.0-SNAPSHOT + 3.1.0 openinvpluginv1_10_r1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0-SNAPSHOT + 3.1.0 diff --git a/plugin/pom.xml b/plugin/pom.xml index 3539fe1..70ec8e9 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.0-SNAPSHOT + 3.1.0 openinvplugin diff --git a/pom.xml b/pom.xml index 10f30e1..9fc5877 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.1.0-SNAPSHOT + 3.1.0 pom -- 2.49.1 From f27dd8a23382add152e8d0545217011bd9a18b14 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 20 Jan 2017 13:02:47 -0500 Subject: [PATCH 094/253] Bump version to 3.1.1-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 27 files changed, 50 insertions(+), 50 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index b331677..ae3aa4d 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.0 + 3.1.1-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index ae55488..5226f68 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.0 + 3.1.1-SNAPSHOT openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 9c89901..286f89c 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.0 + 3.1.1-SNAPSHOT openinvcommon @@ -22,7 +22,7 @@ com.lishid openinvapi - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 6f41394..84076c5 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_4_5 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 0d24d0c..b53cdf1 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_4_6 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/pom.xml b/internal/pom.xml index 8553745..6d0d7e5 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.0 + 3.1.1-SNAPSHOT openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 791f3e5..5dae28d 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_10_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 8086c10..c85d213 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_11_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index e767e61..2a6b9ec 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_4_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 05cae2c..394edb2 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_5_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 8947a27..fd12e58 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_5_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index f54afd3..d99c2f7 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_6_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 1c7ba09..0455fdc 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_6_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 72579f3..dfef89a 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_6_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 382e5b5..f334e72 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_7_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index bb1b4db..bb4f73c 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_7_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index bd75e50..e6530af 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_7_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index ee8a6dd..0acb1ee 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_7_R4 @@ -27,7 +27,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index a0bb685..c248673 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_8_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 36746b2..360a6bd 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_8_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index bbdcd2a..fdc72f3 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_8_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index 7951edd..ff45f87 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_9_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index cf44250..d35f92c 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.0 + 3.1.1-SNAPSHOT openinvadapter1_9_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index e66bd1d..ae0feae 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.1.0 + 3.1.1-SNAPSHOT openinvplugincore @@ -22,12 +22,12 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT com.lishid openinvpluginv1_10_r1 - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index d48ed14..c80015c 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.1.0 + 3.1.1-SNAPSHOT openinvpluginv1_10_r1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.0 + 3.1.1-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index 70ec8e9..5896fac 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.0 + 3.1.1-SNAPSHOT openinvplugin diff --git a/pom.xml b/pom.xml index 9fc5877..11f862d 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.1.0 + 3.1.1-SNAPSHOT pom -- 2.49.1 From f54481e872b7e1c948b4de54fa2c9726b199fd1f Mon Sep 17 00:00:00 2001 From: Jikoo Date: Mon, 30 Jan 2017 13:35:58 -0500 Subject: [PATCH 095/253] Fix (NoSuchMethod)Exception being caught instead of NoSuchMethodError Closes #62 --- .../lishid/openinv/internal/v1_11_R1/AnySilentContainer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java index 98ec7c0..2a5621d 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java @@ -123,7 +123,7 @@ public class AnySilentContainer implements IAnySilentContainer { try { // 1.11.2 return world.a(axisAlignedBB.a(blockPosition.shift(enumDirection))); - } catch (Exception e) { + } catch (NoSuchMethodError e) { // 1.11 return world.b(axisAlignedBB.a(blockPosition.shift(enumDirection))); } -- 2.49.1 From 12c0cac3117024f38b9669ed96b34f878aa5cda4 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Mon, 30 Jan 2017 13:38:10 -0500 Subject: [PATCH 096/253] Bump version to 3.1.1 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 27 files changed, 50 insertions(+), 50 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index ae3aa4d..fa52e54 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.1-SNAPSHOT + 3.1.1 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 5226f68..c096006 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.1-SNAPSHOT + 3.1.1 openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 286f89c..c4bcffe 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.1-SNAPSHOT + 3.1.1 openinvcommon @@ -22,7 +22,7 @@ com.lishid openinvapi - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 84076c5..5bf1ff4 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_4_5 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index b53cdf1..a47c5c0 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_4_6 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/pom.xml b/internal/pom.xml index 6d0d7e5..16992ba 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.1-SNAPSHOT + 3.1.1 openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 5dae28d..3509d98 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_10_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index c85d213..743b292 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_11_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 2a6b9ec..0534e08 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_4_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 394edb2..8009884 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_5_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index fd12e58..e68fc0e 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_5_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index d99c2f7..e2b8786 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_6_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 0455fdc..ec84133 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_6_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index dfef89a..814b38b 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_6_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index f334e72..d58f396 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_7_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index bb4f73c..5fdf79a 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_7_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index e6530af..abab2fa 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_7_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 0acb1ee..21f4857 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_7_R4 @@ -27,7 +27,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index c248673..01e8947 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_8_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 360a6bd..1afe00a 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_8_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index fdc72f3..9ba74f6 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_8_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index ff45f87..12e1799 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_9_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index d35f92c..d48759f 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1-SNAPSHOT + 3.1.1 openinvadapter1_9_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index ae0feae..e46e1fc 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.1.1-SNAPSHOT + 3.1.1 openinvplugincore @@ -22,12 +22,12 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 com.lishid openinvpluginv1_10_r1 - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index c80015c..48d4878 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.1.1-SNAPSHOT + 3.1.1 openinvpluginv1_10_r1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1-SNAPSHOT + 3.1.1 diff --git a/plugin/pom.xml b/plugin/pom.xml index 5896fac..bab351c 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.1-SNAPSHOT + 3.1.1 openinvplugin diff --git a/pom.xml b/pom.xml index 11f862d..1976cd6 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.1.1-SNAPSHOT + 3.1.1 pom -- 2.49.1 From 7ab0003b6295a06527dff2d81ebc7420b3d3da0f Mon Sep 17 00:00:00 2001 From: Jikoo Date: Mon, 30 Jan 2017 13:38:36 -0500 Subject: [PATCH 097/253] Bump version to 3.1.2-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 27 files changed, 50 insertions(+), 50 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index fa52e54..f787d9b 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.1 + 3.1.2-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index c096006..3dab3e6 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.1 + 3.1.2-SNAPSHOT openinvassembly diff --git a/common/pom.xml b/common/pom.xml index c4bcffe..927e195 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.1 + 3.1.2-SNAPSHOT openinvcommon @@ -22,7 +22,7 @@ com.lishid openinvapi - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 5bf1ff4..45b2968 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_4_5 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index a47c5c0..613d90e 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_4_6 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/pom.xml b/internal/pom.xml index 16992ba..6f159ad 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.1 + 3.1.2-SNAPSHOT openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 3509d98..004f999 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_10_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 743b292..8ae08a4 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_11_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 0534e08..77c2128 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_4_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 8009884..6ca9aa6 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_5_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index e68fc0e..95d7290 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_5_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index e2b8786..8714b23 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_6_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index ec84133..b7453fd 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_6_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 814b38b..7389bd4 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_6_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index d58f396..9b231fa 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_7_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 5fdf79a..e2a9506 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_7_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index abab2fa..df0290b 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_7_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 21f4857..e5360bb 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_7_R4 @@ -27,7 +27,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 01e8947..efe9511 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_8_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 1afe00a..136126b 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_8_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 9ba74f6..53e7ed9 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_8_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index 12e1799..a3e4dd4 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_9_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index d48759f..e222bf4 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.1 + 3.1.2-SNAPSHOT openinvadapter1_9_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index e46e1fc..9000573 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.1.1 + 3.1.2-SNAPSHOT openinvplugincore @@ -22,12 +22,12 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT com.lishid openinvpluginv1_10_r1 - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 48d4878..3d8bd6d 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.1.1 + 3.1.2-SNAPSHOT openinvpluginv1_10_r1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.1 + 3.1.2-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index bab351c..da01921 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.1 + 3.1.2-SNAPSHOT openinvplugin diff --git a/pom.xml b/pom.xml index 1976cd6..dfb3b7b 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.1.1 + 3.1.2-SNAPSHOT pom -- 2.49.1 From 443e0c489ed35ec3f2e9d1a2cef9516a334c7e13 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Mon, 13 Feb 2017 19:56:32 -0500 Subject: [PATCH 098/253] Synchronize cache (#63) --- .../java/com/lishid/openinv/util/Cache.java | 62 +++++++++++-------- 1 file changed, 36 insertions(+), 26 deletions(-) diff --git a/common/src/main/java/com/lishid/openinv/util/Cache.java b/common/src/main/java/com/lishid/openinv/util/Cache.java index 5a552b3..74986df 100644 --- a/common/src/main/java/com/lishid/openinv/util/Cache.java +++ b/common/src/main/java/com/lishid/openinv/util/Cache.java @@ -9,7 +9,7 @@ import com.google.common.collect.Multimap; import com.google.common.collect.TreeMultimap; /** - * A minimal time-based cache implementation backed by a HashMap and TreeMultimap. + * A minimal thread-safe time-based cache implementation backed by a HashMap and TreeMultimap. * * @author Jikoo */ @@ -59,8 +59,10 @@ public class Cache { // Invalidate key - runs lazy check and ensures value won't be cleaned up early invalidate(key); - internal.put(key, value); - expiry.put(System.currentTimeMillis() + retention, key); + synchronized (internal) { + internal.put(key, value); + expiry.put(System.currentTimeMillis() + retention, key); + } } /** @@ -70,10 +72,12 @@ public class Cache { * @return the value to which the specified key is mapped, or null if no value is mapped for the key */ public V get(K key) { - // Run lazy check to clean cache - lazyCheck(); + synchronized (internal) { + // Run lazy check to clean cache + lazyCheck(); - return internal.get(key); + return internal.get(key); + } } /** @@ -83,10 +87,12 @@ public class Cache { * @return true if a mapping exists for the specified key */ public boolean containsKey(K key) { - // Run lazy check to clean cache - lazyCheck(); + synchronized (internal) { + // Run lazy check to clean cache + lazyCheck(); - return internal.containsKey(key); + return internal.containsKey(key); + } } /** @@ -95,22 +101,24 @@ public class Cache { * @param key key to invalidate */ public void invalidate(K key) { - // Run lazy check to clean cache - lazyCheck(); + synchronized (internal) { + // Run lazy check to clean cache + lazyCheck(); - if (!internal.containsKey(key)) { - // Value either not present or cleaned by lazy check. Either way, we're good - return; - } + if (!internal.containsKey(key)) { + // Value either not present or cleaned by lazy check. Either way, we're good + return; + } - // Remove stored object - internal.remove(key); + // Remove stored object + internal.remove(key); - // Remove expiration entry - prevents more work later, plus prevents issues with values invalidating early - for (Iterator> iterator = expiry.entries().iterator(); iterator.hasNext();) { - if (key.equals(iterator.next().getValue())) { - iterator.remove(); - break; + // Remove expiration entry - prevents more work later, plus prevents issues with values invalidating early + for (Iterator> iterator = expiry.entries().iterator(); iterator.hasNext();) { + if (key.equals(iterator.next().getValue())) { + iterator.remove(); + break; + } } } } @@ -119,11 +127,13 @@ public class Cache { * Forcibly invalidates all keys, even if they are considered to be in use. */ public void invalidateAll() { - for (V value : internal.values()) { - postRemoval.run(value); + synchronized (internal) { + for (V value : internal.values()) { + postRemoval.run(value); + } + expiry.clear(); + internal.clear(); } - expiry.clear(); - internal.clear(); } /** -- 2.49.1 From 32ec8d8147bc87f80a6956254f663162c161c9aa Mon Sep 17 00:00:00 2001 From: Jikoo Date: Mon, 13 Feb 2017 19:58:56 -0500 Subject: [PATCH 099/253] Bump version to 3.1.2 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 27 files changed, 50 insertions(+), 50 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index f787d9b..3e6c4c5 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.2-SNAPSHOT + 3.1.2 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 3dab3e6..9b963b0 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.2-SNAPSHOT + 3.1.2 openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 927e195..1671c54 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.2-SNAPSHOT + 3.1.2 openinvcommon @@ -22,7 +22,7 @@ com.lishid openinvapi - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 45b2968..7691a4f 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_4_5 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 613d90e..1482e99 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_4_6 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/pom.xml b/internal/pom.xml index 6f159ad..4b4f470 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.2-SNAPSHOT + 3.1.2 openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 004f999..2c59d30 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_10_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 8ae08a4..0215229 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_11_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 77c2128..bd5645e 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_4_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 6ca9aa6..dc23022 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_5_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 95d7290..67836cd 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_5_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 8714b23..97e27e8 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_6_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index b7453fd..202fddd 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_6_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 7389bd4..5ad6168 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_6_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 9b231fa..9d08dbf 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_7_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index e2a9506..59d8519 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_7_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index df0290b..7a50fa9 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_7_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index e5360bb..cf932d0 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_7_R4 @@ -27,7 +27,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index efe9511..ca01b6b 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_8_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 136126b..dfee5f8 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_8_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 53e7ed9..1126581 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_8_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index a3e4dd4..92c572b 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_9_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index e222bf4..ce6df47 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2-SNAPSHOT + 3.1.2 openinvadapter1_9_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index 9000573..bcf89d1 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.1.2-SNAPSHOT + 3.1.2 openinvplugincore @@ -22,12 +22,12 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 com.lishid openinvpluginv1_10_r1 - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 3d8bd6d..a56a4ff 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.1.2-SNAPSHOT + 3.1.2 openinvpluginv1_10_r1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2-SNAPSHOT + 3.1.2 diff --git a/plugin/pom.xml b/plugin/pom.xml index da01921..f996fa9 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.2-SNAPSHOT + 3.1.2 openinvplugin diff --git a/pom.xml b/pom.xml index dfb3b7b..9abdb3e 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.1.2-SNAPSHOT + 3.1.2 pom -- 2.49.1 From 12c3ebb7989863c797a8e001077f6c5eb88033ce Mon Sep 17 00:00:00 2001 From: Jikoo Date: Mon, 13 Feb 2017 20:02:12 -0500 Subject: [PATCH 100/253] Bump version to 3.1.3-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 27 files changed, 50 insertions(+), 50 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 3e6c4c5..34c3adb 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.2 + 3.1.3-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 9b963b0..3c043f9 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.2 + 3.1.3-SNAPSHOT openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 1671c54..922ffde 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.2 + 3.1.3-SNAPSHOT openinvcommon @@ -22,7 +22,7 @@ com.lishid openinvapi - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 7691a4f..936f4b7 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_4_5 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 1482e99..b74413c 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_4_6 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/pom.xml b/internal/pom.xml index 4b4f470..38ea425 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.2 + 3.1.3-SNAPSHOT openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 2c59d30..e137db4 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_10_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 0215229..40aa66b 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_11_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index bd5645e..2966bf9 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_4_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index dc23022..3e215ba 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_5_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 67836cd..1b57d74 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_5_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 97e27e8..47e42ee 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_6_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 202fddd..79c5c79 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_6_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 5ad6168..a0c0e0a 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_6_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 9d08dbf..412dbee 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_7_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 59d8519..ba8f95e 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_7_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 7a50fa9..18560c8 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_7_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index cf932d0..1c680de 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_7_R4 @@ -27,7 +27,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index ca01b6b..7ba3bdd 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_8_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index dfee5f8..b69303c 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_8_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 1126581..f411c14 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_8_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index 92c572b..5ce0a33 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_9_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index ce6df47..f7e3e75 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.2 + 3.1.3-SNAPSHOT openinvadapter1_9_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index bcf89d1..4455776 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.1.2 + 3.1.3-SNAPSHOT openinvplugincore @@ -22,12 +22,12 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT com.lishid openinvpluginv1_10_r1 - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index a56a4ff..7b4f679 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.1.2 + 3.1.3-SNAPSHOT openinvpluginv1_10_r1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.2 + 3.1.3-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index f996fa9..5977fe0 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.2 + 3.1.3-SNAPSHOT openinvplugin diff --git a/pom.xml b/pom.xml index 9abdb3e..cdffd78 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.1.2 + 3.1.3-SNAPSHOT pom -- 2.49.1 From 6744e7112741a133bd20addabe76807ac86c5b44 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 14 May 2017 11:47:15 -0400 Subject: [PATCH 101/253] Support 1.12-pre2 (#65) --- internal/pom.xml | 8 +- internal/v1_12_R1/pom.xml | 28 ++ .../internal/v1_12_R1/AnySilentContainer.java | 284 ++++++++++++++++++ .../internal/v1_12_R1/InventoryAccess.java | 74 +++++ .../internal/v1_12_R1/PlayerDataManager.java | 104 +++++++ .../v1_12_R1/SilentContainerChest.java | 40 +++ .../v1_12_R1/SilentContainerShulkerBox.java | 57 ++++ .../internal/v1_12_R1/SpecialEnderChest.java | 101 +++++++ .../v1_12_R1/SpecialPlayerInventory.java | 255 ++++++++++++++++ 9 files changed, 948 insertions(+), 3 deletions(-) create mode 100644 internal/v1_12_R1/pom.xml create mode 100644 internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java create mode 100644 internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/InventoryAccess.java create mode 100644 internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java create mode 100644 internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SilentContainerChest.java create mode 100644 internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SilentContainerShulkerBox.java create mode 100644 internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java create mode 100644 internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java diff --git a/internal/pom.xml b/internal/pom.xml index 38ea425..28d97f9 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -1,5 +1,5 @@ - + + 4.0.0 @@ -32,6 +32,7 @@ v1_9_R2 v1_10_R1 v1_11_R1 + v1_12_R1 @@ -60,9 +61,10 @@ v1_9_R2 v1_10_R1 v1_11_R1 + v1_12_R1 - + \ No newline at end of file diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml new file mode 100644 index 0000000..9d4fe00 --- /dev/null +++ b/internal/v1_12_R1/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + + com.lishid + openinvinternal + 3.1.3-SNAPSHOT + + + openinvadapter1_12_R1 + OpenInvAdapter1_12_R1 + + + + org.spigotmc + spigot + 1.12-R0.1-SNAPSHOT + provided + + + com.lishid + openinvcommon + 3.1.3-SNAPSHOT + + + + diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java new file mode 100644 index 0000000..cd84341 --- /dev/null +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java @@ -0,0 +1,284 @@ +/* + * 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_12_R1; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.block.BlockState; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; + +import net.minecraft.server.v1_12_R1.AxisAlignedBB; +import net.minecraft.server.v1_12_R1.Block; +import net.minecraft.server.v1_12_R1.BlockChest; +import net.minecraft.server.v1_12_R1.BlockEnderChest; +import net.minecraft.server.v1_12_R1.BlockPosition; +import net.minecraft.server.v1_12_R1.BlockShulkerBox; +import net.minecraft.server.v1_12_R1.Container; +import net.minecraft.server.v1_12_R1.Entity; +import net.minecraft.server.v1_12_R1.EntityOcelot; +import net.minecraft.server.v1_12_R1.EntityPlayer; +import net.minecraft.server.v1_12_R1.EnumDirection; +import net.minecraft.server.v1_12_R1.IBlockData; +import net.minecraft.server.v1_12_R1.ITileInventory; +import net.minecraft.server.v1_12_R1.InventoryEnderChest; +import net.minecraft.server.v1_12_R1.InventoryLargeChest; +import net.minecraft.server.v1_12_R1.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_12_R1.StatisticList; +import net.minecraft.server.v1_12_R1.TileEntity; +import net.minecraft.server.v1_12_R1.TileEntityChest; +import net.minecraft.server.v1_12_R1.TileEntityEnderChest; +import net.minecraft.server.v1_12_R1.TileEntityShulkerBox; +import net.minecraft.server.v1_12_R1.World; + +import org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory; + +public class AnySilentContainer implements IAnySilentContainer { + + @Override + public boolean activateContainer(final Player p, final boolean silentchest, + final org.bukkit.block.Block b) { + + EntityPlayer player = PlayerDataManager.getHandle(p); + + // Silent ender chest is pretty much API-only + if (silentchest && b.getType() == Material.ENDER_CHEST) { + p.openInventory(p.getEnderChest()); + player.b(StatisticList.getStatistic("stat.enderchestOpened")); + return true; + } + + final World world = player.world; + final BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + final Object tile = world.getTileEntity(blockPosition); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + player.b(StatisticList.getStatistic("stat.enderchestOpened")); + return true; + } + + if (!(tile instanceof ITileInventory)) { + return false; + } + + ITileInventory tileInventory = (ITileInventory) tile; + Block block = world.getType(blockPosition).getBlock(); + Container container = null; + + if (block instanceof BlockChest) { + for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if (localEnumDirection == EnumDirection.WEST + || localEnumDirection == EnumDirection.NORTH) { + tileInventory = new InventoryLargeChest("container.chestDouble", + (TileEntityChest) localTileEntity, tileInventory); + } else { + tileInventory = new InventoryLargeChest("container.chestDouble", tileInventory, + (TileEntityChest) localTileEntity); + } + break; + } + + BlockChest blockChest = (BlockChest) block; + if (blockChest.g == BlockChest.Type.BASIC) { + player.b(StatisticList.getStatistic("stat.chestOpened")); + } else if (blockChest.g == BlockChest.Type.TRAP) { + player.b(StatisticList.getStatistic("stat.trappedChestTriggered")); + } + + if (silentchest) { + container = new SilentContainerChest(player.inventory, tileInventory, player); + } + } + + if (block instanceof BlockShulkerBox) { + player.b(StatisticList.getStatistic("stat.shulkerBoxOpened")); + + if (silentchest && tileInventory instanceof TileEntityShulkerBox) { + // Set value to current + 1. Ensures consistency later when resetting. + SilentContainerShulkerBox.setOpenValue((TileEntityShulkerBox) tileInventory, + SilentContainerShulkerBox.getOpenValue((TileEntityShulkerBox) tileInventory) + + 1); + + container = new SilentContainerShulkerBox(player.inventory, tileInventory, player); + } + } + + // AnyChest only - SilentChest not active or container unsupported + if (!silentchest || container == null) { + player.openContainer(tileInventory); + return true; + } + + // SilentChest + try { + // Call InventoryOpenEvent + container = CraftEventFactory.callInventoryOpenEvent(player, container, false); + if (container == null) { + return false; + } + + // Open window + int windowId = player.nextContainerCounter(); + player.playerConnection.sendPacket( + new PacketPlayOutOpenWindow(windowId, tileInventory.getContainerName(), + tileInventory.getScoreboardDisplayName(), tileInventory.getSize())); + player.activeContainer = container; + player.activeContainer.windowId = windowId; + player.activeContainer.addSlotListener(player); + + // Special handling for shulker boxes - reset value for viewers to what it was + // initially. + if (tile instanceof TileEntityShulkerBox) { + new BukkitRunnable() { + @Override + public void run() { + // TODO hacky + Object tile = world.getTileEntity(blockPosition); + if (!(tile instanceof TileEntityShulkerBox)) { + return; + } + TileEntityShulkerBox box = (TileEntityShulkerBox) tile; + // Reset back - we added 1, and calling TileEntityShulkerBox#startOpen adds + // 1 more. + SilentContainerShulkerBox.setOpenValue(box, + SilentContainerShulkerBox.getOpenValue((TileEntityShulkerBox) tile) + - 2); + } + }.runTaskLater(Bukkit.getPluginManager().getPlugin("OpenInv"), 2); + } + + return true; + } catch (Exception e) { + e.printStackTrace(); + p.sendMessage(ChatColor.RED + "Error while sending silent container."); + return false; + } + } + + private boolean hasOcelotOnTop(final World world, final BlockPosition blockPosition) { + for (Entity localEntity : world.a(EntityOcelot.class, + new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, + blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, + blockPosition.getZ() + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean isAnyContainerNeeded(final Player p, final org.bukkit.block.Block b) { + EntityPlayer player = PlayerDataManager.getHandle(p); + World world = player.world; + BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + IBlockData blockData = world.getType(blockPosition); + Block block = blockData.getBlock(); + + if (block instanceof BlockShulkerBox) { + return this.isBlockedShulkerBox(world, blockPosition, blockData); + } + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.getType(blockPosition.up()).m(); + } + + // Check if chest is blocked or has an ocelot on top + if (this.isBlockedChest(world, blockPosition)) { + return true; + } + + // Check for matching adjacent chests that are blocked or have an ocelot on top + for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if (this.isBlockedChest(world, localBlockPosition)) { + return true; + } + } + + return false; + } + + @Override + public boolean isAnySilentContainer(final org.bukkit.block.Block block) { + if (block.getType() == Material.ENDER_CHEST) { + return true; + } + BlockState state = block.getState(); + return state instanceof org.bukkit.block.Chest + || state instanceof org.bukkit.block.ShulkerBox; + } + + private boolean isBlockedChest(final World world, final BlockPosition blockPosition) { + // For reference, loot at net.minecraft.server.BlockChest + return world.getType(blockPosition.up()).m() || this.hasOcelotOnTop(world, blockPosition); + } + + private boolean isBlockedShulkerBox(final World world, final BlockPosition blockPosition, + final IBlockData blockData) { + // For reference, look at net.minecraft.server.BlockShulkerBox + TileEntity tile = world.getTileEntity(blockPosition); + + if (!(tile instanceof TileEntityShulkerBox)) { + return false; + } + + EnumDirection enumDirection = blockData.get(BlockShulkerBox.a); + if (((TileEntityShulkerBox) tile).p() == TileEntityShulkerBox.AnimationPhase.CLOSED) { + AxisAlignedBB axisAlignedBB = Block.j.b(0.5F * enumDirection.getAdjacentX(), + 0.5F * enumDirection.getAdjacentY(), 0.5F * enumDirection.getAdjacentZ()) + .a(enumDirection.getAdjacentX(), enumDirection.getAdjacentY(), + enumDirection.getAdjacentZ()); + + return world.a(axisAlignedBB.a(blockPosition.shift(enumDirection))); + } + + return false; + } + +} diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/InventoryAccess.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/InventoryAccess.java new file mode 100644 index 0000000..0da8f58 --- /dev/null +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/InventoryAccess.java @@ -0,0 +1,74 @@ +/* + * 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_12_R1; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.util.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +import net.minecraft.server.v1_12_R1.IInventory; + +import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public ISpecialEnderChest getSpecialEnderChest(final Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(final Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(final Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, + inventory) instanceof ISpecialEnderChest; + } + + @Override + public boolean isSpecialPlayerInventory(final Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, + inventory) instanceof ISpecialPlayerInventory; + } + +} diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java new file mode 100644 index 0000000..6c83edd --- /dev/null +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java @@ -0,0 +1,104 @@ +/* + * 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_12_R1; + +import java.util.Collection; +import java.util.UUID; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import com.mojang.authlib.GameProfile; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; +import org.bukkit.entity.Player; + +import net.minecraft.server.v1_12_R1.EntityPlayer; +import net.minecraft.server.v1_12_R1.MinecraftServer; +import net.minecraft.server.v1_12_R1.PlayerInteractManager; + +import org.bukkit.craftbukkit.v1_12_R1.CraftServer; +import org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer; + +public class PlayerDataManager implements IPlayerDataManager { + + public static EntityPlayer getHandle(final Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException( + "Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + + @Override + public Collection getOnlinePlayers() { + return Bukkit.getOnlinePlayers(); + } + + @Override + public OfflinePlayer getPlayerByID(final String identifier) { + try { + UUID uuid = UUID.fromString(identifier); + OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } catch (IllegalArgumentException e) { + // Not a UUID + return null; + } + } + + @Override + public String getPlayerDataID(final OfflinePlayer player) { + return player.getUniqueId().toString(); + } + + @Override + public Player loadPlayer(final OfflinePlayer offline) { + // Ensure player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + // Create a profile and entity to load the player data + GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + 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; + } + +} diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SilentContainerChest.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SilentContainerChest.java new file mode 100644 index 0000000..09a4424 --- /dev/null +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SilentContainerChest.java @@ -0,0 +1,40 @@ +/* + * 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_12_R1; + +import net.minecraft.server.v1_12_R1.ContainerChest; +import net.minecraft.server.v1_12_R1.EntityHuman; +import net.minecraft.server.v1_12_R1.IInventory; +import net.minecraft.server.v1_12_R1.ItemStack; +import net.minecraft.server.v1_12_R1.PlayerInventory; + +public class SilentContainerChest extends ContainerChest { + + public SilentContainerChest(final PlayerInventory playerInventory, final IInventory iInventory, + final EntityHuman entityHuman) { + super(playerInventory, iInventory, entityHuman); + // Send close signal + iInventory.closeContainer(entityHuman); + } + + @Override + public void b(final EntityHuman entityHuman) { + // Don't send close signal twice, might screw up + PlayerInventory playerinventory = entityHuman.inventory; + + if (playerinventory.getCarried() != ItemStack.a) { + ItemStack carried = playerinventory.getCarried(); + playerinventory.setCarried(ItemStack.a); + entityHuman.drop(carried, false); + } + } + +} diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SilentContainerShulkerBox.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SilentContainerShulkerBox.java new file mode 100644 index 0000000..bc94298 --- /dev/null +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SilentContainerShulkerBox.java @@ -0,0 +1,57 @@ +package com.lishid.openinv.internal.v1_12_R1; + +import java.lang.reflect.Field; + +import net.minecraft.server.v1_12_R1.ContainerShulkerBox; +import net.minecraft.server.v1_12_R1.EntityHuman; +import net.minecraft.server.v1_12_R1.IInventory; +import net.minecraft.server.v1_12_R1.ItemStack; +import net.minecraft.server.v1_12_R1.PlayerInventory; +import net.minecraft.server.v1_12_R1.TileEntityShulkerBox; + +public class SilentContainerShulkerBox extends ContainerShulkerBox { + + private static Field fieldShulkerActionData; + + private static Field exposeOpenStatus() throws NoSuchFieldException, SecurityException { + if (SilentContainerShulkerBox.fieldShulkerActionData == null) { + SilentContainerShulkerBox.fieldShulkerActionData = TileEntityShulkerBox.class + .getDeclaredField("h"); + SilentContainerShulkerBox.fieldShulkerActionData.setAccessible(true); + } + return SilentContainerShulkerBox.fieldShulkerActionData; + } + + public static Integer getOpenValue(final TileEntityShulkerBox tileShulkerBox) { + try { + return (Integer) SilentContainerShulkerBox.exposeOpenStatus().get(tileShulkerBox); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + public static void setOpenValue(final TileEntityShulkerBox tileShulkerBox, final Object value) { + try { + SilentContainerShulkerBox.exposeOpenStatus().set(tileShulkerBox, value); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public SilentContainerShulkerBox(final PlayerInventory playerInventory, + final IInventory iInventory, final EntityHuman entityHuman) { + super(playerInventory, iInventory, entityHuman); + } + + @Override + public void b(final EntityHuman entityHuman) { + PlayerInventory playerinventory = entityHuman.inventory; + + if (!playerinventory.getCarried().isEmpty()) { + entityHuman.drop(playerinventory.getCarried(), false); + playerinventory.setCarried(ItemStack.a); + } + } + +} diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java new file mode 100644 index 0000000..e052616 --- /dev/null +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java @@ -0,0 +1,101 @@ +/* + * 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_12_R1; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.List; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +import net.minecraft.server.v1_12_R1.EntityPlayer; +import net.minecraft.server.v1_12_R1.IInventory; +import net.minecraft.server.v1_12_R1.InventoryEnderChest; +import net.minecraft.server.v1_12_R1.InventorySubcontainer; +import net.minecraft.server.v1_12_R1.ItemStack; + +import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer + implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialEnderChest(final Player player, final Boolean online) { + super(PlayerDataManager.getHandle(player).getEnderChest().getName(), + PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.enderChest = nmsPlayer.getEnderChest(); + this.bukkitOwner = nmsPlayer.getBukkitEntity(); + this.setItemLists(this, this.enderChest.getContents()); + } + + @Override + public Inventory getBukkitInventory() { + return this.inventory; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + private void setItemLists(final InventorySubcontainer subcontainer, + final List list) { + try { + // Prepare to remove final modifier + Field modifiers = Field.class.getDeclaredField("modifiers"); + modifiers.setAccessible(true); + // Access and replace main inventory array + Field field = InventorySubcontainer.class.getField("items"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(subcontainer, list); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + + @Override + public void setPlayerOffline() { + this.playerOnline = false; + } + + @Override + public void setPlayerOnline(final Player player) { + if (!this.playerOnline) { + try { + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.bukkitOwner = nmsPlayer.getBukkitEntity(); + this.setItemLists(nmsPlayer.getEnderChest(), this.items); + } catch (Exception e) {} + this.playerOnline = true; + } + } + + @Override + public void update() { + super.update(); + this.enderChest.update(); + } + +} diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java new file mode 100644 index 0000000..4774092 --- /dev/null +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java @@ -0,0 +1,255 @@ +/* + * 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_12_R1; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.Arrays; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +import net.minecraft.server.v1_12_R1.ContainerUtil; +import net.minecraft.server.v1_12_R1.EntityHuman; +import net.minecraft.server.v1_12_R1.ItemStack; +import net.minecraft.server.v1_12_R1.NonNullList; +import net.minecraft.server.v1_12_R1.PlayerInventory; + +import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline = false; + + public SpecialPlayerInventory(final Player bukkitPlayer, final Boolean online) { + super(PlayerDataManager.getHandle(bukkitPlayer)); + this.playerOnline = online; + this.setItemArrays(this, this.player.inventory.items, this.player.inventory.armor, + this.player.inventory.extraSlots); + } + + @Override + public boolean a(final EntityHuman entityhuman) { + return true; + } + + @Override + public Inventory getBukkitInventory() { + return this.inventory; + } + + @Override + public ItemStack getItem(int i) { + NonNullList list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + return list.get(i); + } + + @Override + public String getName() { + if (this.player.getName().length() > 16) { + return this.player.getName().substring(0, 16); + } + return this.player.getName(); + } + + private int getReversedArmorSlotNum(final int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + private int getReversedItemSlotNum(final int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + @Override + public int getSize() { + return super.getSize() + 4; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public void setItem(int i, final ItemStack itemstack) { + NonNullList list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + this.player.drop(itemstack, true); + return; + } + + if (list != null) { + list.set(i, itemstack); + } + } + + private void setItemArrays(final PlayerInventory inventory, final NonNullList items, + final NonNullList armor, final NonNullList extraSlots) { + try { + // Prepare to remove final modifier + Field modifiers = Field.class.getDeclaredField("modifiers"); + modifiers.setAccessible(true); + + // Access and replace main inventory array + Field field = PlayerInventory.class.getField("items"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, items); + + // Access and replace armor inventory array + field = PlayerInventory.class.getField("armor"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, armor); + + // Access and replace offhand inventory array + field = PlayerInventory.class.getField("extraSlots"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, extraSlots); + + // Access and replace array containing all inventory arrays + field = PlayerInventory.class.getDeclaredField("g"); + field.setAccessible(true); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, Arrays.asList(new NonNullList[] { items, armor, extraSlots })); + } 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 void setPlayerOffline() { + this.playerOnline = false; + } + + @Override + public void setPlayerOnline(final Player player) { + if (!this.playerOnline) { + this.player = PlayerDataManager.getHandle(player); + ; + this.setItemArrays(this.player.inventory, this.items, this.armor, this.extraSlots); + this.playerOnline = true; + } + } + + @Override + public ItemStack splitStack(int i, final int j) { + NonNullList list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + return list == null || list.get(i).isEmpty() ? ItemStack.a : ContainerUtil.a(list, i, j); + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + NonNullList list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + if (list != null && !list.get(i).isEmpty()) { + ItemStack itemstack = list.get(i); + + list.set(i, ItemStack.a); + return itemstack; + } + + return ItemStack.a; + } + +} -- 2.49.1 From 9a53e46dd3c4cdbb0a3b47fc754afce7cf33e44a Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 26 May 2017 05:48:26 -0400 Subject: [PATCH 102/253] Replaced `modern` profile with `recent` Going forward, the primary file uploaded to Bukkit will probably be the smaller build made with the `recent` profile, supporting only the last 2 versions. The uberjar created by the `all` will be provided as an additional download. OpenInv v3.1.3-SNAPSHOT `all` uberjar currently is 276KB. The `recent` jar is only 81KB. It's getting silly, and will only continue to get worse. --- internal/pom.xml | 11 +- .../main/java/com/lishid/openinv/OpenInv.java | 1039 +++++++++-------- pom.xml | 4 +- 3 files changed, 526 insertions(+), 528 deletions(-) diff --git a/internal/pom.xml b/internal/pom.xml index 28d97f9..308689b 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -18,19 +18,14 @@ latest - v1_11_R1 + v1_12_R1 - modern + recent + - v1_8_R1 - v1_8_R2 - v1_8_R3 - v1_9_R1 - v1_9_R2 - v1_10_R1 v1_11_R1 v1_12_R1 diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java index 36586ba..7925c35 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java @@ -1,15 +1,15 @@ /* * 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 . */ @@ -65,7 +65,7 @@ import org.bukkit.scheduler.BukkitRunnable; /** * Open other player's inventory - * + * * @author lishid */ public class OpenInv extends JavaPlugin implements IOpenInv { @@ -77,29 +77,31 @@ public class OpenInv extends JavaPlugin implements IOpenInv { private final Cache playerCache = new Cache(300000L, new Function() { @Override - public boolean run(Player value) { - String key = playerLoader.getPlayerDataID(value); - return inventories.containsKey(key) && inventories.get(key).isInUse() - || enderChests.containsKey(key) && enderChests.get(key).isInUse() - || pluginUsage.containsKey(key); + public boolean run(final Player value) { + String key = OpenInv.this.playerLoader.getPlayerDataID(value); + return OpenInv.this.inventories.containsKey(key) + && OpenInv.this.inventories.get(key).isInUse() + || OpenInv.this.enderChests.containsKey(key) + && OpenInv.this.enderChests.get(key).isInUse() + || OpenInv.this.pluginUsage.containsKey(key); } }, new Function() { @Override - public boolean run(Player value) { - String key = playerLoader.getPlayerDataID(value); + public boolean run(final Player value) { + String key = OpenInv.this.playerLoader.getPlayerDataID(value); // Check if inventory is stored, and if it is, remove it and eject all viewers - if (inventories.containsKey(key)) { - Inventory inv = inventories.remove(key).getBukkitInventory(); + if (OpenInv.this.inventories.containsKey(key)) { + Inventory inv = OpenInv.this.inventories.remove(key).getBukkitInventory(); for (HumanEntity entity : inv.getViewers()) { entity.closeInventory(); } } // Check if ender chest is stored, and if it is, remove it and eject all viewers - if (enderChests.containsKey(key)) { - Inventory inv = enderChests.remove(key).getBukkitInventory(); + if (OpenInv.this.enderChests.containsKey(key)) { + Inventory inv = OpenInv.this.enderChests.remove(key).getBukkitInventory(); for (HumanEntity entity : inv.getViewers()) { entity.closeInventory(); } @@ -117,509 +119,9 @@ public class OpenInv extends JavaPlugin implements IOpenInv { private IInventoryAccess inventoryAccess; private IAnySilentContainer anySilentContainer; - @Override - public void onEnable() { - // Get plugin manager - PluginManager pm = getServer().getPluginManager(); - - accessor = new InternalAccessor(this); - // Version check - if (!accessor.isSupported()) { - getLogger().info("Your version of CraftBukkit (" + accessor.getVersion() + ") is not supported."); - getLogger().info("Please look for an updated version of OpenInv."); - pm.disablePlugin(this); - return; - } - - playerLoader = accessor.newPlayerDataManager(); - inventoryAccess = accessor.newInventoryAccess(); - anySilentContainer = accessor.newAnySilentContainer(); - - new ConfigUpdater(this).checkForUpdates(); - - // Register listeners - pm.registerEvents(new PlayerListener(this), this); - pm.registerEvents(new PluginListener(this), this); - pm.registerEvents(new InventoryClickListener(this), this); - // Bukkit will handle missing events for us, attempt to register InventoryDragEvent without a version check - pm.registerEvents(new InventoryDragListener(this), this); - - // Register commands to their executors - getCommand("openinv").setExecutor(new OpenInvPluginCommand(this)); - getCommand("openender").setExecutor(new OpenEnderPluginCommand(this)); - SearchInvPluginCommand searchInv = new SearchInvPluginCommand(this); - getCommand("searchinv").setExecutor(searchInv); - getCommand("searchender").setExecutor(searchInv); - getCommand("searchenchant").setExecutor(new SearchEnchantPluginCommand(this)); - getCommand("silentchest").setExecutor(new SilentChestPluginCommand(this)); - getCommand("anychest").setExecutor(new AnyChestPluginCommand(this)); - - } - - @Override - public void onDisable() { - - if (this.disableSaving()) { - return; - } - - this.playerCache.invalidateAll(); - } - - /** - * Checks if the server version is supported by OpenInv. - * - * @return true if the server version is supported - */ - @Override - public boolean isSupportedVersion() { - return this.accessor != null && this.accessor.isSupported(); - } - - /** - * Gets the active IInventoryAccess implementation. May return null if the server version is - * unsupported. - * - * @return the IInventoryAccess - */ - @Override - public IInventoryAccess getInventoryAccess() { - return this.inventoryAccess; - } - - /** - * Gets the active ISilentContainer implementation. May return null if the server version is - * unsupported. - * - * @return the ISilentContainer - */ - @Override - public IAnySilentContainer getAnySilentContainer() { - return this.anySilentContainer; - } - - /** - * Gets an ISpecialPlayerInventory for the given Player. - * - * @param player the Player - * @param online true if the Player is currently online - * @return the ISpecialPlayerInventory - */ - @Override - public ISpecialPlayerInventory getInventory(Player player, boolean online) { - String id = playerLoader.getPlayerDataID(player); - if (inventories.containsKey(id)) { - return inventories.get(id); - } - ISpecialPlayerInventory inv = accessor.newSpecialPlayerInventory(player, online); - inventories.put(id, inv); - playerCache.put(id, player); - return inv; - } - - /** - * Gets an ISpecialEnderChest for the given Player. - * - * @param player the Player - * @param online true if the Player is currently online - * @return the ISpecialEnderChest - */ - @Override - public ISpecialEnderChest getEnderChest(Player player, boolean online) { - String id = playerLoader.getPlayerDataID(player); - if (enderChests.containsKey(id)) { - return enderChests.get(id); - } - ISpecialEnderChest inv = accessor.newSpecialEnderChest(player, online); - enderChests.put(id, inv); - playerCache.put(id, player); - return inv; - } - - /** - * Forcibly unload a cached Player's data. - * - * @param player the OfflinePlayer to unload - */ - @Override - public void unload(OfflinePlayer player) { - this.playerCache.invalidate(this.playerLoader.getPlayerDataID(player)); - } - - /** - * Check the configuration value for whether or not OpenInv saves player data when unloading - * players. This is exclusively for users who do not allow editing of inventories, only viewing, - * and wish to prevent any possibility of bugs such as lishid#40. If true, OpenInv will not ever - * save any edits made to players. - * - * @return false unless configured otherwise - */ - @Override - public boolean disableSaving() { - return getConfig().getBoolean("settings.disable-saving", false); - } - - /** - * Check the configuration value for whether or not OpenInv displays a notification to the user - * when a container is activated with SilentChest. - * - * @return true unless configured otherwise - */ - @Override - public boolean notifySilentChest() { - return getConfig().getBoolean("notify.silent-chest", true); - } - - /** - * Check the configuration value for whether or not OpenInv displays a notification to the user - * when a container is activated with AnyChest. - * - * @return true unless configured otherwise - */ - @Override - public boolean notifyAnyChest() { - return getConfig().getBoolean("notify.any-chest", true); - } - - /** - * Gets a player's SilentChest setting. - * - * @param player the OfflinePlayer - * @return true if SilentChest is enabled - */ - @Override - public boolean getPlayerSilentChestStatus(OfflinePlayer player) { - return getConfig().getBoolean("toggles.silent-chest." + playerLoader.getPlayerDataID(player), false); - } - - /** - * Sets a player's SilentChest setting. - * - * @param player the OfflinePlayer - * @param status the status - */ - @Override - public void setPlayerSilentChestStatus(OfflinePlayer player, boolean status) { - getConfig().set("toggles.silent-chest." + playerLoader.getPlayerDataID(player), status); - saveConfig(); - } - - /** - * Gets the provided player's AnyChest setting. - * - * @param player the OfflinePlayer - * @return true if AnyChest is enabled - */ - @Override - public boolean getPlayerAnyChestStatus(OfflinePlayer player) { - return getConfig().getBoolean("toggles.any-chest." + playerLoader.getPlayerDataID(player), false); - } - - /** - * Sets a player's AnyChest setting. - * - * @param player the OfflinePlayer - * @param status the status - */ - @Override - public void setPlayerAnyChestStatus(OfflinePlayer player, boolean status) { - getConfig().set("toggles.any-chest." + playerLoader.getPlayerDataID(player), status); - saveConfig(); - } - - /** - * Gets a unique identifier by which the OfflinePlayer can be referenced. Using the value - * returned to look up a Player will generally be much faster for later implementations. - * - * @param offline the OfflinePlayer - * @return the identifier - */ - @Override - public String getPlayerID(OfflinePlayer offline) { - return this.playerLoader.getPlayerDataID(offline); - } - - /** - * Get an OfflinePlayer by name. - *

      - * Note: This method is potentially very heavily blocking. It should not ever be called on the - * main thread, and if it is, a stack trace will be displayed alerting server owners to the - * call. - * - * @param name the name of the Player - * @return the OfflinePlayer with the closest matching name or null if no players have ever logged in - */ - @Override - public OfflinePlayer matchPlayer(String name) { - - // Warn if called on the main thread - if we resort to searching offline players, this may take several seconds. - if (getServer().isPrimaryThread()) { - getLogger().warning("Call to OpenInv#matchPlayer made on the main thread!"); - getLogger().warning("This can cause the server to hang, potentially severely."); - getLogger().warning("Trace:"); - for (StackTraceElement element : new Throwable().fillInStackTrace().getStackTrace()) { - getLogger().warning(element.toString()); - } - } - - // Attempt exact offline match first - adds UUID support for later versions - OfflinePlayer player = this.playerLoader.getPlayerByID(name); - - if (player != null) { - return player; - } - - // Ensure name is valid if server is in online mode to avoid unnecessary searching - if (getServer().getOnlineMode() && !name.matches("[a-zA-Z0-9_]{3,16}")) { - return null; - } - - player = getServer().getPlayerExact(name); - - if (player != null) { - return player; - } - - player = getServer().getOfflinePlayer(name); - - /* - * Compatibility: Pre-UUID, getOfflinePlayer always returns an OfflinePlayer. Post-UUID, - * getOfflinePlayer will return null if no matching player is found. To preserve - * compatibility, only return the player if they have played before. Ignoring current online - * status is fine, they'd have been found by getPlayerExact otherwise. - */ - if (player != null && player.hasPlayedBefore()) { - return player; - } - - player = getServer().getPlayer(name); - - if (player != null) { - return player; - } - - int bestMatch = Integer.MAX_VALUE; - for (OfflinePlayer offline : getServer().getOfflinePlayers()) { - if (offline.getName() == null) { - // Loaded by UUID only, name has never been looked up. - continue; - } - - // Compatibility: Lang3 is only bundled with 1.8+ - int currentMatch = org.apache.commons.lang.StringUtils.getLevenshteinDistance(name, offline.getName()); - - if (currentMatch == 0) { - return offline; - } - - if (currentMatch < bestMatch) { - bestMatch = currentMatch; - player = offline; - } - } - - // Only null if no players have played ever, otherwise even the worst match will do. - return player; - } - - /** - * Load a Player from an OfflinePlayer. May return null under some circumstances. - * - * @param offline the OfflinePlayer to load a Player for - * @return the Player - */ - @Override - public Player loadPlayer(final OfflinePlayer offline) { - - if (offline == null) { - return null; - } - - String key = this.playerLoader.getPlayerDataID(offline); - if (this.playerCache.containsKey(key)) { - return this.playerCache.get(key); - } - - // TODO: wrap Player to ensure all methods can safely be called offline - Player loaded; - - if (offline.isOnline()) { - loaded = offline.getPlayer(); - this.playerCache.put(key, loaded); - return loaded; - } - - if (Bukkit.isPrimaryThread()) { - return this.playerLoader.loadPlayer(offline); - } - - Future future = Bukkit.getScheduler().callSyncMethod(this, - new Callable() { - @Override - public Player call() throws Exception { - return playerLoader.loadPlayer(offline); - } - }); - - int ticks = 0; - while (!future.isDone() && !future.isCancelled() && ticks < 10) { - ++ticks; - try { - Thread.sleep(50L); - } catch (InterruptedException e) { - e.printStackTrace(); - return null; - } - } - - if (!future.isDone() || future.isCancelled()) { - return null; - } - - try { - loaded = future.get(); - } catch (InterruptedException e) { - e.printStackTrace(); - return null; - } catch (ExecutionException e) { - e.printStackTrace(); - return null; - } - - if (loaded != null) { - this.playerCache.put(key, loaded); - } - - return loaded; - } - - /** - * @see com.lishid.openinv.IOpenInv#retainPlayer(org.bukkit.entity.Player, org.bukkit.plugin.Plugin) - */ - @Override - public void retainPlayer(Player player, Plugin plugin) { - String key = this.playerLoader.getPlayerDataID(player); - - if (this.pluginUsage.containsEntry(key, plugin.getClass())) { - return; - } - - this.pluginUsage.put(key, plugin.getClass()); - } - - /** - * @see com.lishid.openinv.IOpenInv#releasePlayer(org.bukkit.entity.Player, org.bukkit.plugin.Plugin) - */ - @Override - public void releasePlayer(Player player, Plugin plugin) { - String key = this.playerLoader.getPlayerDataID(player); - - if (!this.pluginUsage.containsEntry(key, plugin.getClass())) { - return; - } - - this.pluginUsage.remove(key, plugin.getClass()); - } - - /** - * Unmark any Players in use by the specified Plugin. - * - * @param plugin - */ - public void releaseAllPlayers(Plugin plugin) { - this.pluginUsage.removeAll(plugin.getClass()); - } - - @SuppressWarnings("unchecked") - public Collection getOnlinePlayers() { - - if (this.playerLoader != null) { - return this.playerLoader.getOnlinePlayers(); - } - - Method getOnlinePlayers; - try { - getOnlinePlayers = Bukkit.class.getDeclaredMethod("getOnlinePlayers"); - } catch (Exception e) { - e.printStackTrace(); - return Collections.emptyList(); - } - - Object onlinePlayers; - try { - onlinePlayers = getOnlinePlayers.invoke(null); - } catch (Exception e) { - e.printStackTrace(); - return Collections.emptyList(); - } - - if (onlinePlayers instanceof List) { - return (Collection) onlinePlayers; - } - - return Arrays.asList((Player[]) onlinePlayers); - } - - /** - * Method for handling a Player coming online. - * - * @param player the Player - */ - public void setPlayerOnline(final Player player) { - - String key = this.playerLoader.getPlayerDataID(player); - - // Check if the player is cached. If not, neither of their inventories is open. - if (!this.playerCache.containsKey(key)) { - return; - } - - this.playerCache.put(key, player); - - if (this.inventories.containsKey(key)) { - this.inventories.get(key).setPlayerOnline(player); - new BukkitRunnable() { - @SuppressWarnings("deprecation") // Unlikely to ever be a viable alternative, Spigot un-deprecated. - @Override - public void run() { - if (player.isOnline()) { - player.updateInventory(); - } - } - }.runTask(this); - } - - if (this.enderChests.containsKey(key)) { - this.enderChests.get(key).setPlayerOnline(player); - } - } - - /** - * Method for handling a Player going offline. - * - * @param player the Player - */ - public void setPlayerOffline(final Player player) { - - String key = this.playerLoader.getPlayerDataID(player); - - // Check if the player is cached. If not, neither of their inventories is open. - if (!this.playerCache.containsKey(key)) { - return; - } - - if (this.inventories.containsKey(key)) { - this.inventories.get(key).setPlayerOffline(); - } - - if (this.enderChests.containsKey(key)) { - this.enderChests.get(key).setPlayerOffline(); - } - } - /** * Evicts all viewers lacking cross-world permissions from a Player's inventory. - * + * * @param player the Player */ public void changeWorld(final Player player) { @@ -658,12 +160,503 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } } + /** + * Check the configuration value for whether or not OpenInv saves player data when unloading + * players. This is exclusively for users who do not allow editing of inventories, only viewing, + * and wish to prevent any possibility of bugs such as lishid#40. If true, OpenInv will not ever + * save any edits made to players. + * + * @return false unless configured otherwise + */ + @Override + public boolean disableSaving() { + return this.getConfig().getBoolean("settings.disable-saving", false); + } + + /** + * Gets the active ISilentContainer implementation. May return null if the server version is + * unsupported. + * + * @return the ISilentContainer + */ + @Override + public IAnySilentContainer getAnySilentContainer() { + return this.anySilentContainer; + } + + /** + * Gets an ISpecialEnderChest for the given Player. + * + * @param player the Player + * @param online true if the Player is currently online + * @return the ISpecialEnderChest + */ + @Override + public ISpecialEnderChest getEnderChest(final Player player, final boolean online) { + String id = this.playerLoader.getPlayerDataID(player); + if (this.enderChests.containsKey(id)) { + return this.enderChests.get(id); + } + ISpecialEnderChest inv = this.accessor.newSpecialEnderChest(player, online); + this.enderChests.put(id, inv); + this.playerCache.put(id, player); + return inv; + } + + /** + * Gets an ISpecialPlayerInventory for the given Player. + * + * @param player the Player + * @param online true if the Player is currently online + * @return the ISpecialPlayerInventory + */ + @Override + public ISpecialPlayerInventory getInventory(final Player player, final boolean online) { + String id = this.playerLoader.getPlayerDataID(player); + if (this.inventories.containsKey(id)) { + return this.inventories.get(id); + } + ISpecialPlayerInventory inv = this.accessor.newSpecialPlayerInventory(player, online); + this.inventories.put(id, inv); + this.playerCache.put(id, player); + return inv; + } + + /** + * Gets the active IInventoryAccess implementation. May return null if the server version is + * unsupported. + * + * @return the IInventoryAccess + */ + @Override + public IInventoryAccess getInventoryAccess() { + return this.inventoryAccess; + } + + @SuppressWarnings("unchecked") + public Collection getOnlinePlayers() { + + if (this.playerLoader != null) { + return this.playerLoader.getOnlinePlayers(); + } + + Method getOnlinePlayers; + try { + getOnlinePlayers = Bukkit.class.getDeclaredMethod("getOnlinePlayers"); + } catch (Exception e) { + e.printStackTrace(); + return Collections.emptyList(); + } + + Object onlinePlayers; + try { + onlinePlayers = getOnlinePlayers.invoke(null); + } catch (Exception e) { + e.printStackTrace(); + return Collections.emptyList(); + } + + if (onlinePlayers instanceof List) { + return (Collection) onlinePlayers; + } + + return Arrays.asList((Player[]) onlinePlayers); + } + + /** + * Gets the provided player's AnyChest setting. + * + * @param player the OfflinePlayer + * @return true if AnyChest is enabled + */ + @Override + public boolean getPlayerAnyChestStatus(final OfflinePlayer player) { + return this.getConfig().getBoolean("toggles.any-chest." + this.playerLoader.getPlayerDataID(player), false); + } + + /** + * Gets a unique identifier by which the OfflinePlayer can be referenced. Using the value + * returned to look up a Player will generally be much faster for later implementations. + * + * @param offline the OfflinePlayer + * @return the identifier + */ + @Override + public String getPlayerID(final OfflinePlayer offline) { + return this.playerLoader.getPlayerDataID(offline); + } + + /** + * Gets a player's SilentChest setting. + * + * @param player the OfflinePlayer + * @return true if SilentChest is enabled + */ + @Override + public boolean getPlayerSilentChestStatus(final OfflinePlayer player) { + return this.getConfig().getBoolean("toggles.silent-chest." + this.playerLoader.getPlayerDataID(player), false); + } + + /** + * Checks if the server version is supported by OpenInv. + * + * @return true if the server version is supported + */ + @Override + public boolean isSupportedVersion() { + return this.accessor != null && this.accessor.isSupported(); + } + + /** + * Load a Player from an OfflinePlayer. May return null under some circumstances. + * + * @param offline the OfflinePlayer to load a Player for + * @return the Player + */ + @Override + public Player loadPlayer(final OfflinePlayer offline) { + + if (offline == null) { + return null; + } + + String key = this.playerLoader.getPlayerDataID(offline); + if (this.playerCache.containsKey(key)) { + return this.playerCache.get(key); + } + + // TODO: wrap Player to ensure all methods can safely be called offline + Player loaded; + + if (offline.isOnline()) { + loaded = offline.getPlayer(); + this.playerCache.put(key, loaded); + return loaded; + } + + if (Bukkit.isPrimaryThread()) { + return this.playerLoader.loadPlayer(offline); + } + + Future future = Bukkit.getScheduler().callSyncMethod(this, + new Callable() { + @Override + public Player call() throws Exception { + return OpenInv.this.playerLoader.loadPlayer(offline); + } + }); + + int ticks = 0; + while (!future.isDone() && !future.isCancelled() && ticks < 10) { + ++ticks; + try { + Thread.sleep(50L); + } catch (InterruptedException e) { + e.printStackTrace(); + return null; + } + } + + if (!future.isDone() || future.isCancelled()) { + return null; + } + + try { + loaded = future.get(); + } catch (InterruptedException e) { + e.printStackTrace(); + return null; + } catch (ExecutionException e) { + e.printStackTrace(); + return null; + } + + if (loaded != null) { + this.playerCache.put(key, loaded); + } + + return loaded; + } + + /** + * Get an OfflinePlayer by name. + *

      + * Note: This method is potentially very heavily blocking. It should not ever be called on the + * main thread, and if it is, a stack trace will be displayed alerting server owners to the + * call. + * + * @param name the name of the Player + * @return the OfflinePlayer with the closest matching name or null if no players have ever logged in + */ + @Override + public OfflinePlayer matchPlayer(final String name) { + + // Warn if called on the main thread - if we resort to searching offline players, this may take several seconds. + if (this.getServer().isPrimaryThread()) { + this.getLogger().warning("Call to OpenInv#matchPlayer made on the main thread!"); + this.getLogger().warning("This can cause the server to hang, potentially severely."); + this.getLogger().warning("Trace:"); + for (StackTraceElement element : new Throwable().fillInStackTrace().getStackTrace()) { + this.getLogger().warning(element.toString()); + } + } + + // Attempt exact offline match first - adds UUID support for later versions + OfflinePlayer player = this.playerLoader.getPlayerByID(name); + + if (player != null) { + return player; + } + + // Ensure name is valid if server is in online mode to avoid unnecessary searching + if (this.getServer().getOnlineMode() && !name.matches("[a-zA-Z0-9_]{3,16}")) { + return null; + } + + player = this.getServer().getPlayerExact(name); + + if (player != null) { + return player; + } + + player = this.getServer().getOfflinePlayer(name); + + /* + * Compatibility: Pre-UUID, getOfflinePlayer always returns an OfflinePlayer. Post-UUID, + * getOfflinePlayer will return null if no matching player is found. To preserve + * compatibility, only return the player if they have played before. Ignoring current online + * status is fine, they'd have been found by getPlayerExact otherwise. + */ + if (player != null && player.hasPlayedBefore()) { + return player; + } + + player = this.getServer().getPlayer(name); + + if (player != null) { + return player; + } + + int bestMatch = Integer.MAX_VALUE; + for (OfflinePlayer offline : this.getServer().getOfflinePlayers()) { + if (offline.getName() == null) { + // Loaded by UUID only, name has never been looked up. + continue; + } + + // Compatibility: Lang3 is only bundled with 1.8+ + int currentMatch = org.apache.commons.lang.StringUtils.getLevenshteinDistance(name, offline.getName()); + + if (currentMatch == 0) { + return offline; + } + + if (currentMatch < bestMatch) { + bestMatch = currentMatch; + player = offline; + } + } + + // Only null if no players have played ever, otherwise even the worst match will do. + return player; + } + + /** + * Check the configuration value for whether or not OpenInv displays a notification to the user + * when a container is activated with AnyChest. + * + * @return true unless configured otherwise + */ + @Override + public boolean notifyAnyChest() { + return this.getConfig().getBoolean("notify.any-chest", true); + } + + /** + * Check the configuration value for whether or not OpenInv displays a notification to the user + * when a container is activated with SilentChest. + * + * @return true unless configured otherwise + */ + @Override + public boolean notifySilentChest() { + return this.getConfig().getBoolean("notify.silent-chest", true); + } + + @Override + public void onDisable() { + + if (this.disableSaving()) { + return; + } + + this.playerCache.invalidateAll(); + } + + @Override + public void onEnable() { + // Get plugin manager + PluginManager pm = this.getServer().getPluginManager(); + + this.accessor = new InternalAccessor(this); + // Version check + if (!this.accessor.isSupported()) { + this.getLogger().info("Your version of CraftBukkit (" + this.accessor.getVersion() + ") is not supported."); + this.getLogger().info("If this version is a recent release, check for an update."); + this.getLogger().info("If this is an older version, ensure that you've downloaded the legacy support version."); + pm.disablePlugin(this); + return; + } + + this.playerLoader = this.accessor.newPlayerDataManager(); + this.inventoryAccess = this.accessor.newInventoryAccess(); + this.anySilentContainer = this.accessor.newAnySilentContainer(); + + new ConfigUpdater(this).checkForUpdates(); + + // Register listeners + pm.registerEvents(new PlayerListener(this), this); + pm.registerEvents(new PluginListener(this), this); + pm.registerEvents(new InventoryClickListener(this), this); + // Bukkit will handle missing events for us, attempt to register InventoryDragEvent without a version check + pm.registerEvents(new InventoryDragListener(this), this); + + // Register commands to their executors + this.getCommand("openinv").setExecutor(new OpenInvPluginCommand(this)); + this.getCommand("openender").setExecutor(new OpenEnderPluginCommand(this)); + SearchInvPluginCommand searchInv = new SearchInvPluginCommand(this); + this.getCommand("searchinv").setExecutor(searchInv); + this.getCommand("searchender").setExecutor(searchInv); + this.getCommand("searchenchant").setExecutor(new SearchEnchantPluginCommand(this)); + this.getCommand("silentchest").setExecutor(new SilentChestPluginCommand(this)); + this.getCommand("anychest").setExecutor(new AnyChestPluginCommand(this)); + + } + + /** + * Unmark any Players in use by the specified Plugin. + * + * @param plugin + */ + public void releaseAllPlayers(final Plugin plugin) { + this.pluginUsage.removeAll(plugin.getClass()); + } + + /** + * @see com.lishid.openinv.IOpenInv#releasePlayer(org.bukkit.entity.Player, org.bukkit.plugin.Plugin) + */ + @Override + public void releasePlayer(final Player player, final Plugin plugin) { + String key = this.playerLoader.getPlayerDataID(player); + + if (!this.pluginUsage.containsEntry(key, plugin.getClass())) { + return; + } + + this.pluginUsage.remove(key, plugin.getClass()); + } + + /** + * @see com.lishid.openinv.IOpenInv#retainPlayer(org.bukkit.entity.Player, org.bukkit.plugin.Plugin) + */ + @Override + public void retainPlayer(final Player player, final Plugin plugin) { + String key = this.playerLoader.getPlayerDataID(player); + + if (this.pluginUsage.containsEntry(key, plugin.getClass())) { + return; + } + + this.pluginUsage.put(key, plugin.getClass()); + } + + /** + * Sets a player's AnyChest setting. + * + * @param player the OfflinePlayer + * @param status the status + */ + @Override + public void setPlayerAnyChestStatus(final OfflinePlayer player, final boolean status) { + this.getConfig().set("toggles.any-chest." + this.playerLoader.getPlayerDataID(player), status); + this.saveConfig(); + } + + /** + * Method for handling a Player going offline. + * + * @param player the Player + */ + public void setPlayerOffline(final Player player) { + + String key = this.playerLoader.getPlayerDataID(player); + + // Check if the player is cached. If not, neither of their inventories is open. + if (!this.playerCache.containsKey(key)) { + return; + } + + if (this.inventories.containsKey(key)) { + this.inventories.get(key).setPlayerOffline(); + } + + if (this.enderChests.containsKey(key)) { + this.enderChests.get(key).setPlayerOffline(); + } + } + + /** + * Method for handling a Player coming online. + * + * @param player the Player + */ + public void setPlayerOnline(final Player player) { + + String key = this.playerLoader.getPlayerDataID(player); + + // Check if the player is cached. If not, neither of their inventories is open. + if (!this.playerCache.containsKey(key)) { + return; + } + + this.playerCache.put(key, player); + + if (this.inventories.containsKey(key)) { + this.inventories.get(key).setPlayerOnline(player); + new BukkitRunnable() { + @SuppressWarnings("deprecation") // Unlikely to ever be a viable alternative, Spigot un-deprecated. + @Override + public void run() { + if (player.isOnline()) { + player.updateInventory(); + } + } + }.runTask(this); + } + + if (this.enderChests.containsKey(key)) { + this.enderChests.get(key).setPlayerOnline(player); + } + } + + /** + * Sets a player's SilentChest setting. + * + * @param player the OfflinePlayer + * @param status the status + */ + @Override + public void setPlayerSilentChestStatus(final OfflinePlayer player, final boolean status) { + this.getConfig().set("toggles.silent-chest." + this.playerLoader.getPlayerDataID(player), status); + this.saveConfig(); + } + /** * Displays all applicable help for OpenInv commands. - * + * * @param player the Player to help */ - public void showHelp(Player player) { + public void showHelp(final Player player) { // Get registered commands for (String commandName : this.getDescription().getCommands().keySet()) { PluginCommand command = this.getCommand(commandName); @@ -693,4 +686,14 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } } + /** + * Forcibly unload a cached Player's data. + * + * @param player the OfflinePlayer to unload + */ + @Override + public void unload(final OfflinePlayer player) { + this.playerCache.invalidate(this.playerLoader.getPlayerDataID(player)); + } + } diff --git a/pom.xml b/pom.xml index cdffd78..51be23f 100644 --- a/pom.xml +++ b/pom.xml @@ -51,10 +51,10 @@ - modern + recent - modern + recent true -- 2.49.1 From 1c104b775f53878375ce93a641af32e4554bfabe Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 28 May 2017 09:53:59 -0400 Subject: [PATCH 103/253] For improved compatibility, our own Levenshtein implementation --- .../main/java/com/lishid/openinv/OpenInv.java | 50 +++++++++++++++++-- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java index 7925c35..90aa262 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java @@ -85,8 +85,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { && OpenInv.this.enderChests.get(key).isInUse() || OpenInv.this.pluginUsage.containsKey(key); } - }, - new Function() { + }, new Function() { @Override public boolean run(final Player value) { String key = OpenInv.this.playerLoader.getPlayerDataID(value); @@ -233,6 +232,50 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return this.inventoryAccess; } + private int getLevenshteinDistance(final String string1, final String string2) { + if (string1 == null || string2 == null) { + throw new IllegalArgumentException("Strings must not be null"); + } + + if (string1.isEmpty()) { + return string2.length(); + } + if (string2.isEmpty()) { + return string2.length(); + } + if (string1.equals(string2)) { + return 0; + } + + int len1 = string1.length(); + int len2 = string2.length(); + + int[] prevDistances = new int[len1 + 1]; + int[] distances = new int[len1 + 1]; + + for (int i = 0; i <= len1; ++i) { + prevDistances[i] = i; + } + + for (int i = 1; i <= len2; ++i) { + // TODO: include tweaks available in Simmetrics? + char string2char = string2.charAt(i - 1); + distances[0] = i; + + for (int j = 1; j <= len1; ++j) { + int cost = string1.charAt(j - 1) == string2char ? 0 : 1; + + distances[j] = Math.min(Math.min(distances[j - 1] + 1, prevDistances[j] + 1), prevDistances[j - 1] + cost); + } + + int[] swap = prevDistances; + prevDistances = distances; + distances = swap; + } + + return prevDistances[len1]; + } + @SuppressWarnings("unchecked") public Collection getOnlinePlayers() { @@ -444,8 +487,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { continue; } - // Compatibility: Lang3 is only bundled with 1.8+ - int currentMatch = org.apache.commons.lang.StringUtils.getLevenshteinDistance(name, offline.getName()); + int currentMatch = this.getLevenshteinDistance(name, offline.getName()); if (currentMatch == 0) { return offline; -- 2.49.1 From 01f147b13ca39a1d3ab525c3ab8d66563b3d09d6 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Thu, 8 Jun 2017 18:26:26 -0400 Subject: [PATCH 104/253] Fix incorrect method call for checking if a block is occluding Switched to using the API for statistic manipulation. --- .../internal/v1_12_R1/AnySilentContainer.java | 38 +++++++++---------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java index cd84341..904aad8 100644 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java @@ -15,6 +15,7 @@ import com.lishid.openinv.internal.IAnySilentContainer; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; +import org.bukkit.Statistic; import org.bukkit.block.BlockState; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; @@ -35,7 +36,6 @@ import net.minecraft.server.v1_12_R1.ITileInventory; import net.minecraft.server.v1_12_R1.InventoryEnderChest; import net.minecraft.server.v1_12_R1.InventoryLargeChest; import net.minecraft.server.v1_12_R1.PacketPlayOutOpenWindow; -import net.minecraft.server.v1_12_R1.StatisticList; import net.minecraft.server.v1_12_R1.TileEntity; import net.minecraft.server.v1_12_R1.TileEntityChest; import net.minecraft.server.v1_12_R1.TileEntityEnderChest; @@ -47,20 +47,20 @@ import org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory; public class AnySilentContainer implements IAnySilentContainer { @Override - public boolean activateContainer(final Player p, final boolean silentchest, - final org.bukkit.block.Block b) { + public boolean activateContainer(final Player bukkitPlayer, final boolean silentchest, + final org.bukkit.block.Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); - - // Silent ender chest is pretty much API-only - if (silentchest && b.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); - player.b(StatisticList.getStatistic("stat.enderchestOpened")); + // Silent ender chest is API-only + if (silentchest && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); + bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); return true; } + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + final World world = player.world; - final BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + final BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); final Object tile = world.getTileEntity(blockPosition); if (tile == null) { @@ -72,7 +72,7 @@ public class AnySilentContainer implements IAnySilentContainer { InventoryEnderChest enderChest = player.getEnderChest(); enderChest.a((TileEntityEnderChest) tile); player.openContainer(enderChest); - player.b(StatisticList.getStatistic("stat.enderchestOpened")); + bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); return true; } @@ -111,9 +111,9 @@ public class AnySilentContainer implements IAnySilentContainer { BlockChest blockChest = (BlockChest) block; if (blockChest.g == BlockChest.Type.BASIC) { - player.b(StatisticList.getStatistic("stat.chestOpened")); + bukkitPlayer.incrementStatistic(Statistic.CHEST_OPENED); } else if (blockChest.g == BlockChest.Type.TRAP) { - player.b(StatisticList.getStatistic("stat.trappedChestTriggered")); + bukkitPlayer.incrementStatistic(Statistic.TRAPPED_CHEST_TRIGGERED); } if (silentchest) { @@ -122,7 +122,7 @@ public class AnySilentContainer implements IAnySilentContainer { } if (block instanceof BlockShulkerBox) { - player.b(StatisticList.getStatistic("stat.shulkerBoxOpened")); + bukkitPlayer.incrementStatistic(Statistic.SHULKER_BOX_OPENED); if (silentchest && tileInventory instanceof TileEntityShulkerBox) { // Set value to current + 1. Ensures consistency later when resetting. @@ -157,8 +157,7 @@ public class AnySilentContainer implements IAnySilentContainer { player.activeContainer.windowId = windowId; player.activeContainer.addSlotListener(player); - // Special handling for shulker boxes - reset value for viewers to what it was - // initially. + // Special handling for shulker boxes - reset value for viewers to what it was initially. if (tile instanceof TileEntityShulkerBox) { new BukkitRunnable() { @Override @@ -169,8 +168,7 @@ public class AnySilentContainer implements IAnySilentContainer { return; } TileEntityShulkerBox box = (TileEntityShulkerBox) tile; - // Reset back - we added 1, and calling TileEntityShulkerBox#startOpen adds - // 1 more. + // Reset back - we added 1, and calling TileEntityShulkerBox#startOpen adds 1 more. SilentContainerShulkerBox.setOpenValue(box, SilentContainerShulkerBox.getOpenValue((TileEntityShulkerBox) tile) - 2); @@ -181,7 +179,7 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } catch (Exception e) { e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); return false; } } @@ -256,7 +254,7 @@ public class AnySilentContainer implements IAnySilentContainer { private boolean isBlockedChest(final World world, final BlockPosition blockPosition) { // For reference, loot at net.minecraft.server.BlockChest - return world.getType(blockPosition.up()).m() || this.hasOcelotOnTop(world, blockPosition); + return world.getType(blockPosition.up()).l() || this.hasOcelotOnTop(world, blockPosition); } private boolean isBlockedShulkerBox(final World world, final BlockPosition blockPosition, -- 2.49.1 From 96c59f163d54b6e695aa382c17029aa58cc57d63 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Thu, 8 Jun 2017 18:36:01 -0400 Subject: [PATCH 105/253] Slightly improve API, bump version to 3.2.0 for release Methods are now properly annotated @Nullable when they may return null. More descriptive exceptions are thrown when issues occur instead of just returning null. --- api/pom.xml | 2 +- .../java/com/lishid/openinv/IOpenInv.java | 233 +++++++------ .../openinv/internal/IInventoryAccess.java | 32 +- assembly/pom.xml | 2 +- common/pom.xml | 4 +- .../lishid/openinv/util/InternalAccessor.java | 314 ++++++++++-------- internal/1_4_5/pom.xml | 4 +- internal/1_4_6/pom.xml | 4 +- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 +- internal/v1_11_R1/pom.xml | 4 +- internal/v1_12_R1/pom.xml | 4 +- internal/v1_4_R1/pom.xml | 4 +- internal/v1_5_R2/pom.xml | 4 +- internal/v1_5_R3/pom.xml | 4 +- internal/v1_6_R1/pom.xml | 4 +- internal/v1_6_R2/pom.xml | 4 +- internal/v1_6_R3/pom.xml | 4 +- internal/v1_7_R1/pom.xml | 4 +- internal/v1_7_R2/pom.xml | 4 +- internal/v1_7_R3/pom.xml | 4 +- internal/v1_7_R4/pom.xml | 4 +- internal/v1_8_R1/pom.xml | 4 +- internal/v1_8_R2/pom.xml | 4 +- internal/v1_8_R3/pom.xml | 4 +- internal/v1_9_R1/pom.xml | 4 +- internal/v1_9_R2/pom.xml | 4 +- plugin/plugin-core/pom.xml | 6 +- .../main/java/com/lishid/openinv/OpenInv.java | 240 +++++-------- .../commands/AnyChestPluginCommand.java | 21 +- .../commands/OpenEnderPluginCommand.java | 45 ++- .../commands/OpenInvPluginCommand.java | 49 +-- plugin/plugin-v1_10_R1/pom.xml | 4 +- plugin/pom.xml | 2 +- pom.xml | 2 +- 35 files changed, 530 insertions(+), 508 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 34c3adb..9e18776 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.3-SNAPSHOT + 3.2.0 openinvapi diff --git a/api/src/main/java/com/lishid/openinv/IOpenInv.java b/api/src/main/java/com/lishid/openinv/IOpenInv.java index 775a63b..55a255b 100644 --- a/api/src/main/java/com/lishid/openinv/IOpenInv.java +++ b/api/src/main/java/com/lishid/openinv/IOpenInv.java @@ -1,5 +1,7 @@ package com.lishid.openinv; +import javax.annotation.Nullable; + import com.lishid.openinv.internal.IAnySilentContainer; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; @@ -11,145 +13,172 @@ import org.bukkit.plugin.Plugin; /** * Interface defining behavior for the OpenInv plugin. - * + * * @author Jikoo */ public interface IOpenInv { - /** - * Checks if the server version is supported by OpenInv. - * - * @return true if the server version is supported - */ - public boolean isSupportedVersion(); - - /** - * Gets the active IInventoryAccess implementation. May return null if the server version is - * unsupported. - * - * @return the IInventoryAccess - */ - public IInventoryAccess getInventoryAccess(); - - /** - * Gets the active ISilentContainer implementation. May return null if the server version is - * unsupported. - * - * @return the ISilentContainer - */ - public IAnySilentContainer getAnySilentContainer(); - - /** - * Gets an ISpecialPlayerInventory for the given Player. - * - * @param player the Player - * @param online true if the Player is currently online - * @return the ISpecialPlayerInventory - */ - public ISpecialPlayerInventory getInventory(Player player, boolean online); - - /** - * Gets an ISpecialEnderChest for the given Player. - * - * @param player the Player - * @param online true if the Player is currently online - * @return the ISpecialEnderChest - */ - public ISpecialEnderChest getEnderChest(Player player, boolean online); - - /** - * Forcibly unload a cached Player's data. - * - * @param player the OfflinePlayer to unload - */ - public void unload(OfflinePlayer player); - /** * Check the configuration value for whether or not OpenInv saves player data when unloading * players. This is exclusively for users who do not allow editing of inventories, only viewing, * and wish to prevent any possibility of bugs such as lishid#40. If true, OpenInv will not ever * save any edits made to players. - * + * * @return false unless configured otherwise */ public boolean disableSaving(); /** - * Check the configuration value for whether or not OpenInv displays a notification to the user - * when a container is activated with SilentChest. - * - * @return true unless configured otherwise + * Gets the active ISilentContainer implementation. May return null if the server version is + * unsupported. + * + * @return the ISilentContainer + * @throws IllegalStateException if the server version is unsupported */ - public boolean notifySilentChest(); + public IAnySilentContainer getAnySilentContainer(); /** - * Check the configuration value for whether or not OpenInv displays a notification to the user - * when a container is activated with AnyChest. - * - * @return true unless configured otherwise + * Gets an ISpecialEnderChest for the given Player. Returns null if the ISpecialEnderChest could + * not be instantiated. + * + * @deprecated Use {@link IOpenInv#getSpecialEnderChest(Player, boolean)} + * @param player the Player + * @param online true if the Player is currently online + * @return the ISpecialEnderChest + * @throws IllegalStateException if the server version is unsupported */ - public boolean notifyAnyChest(); + @Deprecated + @Nullable + public ISpecialEnderChest getEnderChest(Player player, boolean online); /** - * Gets a player's SilentChest setting. - * - * @param player the OfflinePlayer - * @return true if SilentChest is enabled + * Gets an ISpecialPlayerInventory for the given Player. Returns null if the + * ISpecialPlayerInventory could not be instantiated. + * + * @deprecated Use {@link IOpenInv#getSpecialInventory(Player, boolean)} + * @param player the Player + * @param online true if the Player is currently online + * @return the ISpecialPlayerInventory + * @throws IllegalStateException if the server version is unsupported */ - public boolean getPlayerSilentChestStatus(OfflinePlayer player); + @Deprecated + @Nullable + public ISpecialPlayerInventory getInventory(Player player, boolean online); /** - * Sets a player's SilentChest setting. - * - * @param player the OfflinePlayer - * @param status the status + * Gets the active IInventoryAccess implementation. May return null if the server version is + * unsupported. + * + * @return the IInventoryAccess + * @throws IllegalStateException if the server version is unsupported */ - public void setPlayerSilentChestStatus(OfflinePlayer player, boolean status); + public IInventoryAccess getInventoryAccess(); /** * Gets the provided player's AnyChest setting. - * + * * @param player the OfflinePlayer * @return true if AnyChest is enabled + * @throws IllegalStateException if the server version is unsupported */ public boolean getPlayerAnyChestStatus(OfflinePlayer player); - /** - * Sets a player's AnyChest setting. - * - * @param player the OfflinePlayer - * @param status the status - */ - public void setPlayerAnyChestStatus(OfflinePlayer player, boolean status); - /** * Gets a unique identifier by which the OfflinePlayer can be referenced. Using the value * returned to look up a Player will generally be much faster for later implementations. - * + * * @param offline the OfflinePlayer * @return the identifier + * @throws IllegalStateException if the server version is unsupported */ public String getPlayerID(OfflinePlayer offline); + /** + * Gets a player's SilentChest setting. + * + * @param player the OfflinePlayer + * @return true if SilentChest is enabled + * @throws IllegalStateException if the server version is unsupported + */ + public boolean getPlayerSilentChestStatus(OfflinePlayer player); + + /** + * Gets an ISpecialEnderChest for the given Player. + * + * @param player the Player + * @param online true if the Player is currently online + * @return the ISpecialEnderChest + * @throws IllegalStateException if the server version is unsupported + * @throws InstantiationException if the ISpecialEnderChest could not be instantiated + */ + public ISpecialEnderChest getSpecialEnderChest(Player player, boolean online) throws InstantiationException; + + /** + * Gets an ISpecialPlayerInventory for the given Player. + * + * @param player the Player + * @param online true if the Player is currently online + * @return the ISpecialPlayerInventory + * @throws IllegalStateException if the server version is unsupported + * @throws InstantiationException if the ISpecialPlayerInventory could not be instantiated + */ + public ISpecialPlayerInventory getSpecialInventory(Player player, boolean online) throws InstantiationException; + + /** + * Checks if the server version is supported by OpenInv. + * + * @return true if the server version is supported + */ + public boolean isSupportedVersion(); + + /** + * Load a Player from an OfflinePlayer. May return null under some circumstances. + * + * @param offline the OfflinePlayer to load a Player for + * @return the Player, or null + * @throws IllegalStateException if the server version is unsupported + */ + @Nullable + public Player loadPlayer(final OfflinePlayer offline); + /** * Get an OfflinePlayer by name. *

      * Note: This method is potentially very heavily blocking. It should not ever be called on the * main thread, and if it is, a stack trace will be displayed alerting server owners to the * call. - * + * * @param name the name of the Player * @return the OfflinePlayer with the closest matching name or null if no players have ever logged in */ + @Nullable public OfflinePlayer matchPlayer(String name); /** - * Load a Player from an OfflinePlayer. May return null under some circumstances. - * - * @param offline the OfflinePlayer to load a Player for - * @return the Player + * Check the configuration value for whether or not OpenInv displays a notification to the user + * when a container is activated with AnyChest. + * + * @return true unless configured otherwise */ - public Player loadPlayer(final OfflinePlayer offline); + public boolean notifyAnyChest(); + + /** + * Check the configuration value for whether or not OpenInv displays a notification to the user + * when a container is activated with SilentChest. + * + * @return true unless configured otherwise + */ + public boolean notifySilentChest(); + + /** + * Mark a Player as no longer in use by a Plugin to allow OpenInv to remove it from the cache + * when eligible. + * + * @param player the Player + * @param plugin the Plugin no longer holding a reference to the Player + * @throws IllegalStateException if the server version is unsupported + */ + public void releasePlayer(Player player, Plugin plugin); /** * Mark a Player as in use by a Plugin to prevent it from being removed from the cache. Used to @@ -169,19 +198,37 @@ public interface IOpenInv { * {@link #disableSaving()} returns false. If you are making changes that OpenInv does not cause * to persist when a Player logs in as noted above, it is suggested that you manually call * {@link Player#saveData()} when releasing your reference to ensure your changes persist. - * + * * @param player the Player * @param plugin the Plugin holding the reference to the Player + * @throws IllegalStateException if the server version is unsupported */ public void retainPlayer(Player player, Plugin plugin); /** - * Mark a Player as no longer in use by a Plugin to allow OpenInv to remove it from the cache - * when eligible. - * - * @param player the Player - * @param plugin the Plugin no longer holding a reference to the Player + * Sets a player's AnyChest setting. + * + * @param player the OfflinePlayer + * @param status the status + * @throws IllegalStateException if the server version is unsupported */ - public void releasePlayer(Player player, Plugin plugin); + public void setPlayerAnyChestStatus(OfflinePlayer player, boolean status); + + /** + * Sets a player's SilentChest setting. + * + * @param player the OfflinePlayer + * @param status the status + * @throws IllegalStateException if the server version is unsupported + */ + public void setPlayerSilentChestStatus(OfflinePlayer player, boolean status); + + /** + * Forcibly unload a cached Player's data. + * + * @param player the OfflinePlayer to unload + * @throws IllegalStateException if the server version is unsupported + */ + public void unload(OfflinePlayer player); } diff --git a/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java b/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java index f48381e..3ea8bc6 100644 --- a/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java +++ b/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java @@ -1,57 +1,61 @@ /* * 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; +import javax.annotation.Nullable; + import org.bukkit.inventory.Inventory; public interface IInventoryAccess { /** - * Check if an Inventory is an ISpecialPlayerInventory implementation. - * + * Gets an ISpecialEnderChest from an Inventory or null if the Inventory is not backed by an + * ISpecialEnderChest. + * * @param inventory the Inventory - * @return true if the Inventory is backed by an ISpecialPlayerInventory + * @return the ISpecialEnderChest or null */ - public boolean isSpecialPlayerInventory(Inventory inventory); + @Nullable + public ISpecialEnderChest getSpecialEnderChest(Inventory inventory); /** * Gets an ISpecialPlayerInventory from an Inventory or null if the Inventory is not backed by * an ISpecialPlayerInventory. - * + * * @param inventory the Inventory * @return the ISpecialPlayerInventory or null */ + @Nullable public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory); /** * Check if an Inventory is an ISpecialEnderChest implementation. - * + * * @param inventory the Inventory * @return true if the Inventory is backed by an ISpecialEnderChest */ public boolean isSpecialEnderChest(Inventory inventory); /** - * Gets an ISpecialEnderChest from an Inventory or null if the Inventory is not backed by an - * ISpecialEnderChest. - * + * Check if an Inventory is an ISpecialPlayerInventory implementation. + * * @param inventory the Inventory - * @return the ISpecialEnderChest or null + * @return true if the Inventory is backed by an ISpecialPlayerInventory */ - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory); + public boolean isSpecialPlayerInventory(Inventory inventory); } diff --git a/assembly/pom.xml b/assembly/pom.xml index 3c043f9..00f64b5 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.3-SNAPSHOT + 3.2.0 openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 922ffde..7b15926 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.3-SNAPSHOT + 3.2.0 openinvcommon @@ -22,7 +22,7 @@ com.lishid openinvapi - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/common/src/main/java/com/lishid/openinv/util/InternalAccessor.java b/common/src/main/java/com/lishid/openinv/util/InternalAccessor.java index cc8a8b4..18a5f6a 100644 --- a/common/src/main/java/com/lishid/openinv/util/InternalAccessor.java +++ b/common/src/main/java/com/lishid/openinv/util/InternalAccessor.java @@ -1,15 +1,15 @@ /* * 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 . */ @@ -18,6 +18,7 @@ package com.lishid.openinv.util; import java.lang.reflect.Constructor; import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; import com.lishid.openinv.internal.IAnySilentContainer; import com.lishid.openinv.internal.IInventoryAccess; @@ -30,144 +31,8 @@ import org.bukkit.plugin.Plugin; public class InternalAccessor { - private final Plugin plugin; - - private final String version; - private boolean supported = false; - - public InternalAccessor(Plugin plugin) { - this.plugin = plugin; - - String packageName = plugin.getServer().getClass().getPackage().getName(); - version = packageName.substring(packageName.lastIndexOf('.') + 1); - - try { - Class.forName("com.lishid.openinv.internal." + version + ".PlayerDataManager"); - supported = true; - } catch (Exception e) {} - } - - /** - * Gets the server implementation version. If not initialized, returns the string "null" - * instead. - * - * @return the version, or "null" - */ - public String getVersion() { - return this.version != null ? this.version : "null"; - } - - /** - * Checks if the server implementation is supported. - * - * @return true if initialized for a supported server version - */ - public boolean isSupported() { - return this.supported; - } - - /** - * Creates an instance of the IPlayerDataManager implementation for the current server version, - * or null if unsupported. - * - * @return the IPlayerDataManager - */ - public IPlayerDataManager newPlayerDataManager() { - return createObject(IPlayerDataManager.class, "PlayerDataManager"); - } - - /** - * Creates an instance of the IInventoryAccess implementation for the current server version, or - * null if unsupported. - * - * @return the IInventoryAccess - */ - public IInventoryAccess newInventoryAccess() { - return createObject(IInventoryAccess.class, "InventoryAccess"); - } - - /** - * Creates an instance of the IAnySilentContainer implementation for the current server version, - * or null if unsupported. - * - * @return the IAnySilentContainer - */ - public IAnySilentContainer newAnySilentContainer() { - return createObject(IAnySilentContainer.class, "AnySilentContainer"); - } - - /** - * Creates an instance of the ISpecialPlayerInventory implementation for the given Player, or - * null if the current version is unsupported. - * - * @param player the Player - * @param online true if the Player is online - * @return the ISpecialPlayerInventory created - */ - public ISpecialPlayerInventory newSpecialPlayerInventory(Player player, boolean online) { - return createObject(ISpecialPlayerInventory.class, "SpecialPlayerInventory", player, online); - } - - /** - * Creates an instance of the ISpecialEnderChest implementation for the given Player, or - * null if the current version is unsupported. - * - * @param player the Player - * @param online true if the Player is online - * @return the ISpecialEnderChest created - */ - public ISpecialEnderChest newSpecialEnderChest(Player player, boolean online) { - return createObject(ISpecialEnderChest.class, "SpecialEnderChest", player, online); - } - - private T createObject(Class assignableClass, String className, Object... params) { - try { - // Check if internal versioned class exists - Class internalClass = Class.forName("com.lishid.openinv.internal." + version + "." + className); - if (!assignableClass.isAssignableFrom(internalClass)) { - plugin.getLogger().warning("Found class " + internalClass.getName() + " but cannot cast to " + assignableClass.getName()); - return null; - } - - // Quick return: no parameters, no need to fiddle about finding the correct constructor. - if (params.length == 0) { - return assignableClass.cast(internalClass.getConstructor().newInstance()); - } - - // Search constructors for one matching the given parameters - nextConstructor: for (Constructor constructor : internalClass.getConstructors()) { - Class[] requiredClasses = constructor.getParameterTypes(); - if (requiredClasses.length != params.length) { - continue; - } - for (int i = 0; i < params.length; ++i) { - if (!requiredClasses[i].isAssignableFrom(params[i].getClass())) { - continue nextConstructor; - } - } - return assignableClass.cast(constructor.newInstance(params)); - } - - StringBuilder message = new StringBuilder("Found class ").append(internalClass.getName()) - .append(" but cannot find any matching constructors for ["); - for (Object object : params) { - message.append(object.getClass().getName()).append(", "); - } - if (params.length > 0) { - message.delete(message.length() - 2, message.length()); - } - - plugin.getLogger().warning(message.append(']').toString()); - } catch (Exception e) { - plugin.getLogger().warning("OpenInv encountered an error with the CraftBukkit version \"" + version + "\". Please look for an updated version of OpenInv."); - e.printStackTrace(); - } - - return null; - } - - public static T grabFieldOfTypeFromObject(Class type, Object object) { - // Use reflection to find the iinventory + public static T grabFieldOfTypeFromObject(final Class type, final Object object) { + // Use reflection to find the IInventory Class clazz = object.getClass(); T result = null; for (Field f : clazz.getDeclaredFields()) { @@ -183,4 +48,171 @@ public class InternalAccessor { return result; } + private final Plugin plugin; + private final String version; + private boolean supported = false; + private IPlayerDataManager playerDataManager; + private IInventoryAccess inventoryAccess; + + private IAnySilentContainer anySilentContainer; + + public InternalAccessor(final Plugin plugin) { + this.plugin = plugin; + + String packageName = plugin.getServer().getClass().getPackage().getName(); + this.version = packageName.substring(packageName.lastIndexOf('.') + 1); + + try { + Class.forName("com.lishid.openinv.internal." + this.version + ".SpecialPlayerInventory"); + Class.forName("com.lishid.openinv.internal." + this.version + ".SpecialEnderChest"); + this.playerDataManager = this.createObject(IPlayerDataManager.class, "PlayerDataManager"); + this.inventoryAccess = this.createObject(IInventoryAccess.class, "InventoryAccess"); + this.anySilentContainer = this.createObject(IAnySilentContainer.class, "AnySilentContainer"); + this.supported = true; + } catch (Exception e) {} + } + + private T createObject(final Class assignableClass, final String className, + final Object... params) throws ClassCastException, ClassNotFoundException, + InstantiationException, IllegalAccessException, IllegalArgumentException, + InvocationTargetException, NoSuchMethodException, SecurityException { + // Fetch internal class if it exists. + Class internalClass = Class.forName("com.lishid.openinv.internal." + this.version + "." + className); + if (!assignableClass.isAssignableFrom(internalClass)) { + String message = String.format("Found class %s but cannot cast to %s!", internalClass.getName(), assignableClass.getName()); + this.plugin.getLogger().warning(message); + throw new IllegalStateException(message); + } + + // Quick return: no parameters, no need to fiddle about finding the correct constructor. + if (params.length == 0) { + return assignableClass.cast(internalClass.getConstructor().newInstance()); + } + + // Search constructors for one matching the given parameters + nextConstructor: for (Constructor constructor : internalClass.getConstructors()) { + Class[] requiredClasses = constructor.getParameterTypes(); + if (requiredClasses.length != params.length) { + continue; + } + for (int i = 0; i < params.length; ++i) { + if (!requiredClasses[i].isAssignableFrom(params[i].getClass())) { + continue nextConstructor; + } + } + return assignableClass.cast(constructor.newInstance(params)); + } + + StringBuilder builder = new StringBuilder("Found class ").append(internalClass.getName()) + .append(" but cannot find any matching constructors for ["); + for (Object object : params) { + builder.append(object.getClass().getName()).append(", "); + } + if (params.length > 0) { + builder.delete(builder.length() - 2, builder.length()); + } + + String message = builder.append(']').toString(); + this.plugin.getLogger().warning(message); + + throw new IllegalArgumentException(message); + } + + /** + * Creates an instance of the IAnySilentContainer implementation for the current server version. + * + * @return the IAnySilentContainer + * @throws IllegalStateException if server version is unsupported + */ + public IAnySilentContainer getAnySilentContainer() { + if (!this.supported) { + throw new IllegalStateException(String.format("Unsupported server version %s!", this.version)); + } + return this.anySilentContainer; + } + + /** + * Creates an instance of the IInventoryAccess implementation for the current server version. + * + * @return the IInventoryAccess + * @throws IllegalStateException if server version is unsupported + */ + public IInventoryAccess getInventoryAccess() { + if (!this.supported) { + throw new IllegalStateException(String.format("Unsupported server version %s!", this.version)); + } + return this.inventoryAccess; + } + + /** + * Creates an instance of the IPlayerDataManager implementation for the current server version. + * + * @return the IPlayerDataManager + * @throws IllegalStateException if server version is unsupported + */ + public IPlayerDataManager getPlayerDataManager() { + if (!this.supported) { + throw new IllegalStateException(String.format("Unsupported server version %s!", this.version)); + } + return this.playerDataManager; + } + + /** + * Gets the server implementation version. If not initialized, returns the string "null" + * instead. + * + * @return the version, or "null" + */ + public String getVersion() { + return this.version != null ? this.version : "null"; + } + + /** + * Checks if the server implementation is supported. + * + * @return true if initialized for a supported server version + */ + public boolean isSupported() { + return this.supported; + } + + /** + * Creates an instance of the ISpecialEnderChest implementation for the given Player, or + * null if the current version is unsupported. + * + * @param player the Player + * @param online true if the Player is online + * @return the ISpecialEnderChest created + * @throws InstantiationException if the ISpecialEnderChest could not be instantiated + */ + public ISpecialEnderChest newSpecialEnderChest(final Player player, final boolean online) throws InstantiationException { + if (!this.supported) { + throw new IllegalStateException(String.format("Unsupported server version %s!", this.version)); + } + try { + return this.createObject(ISpecialEnderChest.class, "SpecialEnderChest", player, online); + } catch (Exception e) { + throw new InstantiationException(String.format("Unable to create a new ISpecialEnderChest: %s", e.getMessage())); + } + } + + /** + * Creates an instance of the ISpecialPlayerInventory implementation for the given Player.. + * + * @param player the Player + * @param online true if the Player is online + * @return the ISpecialPlayerInventory created + * @throws InstantiationException if the ISpecialPlayerInventory could not be instantiated + */ + public ISpecialPlayerInventory newSpecialPlayerInventory(final Player player, final boolean online) throws InstantiationException { + if (!this.supported) { + throw new IllegalStateException(String.format("Unsupported server version %s!", this.version)); + } + try { + return this.createObject(ISpecialPlayerInventory.class, "SpecialPlayerInventory", player, online); + } catch (Exception e) { + throw new InstantiationException(String.format("Unable to create a new ISpecialPlayerInventory: %s", e.getMessage())); + } + } + } diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 936f4b7..ae75030 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_4_5 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index b74413c..b1f5498 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_4_6 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/pom.xml b/internal/pom.xml index 308689b..dca291a 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.3-SNAPSHOT + 3.2.0 openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index e137db4..01b9407 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_10_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 40aa66b..2d49892 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_11_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index 9d4fe00..0e817ad 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_12_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 2966bf9..f678c2d 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_4_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 3e215ba..e68a425 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_5_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 1b57d74..e010ced 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_5_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 47e42ee..d325ebb 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_6_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 79c5c79..2777aa5 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_6_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index a0c0e0a..07e69cc 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_6_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 412dbee..57e8c7a 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_7_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index ba8f95e..e767f9b 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_7_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 18560c8..df4ccb1 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_7_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 1c680de..135a70f 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_7_R4 @@ -27,7 +27,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 7ba3bdd..51aa64d 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_8_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index b69303c..73fd330 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_8_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index f411c14..b7ed489 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_8_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index 5ce0a33..e5479cf 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_9_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index f7e3e75..28278ca 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.1.3-SNAPSHOT + 3.2.0 openinvadapter1_9_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index 4455776..b7e2f88 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.1.3-SNAPSHOT + 3.2.0 openinvplugincore @@ -22,12 +22,12 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 com.lishid openinvpluginv1_10_r1 - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java index 90aa262..b9bfc02 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java @@ -28,6 +28,8 @@ import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; +import javax.annotation.Nullable; + import com.lishid.openinv.commands.AnyChestPluginCommand; import com.lishid.openinv.commands.OpenEnderPluginCommand; import com.lishid.openinv.commands.OpenInvPluginCommand; @@ -36,7 +38,6 @@ import com.lishid.openinv.commands.SearchInvPluginCommand; import com.lishid.openinv.commands.SilentChestPluginCommand; import com.lishid.openinv.internal.IAnySilentContainer; 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.listeners.InventoryClickListener; @@ -78,7 +79,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { new Function() { @Override public boolean run(final Player value) { - String key = OpenInv.this.playerLoader.getPlayerDataID(value); + String key = OpenInv.this.accessor.getPlayerDataManager().getPlayerDataID(value); return OpenInv.this.inventories.containsKey(key) && OpenInv.this.inventories.get(key).isInUse() || OpenInv.this.enderChests.containsKey(key) @@ -88,7 +89,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { }, new Function() { @Override public boolean run(final Player value) { - String key = OpenInv.this.playerLoader.getPlayerDataID(value); + String key = OpenInv.this.accessor.getPlayerDataManager().getPlayerDataID(value); // Check if inventory is stored, and if it is, remove it and eject all viewers if (OpenInv.this.inventories.containsKey(key)) { @@ -114,9 +115,6 @@ public class OpenInv extends JavaPlugin implements IOpenInv { }); private InternalAccessor accessor; - private IPlayerDataManager playerLoader; - private IInventoryAccess inventoryAccess; - private IAnySilentContainer anySilentContainer; /** * Evicts all viewers lacking cross-world permissions from a Player's inventory. @@ -125,7 +123,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { */ public void changeWorld(final Player player) { - String key = this.playerLoader.getPlayerDataID(player); + String key = this.accessor.getPlayerDataManager().getPlayerDataID(player); // Check if the player is cached. If not, neither of their inventories is open. if (!this.playerCache.containsKey(key)) { @@ -159,77 +157,41 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } } - /** - * Check the configuration value for whether or not OpenInv saves player data when unloading - * players. This is exclusively for users who do not allow editing of inventories, only viewing, - * and wish to prevent any possibility of bugs such as lishid#40. If true, OpenInv will not ever - * save any edits made to players. - * - * @return false unless configured otherwise - */ @Override public boolean disableSaving() { return this.getConfig().getBoolean("settings.disable-saving", false); } - /** - * Gets the active ISilentContainer implementation. May return null if the server version is - * unsupported. - * - * @return the ISilentContainer - */ @Override public IAnySilentContainer getAnySilentContainer() { - return this.anySilentContainer; + return this.accessor.getAnySilentContainer(); } - /** - * Gets an ISpecialEnderChest for the given Player. - * - * @param player the Player - * @param online true if the Player is currently online - * @return the ISpecialEnderChest - */ + @Deprecated @Override public ISpecialEnderChest getEnderChest(final Player player, final boolean online) { - String id = this.playerLoader.getPlayerDataID(player); - if (this.enderChests.containsKey(id)) { - return this.enderChests.get(id); + try { + return this.getSpecialEnderChest(player, online); + } catch (InstantiationException e) { + e.printStackTrace(); + return null; } - ISpecialEnderChest inv = this.accessor.newSpecialEnderChest(player, online); - this.enderChests.put(id, inv); - this.playerCache.put(id, player); - return inv; } - /** - * Gets an ISpecialPlayerInventory for the given Player. - * - * @param player the Player - * @param online true if the Player is currently online - * @return the ISpecialPlayerInventory - */ + @Deprecated @Override public ISpecialPlayerInventory getInventory(final Player player, final boolean online) { - String id = this.playerLoader.getPlayerDataID(player); - if (this.inventories.containsKey(id)) { - return this.inventories.get(id); + try { + return this.getSpecialInventory(player, online); + } catch (InstantiationException e) { + e.printStackTrace(); + return null; } - ISpecialPlayerInventory inv = this.accessor.newSpecialPlayerInventory(player, online); - this.inventories.put(id, inv); - this.playerCache.put(id, player); - return inv; } - /** - * Gets the active IInventoryAccess implementation. May return null if the server version is - * unsupported. - * - * @return the IInventoryAccess - */ @Override public IInventoryAccess getInventoryAccess() { - return this.inventoryAccess; + return this.accessor.getInventoryAccess(); } private int getLevenshteinDistance(final String string1, final String string2) { @@ -279,8 +241,8 @@ public class OpenInv extends JavaPlugin implements IOpenInv { @SuppressWarnings("unchecked") public Collection getOnlinePlayers() { - if (this.playerLoader != null) { - return this.playerLoader.getOnlinePlayers(); + if (this.accessor.isSupported()) { + return this.accessor.getPlayerDataManager().getOnlinePlayers(); } Method getOnlinePlayers; @@ -306,56 +268,53 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return Arrays.asList((Player[]) onlinePlayers); } - /** - * Gets the provided player's AnyChest setting. - * - * @param player the OfflinePlayer - * @return true if AnyChest is enabled - */ @Override public boolean getPlayerAnyChestStatus(final OfflinePlayer player) { - return this.getConfig().getBoolean("toggles.any-chest." + this.playerLoader.getPlayerDataID(player), false); + return this.getConfig().getBoolean("toggles.any-chest." + this.accessor.getPlayerDataManager().getPlayerDataID(player), false); } - /** - * Gets a unique identifier by which the OfflinePlayer can be referenced. Using the value - * returned to look up a Player will generally be much faster for later implementations. - * - * @param offline the OfflinePlayer - * @return the identifier - */ @Override public String getPlayerID(final OfflinePlayer offline) { - return this.playerLoader.getPlayerDataID(offline); + return this.accessor.getPlayerDataManager().getPlayerDataID(offline); } - /** - * Gets a player's SilentChest setting. - * - * @param player the OfflinePlayer - * @return true if SilentChest is enabled - */ @Override public boolean getPlayerSilentChestStatus(final OfflinePlayer player) { - return this.getConfig().getBoolean("toggles.silent-chest." + this.playerLoader.getPlayerDataID(player), false); + return this.getConfig().getBoolean("toggles.silent-chest." + this.accessor.getPlayerDataManager().getPlayerDataID(player), false); + } + + @Override + public ISpecialEnderChest getSpecialEnderChest(final Player player, final boolean online) + throws InstantiationException { + String id = this.accessor.getPlayerDataManager().getPlayerDataID(player); + if (this.enderChests.containsKey(id)) { + return this.enderChests.get(id); + } + ISpecialEnderChest inv = this.accessor.newSpecialEnderChest(player, online); + this.enderChests.put(id, inv); + this.playerCache.put(id, player); + return inv; + } + + @Override + public ISpecialPlayerInventory getSpecialInventory(final Player player, final boolean online) + throws InstantiationException { + String id = this.accessor.getPlayerDataManager().getPlayerDataID(player); + if (this.inventories.containsKey(id)) { + return this.inventories.get(id); + } + ISpecialPlayerInventory inv = this.accessor.newSpecialPlayerInventory(player, online); + this.inventories.put(id, inv); + this.playerCache.put(id, player); + return inv; } - /** - * Checks if the server version is supported by OpenInv. - * - * @return true if the server version is supported - */ @Override public boolean isSupportedVersion() { return this.accessor != null && this.accessor.isSupported(); } - /** - * Load a Player from an OfflinePlayer. May return null under some circumstances. - * - * @param offline the OfflinePlayer to load a Player for - * @return the Player - */ + @Nullable @Override public Player loadPlayer(final OfflinePlayer offline) { @@ -363,7 +322,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return null; } - String key = this.playerLoader.getPlayerDataID(offline); + String key = this.accessor.getPlayerDataManager().getPlayerDataID(offline); if (this.playerCache.containsKey(key)) { return this.playerCache.get(key); } @@ -377,15 +336,19 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return loaded; } + if (!this.isSupportedVersion()) { + return null; + } + if (Bukkit.isPrimaryThread()) { - return this.playerLoader.loadPlayer(offline); + return this.accessor.getPlayerDataManager().loadPlayer(offline); } Future future = Bukkit.getScheduler().callSyncMethod(this, new Callable() { @Override public Player call() throws Exception { - return OpenInv.this.playerLoader.loadPlayer(offline); + return OpenInv.this.accessor.getPlayerDataManager().loadPlayer(offline); } }); @@ -421,16 +384,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return loaded; } - /** - * Get an OfflinePlayer by name. - *

      - * Note: This method is potentially very heavily blocking. It should not ever be called on the - * main thread, and if it is, a stack trace will be displayed alerting server owners to the - * call. - * - * @param name the name of the Player - * @return the OfflinePlayer with the closest matching name or null if no players have ever logged in - */ + @Nullable @Override public OfflinePlayer matchPlayer(final String name) { @@ -444,11 +398,15 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } } - // Attempt exact offline match first - adds UUID support for later versions - OfflinePlayer player = this.playerLoader.getPlayerByID(name); + OfflinePlayer player; - if (player != null) { - return player; + if (this.isSupportedVersion()) { + // Attempt exact offline match first - adds UUID support for later versions + player = this.accessor.getPlayerDataManager().getPlayerByID(name); + + if (player != null) { + return player; + } } // Ensure name is valid if server is in online mode to avoid unnecessary searching @@ -503,23 +461,11 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return player; } - /** - * Check the configuration value for whether or not OpenInv displays a notification to the user - * when a container is activated with AnyChest. - * - * @return true unless configured otherwise - */ @Override public boolean notifyAnyChest() { return this.getConfig().getBoolean("notify.any-chest", true); } - /** - * Check the configuration value for whether or not OpenInv displays a notification to the user - * when a container is activated with SilentChest. - * - * @return true unless configured otherwise - */ @Override public boolean notifySilentChest() { return this.getConfig().getBoolean("notify.silent-chest", true); @@ -532,7 +478,9 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return; } - this.playerCache.invalidateAll(); + if (this.isSupportedVersion()) { + this.playerCache.invalidateAll(); + } } @Override @@ -550,10 +498,6 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return; } - this.playerLoader = this.accessor.newPlayerDataManager(); - this.inventoryAccess = this.accessor.newInventoryAccess(); - this.anySilentContainer = this.accessor.newAnySilentContainer(); - new ConfigUpdater(this).checkForUpdates(); // Register listeners @@ -575,21 +519,13 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } - /** - * Unmark any Players in use by the specified Plugin. - * - * @param plugin - */ public void releaseAllPlayers(final Plugin plugin) { this.pluginUsage.removeAll(plugin.getClass()); } - /** - * @see com.lishid.openinv.IOpenInv#releasePlayer(org.bukkit.entity.Player, org.bukkit.plugin.Plugin) - */ @Override public void releasePlayer(final Player player, final Plugin plugin) { - String key = this.playerLoader.getPlayerDataID(player); + String key = this.accessor.getPlayerDataManager().getPlayerDataID(player); if (!this.pluginUsage.containsEntry(key, plugin.getClass())) { return; @@ -598,12 +534,9 @@ public class OpenInv extends JavaPlugin implements IOpenInv { this.pluginUsage.remove(key, plugin.getClass()); } - /** - * @see com.lishid.openinv.IOpenInv#retainPlayer(org.bukkit.entity.Player, org.bukkit.plugin.Plugin) - */ @Override public void retainPlayer(final Player player, final Plugin plugin) { - String key = this.playerLoader.getPlayerDataID(player); + String key = this.accessor.getPlayerDataManager().getPlayerDataID(player); if (this.pluginUsage.containsEntry(key, plugin.getClass())) { return; @@ -612,15 +545,9 @@ public class OpenInv extends JavaPlugin implements IOpenInv { this.pluginUsage.put(key, plugin.getClass()); } - /** - * Sets a player's AnyChest setting. - * - * @param player the OfflinePlayer - * @param status the status - */ @Override public void setPlayerAnyChestStatus(final OfflinePlayer player, final boolean status) { - this.getConfig().set("toggles.any-chest." + this.playerLoader.getPlayerDataID(player), status); + this.getConfig().set("toggles.any-chest." + this.accessor.getPlayerDataManager().getPlayerDataID(player), status); this.saveConfig(); } @@ -628,10 +555,11 @@ public class OpenInv extends JavaPlugin implements IOpenInv { * Method for handling a Player going offline. * * @param player the Player + * @throws IllegalStateException if the server version is unsupported */ public void setPlayerOffline(final Player player) { - String key = this.playerLoader.getPlayerDataID(player); + String key = this.accessor.getPlayerDataManager().getPlayerDataID(player); // Check if the player is cached. If not, neither of their inventories is open. if (!this.playerCache.containsKey(key)) { @@ -651,10 +579,11 @@ public class OpenInv extends JavaPlugin implements IOpenInv { * Method for handling a Player coming online. * * @param player the Player + * @throws IllegalStateException if the server version is unsupported */ public void setPlayerOnline(final Player player) { - String key = this.playerLoader.getPlayerDataID(player); + String key = this.accessor.getPlayerDataManager().getPlayerDataID(player); // Check if the player is cached. If not, neither of their inventories is open. if (!this.playerCache.containsKey(key)) { @@ -681,15 +610,9 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } } - /** - * Sets a player's SilentChest setting. - * - * @param player the OfflinePlayer - * @param status the status - */ @Override public void setPlayerSilentChestStatus(final OfflinePlayer player, final boolean status) { - this.getConfig().set("toggles.silent-chest." + this.playerLoader.getPlayerDataID(player), status); + this.getConfig().set("toggles.silent-chest." + this.accessor.getPlayerDataManager().getPlayerDataID(player), status); this.saveConfig(); } @@ -728,14 +651,9 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } } - /** - * Forcibly unload a cached Player's data. - * - * @param player the OfflinePlayer to unload - */ @Override public void unload(final OfflinePlayer player) { - this.playerCache.invalidate(this.playerLoader.getPlayerDataID(player)); + this.playerCache.invalidate(this.accessor.getPlayerDataManager().getPlayerDataID(player)); } } diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java index 3036f30..d917e2d 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java @@ -1,38 +1,39 @@ /* * 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.commands; +import com.lishid.openinv.OpenInv; + import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.lishid.openinv.OpenInv; - public class AnyChestPluginCommand implements CommandExecutor { private final OpenInv plugin; - public AnyChestPluginCommand(OpenInv plugin) { + public AnyChestPluginCommand(final OpenInv plugin) { this.plugin = plugin; } - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + @Override + public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) { if (!(sender instanceof Player)) { sender.sendMessage(ChatColor.RED + "You can't use this from the console."); return true; @@ -41,12 +42,12 @@ public class AnyChestPluginCommand implements CommandExecutor { Player player = (Player) sender; if (args.length > 0 && args[0].equalsIgnoreCase("check")) { - sender.sendMessage("AnyChest is " + (plugin.getPlayerAnyChestStatus(player) ? "ON" : "OFF") + "."); + sender.sendMessage("AnyChest is " + (this.plugin.getPlayerAnyChestStatus(player) ? "ON" : "OFF") + "."); return true; } - plugin.setPlayerAnyChestStatus(player, !plugin.getPlayerAnyChestStatus(player)); - sender.sendMessage("AnyChest is now " + (plugin.getPlayerAnyChestStatus(player) ? "ON" : "OFF") + "."); + this.plugin.setPlayerAnyChestStatus(player, !this.plugin.getPlayerAnyChestStatus(player)); + sender.sendMessage("AnyChest is now " + (this.plugin.getPlayerAnyChestStatus(player) ? "ON" : "OFF") + "."); return true; } diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java index 2c1ae54..ec2e907 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -1,15 +1,15 @@ /* * 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 . */ @@ -35,30 +35,30 @@ public class OpenEnderPluginCommand implements CommandExecutor { private final OpenInv plugin; private final HashMap openEnderHistory = new HashMap(); - public OpenEnderPluginCommand(OpenInv plugin) { + public OpenEnderPluginCommand(final OpenInv plugin) { this.plugin = plugin; } @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) { if (!(sender instanceof Player)) { sender.sendMessage(ChatColor.RED + "You can't use this from the console."); return true; } if (args.length > 0 && args[0].equalsIgnoreCase("?")) { - plugin.showHelp((Player) sender); + this.plugin.showHelp((Player) sender); return true; } final Player player = (Player) sender; // History management - String history = openEnderHistory.get(player); + String history = this.openEnderHistory.get(player); if (history == null || history == "") { history = player.getName(); - openEnderHistory.put(player, history); + this.openEnderHistory.put(player, history); } final String name; @@ -73,7 +73,7 @@ public class OpenEnderPluginCommand implements CommandExecutor { new BukkitRunnable() { @Override public void run() { - final OfflinePlayer offlinePlayer = plugin.matchPlayer(name); + final OfflinePlayer offlinePlayer = OpenEnderPluginCommand.this.plugin.matchPlayer(name); if (offlinePlayer == null || !offlinePlayer.hasPlayedBefore() && !offlinePlayer.isOnline()) { player.sendMessage(ChatColor.RED + "Player not found!"); @@ -86,24 +86,24 @@ public class OpenEnderPluginCommand implements CommandExecutor { if (!player.isOnline()) { return; } - openInventory(player, offlinePlayer); + OpenEnderPluginCommand.this.openInventory(player, offlinePlayer); } - }.runTask(plugin); + }.runTask(OpenEnderPluginCommand.this.plugin); } - }.runTaskAsynchronously(plugin); + }.runTaskAsynchronously(this.plugin); return true; } - private void openInventory(Player player, OfflinePlayer target) { + private void openInventory(final Player player, final OfflinePlayer target) { Player onlineTarget; boolean online = target.isOnline(); if (!online) { // Try loading the player's data - onlineTarget = plugin.loadPlayer(target); + onlineTarget = this.plugin.loadPlayer(target); if (onlineTarget == null) { player.sendMessage(ChatColor.RED + "Player not found!"); @@ -118,21 +118,30 @@ public class OpenEnderPluginCommand implements CommandExecutor { player.sendMessage(ChatColor.RED + "You do not have permission to access other players' enderchests."); return; } - if (!Permissions.CROSSWORLD.hasPermission(player) && !player.getWorld().equals(onlineTarget.getWorld())) { + if (!Permissions.CROSSWORLD.hasPermission(player) + && !player.getWorld().equals(onlineTarget.getWorld())) { player.sendMessage(ChatColor.RED + onlineTarget.getDisplayName() + " is not in your world!"); return; } - if (!Permissions.OVERRIDE.hasPermission(player) && Permissions.EXEMPT.hasPermission(onlineTarget)) { + if (!Permissions.OVERRIDE.hasPermission(player) + && Permissions.EXEMPT.hasPermission(onlineTarget)) { player.sendMessage(ChatColor.RED + onlineTarget.getDisplayName() + "'s inventory is protected!"); return; } } // Record the target - openEnderHistory.put(player, onlineTarget.getName()); + this.openEnderHistory.put(player, onlineTarget.getName()); // Create the inventory - ISpecialEnderChest chest = plugin.getEnderChest(onlineTarget, online); + ISpecialEnderChest chest; + try { + chest = this.plugin.getSpecialEnderChest(onlineTarget, online); + } catch (Exception e) { + player.sendMessage(ChatColor.RED + "An error occurred creating " + onlineTarget.getDisplayName() + "'s inventory!"); + e.printStackTrace(); + return; + } // Open the inventory player.openInventory(chest.getBukkitInventory()); diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java index 8f91596..9aac909 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -1,15 +1,15 @@ /* * 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 . */ @@ -35,30 +35,30 @@ public class OpenInvPluginCommand implements CommandExecutor { private final OpenInv plugin; private final HashMap openInvHistory = new HashMap(); - public OpenInvPluginCommand(OpenInv plugin) { + public OpenInvPluginCommand(final OpenInv plugin) { this.plugin = plugin; } @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) { if (!(sender instanceof Player)) { sender.sendMessage(ChatColor.RED + "You can't use this from the console."); return true; } if (args.length > 0 && args[0].equalsIgnoreCase("?")) { - plugin.showHelp((Player) sender); + this.plugin.showHelp((Player) sender); return true; } final Player player = (Player) sender; // History management - String history = openInvHistory.get(player); + String history = this.openInvHistory.get(player); if (history == null || history == "") { history = player.getName(); - openInvHistory.put(player, history); + this.openInvHistory.put(player, history); } final String name; @@ -73,7 +73,7 @@ public class OpenInvPluginCommand implements CommandExecutor { new BukkitRunnable() { @Override public void run() { - final OfflinePlayer offlinePlayer = plugin.matchPlayer(name); + final OfflinePlayer offlinePlayer = OpenInvPluginCommand.this.plugin.matchPlayer(name); if (offlinePlayer == null || !offlinePlayer.hasPlayedBefore() && !offlinePlayer.isOnline()) { player.sendMessage(ChatColor.RED + "Player not found!"); @@ -86,17 +86,17 @@ public class OpenInvPluginCommand implements CommandExecutor { if (!player.isOnline()) { return; } - openInventory(player, offlinePlayer); + OpenInvPluginCommand.this.openInventory(player, offlinePlayer); } - }.runTask(plugin); + }.runTask(OpenInvPluginCommand.this.plugin); } - }.runTaskAsynchronously(plugin); + }.runTaskAsynchronously(this.plugin); return true; } - private void openInventory(Player player, OfflinePlayer target) { + private void openInventory(final Player player, final OfflinePlayer target) { Player onlineTarget; @@ -104,7 +104,7 @@ public class OpenInvPluginCommand implements CommandExecutor { if (!online) { // Try loading the player's data - onlineTarget = plugin.loadPlayer(target); + onlineTarget = this.plugin.loadPlayer(target); if (onlineTarget == null) { player.sendMessage(ChatColor.RED + "Player not found!"); @@ -123,23 +123,34 @@ public class OpenInvPluginCommand implements CommandExecutor { } } else { // Protected check - if (!Permissions.OVERRIDE.hasPermission(player) && Permissions.EXEMPT.hasPermission(onlineTarget)) { + if (!Permissions.OVERRIDE.hasPermission(player) + && Permissions.EXEMPT.hasPermission(onlineTarget)) { player.sendMessage(ChatColor.RED + onlineTarget.getDisplayName() + "'s inventory is protected!"); return; } // Crossworld check - if ((!Permissions.CROSSWORLD.hasPermission(player) && !Permissions.OVERRIDE.hasPermission(player)) && onlineTarget.getWorld() != player.getWorld()) { - player.sendMessage(ChatColor.RED + onlineTarget.getDisplayName() + " is not in your world!"); + if (!Permissions.CROSSWORLD.hasPermission(player) + && !Permissions.OVERRIDE.hasPermission(player) + && !onlineTarget.getWorld().equals(player.getWorld())) { + player.sendMessage( + ChatColor.RED + onlineTarget.getDisplayName() + " is not in your world!"); return; } } // Record the target - openInvHistory.put(player, onlineTarget.getName()); + this.openInvHistory.put(player, onlineTarget.getName()); // Create the inventory - ISpecialPlayerInventory inv = plugin.getInventory(onlineTarget, online); + ISpecialPlayerInventory inv; + try { + inv = this.plugin.getSpecialInventory(onlineTarget, online); + } catch (Exception e) { + player.sendMessage(ChatColor.RED + "An error occurred creating " + onlineTarget.getDisplayName() + "'s inventory!"); + e.printStackTrace(); + return; + } // Open the inventory player.openInventory(inv.getBukkitInventory()); diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 7b4f679..3558558 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.1.3-SNAPSHOT + 3.2.0 openinvpluginv1_10_r1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.1.3-SNAPSHOT + 3.2.0 diff --git a/plugin/pom.xml b/plugin/pom.xml index 5977fe0..cc9a047 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.1.3-SNAPSHOT + 3.2.0 openinvplugin diff --git a/pom.xml b/pom.xml index 51be23f..d44dd0a 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.1.3-SNAPSHOT + 3.2.0 pom -- 2.49.1 From 307f47e4d3a28603bbc0a456d34adf0be1199aac Mon Sep 17 00:00:00 2001 From: Jikoo Date: Thu, 8 Jun 2017 18:44:10 -0400 Subject: [PATCH 106/253] Bump version to 3.2.1-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 28 files changed, 52 insertions(+), 52 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 9e18776..68437ba 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.0 + 3.2.1-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 00f64b5..9269e4f 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.0 + 3.2.1-SNAPSHOT openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 7b15926..1485fb8 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.0 + 3.2.1-SNAPSHOT openinvcommon @@ -22,7 +22,7 @@ com.lishid openinvapi - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index ae75030..7f41f2b 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_4_5 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index b1f5498..7c8fb25 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_4_6 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/pom.xml b/internal/pom.xml index dca291a..8238b5d 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.0 + 3.2.1-SNAPSHOT openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 01b9407..8f7b2c4 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_10_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 2d49892..e50ce46 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_11_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index 0e817ad..bf7f6d7 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_12_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index f678c2d..b5b55a8 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_4_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index e68a425..cb3ae17 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_5_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index e010ced..7fd8727 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_5_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index d325ebb..ee79d40 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_6_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 2777aa5..9ca83c0 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_6_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 07e69cc..4be9ca0 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_6_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 57e8c7a..7e4b7b1 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_7_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index e767f9b..f26df82 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_7_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index df4ccb1..2be137d 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_7_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 135a70f..9dad1a6 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_7_R4 @@ -27,7 +27,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 51aa64d..b8cc092 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_8_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 73fd330..33dc76f 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_8_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index b7ed489..575c914 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_8_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index e5479cf..bffc4ca 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_9_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index 28278ca..2825909 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.0 + 3.2.1-SNAPSHOT openinvadapter1_9_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index b7e2f88..c7b367e 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.2.0 + 3.2.1-SNAPSHOT openinvplugincore @@ -22,12 +22,12 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT com.lishid openinvpluginv1_10_r1 - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 3558558..7c9d6e7 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.2.0 + 3.2.1-SNAPSHOT openinvpluginv1_10_r1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.0 + 3.2.1-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index cc9a047..b7f2d83 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.0 + 3.2.1-SNAPSHOT openinvplugin diff --git a/pom.xml b/pom.xml index d44dd0a..f8cfd46 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.2.0 + 3.2.1-SNAPSHOT pom -- 2.49.1 From ca85a392aafb56138f81a308d23340dc911454dc Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 9 Jun 2017 20:15:51 -0400 Subject: [PATCH 107/253] Correct field name for list of inventory contents (#66) --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- .../internal/v1_12_R1/SpecialPlayerInventory.java | 12 ++++++------ internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 29 files changed, 58 insertions(+), 58 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 68437ba..7a36941 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.1-SNAPSHOT + 3.2.1 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 9269e4f..5db35e3 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.1-SNAPSHOT + 3.2.1 openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 1485fb8..761d1ee 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.1-SNAPSHOT + 3.2.1 openinvcommon @@ -22,7 +22,7 @@ com.lishid openinvapi - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 7f41f2b..e132a00 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_4_5 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 7c8fb25..e3bc9b0 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_4_6 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/pom.xml b/internal/pom.xml index 8238b5d..70bf436 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.1-SNAPSHOT + 3.2.1 openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 8f7b2c4..d5edea0 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_10_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index e50ce46..f680d5b 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_11_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index bf7f6d7..5247cb7 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_12_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java index 4774092..1687b98 100644 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java @@ -150,28 +150,28 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP Field modifiers = Field.class.getDeclaredField("modifiers"); modifiers.setAccessible(true); - // Access and replace main inventory array + // Access and replace main inventory list Field field = PlayerInventory.class.getField("items"); modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); field.set(inventory, items); - // Access and replace armor inventory array + // Access and replace armor inventory list field = PlayerInventory.class.getField("armor"); modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); field.set(inventory, armor); - // Access and replace offhand inventory array + // Access and replace offhand inventory list field = PlayerInventory.class.getField("extraSlots"); modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); field.set(inventory, extraSlots); - // Access and replace array containing all inventory arrays - field = PlayerInventory.class.getDeclaredField("g"); + // Access and replace list containing all inventory lists + field = PlayerInventory.class.getDeclaredField("f"); field.setAccessible(true); modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); field.set(inventory, Arrays.asList(new NonNullList[] { items, armor, extraSlots })); } catch (NoSuchFieldException e) { - // Unable to set final fields to item arrays, we're screwed. Noisily fail. + // Unable to set final fields to item lists, we're screwed. Noisily fail. e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index b5b55a8..165c9a5 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_4_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index cb3ae17..8614e96 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_5_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 7fd8727..c9f6570 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_5_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index ee79d40..9468bfb 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_6_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 9ca83c0..d41b42a 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_6_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 4be9ca0..e047176 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_6_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 7e4b7b1..6a6b2aa 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_7_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index f26df82..04ce77f 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_7_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 2be137d..0fe298c 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_7_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 9dad1a6..e647efa 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_7_R4 @@ -27,7 +27,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index b8cc092..35bf22b 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_8_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 33dc76f..0915ff1 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_8_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 575c914..82a6f09 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_8_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index bffc4ca..14175ec 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_9_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index 2825909..3073c5c 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1-SNAPSHOT + 3.2.1 openinvadapter1_9_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index c7b367e..1769d77 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.2.1-SNAPSHOT + 3.2.1 openinvplugincore @@ -22,12 +22,12 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 com.lishid openinvpluginv1_10_r1 - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 7c9d6e7..bb676c8 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.2.1-SNAPSHOT + 3.2.1 openinvpluginv1_10_r1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1-SNAPSHOT + 3.2.1 diff --git a/plugin/pom.xml b/plugin/pom.xml index b7f2d83..cd11f49 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.1-SNAPSHOT + 3.2.1 openinvplugin diff --git a/pom.xml b/pom.xml index f8cfd46..0597739 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.2.1-SNAPSHOT + 3.2.1 pom -- 2.49.1 From d9abe765312b10a1e99ff807b9cbeec543fa11f4 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 9 Jun 2017 20:21:30 -0400 Subject: [PATCH 108/253] Bump version to 3.2.2-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 28 files changed, 52 insertions(+), 52 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 7a36941..15bae96 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.1 + 3.2.2-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 5db35e3..4e3b67c 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.1 + 3.2.2-SNAPSHOT openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 761d1ee..5e6738d 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.1 + 3.2.2-SNAPSHOT openinvcommon @@ -22,7 +22,7 @@ com.lishid openinvapi - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index e132a00..4afc9bf 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_4_5 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index e3bc9b0..5a5b0d0 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_4_6 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/pom.xml b/internal/pom.xml index 70bf436..735b2e7 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.1 + 3.2.2-SNAPSHOT openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index d5edea0..2363e42 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_10_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index f680d5b..567b310 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_11_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index 5247cb7..e4e237c 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_12_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 165c9a5..4a41bc1 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_4_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 8614e96..cc08ed4 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_5_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index c9f6570..d62a25a 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_5_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 9468bfb..9518816 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_6_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index d41b42a..71331a7 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_6_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index e047176..e3e8d24 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_6_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 6a6b2aa..504f7a9 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_7_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 04ce77f..3dc0519 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_7_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 0fe298c..847c265 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_7_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index e647efa..04446c7 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_7_R4 @@ -27,7 +27,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 35bf22b..0d7b775 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_8_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 0915ff1..26e4815 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_8_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 82a6f09..f80f372 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_8_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index 14175ec..39a84da 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_9_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index 3073c5c..c70697e 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.1 + 3.2.2-SNAPSHOT openinvadapter1_9_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index 1769d77..4cf014b 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.2.1 + 3.2.2-SNAPSHOT openinvplugincore @@ -22,12 +22,12 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT com.lishid openinvpluginv1_10_r1 - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index bb676c8..303348f 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.2.1 + 3.2.2-SNAPSHOT openinvpluginv1_10_r1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.1 + 3.2.2-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index cd11f49..5453c2a 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.1 + 3.2.2-SNAPSHOT openinvplugin diff --git a/pom.xml b/pom.xml index 0597739..e7da34c 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.2.1 + 3.2.2-SNAPSHOT pom -- 2.49.1 From 784935a975251d6c39622a2e38158d2c518d9a29 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Mon, 3 Jul 2017 18:06:18 -0400 Subject: [PATCH 109/253] Synchronize cache (for real), updated dependencies Closes #69 --- .../java/com/lishid/openinv/util/Cache.java | 59 ++++++++++--------- pom.xml | 4 +- 2 files changed, 33 insertions(+), 30 deletions(-) diff --git a/common/src/main/java/com/lishid/openinv/util/Cache.java b/common/src/main/java/com/lishid/openinv/util/Cache.java index 74986df..6d96f6d 100644 --- a/common/src/main/java/com/lishid/openinv/util/Cache.java +++ b/common/src/main/java/com/lishid/openinv/util/Cache.java @@ -72,10 +72,10 @@ public class Cache { * @return the value to which the specified key is mapped, or null if no value is mapped for the key */ public V get(K key) { - synchronized (internal) { - // Run lazy check to clean cache - lazyCheck(); + // Run lazy check to clean cache + lazyCheck(); + synchronized (internal) { return internal.get(key); } } @@ -87,10 +87,10 @@ public class Cache { * @return true if a mapping exists for the specified key */ public boolean containsKey(K key) { - synchronized (internal) { - // Run lazy check to clean cache - lazyCheck(); + // Run lazy check to clean cache + lazyCheck(); + synchronized (internal) { return internal.containsKey(key); } } @@ -101,10 +101,10 @@ public class Cache { * @param key key to invalidate */ public void invalidate(K key) { - synchronized (internal) { - // Run lazy check to clean cache - lazyCheck(); + // Run lazy check to clean cache + lazyCheck(); + synchronized (internal) { if (!internal.containsKey(key)) { // Value either not present or cleaned by lazy check. Either way, we're good return; @@ -143,27 +143,30 @@ public class Cache { private void lazyCheck() { long now = System.currentTimeMillis(); long nextExpiry = now + retention; - for (Iterator> iterator = expiry.entries().iterator(); iterator.hasNext();) { - Map.Entry entry = iterator.next(); + synchronized (internal) { + for (Iterator> iterator = expiry.entries().iterator(); iterator + .hasNext();) { + Map.Entry entry = iterator.next(); - if (entry.getKey() > now) { - break; + if (entry.getKey() > now) { + break; + } + + iterator.remove(); + + if (inUseCheck.run(internal.get(entry.getValue()))) { + expiry.put(nextExpiry, entry.getValue()); + continue; + } + + V value = internal.remove(entry.getValue()); + + if (value == null) { + continue; + } + + postRemoval.run(value); } - - iterator.remove(); - - if (inUseCheck.run(internal.get(entry.getValue()))) { - expiry.put(nextExpiry, entry.getValue()); - continue; - } - - V value = internal.remove(entry.getValue()); - - if (value == null) { - continue; - } - - postRemoval.run(value); } } diff --git a/pom.xml b/pom.xml index e7da34c..b63ebfe 100644 --- a/pom.xml +++ b/pom.xml @@ -74,7 +74,7 @@ org.apache.maven.plugins maven-shade-plugin - 2.4.3 + 3.0.0 @@ -98,7 +98,7 @@ maven-compiler-plugin - 3.5.1 + 3.6.1 1.6 1.6 -- 2.49.1 From 9db18613a13e24f6cfea9e970a732477853b6968 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 4 Jul 2017 13:22:03 -0400 Subject: [PATCH 110/253] Abuse spectator mode for SilentContainer (#64, #68) Potentially causes issues with Cauldron and similar mods that use different mapping names. --- api/pom.xml | 2 +- .../openinv/internal/IAnySilentContainer.java | 37 +++-- assembly/pom.xml | 2 +- common/pom.xml | 4 +- internal/1_4_5/pom.xml | 4 +- .../internal/v1_4_5/AnySilentContainer.java | 3 + internal/1_4_6/pom.xml | 4 +- .../internal/v1_4_6/AnySilentContainer.java | 3 + internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 +- .../internal/v1_10_R1/AnySilentContainer.java | 3 + internal/v1_11_R1/pom.xml | 4 +- .../internal/v1_11_R1/AnySilentContainer.java | 121 ++++++++-------- .../v1_11_R1/SilentContainerChest.java | 46 ------ .../v1_11_R1/SilentContainerShulkerBox.java | 56 -------- internal/v1_12_R1/pom.xml | 17 ++- .../internal/v1_12_R1/AnySilentContainer.java | 131 +++++++++--------- .../v1_12_R1/SilentContainerChest.java | 40 ------ .../v1_12_R1/SilentContainerShulkerBox.java | 57 -------- internal/v1_4_R1/pom.xml | 4 +- .../internal/v1_4_R1/AnySilentContainer.java | 3 + internal/v1_5_R2/pom.xml | 4 +- .../internal/v1_5_R2/AnySilentContainer.java | 3 + internal/v1_5_R3/pom.xml | 4 +- .../internal/v1_5_R3/AnySilentContainer.java | 3 + internal/v1_6_R1/pom.xml | 4 +- .../internal/v1_6_R1/AnySilentContainer.java | 3 + internal/v1_6_R2/pom.xml | 4 +- .../internal/v1_6_R2/AnySilentContainer.java | 3 + internal/v1_6_R3/pom.xml | 4 +- .../internal/v1_6_R3/AnySilentContainer.java | 3 + internal/v1_7_R1/pom.xml | 4 +- .../internal/v1_7_R1/AnySilentContainer.java | 3 + internal/v1_7_R2/pom.xml | 4 +- .../internal/v1_7_R2/AnySilentContainer.java | 3 + internal/v1_7_R3/pom.xml | 4 +- .../internal/v1_7_R3/AnySilentContainer.java | 3 + internal/v1_7_R4/pom.xml | 4 +- .../internal/v1_7_R4/AnySilentContainer.java | 3 + internal/v1_8_R1/pom.xml | 4 +- .../internal/v1_8_R1/AnySilentContainer.java | 3 + internal/v1_8_R2/pom.xml | 4 +- .../internal/v1_8_R2/AnySilentContainer.java | 3 + internal/v1_8_R3/pom.xml | 4 +- .../internal/v1_8_R3/AnySilentContainer.java | 3 + internal/v1_9_R1/pom.xml | 4 +- .../internal/v1_9_R1/AnySilentContainer.java | 3 + internal/v1_9_R2/pom.xml | 4 +- .../internal/v1_9_R2/AnySilentContainer.java | 3 + plugin/plugin-core/pom.xml | 6 +- .../main/java/com/lishid/openinv/OpenInv.java | 2 + .../listeners/InventoryCloseListener.java | 36 +++++ plugin/plugin-v1_10_R1/pom.xml | 4 +- plugin/pom.xml | 2 +- pom.xml | 2 +- 55 files changed, 312 insertions(+), 385 deletions(-) delete mode 100644 internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerChest.java delete mode 100644 internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerShulkerBox.java delete mode 100644 internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SilentContainerChest.java delete mode 100644 internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SilentContainerShulkerBox.java create mode 100644 plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryCloseListener.java diff --git a/api/pom.xml b/api/pom.xml index 15bae96..3a66ec0 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvapi diff --git a/api/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java b/api/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java index 8f97e18..7eac2bf 100644 --- a/api/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java +++ b/api/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java @@ -6,16 +6,27 @@ import org.bukkit.entity.Player; public interface IAnySilentContainer { /** - * Checks if the given block is a container which can be unblocked or silenced. - * - * @param block the BlockState - * @return true if the Block is a supported container + * Opens the container at the given coordinates for the Player. If you do not want blocked + * containers to open, be sure to check {@link #isAnyContainerNeeded(Player, Block)} + * first. + * + * @param player the Player opening the container + * @param silentchest whether the container's noise is to be silenced + * @param block the Block + * @return true if the container can be opened */ - public boolean isAnySilentContainer(Block block); + public boolean activateContainer(Player player, boolean silentchest, Block block); + + /** + * Closes the Player's currently open container silently, if necessary. + * + * @param player the Player closing a container + */ + public void deactivateContainer(Player player); /** * Checks if the container at the given coordinates is blocked. - * + * * @param player the Player opening the container * @param block the Block * @return true if the container is blocked @@ -23,15 +34,11 @@ public interface IAnySilentContainer { public boolean isAnyContainerNeeded(Player player, Block block); /** - * Opens the container at the given coordinates for the Player. If you do not want blocked - * containers to open, be sure to check {@link #isAnyContainerNeeded(Player, Block)} - * first. - * - * @param player - * @param silentchest whether the container's noise is to be silenced - * @param block the Block - * @return true if the container can be opened + * Checks if the given block is a container which can be unblocked or silenced. + * + * @param block the BlockState + * @return true if the Block is a supported container */ - public boolean activateContainer(Player player, boolean silentchest, Block block); + public boolean isAnySilentContainer(Block block); } diff --git a/assembly/pom.xml b/assembly/pom.xml index 4e3b67c..c503030 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 5e6738d..e014004 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvcommon @@ -22,7 +22,7 @@ com.lishid openinvapi - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 4afc9bf..0e8e075 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_4_5 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java index 55ea5d7..4bff7b8 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java @@ -165,4 +165,7 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public void deactivateContainer(final Player bukkitPlayer) {} + } diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 5a5b0d0..df34a76 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_4_6 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java index 14d440c..f420591 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java @@ -165,4 +165,7 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public void deactivateContainer(final Player bukkitPlayer) {} + } diff --git a/internal/pom.xml b/internal/pom.xml index 735b2e7..b78ad8c 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 2363e42..81a8306 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_10_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java index 66182f1..916427b 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java @@ -211,4 +211,7 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public void deactivateContainer(final Player bukkitPlayer) {} + } diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 567b310..20a693c 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_11_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java index 2a5621d..cb0a110 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java @@ -16,14 +16,14 @@ package com.lishid.openinv.internal.v1_11_R1; +import java.lang.reflect.Field; + import com.lishid.openinv.internal.IAnySilentContainer; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.block.BlockState; import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; +import org.bukkit.inventory.InventoryView; import net.minecraft.server.v1_11_R1.AxisAlignedBB; import net.minecraft.server.v1_11_R1.Block; @@ -31,7 +31,6 @@ import net.minecraft.server.v1_11_R1.BlockChest; import net.minecraft.server.v1_11_R1.BlockEnderChest; import net.minecraft.server.v1_11_R1.BlockPosition; import net.minecraft.server.v1_11_R1.BlockShulkerBox; -import net.minecraft.server.v1_11_R1.Container; import net.minecraft.server.v1_11_R1.Entity; import net.minecraft.server.v1_11_R1.EntityOcelot; import net.minecraft.server.v1_11_R1.EntityPlayer; @@ -40,18 +39,29 @@ import net.minecraft.server.v1_11_R1.IBlockData; import net.minecraft.server.v1_11_R1.ITileInventory; import net.minecraft.server.v1_11_R1.InventoryEnderChest; import net.minecraft.server.v1_11_R1.InventoryLargeChest; -import net.minecraft.server.v1_11_R1.PacketPlayOutOpenWindow; import net.minecraft.server.v1_11_R1.StatisticList; import net.minecraft.server.v1_11_R1.TileEntity; import net.minecraft.server.v1_11_R1.TileEntityChest; import net.minecraft.server.v1_11_R1.TileEntityEnderChest; import net.minecraft.server.v1_11_R1.TileEntityShulkerBox; import net.minecraft.server.v1_11_R1.World; - -import org.bukkit.craftbukkit.v1_11_R1.event.CraftEventFactory; +import net.minecraft.server.v1_11_R1.EnumGamemode; +import net.minecraft.server.v1_11_R1.PlayerInteractManager; public class AnySilentContainer implements IAnySilentContainer { + private Field playerInteractManagerGamemode; + + public AnySilentContainer() { + try { + this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); + this.playerInteractManagerGamemode.setAccessible(true); + } catch (Exception e) { + System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); + e.printStackTrace(); + } + } + @Override public boolean isAnySilentContainer(org.bukkit.block.Block block) { if (block.getType() == Material.ENDER_CHEST) { @@ -186,7 +196,6 @@ public class AnySilentContainer implements IAnySilentContainer { ITileInventory tileInventory = (ITileInventory) tile; Block block = world.getType(blockPosition).getBlock(); - Container container = null; if (block instanceof BlockChest) { for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { @@ -218,68 +227,68 @@ public class AnySilentContainer implements IAnySilentContainer { } else if (blockChest.g == BlockChest.Type.TRAP) { player.b(StatisticList.getStatistic("stat.trappedChestTriggered")); } - - if (silentchest) { - container = new SilentContainerChest(player.inventory, tileInventory, player); - } } if (block instanceof BlockShulkerBox) { player.b(StatisticList.getStatistic("stat.shulkerBoxOpened")); - - if (silentchest && tileInventory instanceof TileEntityShulkerBox) { - // Set value to current + 1. Ensures consistency later when resetting. - SilentContainerShulkerBox.setOpenValue((TileEntityShulkerBox) tileInventory, - SilentContainerShulkerBox.getOpenValue((TileEntityShulkerBox) tileInventory) + 1); - - container = new SilentContainerShulkerBox(player.inventory, tileInventory, player); - } } - // AnyChest only - SilentChest not active or container unsupported - if (!silentchest || container == null) { + // AnyChest only - SilentChest not active, container unsupported, or unnecessary. + if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { player.openContainer(tileInventory); return true; } - // SilentChest + // SilentChest requires access to setting players' gamemode directly. + if (this.playerInteractManagerGamemode == null) { + return false; + } + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.openContainer(tileInventory); + this.forceGameMode(player, gamemode); + return true; + } + + @Override + public void deactivateContainer(final Player bukkitPlayer) { + if (this.playerInteractManagerGamemode == null) { + return; + } + + InventoryView view = bukkitPlayer.getOpenInventory(); + switch (view.getType()) { + case CHEST: + case ENDER_CHEST: + case SHULKER_BOX: + break; + default: + return; + } + + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.activeContainer.b(player); + player.activeContainer = player.defaultContainer; + this.forceGameMode(player, gamemode); + } + + private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { + if (this.playerInteractManagerGamemode == null) { + // No need to warn repeatedly, error on startup and lack of function should be enough. + return; + } try { - // Call InventoryOpenEvent - container = CraftEventFactory.callInventoryOpenEvent(player, container, false); - if (container == null) { - return false; + if (!this.playerInteractManagerGamemode.isAccessible()) { + // Just in case, ensure accessible. + this.playerInteractManagerGamemode.setAccessible(true); } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, tileInventory.getContainerName(), tileInventory.getScoreboardDisplayName(), tileInventory.getSize())); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - // Special handling for shulker boxes - reset value for viewers to what it was initially. - if (tile instanceof TileEntityShulkerBox) { - new BukkitRunnable() { - @Override - public void run() { - // TODO hacky - Object tile = world.getTileEntity(blockPosition); - if (!(tile instanceof TileEntityShulkerBox)) { - return; - } - TileEntityShulkerBox box = (TileEntityShulkerBox) tile; - // Reset back - we added 1, and calling TileEntityShulkerBox#startOpen adds 1 more. - SilentContainerShulkerBox.setOpenValue(box, - SilentContainerShulkerBox.getOpenValue((TileEntityShulkerBox) tile) - 2); - } - }.runTaskLater(Bukkit.getPluginManager().getPlugin("OpenInv"), 2); - } - - return true; + this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); } catch (Exception e) { e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); - return false; } } diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerChest.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerChest.java deleted file mode 100644 index 65df1e6..0000000 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerChest.java +++ /dev/null @@ -1,46 +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_11_R1; - -import net.minecraft.server.v1_11_R1.ContainerChest; -import net.minecraft.server.v1_11_R1.EntityHuman; -import net.minecraft.server.v1_11_R1.IInventory; -import net.minecraft.server.v1_11_R1.ItemStack; -import net.minecraft.server.v1_11_R1.PlayerInventory; - -public class SilentContainerChest extends ContainerChest { - - public SilentContainerChest(PlayerInventory playerInventory, IInventory iInventory, - EntityHuman entityHuman) { - super(playerInventory, iInventory, entityHuman); - // Send close signal - iInventory.closeContainer(entityHuman); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != ItemStack.a) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(ItemStack.a); - entityHuman.drop(carried, false); - } - } - -} diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerShulkerBox.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerShulkerBox.java deleted file mode 100644 index 9fd4fbf..0000000 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SilentContainerShulkerBox.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.lishid.openinv.internal.v1_11_R1; - -import java.lang.reflect.Field; - -import net.minecraft.server.v1_11_R1.ContainerShulkerBox; -import net.minecraft.server.v1_11_R1.EntityHuman; -import net.minecraft.server.v1_11_R1.IInventory; -import net.minecraft.server.v1_11_R1.ItemStack; -import net.minecraft.server.v1_11_R1.PlayerInventory; -import net.minecraft.server.v1_11_R1.TileEntityShulkerBox; - -public class SilentContainerShulkerBox extends ContainerShulkerBox { - - private static Field fieldShulkerActionData; - - public SilentContainerShulkerBox(PlayerInventory playerInventory, IInventory iInventory, - EntityHuman entityHuman) { - super(playerInventory, iInventory, entityHuman); - } - - @Override - public void b(EntityHuman entityHuman) { - PlayerInventory playerinventory = entityHuman.inventory; - - if (!playerinventory.getCarried().isEmpty()) { - entityHuman.drop(playerinventory.getCarried(), false); - playerinventory.setCarried(ItemStack.a); - } - } - - private static Field exposeOpenStatus() throws NoSuchFieldException, SecurityException { - if (fieldShulkerActionData == null) { - fieldShulkerActionData = TileEntityShulkerBox.class.getDeclaredField("h"); - fieldShulkerActionData.setAccessible(true); - } - return fieldShulkerActionData; - } - - public static void setOpenValue(TileEntityShulkerBox tileShulkerBox, Object value) { - try { - exposeOpenStatus().set(tileShulkerBox, value); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public static Integer getOpenValue(TileEntityShulkerBox tileShulkerBox) { - try { - return (Integer) exposeOpenStatus().get(tileShulkerBox); - } catch (Exception e) { - e.printStackTrace(); - return 0; - } - } - -} diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index e4e237c..6d93dab 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_12_R1 @@ -21,8 +21,21 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT + + + + maven-compiler-plugin + 3.6.1 + + 1.8 + 1.8 + + + + + diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java index 904aad8..dfde6be 100644 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java @@ -10,15 +10,15 @@ package com.lishid.openinv.internal.v1_12_R1; +import java.lang.reflect.Field; + import com.lishid.openinv.internal.IAnySilentContainer; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.Statistic; import org.bukkit.block.BlockState; import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; +import org.bukkit.inventory.InventoryView; import net.minecraft.server.v1_12_R1.AxisAlignedBB; import net.minecraft.server.v1_12_R1.Block; @@ -26,26 +26,36 @@ import net.minecraft.server.v1_12_R1.BlockChest; import net.minecraft.server.v1_12_R1.BlockEnderChest; import net.minecraft.server.v1_12_R1.BlockPosition; import net.minecraft.server.v1_12_R1.BlockShulkerBox; -import net.minecraft.server.v1_12_R1.Container; import net.minecraft.server.v1_12_R1.Entity; import net.minecraft.server.v1_12_R1.EntityOcelot; import net.minecraft.server.v1_12_R1.EntityPlayer; import net.minecraft.server.v1_12_R1.EnumDirection; +import net.minecraft.server.v1_12_R1.EnumGamemode; import net.minecraft.server.v1_12_R1.IBlockData; import net.minecraft.server.v1_12_R1.ITileInventory; import net.minecraft.server.v1_12_R1.InventoryEnderChest; import net.minecraft.server.v1_12_R1.InventoryLargeChest; -import net.minecraft.server.v1_12_R1.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_12_R1.PlayerInteractManager; import net.minecraft.server.v1_12_R1.TileEntity; import net.minecraft.server.v1_12_R1.TileEntityChest; import net.minecraft.server.v1_12_R1.TileEntityEnderChest; import net.minecraft.server.v1_12_R1.TileEntityShulkerBox; import net.minecraft.server.v1_12_R1.World; -import org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory; - public class AnySilentContainer implements IAnySilentContainer { + private Field playerInteractManagerGamemode; + + public AnySilentContainer() { + try { + this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); + this.playerInteractManagerGamemode.setAccessible(true); + } catch (NoSuchFieldException | SecurityException e) { + System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); + e.printStackTrace(); + } + } + @Override public boolean activateContainer(final Player bukkitPlayer, final boolean silentchest, final org.bukkit.block.Block bukkitBlock) { @@ -82,7 +92,6 @@ public class AnySilentContainer implements IAnySilentContainer { ITileInventory tileInventory = (ITileInventory) tile; Block block = world.getType(blockPosition).getBlock(); - Container container = null; if (block instanceof BlockChest) { for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { @@ -115,73 +124,69 @@ public class AnySilentContainer implements IAnySilentContainer { } else if (blockChest.g == BlockChest.Type.TRAP) { bukkitPlayer.incrementStatistic(Statistic.TRAPPED_CHEST_TRIGGERED); } - - if (silentchest) { - container = new SilentContainerChest(player.inventory, tileInventory, player); - } } if (block instanceof BlockShulkerBox) { bukkitPlayer.incrementStatistic(Statistic.SHULKER_BOX_OPENED); - - if (silentchest && tileInventory instanceof TileEntityShulkerBox) { - // Set value to current + 1. Ensures consistency later when resetting. - SilentContainerShulkerBox.setOpenValue((TileEntityShulkerBox) tileInventory, - SilentContainerShulkerBox.getOpenValue((TileEntityShulkerBox) tileInventory) - + 1); - - container = new SilentContainerShulkerBox(player.inventory, tileInventory, player); - } } - // AnyChest only - SilentChest not active or container unsupported - if (!silentchest || container == null) { + // AnyChest only - SilentChest not active, container unsupported, or unnecessary. + if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { player.openContainer(tileInventory); return true; } - // SilentChest - try { - // Call InventoryOpenEvent - container = CraftEventFactory.callInventoryOpenEvent(player, container, false); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket( - new PacketPlayOutOpenWindow(windowId, tileInventory.getContainerName(), - tileInventory.getScoreboardDisplayName(), tileInventory.getSize())); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - // Special handling for shulker boxes - reset value for viewers to what it was initially. - if (tile instanceof TileEntityShulkerBox) { - new BukkitRunnable() { - @Override - public void run() { - // TODO hacky - Object tile = world.getTileEntity(blockPosition); - if (!(tile instanceof TileEntityShulkerBox)) { - return; - } - TileEntityShulkerBox box = (TileEntityShulkerBox) tile; - // Reset back - we added 1, and calling TileEntityShulkerBox#startOpen adds 1 more. - SilentContainerShulkerBox.setOpenValue(box, - SilentContainerShulkerBox.getOpenValue((TileEntityShulkerBox) tile) - - 2); - } - }.runTaskLater(Bukkit.getPluginManager().getPlugin("OpenInv"), 2); - } - - return true; - } catch (Exception e) { - e.printStackTrace(); - bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); + // SilentChest requires access to setting players' gamemode directly. + if (this.playerInteractManagerGamemode == null) { return false; } + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.openContainer(tileInventory); + this.forceGameMode(player, gamemode); + return true; + } + + @Override + public void deactivateContainer(final Player bukkitPlayer) { + if (this.playerInteractManagerGamemode == null) { + return; + } + + InventoryView view = bukkitPlayer.getOpenInventory(); + switch (view.getType()) { + case CHEST: + case ENDER_CHEST: + case SHULKER_BOX: + break; + default: + return; + } + + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.activeContainer.b(player); + player.activeContainer = player.defaultContainer; + this.forceGameMode(player, gamemode); + } + + private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { + if (this.playerInteractManagerGamemode == null) { + // No need to warn repeatedly, error on startup and lack of function should be enough. + return; + } + try { + if (!this.playerInteractManagerGamemode.isAccessible()) { + // Just in case, ensure accessible. + this.playerInteractManagerGamemode.setAccessible(true); + } + this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); + } catch (IllegalArgumentException | IllegalAccessException e) { + e.printStackTrace(); + } } private boolean hasOcelotOnTop(final World world, final BlockPosition blockPosition) { diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SilentContainerChest.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SilentContainerChest.java deleted file mode 100644 index 09a4424..0000000 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SilentContainerChest.java +++ /dev/null @@ -1,40 +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_12_R1; - -import net.minecraft.server.v1_12_R1.ContainerChest; -import net.minecraft.server.v1_12_R1.EntityHuman; -import net.minecraft.server.v1_12_R1.IInventory; -import net.minecraft.server.v1_12_R1.ItemStack; -import net.minecraft.server.v1_12_R1.PlayerInventory; - -public class SilentContainerChest extends ContainerChest { - - public SilentContainerChest(final PlayerInventory playerInventory, final IInventory iInventory, - final EntityHuman entityHuman) { - super(playerInventory, iInventory, entityHuman); - // Send close signal - iInventory.closeContainer(entityHuman); - } - - @Override - public void b(final EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != ItemStack.a) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(ItemStack.a); - entityHuman.drop(carried, false); - } - } - -} diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SilentContainerShulkerBox.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SilentContainerShulkerBox.java deleted file mode 100644 index bc94298..0000000 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SilentContainerShulkerBox.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.lishid.openinv.internal.v1_12_R1; - -import java.lang.reflect.Field; - -import net.minecraft.server.v1_12_R1.ContainerShulkerBox; -import net.minecraft.server.v1_12_R1.EntityHuman; -import net.minecraft.server.v1_12_R1.IInventory; -import net.minecraft.server.v1_12_R1.ItemStack; -import net.minecraft.server.v1_12_R1.PlayerInventory; -import net.minecraft.server.v1_12_R1.TileEntityShulkerBox; - -public class SilentContainerShulkerBox extends ContainerShulkerBox { - - private static Field fieldShulkerActionData; - - private static Field exposeOpenStatus() throws NoSuchFieldException, SecurityException { - if (SilentContainerShulkerBox.fieldShulkerActionData == null) { - SilentContainerShulkerBox.fieldShulkerActionData = TileEntityShulkerBox.class - .getDeclaredField("h"); - SilentContainerShulkerBox.fieldShulkerActionData.setAccessible(true); - } - return SilentContainerShulkerBox.fieldShulkerActionData; - } - - public static Integer getOpenValue(final TileEntityShulkerBox tileShulkerBox) { - try { - return (Integer) SilentContainerShulkerBox.exposeOpenStatus().get(tileShulkerBox); - } catch (Exception e) { - e.printStackTrace(); - return 0; - } - } - - public static void setOpenValue(final TileEntityShulkerBox tileShulkerBox, final Object value) { - try { - SilentContainerShulkerBox.exposeOpenStatus().set(tileShulkerBox, value); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public SilentContainerShulkerBox(final PlayerInventory playerInventory, - final IInventory iInventory, final EntityHuman entityHuman) { - super(playerInventory, iInventory, entityHuman); - } - - @Override - public void b(final EntityHuman entityHuman) { - PlayerInventory playerinventory = entityHuman.inventory; - - if (!playerinventory.getCarried().isEmpty()) { - entityHuman.drop(playerinventory.getCarried(), false); - playerinventory.setCarried(ItemStack.a); - } - } - -} diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 4a41bc1..c7b6c5a 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_4_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java index 3ef4bae..8bdcbd3 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java @@ -165,4 +165,7 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public void deactivateContainer(final Player bukkitPlayer) {} + } diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index cc08ed4..ce49cf5 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_5_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java index 76f2cb9..b2f3c43 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java @@ -165,4 +165,7 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public void deactivateContainer(final Player bukkitPlayer) {} + } diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index d62a25a..02c453d 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_5_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java index f5393a6..02dc321 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java @@ -165,4 +165,7 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public void deactivateContainer(final Player bukkitPlayer) {} + } diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 9518816..31c62ed 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_6_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java index fb5a306..660fefd 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java @@ -165,4 +165,7 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public void deactivateContainer(final Player bukkitPlayer) {} + } diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 71331a7..1909fed 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_6_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java index 1b20b29..bd40860 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java @@ -165,4 +165,7 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public void deactivateContainer(final Player bukkitPlayer) {} + } diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index e3e8d24..6c1445f 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_6_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java index a7dec1d..d61e09c 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java @@ -165,4 +165,7 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public void deactivateContainer(final Player bukkitPlayer) {} + } diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 504f7a9..558472d 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_7_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java index 2e71862..f400239 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java @@ -166,4 +166,7 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public void deactivateContainer(final Player bukkitPlayer) {} + } diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 3dc0519..14419bd 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_7_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java index 2252593..d2f541c 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java @@ -166,4 +166,7 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public void deactivateContainer(final Player bukkitPlayer) {} + } diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 847c265..e9eb8b3 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_7_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java index da958e5..1675080 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java @@ -166,4 +166,7 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public void deactivateContainer(final Player bukkitPlayer) {} + } diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 04446c7..871b352 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_7_R4 @@ -27,7 +27,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java index c56b6b9..6323e5d 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java @@ -166,4 +166,7 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public void deactivateContainer(final Player bukkitPlayer) {} + } diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 0d7b775..f05f553 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_8_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java index 17b195b..b5cb77a 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java @@ -210,4 +210,7 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public void deactivateContainer(final Player bukkitPlayer) {} + } diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 26e4815..0b8ef6d 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_8_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java index 83680c8..773f1f9 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java @@ -211,4 +211,7 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public void deactivateContainer(final Player bukkitPlayer) {} + } diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index f80f372..8121fac 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_8_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java index fea742a..3789042 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java @@ -211,4 +211,7 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public void deactivateContainer(final Player bukkitPlayer) {} + } diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index 39a84da..f01f6a5 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_9_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java index 08933fd..e4e26c8 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java @@ -211,4 +211,7 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public void deactivateContainer(final Player bukkitPlayer) {} + } diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index c70697e..e66a721 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvadapter1_9_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java index 539c45d..430f179 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java @@ -211,4 +211,7 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public void deactivateContainer(final Player bukkitPlayer) {} + } diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index 4cf014b..ec55518 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvplugincore @@ -22,12 +22,12 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT com.lishid openinvpluginv1_10_r1 - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java index b9bfc02..723e7a6 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java @@ -41,6 +41,7 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.listeners.InventoryClickListener; +import com.lishid.openinv.listeners.InventoryCloseListener; import com.lishid.openinv.listeners.InventoryDragListener; import com.lishid.openinv.listeners.PlayerListener; import com.lishid.openinv.listeners.PluginListener; @@ -504,6 +505,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { pm.registerEvents(new PlayerListener(this), this); pm.registerEvents(new PluginListener(this), this); pm.registerEvents(new InventoryClickListener(this), this); + pm.registerEvents(new InventoryCloseListener(this), this); // Bukkit will handle missing events for us, attempt to register InventoryDragEvent without a version check pm.registerEvents(new InventoryDragListener(this), this); diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryCloseListener.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryCloseListener.java new file mode 100644 index 0000000..73fe3eb --- /dev/null +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryCloseListener.java @@ -0,0 +1,36 @@ +package com.lishid.openinv.listeners; + +import com.lishid.openinv.IOpenInv; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryCloseEvent; + +/** + * + * + * @author Jikoo + */ +public class InventoryCloseListener implements Listener { + + private final IOpenInv plugin; + + public InventoryCloseListener(final IOpenInv plugin) { + this.plugin = plugin; + } + + @EventHandler + public void onInventoryClose(final InventoryCloseEvent event) { + if (!(event.getPlayer() instanceof Player)) { + return; + } + + Player player = (Player) event.getPlayer(); + + if (this.plugin.getPlayerSilentChestStatus(player)) { + this.plugin.getAnySilentContainer().deactivateContainer(player); + } + } + +} diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 303348f..101c689 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvpluginv1_10_r1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index 5453c2a..37b8479 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT openinvplugin diff --git a/pom.xml b/pom.xml index b63ebfe..2372e38 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.2.2-SNAPSHOT + 3.3.0-SNAPSHOT pom -- 2.49.1 From 931cdb6fb10991c60dc4bf57a4ffd89934e6d340 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 5 Jul 2017 05:52:33 -0400 Subject: [PATCH 111/253] Bump version to 3.3.0 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 28 files changed, 52 insertions(+), 52 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 3a66ec0..7941da0 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.0-SNAPSHOT + 3.3.0 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index c503030..0e048b8 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.0-SNAPSHOT + 3.3.0 openinvassembly diff --git a/common/pom.xml b/common/pom.xml index e014004..8148ac2 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.0-SNAPSHOT + 3.3.0 openinvcommon @@ -22,7 +22,7 @@ com.lishid openinvapi - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 0e8e075..a090336 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_4_5 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index df34a76..6732f39 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_4_6 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/pom.xml b/internal/pom.xml index b78ad8c..3a8bf00 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.0-SNAPSHOT + 3.3.0 openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 81a8306..2486c74 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_10_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 20a693c..a998c16 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_11_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index 6d93dab..59d500a 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_12_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index c7b6c5a..876eaf4 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_4_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index ce49cf5..5206f17 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_5_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 02c453d..b202cc2 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_5_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 31c62ed..2e294c5 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_6_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 1909fed..1c6ef74 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_6_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 6c1445f..e368c51 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_6_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 558472d..0939ef9 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_7_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 14419bd..a9a760b 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_7_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index e9eb8b3..8ffdcf5 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_7_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 871b352..fbda901 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_7_R4 @@ -27,7 +27,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index f05f553..81a8393 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_8_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 0b8ef6d..fde2ade 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_8_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 8121fac..3e8b44a 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_8_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index f01f6a5..d890694 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_9_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index e66a721..360646d 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0-SNAPSHOT + 3.3.0 openinvadapter1_9_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index ec55518..701b8b5 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.3.0-SNAPSHOT + 3.3.0 openinvplugincore @@ -22,12 +22,12 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 com.lishid openinvpluginv1_10_r1 - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 101c689..db26cc6 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.3.0-SNAPSHOT + 3.3.0 openinvpluginv1_10_r1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0-SNAPSHOT + 3.3.0 diff --git a/plugin/pom.xml b/plugin/pom.xml index 37b8479..d24b0c7 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.0-SNAPSHOT + 3.3.0 openinvplugin diff --git a/pom.xml b/pom.xml index 2372e38..34738e6 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.3.0-SNAPSHOT + 3.3.0 pom -- 2.49.1 From c72af5dbacc7b99ca433436056a9795fb05ad22f Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 5 Jul 2017 05:53:38 -0400 Subject: [PATCH 112/253] Bump version to 3.3.1-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 28 files changed, 52 insertions(+), 52 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 7941da0..94ab809 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.0 + 3.3.1-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 0e048b8..8f270a7 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.0 + 3.3.1-SNAPSHOT openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 8148ac2..ab49fc8 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.0 + 3.3.1-SNAPSHOT openinvcommon @@ -22,7 +22,7 @@ com.lishid openinvapi - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index a090336..d76b501 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_4_5 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 6732f39..4b9ff8e 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_4_6 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/pom.xml b/internal/pom.xml index 3a8bf00..2d0b79f 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.0 + 3.3.1-SNAPSHOT openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 2486c74..a7b9c4d 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_10_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index a998c16..cc32ccc 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_11_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index 59d500a..721d018 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_12_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 876eaf4..bd6f93b 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_4_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 5206f17..be4fcd4 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_5_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index b202cc2..dbb01af 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_5_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 2e294c5..63140ad 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_6_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 1c6ef74..e59ff49 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_6_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index e368c51..ae331ba 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_6_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 0939ef9..dda8b9b 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_7_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index a9a760b..3a1f382 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_7_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 8ffdcf5..57f7af0 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_7_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index fbda901..f05a982 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_7_R4 @@ -27,7 +27,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 81a8393..1de58dc 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_8_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index fde2ade..3302de0 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_8_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 3e8b44a..c4244b8 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_8_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index d890694..75144c0 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_9_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index 360646d..e00fb09 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.0 + 3.3.1-SNAPSHOT openinvadapter1_9_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index 701b8b5..7ccc35c 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.3.0 + 3.3.1-SNAPSHOT openinvplugincore @@ -22,12 +22,12 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT com.lishid openinvpluginv1_10_r1 - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index db26cc6..be9fddf 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.3.0 + 3.3.1-SNAPSHOT openinvpluginv1_10_r1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.0 + 3.3.1-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index d24b0c7..c148705 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.0 + 3.3.1-SNAPSHOT openinvplugin diff --git a/pom.xml b/pom.xml index 34738e6..2a106ad 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.3.0 + 3.3.1-SNAPSHOT pom -- 2.49.1 From 21956776513bc5724345cac1db0fbb9dae6e79a7 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 6 Aug 2017 16:35:18 -0400 Subject: [PATCH 113/253] Actually fix CME (#71) --- .../java/com/lishid/openinv/util/Cache.java | 87 ++++++++++--------- 1 file changed, 47 insertions(+), 40 deletions(-) diff --git a/common/src/main/java/com/lishid/openinv/util/Cache.java b/common/src/main/java/com/lishid/openinv/util/Cache.java index 6d96f6d..7c9ad0e 100644 --- a/common/src/main/java/com/lishid/openinv/util/Cache.java +++ b/common/src/main/java/com/lishid/openinv/util/Cache.java @@ -1,8 +1,10 @@ package com.lishid.openinv.util; +import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; import com.google.common.collect.Multimap; @@ -10,7 +12,7 @@ import com.google.common.collect.TreeMultimap; /** * A minimal thread-safe time-based cache implementation backed by a HashMap and TreeMultimap. - * + * * @author Jikoo */ public class Cache { @@ -22,23 +24,23 @@ public class Cache { /** * Constructs a Cache with the specified retention duration, in use function, and post-removal function. - * + * * @param retention duration after which keys are automatically invalidated if not in use * @param inUseCheck Function used to check if a key is considered in use * @param postRemoval Function used to perform any operations required when a key is invalidated */ - public Cache(long retention, Function inUseCheck, Function postRemoval) { + public Cache(final long retention, final Function inUseCheck, final Function postRemoval) { this.internal = new HashMap(); this.expiry = TreeMultimap.create(new Comparator() { @Override - public int compare(Long long1, Long long2) { + public int compare(final Long long1, final Long long2) { return long1.compareTo(long2); } }, new Comparator() { @Override - public int compare(K k1, K k2) { + public int compare(final K k1, final K k2) { return 0; } }); @@ -51,70 +53,70 @@ public class Cache { /** * Set a key and value pair. Keys are unique. Using an existing key will cause the old value to * be overwritten and the expiration timer to be reset. - * + * * @param key key with which the specified value is to be associated * @param value value to be associated with the specified key */ - public void put(K key, V value) { + public void put(final K key, final V value) { // Invalidate key - runs lazy check and ensures value won't be cleaned up early - invalidate(key); + this.invalidate(key); - synchronized (internal) { - internal.put(key, value); - expiry.put(System.currentTimeMillis() + retention, key); + synchronized (this.internal) { + this.internal.put(key, value); + this.expiry.put(System.currentTimeMillis() + this.retention, key); } } /** * Returns the value to which the specified key is mapped, or null if no value is mapped for the key. - * + * * @param key the key whose associated value is to be returned * @return the value to which the specified key is mapped, or null if no value is mapped for the key */ - public V get(K key) { + public V get(final K key) { // Run lazy check to clean cache - lazyCheck(); + this.lazyCheck(); - synchronized (internal) { - return internal.get(key); + synchronized (this.internal) { + return this.internal.get(key); } } /** * Returns true if the specified key is mapped to a value. - * + * * @param key key to check if a mapping exists for * @return true if a mapping exists for the specified key */ - public boolean containsKey(K key) { + public boolean containsKey(final K key) { // Run lazy check to clean cache - lazyCheck(); + this.lazyCheck(); - synchronized (internal) { - return internal.containsKey(key); + synchronized (this.internal) { + return this.internal.containsKey(key); } } /** * Forcibly invalidates a key, even if it is considered to be in use. - * + * * @param key key to invalidate */ - public void invalidate(K key) { + public void invalidate(final K key) { // Run lazy check to clean cache - lazyCheck(); + this.lazyCheck(); - synchronized (internal) { - if (!internal.containsKey(key)) { + synchronized (this.internal) { + if (!this.internal.containsKey(key)) { // Value either not present or cleaned by lazy check. Either way, we're good return; } // Remove stored object - internal.remove(key); + this.internal.remove(key); // Remove expiration entry - prevents more work later, plus prevents issues with values invalidating early - for (Iterator> iterator = expiry.entries().iterator(); iterator.hasNext();) { + for (Iterator> iterator = this.expiry.entries().iterator(); iterator.hasNext();) { if (key.equals(iterator.next().getValue())) { iterator.remove(); break; @@ -127,12 +129,12 @@ public class Cache { * Forcibly invalidates all keys, even if they are considered to be in use. */ public void invalidateAll() { - synchronized (internal) { - for (V value : internal.values()) { - postRemoval.run(value); + synchronized (this.internal) { + for (V value : this.internal.values()) { + this.postRemoval.run(value); } - expiry.clear(); - internal.clear(); + this.expiry.clear(); + this.internal.clear(); } } @@ -142,9 +144,9 @@ public class Cache { */ private void lazyCheck() { long now = System.currentTimeMillis(); - long nextExpiry = now + retention; - synchronized (internal) { - for (Iterator> iterator = expiry.entries().iterator(); iterator + synchronized (this.internal) { + List inUse = new ArrayList(); + for (Iterator> iterator = this.expiry.entries().iterator(); iterator .hasNext();) { Map.Entry entry = iterator.next(); @@ -154,18 +156,23 @@ public class Cache { iterator.remove(); - if (inUseCheck.run(internal.get(entry.getValue()))) { - expiry.put(nextExpiry, entry.getValue()); + if (this.inUseCheck.run(this.internal.get(entry.getValue()))) { + inUse.add(entry.getValue()); continue; } - V value = internal.remove(entry.getValue()); + V value = this.internal.remove(entry.getValue()); if (value == null) { continue; } - postRemoval.run(value); + this.postRemoval.run(value); + } + + long nextExpiry = now + this.retention; + for (K value : inUse) { + this.expiry.put(nextExpiry, value); } } } -- 2.49.1 From e3d1af010b72a767d84106be622dd8f29e8f2d44 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 5 Nov 2017 20:00:22 -0500 Subject: [PATCH 114/253] Add permissions to alter the default state of Any/SilentChest (#76) --- .gitignore | 1 + .../main/java/com/lishid/openinv/OpenInv.java | 22 +++++++++++++++++-- .../plugin-core/src/main/resources/plugin.yml | 22 ++++++++++++++----- 3 files changed, 37 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 5fd7686..dff1661 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ **/.project **/.classpath **/.idea +**/.iml **/target **/bin **/out diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java index 723e7a6..19489a2 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java @@ -271,7 +271,16 @@ public class OpenInv extends JavaPlugin implements IOpenInv { @Override public boolean getPlayerAnyChestStatus(final OfflinePlayer player) { - return this.getConfig().getBoolean("toggles.any-chest." + this.accessor.getPlayerDataManager().getPlayerDataID(player), false); + boolean defaultState = false; + + if (player.isOnline()) { + Player onlinePlayer = player.getPlayer(); + if (onlinePlayer != null) { + defaultState = onlinePlayer.hasPermission("openinv.anychest.default"); + } + } + + return this.getConfig().getBoolean("toggles.any-chest." + this.accessor.getPlayerDataManager().getPlayerDataID(player), defaultState); } @Override @@ -281,7 +290,16 @@ public class OpenInv extends JavaPlugin implements IOpenInv { @Override public boolean getPlayerSilentChestStatus(final OfflinePlayer player) { - return this.getConfig().getBoolean("toggles.silent-chest." + this.accessor.getPlayerDataManager().getPlayerDataID(player), false); + boolean defaultState = false; + + if (player.isOnline()) { + Player onlinePlayer = player.getPlayer(); + if (onlinePlayer != null) { + defaultState = onlinePlayer.hasPermission("openinv.silentchest.default"); + } + } + + return this.getConfig().getBoolean("toggles.silent-chest." + this.accessor.getPlayerDataManager().getPlayerDataID(player), defaultState); } @Override diff --git a/plugin/plugin-core/src/main/resources/plugin.yml b/plugin/plugin-core/src/main/resources/plugin.yml index 85dad27..afc4b56 100644 --- a/plugin/plugin-core/src/main/resources/plugin.yml +++ b/plugin/plugin-core/src/main/resources/plugin.yml @@ -5,6 +5,16 @@ author: lishid authors: [Jikoo, ShadowRanger] description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. + +permissions: + openinv: + anychest.default: + description: Permission for AnyContainer to default on prior to toggling. + default: false + silentchest.default: + description: Permission for SilentChest to default on prior to toggling. + default: false + commands: openinv: aliases: [oi, inv, open] @@ -31,15 +41,15 @@ commands: usage: |- / [MinAmount] - Item is the ID or the Bukkit Material, MinAmount is the minimum amount required silentchest: - aliases: [sc, silent] - description: Toggle silent chest function, which stops sounds and animations when using containers. + aliases: [sc, silent, silentcontainer] + description: Toggle SilentContainer function, which stops sounds and animations when using containers. permission: OpenInv.*;OpenInv.silent usage: |- / [Check] - Check or toggle silent chest - anychest: - aliases: [ac] - description: Toggle anychest function, which allows opening of blocked chests. - permission: OpenInv.*;OpenInv.anychest + anycontainer: + aliases: [ac, anychest] + description: Toggle AnyContainer function, which allows opening of blocked containers. + permission: OpenInv.*;OpenInv.anychest;OpenInv.anycontainer usage: |- / [Check] - Checks or toggle anychest searchenchant: -- 2.49.1 From 48c61eeb82a8aa6389951358e5d1ca42d433c7cb Mon Sep 17 00:00:00 2001 From: Jikoo Date: Mon, 6 Nov 2017 19:23:26 -0500 Subject: [PATCH 115/253] Support lowercase permissions for consistency. --- .../plugin-core/src/main/resources/plugin.yml | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/plugin/plugin-core/src/main/resources/plugin.yml b/plugin/plugin-core/src/main/resources/plugin.yml index afc4b56..7b76544 100644 --- a/plugin/plugin-core/src/main/resources/plugin.yml +++ b/plugin/plugin-core/src/main/resources/plugin.yml @@ -7,54 +7,53 @@ description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. permissions: - openinv: - anychest.default: - description: Permission for AnyContainer to default on prior to toggling. - default: false - silentchest.default: - description: Permission for SilentChest to default on prior to toggling. - default: false + openinv.any.default: + description: Permission for AnyContainer to default on prior to toggling. + default: false + openinv.silent.default: + description: Permission for SilentContainer to default on prior to toggling. + default: false commands: openinv: aliases: [oi, inv, open] description: Open a player's inventory - permission: OpenInv.*;OpenInv.openinv + permission: OpenInv.*;OpenInv.openinv;openinv.*;openinv.openinv usage: |- / [Player] - Open a player's inventory openender: aliases: [oe] description: Opens the enderchest of a player - permission: OpenInv.*;OpenInv.openender + permission: OpenInv.*;OpenInv.openender;openinv.*;openinv.openender usage: |- / [Player] - Open a player's enderchest searchinv: aliases: [si] description: Search and list players having a specific item - permission: OpenInv.*;OpenInv.search + permission: OpenInv.*;OpenInv.search;openinv.*;openinv.search usage: |- / [MinAmount] - Item is the ID or the Bukkit Material, MinAmount is the minimum amount required searchender: aliases: [se] - permission: OpenInv.*;OpenInv.search + permission: OpenInv.*;OpenInv.search;openinv.*;openinv.search description: Searches and lists players having a specific item in their ender chest usage: |- / [MinAmount] - Item is the ID or the Bukkit Material, MinAmount is the minimum amount required - silentchest: - aliases: [sc, silent, silentcontainer] + silentcontainer: + aliases: [sc, silent, silentchest] description: Toggle SilentContainer function, which stops sounds and animations when using containers. - permission: OpenInv.*;OpenInv.silent + permission: OpenInv.*;OpenInv.silent;openinv.*;openinv.silent usage: |- / [Check] - Check or toggle silent chest anycontainer: aliases: [ac, anychest] description: Toggle AnyContainer function, which allows opening of blocked containers. - permission: OpenInv.*;OpenInv.anychest;OpenInv.anycontainer + permission: OpenInv.*;OpenInv.anychest;openinv.*;openinv.any usage: |- / [Check] - Checks or toggle anychest searchenchant: aliases: [searchenchants] description: Search and list players with a specific enchantment. - permission: OpenInv.*;OpenInv.searchenchant + permission: OpenInv.*;OpenInv.searchenchant;openinv.*;openinv.searchenchant usage: |- / <[enchantment] [MinLevel]> - Enchantment is the enchantment type, MinLevel is the minimum level. One is optional -- 2.49.1 From cbb2b4d2322285cb3b4f41c91fc74144814f4c3a Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 7 Nov 2017 18:16:38 -0500 Subject: [PATCH 116/253] Lowercase permissions can wait for a major version bump I don't want to double our permissions checks for backwards compatibility. --- README.MD | 39 ++++++++++---- .../com/lishid/openinv/util/Permissions.java | 51 +++++++++++-------- .../plugin-core/src/main/resources/plugin.yml | 18 +++---- 3 files changed, 67 insertions(+), 41 deletions(-) diff --git a/README.MD b/README.MD index b9ddba6..cf5a5f5 100644 --- a/README.MD +++ b/README.MD @@ -11,8 +11,8 @@ OpenInv is a [Bukkit plugin](https://dev.bukkit.org/bukkit-plugins/openinv/) whi - Read-only mode! No edits allowed! Don't grant `OpenInv.editender` - Cross-world support! Don't grant `OpenInv.crossworld` - No opening others! Don't grant `OpenInv.openenderall` -- **SilentChest**: Open containers without displaying an animation or making sound. -- **AnyChest**: Open containers, even if blocked by ocelots or blocks. +- **SilentContainer**: Open containers without displaying an animation or making sound. +- **AnyContainer**: Open containers, even if blocked by ocelots or blocks. ## Commands @@ -42,14 +42,19 @@ OpenInv is a [Bukkit plugin](https://dev.bukkit.org/bukkit-plugins/openinv/) whi - - - + + + - - - + + + + + + + +
      Lists all online players that have a certain item in their ender chest.
      /anychest [check]acCheck or toggle the AnyChest function, allowing opening blocked containers./searchenchant <[enchantment] [MinLevel]>searchenchantsLists all online players with a specific enchantment.
      /silentchest [check]scCheck or toggle the SilentChest function, allowing opening containers silently./anycontainer [check]ac, anychestCheck or toggle the AnyContainer function, allowing opening blocked containers.
      /silentcontainer [check]sc, silentchestCheck or toggle the SilentContainer function, allowing opening containers silently.
      @@ -103,18 +108,30 @@ OpenInv is a [Bukkit plugin](https://dev.bukkit.org/bukkit-plugins/openinv/) whi OpenInv.search Required to use /searchinv and /searchender. + + OpenInv.searchenchant + Required to use /searchenchant. + OpenInv.anychest Required to use /anychest. + + OpenInv.any.default + Cause AnyContainer to be enabled by default. + OpenInv.silent - Required to use /silentchest. + Required to use /silentcontainer. + + + OpenInv.silent.default + Cause SilentContainer to be enabled by default. ## For Developers -To compile, the relevant Craftbukkit/Spigot jars must be installed in your local repository using the install plugin. +To compile, the relevant Craftbukkit/Spigot jars must be installed in your local repository using the install plugin. Ex: `mvn install:install-file -Dpackaging=jar -Dfile=spigot-1.11-R0.1-SNAPSHOT.jar -DgroupId=org.spigotmc -DartifactId=spigot -Dversion=1.11-R0.1-SNAPSHOT` To compile for a specific version or set of versions, you'll need to use a profile. Provided profiles are `latest`, `modern` (versions 1.8+), and `all`. Select an existing profile using the `-P` argument (ex: `mvn clean package -am -P all`) or make your own. For more information, check out the [official guide](http://maven.apache.org/guides/introduction/introduction-to-profiles.html). @@ -136,4 +153,4 @@ 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 +``` diff --git a/common/src/main/java/com/lishid/openinv/util/Permissions.java b/common/src/main/java/com/lishid/openinv/util/Permissions.java index 8fdf8a6..2e9476b 100644 --- a/common/src/main/java/com/lishid/openinv/util/Permissions.java +++ b/common/src/main/java/com/lishid/openinv/util/Permissions.java @@ -4,35 +4,44 @@ import org.bukkit.permissions.Permissible; public enum Permissions { - OPENINV("OpenInv.openinv"), - OVERRIDE("OpenInv.override"), - EXEMPT("OpenInv.exempt"), - CROSSWORLD("OpenInv.crossworld"), - SILENT("OpenInv.silent"), - ANYCHEST("OpenInv.anychest"), - ENDERCHEST("OpenInv.openender"), - ENDERCHEST_ALL("OpenInv.openenderall"), - SEARCH("OpenInv.search"), - EDITINV("OpenInv.editinv"), - EDITENDER("OpenInv.editender"), - OPENSELF("OpenInv.openself"); + OPENINV("openinv"), + OVERRIDE("override"), + EXEMPT("exempt"), + CROSSWORLD("crossworld"), + SILENT("silent"), + ANYCHEST("anychest"), + ENDERCHEST("openender"), + ENDERCHEST_ALL("openenderall"), + SEARCH("search"), + EDITINV("editinv"), + EDITENDER("editender"), + OPENSELF("openself"); - private final String permission; + private final String[] permission; - private Permissions(String permission) { - this.permission = permission; + Permissions(String... permission) { + this.permission = new String[permission.length + 1]; + this.permission[0] = "OpenInv"; + System.arraycopy(permission, 0, permission, 1, permission.length); } public boolean hasPermission(Permissible permissible) { - String[] parts = permission.split("\\."); - String perm = ""; - for (int i = 0; i < parts.length; i++) { - if (permissible.hasPermission(perm + "*")) { + StringBuilder permissionBuilder = new StringBuilder(); + + // Support wildcard nodes. + for (int i = 0; i < permission.length; i++) { + if (permissible.hasPermission(permissionBuilder.toString() + "*")) { return true; } - perm += parts[i] + "."; + permissionBuilder.append(permission[i]).append('.'); } - return permissible.hasPermission(permission); + + // Delete trailing period. + if (permissionBuilder.length() > 0) { + permissionBuilder.deleteCharAt(permissionBuilder.length() - 1); + } + + return permissible.hasPermission(permissionBuilder.toString()); } } diff --git a/plugin/plugin-core/src/main/resources/plugin.yml b/plugin/plugin-core/src/main/resources/plugin.yml index 7b76544..c9079e8 100644 --- a/plugin/plugin-core/src/main/resources/plugin.yml +++ b/plugin/plugin-core/src/main/resources/plugin.yml @@ -7,10 +7,10 @@ description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. permissions: - openinv.any.default: + OpenInv.any.default: description: Permission for AnyContainer to default on prior to toggling. default: false - openinv.silent.default: + OpenInv.silent.default: description: Permission for SilentContainer to default on prior to toggling. default: false @@ -18,42 +18,42 @@ commands: openinv: aliases: [oi, inv, open] description: Open a player's inventory - permission: OpenInv.*;OpenInv.openinv;openinv.*;openinv.openinv + permission: OpenInv.*;OpenInv.openinv usage: |- / [Player] - Open a player's inventory openender: aliases: [oe] description: Opens the enderchest of a player - permission: OpenInv.*;OpenInv.openender;openinv.*;openinv.openender + permission: OpenInv.*;OpenInv.openender usage: |- / [Player] - Open a player's enderchest searchinv: aliases: [si] description: Search and list players having a specific item - permission: OpenInv.*;OpenInv.search;openinv.*;openinv.search + permission: OpenInv.*;OpenInv.search usage: |- / [MinAmount] - Item is the ID or the Bukkit Material, MinAmount is the minimum amount required searchender: aliases: [se] - permission: OpenInv.*;OpenInv.search;openinv.*;openinv.search + permission: OpenInv.*;OpenInv.search description: Searches and lists players having a specific item in their ender chest usage: |- / [MinAmount] - Item is the ID or the Bukkit Material, MinAmount is the minimum amount required silentcontainer: aliases: [sc, silent, silentchest] description: Toggle SilentContainer function, which stops sounds and animations when using containers. - permission: OpenInv.*;OpenInv.silent;openinv.*;openinv.silent + permission: OpenInv.*;OpenInv.silent usage: |- / [Check] - Check or toggle silent chest anycontainer: aliases: [ac, anychest] description: Toggle AnyContainer function, which allows opening of blocked containers. - permission: OpenInv.*;OpenInv.anychest;openinv.*;openinv.any + permission: OpenInv.*;OpenInv.anychest usage: |- / [Check] - Checks or toggle anychest searchenchant: aliases: [searchenchants] description: Search and list players with a specific enchantment. - permission: OpenInv.*;OpenInv.searchenchant;openinv.*;openinv.searchenchant + permission: OpenInv.*;OpenInv.searchenchant usage: |- / <[enchantment] [MinLevel]> - Enchantment is the enchantment type, MinLevel is the minimum level. One is optional -- 2.49.1 From ded6421e338536a86567a636590c82760ed33f01 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 7 Nov 2017 18:17:12 -0500 Subject: [PATCH 117/253] Bump version to 3.3.1 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 28 files changed, 52 insertions(+), 52 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 94ab809..57da6c1 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.1-SNAPSHOT + 3.3.1 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 8f270a7..f863516 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.1-SNAPSHOT + 3.3.1 openinvassembly diff --git a/common/pom.xml b/common/pom.xml index ab49fc8..c948db3 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.1-SNAPSHOT + 3.3.1 openinvcommon @@ -22,7 +22,7 @@ com.lishid openinvapi - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index d76b501..3fa1f1e 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_4_5 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 4b9ff8e..0bf908f 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_4_6 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/pom.xml b/internal/pom.xml index 2d0b79f..bc583ec 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.1-SNAPSHOT + 3.3.1 openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index a7b9c4d..54c18d5 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_10_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index cc32ccc..1bfc5fa 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_11_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index 721d018..95d820c 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_12_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index bd6f93b..812db75 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_4_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index be4fcd4..065ce92 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_5_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index dbb01af..a8ef7f6 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_5_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 63140ad..ac67b30 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_6_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index e59ff49..8d8e459 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_6_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index ae331ba..b82838e 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_6_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index dda8b9b..476900f 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_7_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 3a1f382..7791942 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_7_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 57f7af0..66b27d4 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_7_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index f05a982..bbb098d 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_7_R4 @@ -27,7 +27,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 1de58dc..af39521 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_8_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 3302de0..1f5291c 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_8_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index c4244b8..ee2c1d2 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_8_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index 75144c0..142e59d 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_9_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index e00fb09..255369e 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1-SNAPSHOT + 3.3.1 openinvadapter1_9_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index 7ccc35c..e4bb8c5 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.3.1-SNAPSHOT + 3.3.1 openinvplugincore @@ -22,12 +22,12 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 com.lishid openinvpluginv1_10_r1 - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index be9fddf..34cb56e 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.3.1-SNAPSHOT + 3.3.1 openinvpluginv1_10_r1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1-SNAPSHOT + 3.3.1 diff --git a/plugin/pom.xml b/plugin/pom.xml index c148705..f425ba2 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.1-SNAPSHOT + 3.3.1 openinvplugin diff --git a/pom.xml b/pom.xml index 2a106ad..34415eb 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.3.1-SNAPSHOT + 3.3.1 pom -- 2.49.1 From f07cef56212fc87967042e6f1633de1519720eda Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 7 Nov 2017 18:18:33 -0500 Subject: [PATCH 118/253] Bump version to 3.3.2-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 28 files changed, 52 insertions(+), 52 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 57da6c1..b771059 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.1 + 3.3.2-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index f863516..1b2b9c3 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.1 + 3.3.2-SNAPSHOT openinvassembly diff --git a/common/pom.xml b/common/pom.xml index c948db3..146c8ca 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.1 + 3.3.2-SNAPSHOT openinvcommon @@ -22,7 +22,7 @@ com.lishid openinvapi - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 3fa1f1e..4bbc5a6 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_4_5 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 0bf908f..f6c18d9 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_4_6 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/pom.xml b/internal/pom.xml index bc583ec..397e282 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.1 + 3.3.2-SNAPSHOT openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 54c18d5..91699c4 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_10_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 1bfc5fa..dc2075d 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_11_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index 95d820c..120a5d9 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_12_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 812db75..2a83801 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_4_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 065ce92..019efb2 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_5_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index a8ef7f6..640b8f6 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_5_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index ac67b30..fa172e8 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_6_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 8d8e459..47fa71c 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_6_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index b82838e..fab6d99 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_6_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 476900f..c49232f 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_7_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 7791942..1b6058d 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_7_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 66b27d4..6060bc3 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_7_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index bbb098d..ebdad26 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_7_R4 @@ -27,7 +27,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index af39521..6179f3b 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_8_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 1f5291c..3b141b2 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_8_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index ee2c1d2..61588b3 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_8_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index 142e59d..688a182 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_9_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index 255369e..d40457e 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.1 + 3.3.2-SNAPSHOT openinvadapter1_9_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index e4bb8c5..7376c5d 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.3.1 + 3.3.2-SNAPSHOT openinvplugincore @@ -22,12 +22,12 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT com.lishid openinvpluginv1_10_r1 - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 34cb56e..b24f7ce 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.3.1 + 3.3.2-SNAPSHOT openinvpluginv1_10_r1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.1 + 3.3.2-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index f425ba2..9df0899 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.1 + 3.3.2-SNAPSHOT openinvplugin diff --git a/pom.xml b/pom.xml index 34415eb..1bb886f 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.3.1 + 3.3.2-SNAPSHOT pom -- 2.49.1 From e652b436708625b50c1c93f5eb7a66286f5f0420 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 8 Nov 2017 17:37:22 -0500 Subject: [PATCH 119/253] Classic mistake, changed my mind and only changed part of the code. Also the actual mistake. Never forget. (#81) --- README.MD | 4 ++-- .../main/java/com/lishid/openinv/util/Permissions.java | 8 +++++--- .../src/main/java/com/lishid/openinv/OpenInv.java | 4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/README.MD b/README.MD index cf5a5f5..0b62e35 100644 --- a/README.MD +++ b/README.MD @@ -7,7 +7,7 @@ OpenInv is a [Bukkit plugin](https://dev.bukkit.org/bukkit-plugins/openinv/) whi - Cross-world support! Don't grant `OpenInv.crossworld` - No self-opening! Don't grant `OpenInv.openself` - Drop items as the player! Place items in the unused slots to the right of the armor to drop them -- **OpenEnder**: Open anyone's inventory, even if they're offline. +- **OpenEnder**: Open anyone's ender chest, even if they're offline. - Read-only mode! No edits allowed! Don't grant `OpenInv.editender` - Cross-world support! Don't grant `OpenInv.crossworld` - No opening others! Don't grant `OpenInv.openenderall` @@ -134,7 +134,7 @@ OpenInv is a [Bukkit plugin](https://dev.bukkit.org/bukkit-plugins/openinv/) whi To compile, the relevant Craftbukkit/Spigot jars must be installed in your local repository using the install plugin. Ex: `mvn install:install-file -Dpackaging=jar -Dfile=spigot-1.11-R0.1-SNAPSHOT.jar -DgroupId=org.spigotmc -DartifactId=spigot -Dversion=1.11-R0.1-SNAPSHOT` -To compile for a specific version or set of versions, you'll need to use a profile. Provided profiles are `latest`, `modern` (versions 1.8+), and `all`. Select an existing profile using the `-P` argument (ex: `mvn clean package -am -P all`) or make your own. For more information, check out the [official guide](http://maven.apache.org/guides/introduction/introduction-to-profiles.html). +To compile for a specific version or set of versions, you'll need to use a profile. Provided profiles are `latest`, `recent` (last 2 major Minecraft versions), and `all`. Select an existing profile using the `-P` argument (ex: `mvn clean package -am -P all`) or make your own. For more information, check out the [official guide](http://maven.apache.org/guides/introduction/introduction-to-profiles.html). The final file is target/OpenInv.jar diff --git a/common/src/main/java/com/lishid/openinv/util/Permissions.java b/common/src/main/java/com/lishid/openinv/util/Permissions.java index 2e9476b..3d8e4ec 100644 --- a/common/src/main/java/com/lishid/openinv/util/Permissions.java +++ b/common/src/main/java/com/lishid/openinv/util/Permissions.java @@ -9,7 +9,9 @@ public enum Permissions { EXEMPT("exempt"), CROSSWORLD("crossworld"), SILENT("silent"), + SILENT_DEFAULT("silent", "default"), ANYCHEST("anychest"), + ANY_DEFAULT("any", "default"), ENDERCHEST("openender"), ENDERCHEST_ALL("openenderall"), SEARCH("search"), @@ -19,10 +21,10 @@ public enum Permissions { private final String[] permission; - Permissions(String... permission) { - this.permission = new String[permission.length + 1]; + Permissions(String... permissions) { + this.permission = new String[permissions.length + 1]; this.permission[0] = "OpenInv"; - System.arraycopy(permission, 0, permission, 1, permission.length); + System.arraycopy(permissions, 0, this.permission, 1, permissions.length); } public boolean hasPermission(Permissible permissible) { diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java index 19489a2..02e05b1 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java @@ -276,7 +276,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { if (player.isOnline()) { Player onlinePlayer = player.getPlayer(); if (onlinePlayer != null) { - defaultState = onlinePlayer.hasPermission("openinv.anychest.default"); + defaultState = Permissions.ANY_DEFAULT.hasPermission(onlinePlayer); } } @@ -295,7 +295,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { if (player.isOnline()) { Player onlinePlayer = player.getPlayer(); if (onlinePlayer != null) { - defaultState = onlinePlayer.hasPermission("openinv.silentchest.default"); + defaultState = Permissions.SILENT_DEFAULT.hasPermission(onlinePlayer); } } -- 2.49.1 From f5c682ff2b0ccfa91f4646d3f760a70ef04dc5ec Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 8 Nov 2017 17:52:41 -0500 Subject: [PATCH 120/253] Bump version to 3.3.2 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 28 files changed, 52 insertions(+), 52 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index b771059..b1bef77 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.2-SNAPSHOT + 3.3.2 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 1b2b9c3..eaf0f85 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.2-SNAPSHOT + 3.3.2 openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 146c8ca..dda9860 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.2-SNAPSHOT + 3.3.2 openinvcommon @@ -22,7 +22,7 @@ com.lishid openinvapi - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 4bbc5a6..3f8ab6f 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_4_5 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index f6c18d9..9ad3ba5 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_4_6 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/pom.xml b/internal/pom.xml index 397e282..e5c63ea 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.2-SNAPSHOT + 3.3.2 openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 91699c4..3059567 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_10_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index dc2075d..bcc153d 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_11_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index 120a5d9..ec2c625 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_12_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 2a83801..a1b719d 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_4_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 019efb2..cc4546d 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_5_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 640b8f6..34bae8f 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_5_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index fa172e8..bd6e12f 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_6_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 47fa71c..09779e7 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_6_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index fab6d99..0f46227 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_6_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index c49232f..adcea6c 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_7_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 1b6058d..5ed9d34 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_7_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 6060bc3..0dabc48 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_7_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index ebdad26..5fc2db3 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_7_R4 @@ -27,7 +27,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 6179f3b..97ae64a 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_8_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 3b141b2..777940c 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_8_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 61588b3..e5d86c6 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_8_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index 688a182..fa4526d 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_9_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index d40457e..2bb388f 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2-SNAPSHOT + 3.3.2 openinvadapter1_9_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index 7376c5d..7fd4eec 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.3.2-SNAPSHOT + 3.3.2 openinvplugincore @@ -22,12 +22,12 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 com.lishid openinvpluginv1_10_r1 - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index b24f7ce..0f64884 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.3.2-SNAPSHOT + 3.3.2 openinvpluginv1_10_r1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2-SNAPSHOT + 3.3.2 diff --git a/plugin/pom.xml b/plugin/pom.xml index 9df0899..78a7b78 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.2-SNAPSHOT + 3.3.2 openinvplugin diff --git a/pom.xml b/pom.xml index 1bb886f..4a2d615 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.3.2-SNAPSHOT + 3.3.2 pom -- 2.49.1 From 7c621bf899dbbcaa71583e30de7c42238770ce6e Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 8 Nov 2017 17:53:16 -0500 Subject: [PATCH 121/253] Bump version to 3.3.3-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 28 files changed, 52 insertions(+), 52 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index b1bef77..b9da1b7 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.2 + 3.3.3-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index eaf0f85..1d0de45 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.2 + 3.3.3-SNAPSHOT openinvassembly diff --git a/common/pom.xml b/common/pom.xml index dda9860..e991823 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.2 + 3.3.3-SNAPSHOT openinvcommon @@ -22,7 +22,7 @@ com.lishid openinvapi - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 3f8ab6f..4680288 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_4_5 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 9ad3ba5..35228c2 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_4_6 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/pom.xml b/internal/pom.xml index e5c63ea..ee29de8 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.2 + 3.3.3-SNAPSHOT openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 3059567..d1199e7 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_10_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index bcc153d..57f53a2 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_11_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index ec2c625..8016e64 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_12_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index a1b719d..eb6489c 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_4_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index cc4546d..0be62b3 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_5_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 34bae8f..2e2ebeb 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_5_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index bd6e12f..aed0023 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_6_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 09779e7..35af0a2 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_6_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 0f46227..b5ca6c5 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_6_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index adcea6c..df2b77b 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_7_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 5ed9d34..9b9c3e9 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_7_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 0dabc48..0548a7e 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_7_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 5fc2db3..54d53aa 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_7_R4 @@ -27,7 +27,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 97ae64a..19f8bd7 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_8_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 777940c..8c46da0 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_8_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index e5d86c6..d2ed8bb 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_8_R3 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index fa4526d..69c3974 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_9_R1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index 2bb388f..abc8f08 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvinternal - 3.3.2 + 3.3.3-SNAPSHOT openinvadapter1_9_R2 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index 7fd4eec..d142fc7 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.3.2 + 3.3.3-SNAPSHOT openinvplugincore @@ -22,12 +22,12 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT com.lishid openinvpluginv1_10_r1 - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 0f64884..2f257bc 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvplugin - 3.3.2 + 3.3.3-SNAPSHOT openinvpluginv1_10_r1 @@ -21,7 +21,7 @@ com.lishid openinvcommon - 3.3.2 + 3.3.3-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index 78a7b78..10dd706 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ com.lishid openinvparent - 3.3.2 + 3.3.3-SNAPSHOT openinvplugin diff --git a/pom.xml b/pom.xml index 4a2d615..f0639a5 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.3.2 + 3.3.3-SNAPSHOT pom -- 2.49.1 From 4abaa6ea514da7c58135c4dd39cbe9d273a78a53 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 8 Nov 2017 19:07:23 -0500 Subject: [PATCH 122/253] Backport spectate abuse to 1.8-1.10 to support PaperSpigot This may break functionality on C(K)auldron and other server implementations with different remapping names. --- .../internal/v1_10_R1/AnySilentContainer.java | 103 ++++++--- .../v1_10_R1/SilentContainerChest.java | 45 ---- .../internal/v1_12_R1/AnySilentContainer.java | 210 +++++++++--------- .../internal/v1_8_R1/AnySilentContainer.java | 105 ++++++--- .../v1_8_R1/SilentContainerChest.java | 45 ---- .../internal/v1_8_R2/AnySilentContainer.java | 104 ++++++--- .../v1_8_R2/SilentContainerChest.java | 45 ---- .../internal/v1_8_R3/AnySilentContainer.java | 103 ++++++--- .../v1_8_R3/SilentContainerChest.java | 45 ---- .../internal/v1_9_R1/AnySilentContainer.java | 103 ++++++--- .../v1_9_R1/SilentContainerChest.java | 45 ---- .../internal/v1_9_R2/AnySilentContainer.java | 103 ++++++--- .../v1_9_R2/SilentContainerChest.java | 45 ---- 13 files changed, 518 insertions(+), 583 deletions(-) delete mode 100644 internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SilentContainerChest.java delete mode 100644 internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java delete mode 100644 internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java delete mode 100644 internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java delete mode 100644 internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java delete mode 100644 internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SilentContainerChest.java diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java index 916427b..8f6d86c 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java @@ -1,51 +1,63 @@ /* * 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_10_R1; +import java.lang.reflect.Field; + import com.lishid.openinv.internal.IAnySilentContainer; -import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import net.minecraft.server.v1_10_R1.AxisAlignedBB; import net.minecraft.server.v1_10_R1.Block; import net.minecraft.server.v1_10_R1.BlockChest; import net.minecraft.server.v1_10_R1.BlockEnderChest; import net.minecraft.server.v1_10_R1.BlockPosition; -import net.minecraft.server.v1_10_R1.Container; import net.minecraft.server.v1_10_R1.Entity; import net.minecraft.server.v1_10_R1.EntityOcelot; import net.minecraft.server.v1_10_R1.EntityPlayer; import net.minecraft.server.v1_10_R1.EnumDirection; +import net.minecraft.server.v1_10_R1.EnumGamemode; import net.minecraft.server.v1_10_R1.ITileInventory; import net.minecraft.server.v1_10_R1.InventoryEnderChest; import net.minecraft.server.v1_10_R1.InventoryLargeChest; -import net.minecraft.server.v1_10_R1.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_10_R1.PlayerInteractManager; import net.minecraft.server.v1_10_R1.StatisticList; import net.minecraft.server.v1_10_R1.TileEntity; import net.minecraft.server.v1_10_R1.TileEntityChest; import net.minecraft.server.v1_10_R1.TileEntityEnderChest; import net.minecraft.server.v1_10_R1.World; -import org.bukkit.craftbukkit.v1_10_R1.event.CraftEventFactory; - public class AnySilentContainer implements IAnySilentContainer { + private Field playerInteractManagerGamemode; + + public AnySilentContainer() { + try { + this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); + this.playerInteractManagerGamemode.setAccessible(true); + } catch (Exception e) { + System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); + e.printStackTrace(); + } + } + @Override public boolean isAnySilentContainer(org.bukkit.block.Block block) { return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; @@ -144,7 +156,6 @@ public class AnySilentContainer implements IAnySilentContainer { ITileInventory tileInventory = (ITileInventory) tile; Block block = world.getType(blockPosition).getBlock(); - Container container = null; if (block instanceof BlockChest) { for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { @@ -176,42 +187,64 @@ public class AnySilentContainer implements IAnySilentContainer { } else if (blockChest.g == BlockChest.Type.TRAP) { player.b(StatisticList.W); } - - if (silentchest) { - container = new SilentContainerChest(player.inventory, tileInventory, player); - } } - // AnyChest only - SilentChest not active or container unsupported - if (!silentchest || container == null) { + // AnyChest only - SilentChest not active, container unsupported, or unnecessary. + if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { player.openContainer(tileInventory); return true; } - // SilentChest - try { - // Call InventoryOpenEvent - container = CraftEventFactory.callInventoryOpenEvent(player, container, false); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, tileInventory.getContainerName(), tileInventory.getScoreboardDisplayName(), tileInventory.getSize())); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - return true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + // SilentChest requires access to setting players' gamemode directly. + if (this.playerInteractManagerGamemode == null) { return false; } + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.openContainer(tileInventory); + this.forceGameMode(player, gamemode); + return true; } @Override - public void deactivateContainer(final Player bukkitPlayer) {} + public void deactivateContainer(final Player bukkitPlayer) { + if (this.playerInteractManagerGamemode == null) { + return; + } + + InventoryView view = bukkitPlayer.getOpenInventory(); + switch (view.getType()) { + case CHEST: + case ENDER_CHEST: + break; + default: + return; + } + + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.activeContainer.b(player); + player.activeContainer = player.defaultContainer; + this.forceGameMode(player, gamemode); + } + + private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { + if (this.playerInteractManagerGamemode == null) { + // No need to warn repeatedly, error on startup and lack of function should be enough. + return; + } + try { + if (!this.playerInteractManagerGamemode.isAccessible()) { + // Just in case, ensure accessible. + this.playerInteractManagerGamemode.setAccessible(true); + } + this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SilentContainerChest.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SilentContainerChest.java deleted file mode 100644 index 8705bc3..0000000 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SilentContainerChest.java +++ /dev/null @@ -1,45 +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_10_R1; - -import net.minecraft.server.v1_10_R1.ContainerChest; -import net.minecraft.server.v1_10_R1.EntityHuman; -import net.minecraft.server.v1_10_R1.IInventory; -import net.minecraft.server.v1_10_R1.ItemStack; -import net.minecraft.server.v1_10_R1.PlayerInventory; - -public class SilentContainerChest extends ContainerChest { - - public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman e1) { - super(i1, i2, e1); - // Send close signal - i2.closeContainer(e1); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != null) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(null); - entityHuman.drop(carried, false); - } - } - -} diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java index dfde6be..6502758 100644 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java @@ -1,11 +1,17 @@ /* - * 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 - * . + * 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_12_R1; @@ -56,6 +62,101 @@ public class AnySilentContainer implements IAnySilentContainer { } } + @Override + public boolean isAnySilentContainer(final org.bukkit.block.Block block) { + if (block.getType() == Material.ENDER_CHEST) { + return true; + } + BlockState state = block.getState(); + return state instanceof org.bukkit.block.Chest + || state instanceof org.bukkit.block.ShulkerBox; + } + + @Override + public boolean isAnyContainerNeeded(final Player p, final org.bukkit.block.Block b) { + EntityPlayer player = PlayerDataManager.getHandle(p); + World world = player.world; + BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + IBlockData blockData = world.getType(blockPosition); + Block block = blockData.getBlock(); + + if (block instanceof BlockShulkerBox) { + return this.isBlockedShulkerBox(world, blockPosition, blockData); + } + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.getType(blockPosition.up()).m(); + } + + // Check if chest is blocked or has an ocelot on top + if (this.isBlockedChest(world, blockPosition)) { + return true; + } + + // Check for matching adjacent chests that are blocked or have an ocelot on top + for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if (this.isBlockedChest(world, localBlockPosition)) { + return true; + } + } + + return false; + } + + private boolean isBlockedShulkerBox(final World world, final BlockPosition blockPosition, + final IBlockData blockData) { + // For reference, look at net.minecraft.server.BlockShulkerBox + TileEntity tile = world.getTileEntity(blockPosition); + + if (!(tile instanceof TileEntityShulkerBox)) { + return false; + } + + EnumDirection enumDirection = blockData.get(BlockShulkerBox.a); + if (((TileEntityShulkerBox) tile).p() == TileEntityShulkerBox.AnimationPhase.CLOSED) { + AxisAlignedBB axisAlignedBB = Block.j.b(0.5F * enumDirection.getAdjacentX(), + 0.5F * enumDirection.getAdjacentY(), 0.5F * enumDirection.getAdjacentZ()) + .a(enumDirection.getAdjacentX(), enumDirection.getAdjacentY(), + enumDirection.getAdjacentZ()); + + return world.a(axisAlignedBB.a(blockPosition.shift(enumDirection))); + } + + return false; + } + + private boolean isBlockedChest(final World world, final BlockPosition blockPosition) { + // For reference, loot at net.minecraft.server.BlockChest + return world.getType(blockPosition.up()).l() || this.hasOcelotOnTop(world, blockPosition); + } + + private boolean hasOcelotOnTop(final World world, final BlockPosition blockPosition) { + for (Entity localEntity : world.a(EntityOcelot.class, + new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, + blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, + blockPosition.getZ() + 1))) { + EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; + if (localEntityOcelot.isSitting()) { + return true; + } + } + + return false; + } + @Override public boolean activateContainer(final Player bukkitPlayer, final boolean silentchest, final org.bukkit.block.Block bukkitBlock) { @@ -189,99 +290,4 @@ public class AnySilentContainer implements IAnySilentContainer { } } - private boolean hasOcelotOnTop(final World world, final BlockPosition blockPosition) { - for (Entity localEntity : world.a(EntityOcelot.class, - new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, - blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, - blockPosition.getZ() + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean isAnyContainerNeeded(final Player p, final org.bukkit.block.Block b) { - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; - BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); - IBlockData blockData = world.getType(blockPosition); - Block block = blockData.getBlock(); - - if (block instanceof BlockShulkerBox) { - return this.isBlockedShulkerBox(world, blockPosition, blockData); - } - - if (block instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.getType(blockPosition.up()).m(); - } - - // Check if chest is blocked or has an ocelot on top - if (this.isBlockedChest(world, blockPosition)) { - return true; - } - - // Check for matching adjacent chests that are blocked or have an ocelot on top - for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); - - if (localBlock != block) { - continue; - } - - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } - - if (this.isBlockedChest(world, localBlockPosition)) { - return true; - } - } - - return false; - } - - @Override - public boolean isAnySilentContainer(final org.bukkit.block.Block block) { - if (block.getType() == Material.ENDER_CHEST) { - return true; - } - BlockState state = block.getState(); - return state instanceof org.bukkit.block.Chest - || state instanceof org.bukkit.block.ShulkerBox; - } - - private boolean isBlockedChest(final World world, final BlockPosition blockPosition) { - // For reference, loot at net.minecraft.server.BlockChest - return world.getType(blockPosition.up()).l() || this.hasOcelotOnTop(world, blockPosition); - } - - private boolean isBlockedShulkerBox(final World world, final BlockPosition blockPosition, - final IBlockData blockData) { - // For reference, look at net.minecraft.server.BlockShulkerBox - TileEntity tile = world.getTileEntity(blockPosition); - - if (!(tile instanceof TileEntityShulkerBox)) { - return false; - } - - EnumDirection enumDirection = blockData.get(BlockShulkerBox.a); - if (((TileEntityShulkerBox) tile).p() == TileEntityShulkerBox.AnimationPhase.CLOSED) { - AxisAlignedBB axisAlignedBB = Block.j.b(0.5F * enumDirection.getAdjacentX(), - 0.5F * enumDirection.getAdjacentY(), 0.5F * enumDirection.getAdjacentZ()) - .a(enumDirection.getAdjacentX(), enumDirection.getAdjacentY(), - enumDirection.getAdjacentZ()); - - return world.a(axisAlignedBB.a(blockPosition.shift(enumDirection))); - } - - return false; - } - } diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java index b5cb77a..c579867 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java @@ -1,49 +1,61 @@ /* * 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_8_R1; +import java.lang.reflect.Field; + import com.lishid.openinv.internal.IAnySilentContainer; -import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import net.minecraft.server.v1_8_R1.AxisAlignedBB; import net.minecraft.server.v1_8_R1.Block; import net.minecraft.server.v1_8_R1.BlockChest; import net.minecraft.server.v1_8_R1.BlockEnderChest; import net.minecraft.server.v1_8_R1.BlockPosition; -import net.minecraft.server.v1_8_R1.Container; import net.minecraft.server.v1_8_R1.EntityOcelot; import net.minecraft.server.v1_8_R1.EntityPlayer; import net.minecraft.server.v1_8_R1.EnumDirection; +import net.minecraft.server.v1_8_R1.EnumGamemode; import net.minecraft.server.v1_8_R1.ITileInventory; import net.minecraft.server.v1_8_R1.InventoryEnderChest; import net.minecraft.server.v1_8_R1.InventoryLargeChest; -import net.minecraft.server.v1_8_R1.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_8_R1.PlayerInteractManager; import net.minecraft.server.v1_8_R1.TileEntity; import net.minecraft.server.v1_8_R1.TileEntityChest; import net.minecraft.server.v1_8_R1.TileEntityEnderChest; import net.minecraft.server.v1_8_R1.World; -import org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory; - public class AnySilentContainer implements IAnySilentContainer { + private Field playerInteractManagerGamemode; + + public AnySilentContainer() { + try { + this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); + this.playerInteractManagerGamemode.setAccessible(true); + } catch (Exception e) { + System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); + e.printStackTrace(); + } + } + @Override public boolean isAnySilentContainer(org.bukkit.block.Block block) { return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; @@ -145,7 +157,6 @@ public class AnySilentContainer implements IAnySilentContainer { ITileInventory tileInventory = (ITileInventory) tile; Block block = world.getType(blockPosition).getBlock(); - Container container = null; if (block instanceof BlockChest) { for (EnumDirection localEnumDirection : EnumDirection.values()) { @@ -166,7 +177,7 @@ public class AnySilentContainer implements IAnySilentContainer { continue; } - if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { + if (localEnumDirection == EnumDirection.WEST || localEnumDirection == EnumDirection.NORTH) { tileInventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) localTileEntity, tileInventory); } else { @@ -175,42 +186,64 @@ public class AnySilentContainer implements IAnySilentContainer { } break; } - - if (silentchest) { - container = new SilentContainerChest(player.inventory, tileInventory, player); - } } - // AnyChest only - SilentChest not active or container unsupported - if (!silentchest || container == null) { + // AnyChest only - SilentChest not active, container unsupported, or unnecessary. + if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { player.openContainer(tileInventory); return true; } - // SilentChest - try { - // Call InventoryOpenEvent - container = CraftEventFactory.callInventoryOpenEvent(player, container, false); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, tileInventory.getContainerName(), tileInventory.getScoreboardDisplayName(), tileInventory.getSize())); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - return true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + // SilentChest requires access to setting players' gamemode directly. + if (this.playerInteractManagerGamemode == null) { return false; } + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.openContainer(tileInventory); + this.forceGameMode(player, gamemode); + return true; } @Override - public void deactivateContainer(final Player bukkitPlayer) {} + public void deactivateContainer(final Player bukkitPlayer) { + if (this.playerInteractManagerGamemode == null) { + return; + } + + InventoryView view = bukkitPlayer.getOpenInventory(); + switch (view.getType()) { + case CHEST: + case ENDER_CHEST: + break; + default: + return; + } + + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.activeContainer.b(player); + player.activeContainer = player.defaultContainer; + this.forceGameMode(player, gamemode); + } + + private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { + if (this.playerInteractManagerGamemode == null) { + // No need to warn repeatedly, error on startup and lack of function should be enough. + return; + } + try { + if (!this.playerInteractManagerGamemode.isAccessible()) { + // Just in case, ensure accessible. + this.playerInteractManagerGamemode.setAccessible(true); + } + this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java deleted file mode 100644 index c47baa7..0000000 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SilentContainerChest.java +++ /dev/null @@ -1,45 +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_8_R1; - -import net.minecraft.server.v1_8_R1.ContainerChest; -import net.minecraft.server.v1_8_R1.EntityHuman; -import net.minecraft.server.v1_8_R1.IInventory; -import net.minecraft.server.v1_8_R1.ItemStack; -import net.minecraft.server.v1_8_R1.PlayerInventory; - -public class SilentContainerChest extends ContainerChest { - - public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman e1) { - super(i1, i2, e1); - // Send close signal - i2.closeContainer(e1); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != null) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(null); - entityHuman.drop(carried, false); - } - } - -} diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java index 773f1f9..f6dae14 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java @@ -1,33 +1,35 @@ /* * 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_8_R2; +import java.lang.reflect.Field; + import com.lishid.openinv.internal.IAnySilentContainer; -import org.bukkit.ChatColor; +import net.minecraft.server.v1_8_R2.WorldSettings; import org.bukkit.Material; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import net.minecraft.server.v1_8_R2.AxisAlignedBB; import net.minecraft.server.v1_8_R2.Block; import net.minecraft.server.v1_8_R2.BlockChest; import net.minecraft.server.v1_8_R2.BlockEnderChest; import net.minecraft.server.v1_8_R2.BlockPosition; -import net.minecraft.server.v1_8_R2.Container; import net.minecraft.server.v1_8_R2.Entity; import net.minecraft.server.v1_8_R2.EntityOcelot; import net.minecraft.server.v1_8_R2.EntityPlayer; @@ -35,17 +37,28 @@ import net.minecraft.server.v1_8_R2.EnumDirection; import net.minecraft.server.v1_8_R2.ITileInventory; import net.minecraft.server.v1_8_R2.InventoryEnderChest; import net.minecraft.server.v1_8_R2.InventoryLargeChest; -import net.minecraft.server.v1_8_R2.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_8_R2.PlayerInteractManager; import net.minecraft.server.v1_8_R2.StatisticList; import net.minecraft.server.v1_8_R2.TileEntity; import net.minecraft.server.v1_8_R2.TileEntityChest; import net.minecraft.server.v1_8_R2.TileEntityEnderChest; import net.minecraft.server.v1_8_R2.World; - -import org.bukkit.craftbukkit.v1_8_R2.event.CraftEventFactory; +import net.minecraft.server.v1_8_R2.WorldSettings.EnumGamemode; public class AnySilentContainer implements IAnySilentContainer { + private Field playerInteractManagerGamemode; + + public AnySilentContainer() { + try { + this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); + this.playerInteractManagerGamemode.setAccessible(true); + } catch (Exception e) { + System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); + e.printStackTrace(); + } + } + @Override public boolean isAnySilentContainer(org.bukkit.block.Block block) { return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; @@ -144,7 +157,6 @@ public class AnySilentContainer implements IAnySilentContainer { ITileInventory tileInventory = (ITileInventory) tile; Block block = world.getType(blockPosition).getBlock(); - Container container = null; if (block instanceof BlockChest) { for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { @@ -176,42 +188,64 @@ public class AnySilentContainer implements IAnySilentContainer { } else if (blockChest.b == 1) { player.b(StatisticList.U); } - - if (silentchest) { - container = new SilentContainerChest(player.inventory, tileInventory, player); - } } - // AnyChest only - SilentChest not active or container unsupported - if (!silentchest || container == null) { + // AnyChest only - SilentChest not active, container unsupported, or unnecessary. + if (!silentchest || player.playerInteractManager.getGameMode() == WorldSettings.EnumGamemode.SPECTATOR) { player.openContainer(tileInventory); return true; } - // SilentChest - try { - // Call InventoryOpenEvent - container = CraftEventFactory.callInventoryOpenEvent(player, container, false); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, tileInventory.getContainerName(), tileInventory.getScoreboardDisplayName(), tileInventory.getSize())); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - return true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + // SilentChest requires access to setting players' gamemode directly. + if (this.playerInteractManagerGamemode == null) { return false; } + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.openContainer(tileInventory); + this.forceGameMode(player, gamemode); + return true; } @Override - public void deactivateContainer(final Player bukkitPlayer) {} + public void deactivateContainer(final Player bukkitPlayer) { + if (this.playerInteractManagerGamemode == null) { + return; + } + + InventoryView view = bukkitPlayer.getOpenInventory(); + switch (view.getType()) { + case CHEST: + case ENDER_CHEST: + break; + default: + return; + } + + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.activeContainer.b(player); + player.activeContainer = player.defaultContainer; + this.forceGameMode(player, gamemode); + } + + private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { + if (this.playerInteractManagerGamemode == null) { + // No need to warn repeatedly, error on startup and lack of function should be enough. + return; + } + try { + if (!this.playerInteractManagerGamemode.isAccessible()) { + // Just in case, ensure accessible. + this.playerInteractManagerGamemode.setAccessible(true); + } + this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java deleted file mode 100644 index 066f771..0000000 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SilentContainerChest.java +++ /dev/null @@ -1,45 +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_8_R2; - -import net.minecraft.server.v1_8_R2.ContainerChest; -import net.minecraft.server.v1_8_R2.EntityHuman; -import net.minecraft.server.v1_8_R2.IInventory; -import net.minecraft.server.v1_8_R2.ItemStack; -import net.minecraft.server.v1_8_R2.PlayerInventory; - -public class SilentContainerChest extends ContainerChest { - - public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman e1) { - super(i1, i2, e1); - // Send close signal - i2.closeContainer(e1); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != null) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(null); - entityHuman.drop(carried, false); - } - } - -} diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java index 3789042..7310cf0 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java @@ -1,33 +1,34 @@ /* * 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_8_R3; +import java.lang.reflect.Field; + import com.lishid.openinv.internal.IAnySilentContainer; -import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import net.minecraft.server.v1_8_R3.AxisAlignedBB; import net.minecraft.server.v1_8_R3.Block; import net.minecraft.server.v1_8_R3.BlockChest; import net.minecraft.server.v1_8_R3.BlockEnderChest; import net.minecraft.server.v1_8_R3.BlockPosition; -import net.minecraft.server.v1_8_R3.Container; import net.minecraft.server.v1_8_R3.Entity; import net.minecraft.server.v1_8_R3.EntityOcelot; import net.minecraft.server.v1_8_R3.EntityPlayer; @@ -35,17 +36,28 @@ import net.minecraft.server.v1_8_R3.EnumDirection; import net.minecraft.server.v1_8_R3.ITileInventory; import net.minecraft.server.v1_8_R3.InventoryEnderChest; import net.minecraft.server.v1_8_R3.InventoryLargeChest; -import net.minecraft.server.v1_8_R3.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_8_R3.PlayerInteractManager; import net.minecraft.server.v1_8_R3.StatisticList; import net.minecraft.server.v1_8_R3.TileEntity; import net.minecraft.server.v1_8_R3.TileEntityChest; import net.minecraft.server.v1_8_R3.TileEntityEnderChest; import net.minecraft.server.v1_8_R3.World; - -import org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory; +import net.minecraft.server.v1_8_R3.WorldSettings.EnumGamemode; public class AnySilentContainer implements IAnySilentContainer { + private Field playerInteractManagerGamemode; + + public AnySilentContainer() { + try { + this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); + this.playerInteractManagerGamemode.setAccessible(true); + } catch (Exception e) { + System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); + e.printStackTrace(); + } + } + @Override public boolean isAnySilentContainer(org.bukkit.block.Block block) { return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; @@ -144,7 +156,6 @@ public class AnySilentContainer implements IAnySilentContainer { ITileInventory tileInventory = (ITileInventory) tile; Block block = world.getType(blockPosition).getBlock(); - Container container = null; if (block instanceof BlockChest) { for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { @@ -176,42 +187,64 @@ public class AnySilentContainer implements IAnySilentContainer { } else if (blockChest.b == 1) { player.b(StatisticList.U); } - - if (silentchest) { - container = new SilentContainerChest(player.inventory, tileInventory, player); - } } - // AnyChest only - SilentChest not active or container unsupported - if (!silentchest || container == null) { + // AnyChest only - SilentChest not active, container unsupported, or unnecessary. + if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { player.openContainer(tileInventory); return true; } - // SilentChest - try { - // Call InventoryOpenEvent - container = CraftEventFactory.callInventoryOpenEvent(player, container, false); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, tileInventory.getContainerName(), tileInventory.getScoreboardDisplayName(), tileInventory.getSize())); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - return true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + // SilentChest requires access to setting players' gamemode directly. + if (this.playerInteractManagerGamemode == null) { return false; } + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.openContainer(tileInventory); + this.forceGameMode(player, gamemode); + return true; } @Override - public void deactivateContainer(final Player bukkitPlayer) {} + public void deactivateContainer(final Player bukkitPlayer) { + if (this.playerInteractManagerGamemode == null) { + return; + } + + InventoryView view = bukkitPlayer.getOpenInventory(); + switch (view.getType()) { + case CHEST: + case ENDER_CHEST: + break; + default: + return; + } + + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.activeContainer.b(player); + player.activeContainer = player.defaultContainer; + this.forceGameMode(player, gamemode); + } + + private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { + if (this.playerInteractManagerGamemode == null) { + // No need to warn repeatedly, error on startup and lack of function should be enough. + return; + } + try { + if (!this.playerInteractManagerGamemode.isAccessible()) { + // Just in case, ensure accessible. + this.playerInteractManagerGamemode.setAccessible(true); + } + this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java deleted file mode 100644 index ef20562..0000000 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java +++ /dev/null @@ -1,45 +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_8_R3; - -import net.minecraft.server.v1_8_R3.ContainerChest; -import net.minecraft.server.v1_8_R3.EntityHuman; -import net.minecraft.server.v1_8_R3.IInventory; -import net.minecraft.server.v1_8_R3.ItemStack; -import net.minecraft.server.v1_8_R3.PlayerInventory; - -public class SilentContainerChest extends ContainerChest { - - public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman e1) { - super(i1, i2, e1); - // close signal - i2.closeContainer(e1); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != null) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(null); - entityHuman.drop(carried, false); - } - } - -} diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java index e4e26c8..0c27d4c 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java @@ -1,33 +1,34 @@ /* * 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.lang.reflect.Field; + import com.lishid.openinv.internal.IAnySilentContainer; -import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import net.minecraft.server.v1_9_R1.AxisAlignedBB; import net.minecraft.server.v1_9_R1.Block; import net.minecraft.server.v1_9_R1.BlockChest; import net.minecraft.server.v1_9_R1.BlockEnderChest; import net.minecraft.server.v1_9_R1.BlockPosition; -import net.minecraft.server.v1_9_R1.Container; import net.minecraft.server.v1_9_R1.Entity; import net.minecraft.server.v1_9_R1.EntityOcelot; import net.minecraft.server.v1_9_R1.EntityPlayer; @@ -35,17 +36,28 @@ import net.minecraft.server.v1_9_R1.EnumDirection; import net.minecraft.server.v1_9_R1.ITileInventory; import net.minecraft.server.v1_9_R1.InventoryEnderChest; import net.minecraft.server.v1_9_R1.InventoryLargeChest; -import net.minecraft.server.v1_9_R1.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_9_R1.PlayerInteractManager; import net.minecraft.server.v1_9_R1.StatisticList; import net.minecraft.server.v1_9_R1.TileEntity; import net.minecraft.server.v1_9_R1.TileEntityChest; import net.minecraft.server.v1_9_R1.TileEntityEnderChest; import net.minecraft.server.v1_9_R1.World; - -import org.bukkit.craftbukkit.v1_9_R1.event.CraftEventFactory; +import net.minecraft.server.v1_9_R1.WorldSettings.EnumGamemode; public class AnySilentContainer implements IAnySilentContainer { + private Field playerInteractManagerGamemode; + + public AnySilentContainer() { + try { + this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); + this.playerInteractManagerGamemode.setAccessible(true); + } catch (Exception e) { + System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); + e.printStackTrace(); + } + } + @Override public boolean isAnySilentContainer(org.bukkit.block.Block block) { return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; @@ -144,7 +156,6 @@ public class AnySilentContainer implements IAnySilentContainer { ITileInventory tileInventory = (ITileInventory) tile; Block block = world.getType(blockPosition).getBlock(); - Container container = null; if (block instanceof BlockChest) { for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { @@ -176,42 +187,64 @@ public class AnySilentContainer implements IAnySilentContainer { } else if (blockChest.g == BlockChest.Type.TRAP) { player.b(StatisticList.W); } - - if (silentchest) { - container = new SilentContainerChest(player.inventory, tileInventory, player); - } } - // AnyChest only - SilentChest not active or container unsupported - if (!silentchest || container == null) { + // AnyChest only - SilentChest not active, container unsupported, or unnecessary. + if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { player.openContainer(tileInventory); return true; } - // SilentChest - try { - // Call InventoryOpenEvent - container = CraftEventFactory.callInventoryOpenEvent(player, container, false); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, tileInventory.getContainerName(), tileInventory.getScoreboardDisplayName(), tileInventory.getSize())); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - return true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + // SilentChest requires access to setting players' gamemode directly. + if (this.playerInteractManagerGamemode == null) { return false; } + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.openContainer(tileInventory); + this.forceGameMode(player, gamemode); + return true; } @Override - public void deactivateContainer(final Player bukkitPlayer) {} + public void deactivateContainer(final Player bukkitPlayer) { + if (this.playerInteractManagerGamemode == null) { + return; + } + + InventoryView view = bukkitPlayer.getOpenInventory(); + switch (view.getType()) { + case CHEST: + case ENDER_CHEST: + break; + default: + return; + } + + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.activeContainer.b(player); + player.activeContainer = player.defaultContainer; + this.forceGameMode(player, gamemode); + } + + private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { + if (this.playerInteractManagerGamemode == null) { + // No need to warn repeatedly, error on startup and lack of function should be enough. + return; + } + try { + if (!this.playerInteractManagerGamemode.isAccessible()) { + // Just in case, ensure accessible. + this.playerInteractManagerGamemode.setAccessible(true); + } + this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java deleted file mode 100644 index fa11826..0000000 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java +++ /dev/null @@ -1,45 +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 net.minecraft.server.v1_9_R1.ContainerChest; -import net.minecraft.server.v1_9_R1.EntityHuman; -import net.minecraft.server.v1_9_R1.IInventory; -import net.minecraft.server.v1_9_R1.ItemStack; -import net.minecraft.server.v1_9_R1.PlayerInventory; - -public class SilentContainerChest extends ContainerChest { - - public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman e1) { - super(i1, i2, e1); - // Send close signal - i2.closeContainer(e1); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != null) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(null); - entityHuman.drop(carried, false); - } - } - -} diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java index 430f179..42f6647 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java @@ -1,33 +1,34 @@ /* * 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_R2; +import java.lang.reflect.Field; + import com.lishid.openinv.internal.IAnySilentContainer; -import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import net.minecraft.server.v1_9_R2.AxisAlignedBB; import net.minecraft.server.v1_9_R2.Block; import net.minecraft.server.v1_9_R2.BlockChest; import net.minecraft.server.v1_9_R2.BlockEnderChest; import net.minecraft.server.v1_9_R2.BlockPosition; -import net.minecraft.server.v1_9_R2.Container; import net.minecraft.server.v1_9_R2.Entity; import net.minecraft.server.v1_9_R2.EntityOcelot; import net.minecraft.server.v1_9_R2.EntityPlayer; @@ -35,17 +36,28 @@ import net.minecraft.server.v1_9_R2.EnumDirection; import net.minecraft.server.v1_9_R2.ITileInventory; import net.minecraft.server.v1_9_R2.InventoryEnderChest; import net.minecraft.server.v1_9_R2.InventoryLargeChest; -import net.minecraft.server.v1_9_R2.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_9_R2.PlayerInteractManager; import net.minecraft.server.v1_9_R2.StatisticList; import net.minecraft.server.v1_9_R2.TileEntity; import net.minecraft.server.v1_9_R2.TileEntityChest; import net.minecraft.server.v1_9_R2.TileEntityEnderChest; import net.minecraft.server.v1_9_R2.World; - -import org.bukkit.craftbukkit.v1_9_R2.event.CraftEventFactory; +import net.minecraft.server.v1_9_R2.WorldSettings.EnumGamemode; public class AnySilentContainer implements IAnySilentContainer { + private Field playerInteractManagerGamemode; + + public AnySilentContainer() { + try { + this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); + this.playerInteractManagerGamemode.setAccessible(true); + } catch (Exception e) { + System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); + e.printStackTrace(); + } + } + @Override public boolean isAnySilentContainer(org.bukkit.block.Block block) { return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; @@ -144,7 +156,6 @@ public class AnySilentContainer implements IAnySilentContainer { ITileInventory tileInventory = (ITileInventory) tile; Block block = world.getType(blockPosition).getBlock(); - Container container = null; if (block instanceof BlockChest) { for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { @@ -176,42 +187,64 @@ public class AnySilentContainer implements IAnySilentContainer { } else if (blockChest.g == BlockChest.Type.TRAP) { player.b(StatisticList.W); } - - if (silentchest) { - container = new SilentContainerChest(player.inventory, tileInventory, player); - } } - // AnyChest only - SilentChest not active or container unsupported - if (!silentchest || container == null) { + // AnyChest only - SilentChest not active, container unsupported, or unnecessary. + if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { player.openContainer(tileInventory); return true; } - // SilentChest - try { - // Call InventoryOpenEvent - container = CraftEventFactory.callInventoryOpenEvent(player, container, false); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, tileInventory.getContainerName(), tileInventory.getScoreboardDisplayName(), tileInventory.getSize())); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - return true; - } catch (Exception e) { - e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + // SilentChest requires access to setting players' gamemode directly. + if (this.playerInteractManagerGamemode == null) { return false; } + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.openContainer(tileInventory); + this.forceGameMode(player, gamemode); + return true; } @Override - public void deactivateContainer(final Player bukkitPlayer) {} + public void deactivateContainer(final Player bukkitPlayer) { + if (this.playerInteractManagerGamemode == null) { + return; + } + + InventoryView view = bukkitPlayer.getOpenInventory(); + switch (view.getType()) { + case CHEST: + case ENDER_CHEST: + break; + default: + return; + } + + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.activeContainer.b(player); + player.activeContainer = player.defaultContainer; + this.forceGameMode(player, gamemode); + } + + private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { + if (this.playerInteractManagerGamemode == null) { + // No need to warn repeatedly, error on startup and lack of function should be enough. + return; + } + try { + if (!this.playerInteractManagerGamemode.isAccessible()) { + // Just in case, ensure accessible. + this.playerInteractManagerGamemode.setAccessible(true); + } + this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SilentContainerChest.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SilentContainerChest.java deleted file mode 100644 index f08ecb8..0000000 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SilentContainerChest.java +++ /dev/null @@ -1,45 +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_R2; - -import net.minecraft.server.v1_9_R2.ContainerChest; -import net.minecraft.server.v1_9_R2.EntityHuman; -import net.minecraft.server.v1_9_R2.IInventory; -import net.minecraft.server.v1_9_R2.ItemStack; -import net.minecraft.server.v1_9_R2.PlayerInventory; - -public class SilentContainerChest extends ContainerChest { - - public SilentContainerChest(IInventory i1, IInventory i2, EntityHuman e1) { - super(i1, i2, e1); - // Send close signal - i2.closeContainer(e1); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != null) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(null); - entityHuman.drop(carried, false); - } - } - -} -- 2.49.1 From eaf01fa32ce84125c8bda141eb1653444af5bebf Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 19 Nov 2017 14:46:52 -0500 Subject: [PATCH 123/253] Don't cache simultaneously added players forever --- common/src/main/java/com/lishid/openinv/util/Cache.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/main/java/com/lishid/openinv/util/Cache.java b/common/src/main/java/com/lishid/openinv/util/Cache.java index 7c9ad0e..d0f40df 100644 --- a/common/src/main/java/com/lishid/openinv/util/Cache.java +++ b/common/src/main/java/com/lishid/openinv/util/Cache.java @@ -41,7 +41,7 @@ public class Cache { new Comparator() { @Override public int compare(final K k1, final K k2) { - return 0; + return k1 == k2 || k1 != null && k1.equals(k2) ? 0 : 1; } }); -- 2.49.1 From 50c45b661632c396ea764ffe982c5715b3c196cb Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 4 Feb 2018 10:29:07 -0500 Subject: [PATCH 124/253] Cleaned up code, updated copyright at long last. --- README.MD | 6 +- api/pom.xml | 16 ++++++ .../java/com/lishid/openinv/IOpenInv.java | 56 ++++++++++++------- .../openinv/internal/IAnySilentContainer.java | 24 ++++++-- .../openinv/internal/IInventoryAccess.java | 14 ++--- .../openinv/internal/ISpecialEnderChest.java | 26 ++++----- .../internal/ISpecialPlayerInventory.java | 26 ++++----- assembly/pom.xml | 16 ++++++ assembly/src/assembly/reactor-uberjar.xml | 16 ++++++ common/pom.xml | 16 ++++++ .../openinv/internal/IPlayerDataManager.java | 36 ++++++------ .../java/com/lishid/openinv/util/Cache.java | 16 ++++++ .../com/lishid/openinv/util/Function.java | 18 +++++- .../lishid/openinv/util/InternalAccessor.java | 10 ++-- .../com/lishid/openinv/util/Permissions.java | 16 ++++++ internal/1_4_5/pom.xml | 16 ++++++ .../internal/v1_4_5/AnySilentContainer.java | 12 ++-- .../internal/v1_4_5/InventoryAccess.java | 12 ++-- .../internal/v1_4_5/PlayerDataManager.java | 16 +++--- .../internal/v1_4_5/SilentContainerChest.java | 14 ++--- .../internal/v1_4_5/SpecialEnderChest.java | 19 ++++--- .../v1_4_5/SpecialPlayerInventory.java | 14 ++--- internal/1_4_6/pom.xml | 16 ++++++ .../internal/v1_4_6/AnySilentContainer.java | 12 ++-- .../internal/v1_4_6/InventoryAccess.java | 12 ++-- .../internal/v1_4_6/PlayerDataManager.java | 16 +++--- .../internal/v1_4_6/SilentContainerChest.java | 14 ++--- .../internal/v1_4_6/SpecialEnderChest.java | 19 ++++--- .../v1_4_6/SpecialPlayerInventory.java | 14 ++--- internal/pom.xml | 20 ++++++- internal/v1_10_R1/pom.xml | 16 ++++++ .../internal/v1_10_R1/AnySilentContainer.java | 6 +- .../internal/v1_10_R1/InventoryAccess.java | 12 ++-- .../internal/v1_10_R1/PlayerDataManager.java | 16 +++--- .../internal/v1_10_R1/SpecialEnderChest.java | 15 ++--- .../v1_10_R1/SpecialPlayerInventory.java | 19 ++++--- internal/v1_11_R1/pom.xml | 16 ++++++ .../internal/v1_11_R1/AnySilentContainer.java | 12 ++-- .../internal/v1_11_R1/InventoryAccess.java | 12 ++-- .../internal/v1_11_R1/PlayerDataManager.java | 16 +++--- .../internal/v1_11_R1/SpecialEnderChest.java | 15 ++--- .../v1_11_R1/SpecialPlayerInventory.java | 31 +++++----- internal/v1_12_R1/pom.xml | 16 ++++++ .../internal/v1_12_R1/AnySilentContainer.java | 6 +- .../internal/v1_12_R1/InventoryAccess.java | 20 ++++--- .../internal/v1_12_R1/PlayerDataManager.java | 24 +++++--- .../internal/v1_12_R1/SpecialEnderChest.java | 32 ++++++----- .../v1_12_R1/SpecialPlayerInventory.java | 44 ++++++++------- internal/v1_4_R1/pom.xml | 16 ++++++ .../internal/v1_4_R1/AnySilentContainer.java | 12 ++-- .../internal/v1_4_R1/InventoryAccess.java | 12 ++-- .../internal/v1_4_R1/PlayerDataManager.java | 16 +++--- .../v1_4_R1/SilentContainerChest.java | 14 ++--- .../internal/v1_4_R1/SpecialEnderChest.java | 15 ++--- .../v1_4_R1/SpecialPlayerInventory.java | 14 ++--- internal/v1_5_R2/pom.xml | 16 ++++++ .../internal/v1_5_R2/AnySilentContainer.java | 12 ++-- .../internal/v1_5_R2/InventoryAccess.java | 12 ++-- .../internal/v1_5_R2/PlayerDataManager.java | 16 +++--- .../v1_5_R2/SilentContainerChest.java | 14 ++--- .../internal/v1_5_R2/SpecialEnderChest.java | 15 ++--- .../v1_5_R2/SpecialPlayerInventory.java | 14 ++--- internal/v1_5_R3/pom.xml | 16 ++++++ .../internal/v1_5_R3/AnySilentContainer.java | 12 ++-- .../internal/v1_5_R3/InventoryAccess.java | 12 ++-- .../internal/v1_5_R3/PlayerDataManager.java | 16 +++--- .../v1_5_R3/SilentContainerChest.java | 14 ++--- .../internal/v1_5_R3/SpecialEnderChest.java | 15 ++--- .../v1_5_R3/SpecialPlayerInventory.java | 14 ++--- internal/v1_6_R1/pom.xml | 16 ++++++ .../internal/v1_6_R1/AnySilentContainer.java | 12 ++-- .../internal/v1_6_R1/InventoryAccess.java | 12 ++-- .../internal/v1_6_R1/PlayerDataManager.java | 16 +++--- .../v1_6_R1/SilentContainerChest.java | 14 ++--- .../internal/v1_6_R1/SpecialEnderChest.java | 15 ++--- .../v1_6_R1/SpecialPlayerInventory.java | 14 ++--- internal/v1_6_R2/pom.xml | 16 ++++++ .../internal/v1_6_R2/AnySilentContainer.java | 12 ++-- .../internal/v1_6_R2/InventoryAccess.java | 12 ++-- .../internal/v1_6_R2/PlayerDataManager.java | 16 +++--- .../v1_6_R2/SilentContainerChest.java | 14 ++--- .../internal/v1_6_R2/SpecialEnderChest.java | 15 ++--- .../v1_6_R2/SpecialPlayerInventory.java | 14 ++--- internal/v1_6_R3/pom.xml | 16 ++++++ .../internal/v1_6_R3/AnySilentContainer.java | 12 ++-- .../internal/v1_6_R3/InventoryAccess.java | 12 ++-- .../internal/v1_6_R3/PlayerDataManager.java | 16 +++--- .../v1_6_R3/SilentContainerChest.java | 14 ++--- .../internal/v1_6_R3/SpecialEnderChest.java | 15 ++--- .../v1_6_R3/SpecialPlayerInventory.java | 14 ++--- internal/v1_7_R1/pom.xml | 16 ++++++ .../internal/v1_7_R1/AnySilentContainer.java | 12 ++-- .../internal/v1_7_R1/InventoryAccess.java | 12 ++-- .../internal/v1_7_R1/PlayerDataManager.java | 16 +++--- .../v1_7_R1/SilentContainerChest.java | 14 ++--- .../internal/v1_7_R1/SpecialEnderChest.java | 15 ++--- .../v1_7_R1/SpecialPlayerInventory.java | 14 ++--- internal/v1_7_R2/pom.xml | 16 ++++++ .../internal/v1_7_R2/AnySilentContainer.java | 12 ++-- .../internal/v1_7_R2/InventoryAccess.java | 12 ++-- .../internal/v1_7_R2/PlayerDataManager.java | 16 +++--- .../v1_7_R2/SilentContainerChest.java | 14 ++--- .../internal/v1_7_R2/SpecialEnderChest.java | 15 ++--- .../v1_7_R2/SpecialPlayerInventory.java | 14 ++--- internal/v1_7_R3/pom.xml | 16 ++++++ .../internal/v1_7_R3/AnySilentContainer.java | 12 ++-- .../internal/v1_7_R3/InventoryAccess.java | 12 ++-- .../internal/v1_7_R3/PlayerDataManager.java | 16 +++--- .../v1_7_R3/SilentContainerChest.java | 14 ++--- .../internal/v1_7_R3/SpecialEnderChest.java | 15 ++--- .../v1_7_R3/SpecialPlayerInventory.java | 14 ++--- internal/v1_7_R4/pom.xml | 16 ++++++ .../internal/v1_7_R4/AnySilentContainer.java | 12 ++-- .../internal/v1_7_R4/InventoryAccess.java | 12 ++-- .../internal/v1_7_R4/PlayerDataManager.java | 16 +++--- .../v1_7_R4/SilentContainerChest.java | 14 ++--- .../internal/v1_7_R4/SpecialEnderChest.java | 17 +++--- .../v1_7_R4/SpecialPlayerInventory.java | 14 ++--- internal/v1_8_R1/pom.xml | 16 ++++++ .../internal/v1_8_R1/AnySilentContainer.java | 6 +- .../internal/v1_8_R1/InventoryAccess.java | 12 ++-- .../internal/v1_8_R1/PlayerDataManager.java | 16 +++--- .../internal/v1_8_R1/SpecialEnderChest.java | 15 ++--- .../v1_8_R1/SpecialPlayerInventory.java | 19 ++++--- internal/v1_8_R2/pom.xml | 16 ++++++ .../internal/v1_8_R2/AnySilentContainer.java | 6 +- .../internal/v1_8_R2/InventoryAccess.java | 12 ++-- .../internal/v1_8_R2/PlayerDataManager.java | 16 +++--- .../internal/v1_8_R2/SpecialEnderChest.java | 15 ++--- .../v1_8_R2/SpecialPlayerInventory.java | 19 ++++--- internal/v1_8_R3/pom.xml | 16 ++++++ .../internal/v1_8_R3/AnySilentContainer.java | 6 +- .../internal/v1_8_R3/InventoryAccess.java | 12 ++-- .../internal/v1_8_R3/PlayerDataManager.java | 16 +++--- .../internal/v1_8_R3/SpecialEnderChest.java | 15 ++--- .../v1_8_R3/SpecialPlayerInventory.java | 19 ++++--- internal/v1_9_R1/pom.xml | 16 ++++++ .../internal/v1_9_R1/AnySilentContainer.java | 6 +- .../internal/v1_9_R1/InventoryAccess.java | 12 ++-- .../internal/v1_9_R1/PlayerDataManager.java | 16 +++--- .../internal/v1_9_R1/SpecialEnderChest.java | 15 ++--- .../v1_9_R1/SpecialPlayerInventory.java | 19 ++++--- internal/v1_9_R2/pom.xml | 16 ++++++ .../internal/v1_9_R2/AnySilentContainer.java | 6 +- .../internal/v1_9_R2/InventoryAccess.java | 12 ++-- .../internal/v1_9_R2/PlayerDataManager.java | 16 +++--- .../internal/v1_9_R2/SpecialEnderChest.java | 15 ++--- .../v1_9_R2/SpecialPlayerInventory.java | 25 ++++----- plugin/plugin-core/pom.xml | 18 +++++- .../main/java/com/lishid/openinv/OpenInv.java | 8 +-- .../commands/AnyChestPluginCommand.java | 6 +- .../commands/OpenEnderPluginCommand.java | 8 +-- .../commands/OpenInvPluginCommand.java | 8 +-- .../commands/SearchEnchantPluginCommand.java | 18 +++++- .../commands/SearchInvPluginCommand.java | 15 +++-- .../commands/SilentChestPluginCommand.java | 12 ++-- .../listeners/InventoryClickListener.java | 12 ++-- .../listeners/InventoryCloseListener.java | 16 ++++++ .../openinv/listeners/PlayerListener.java | 12 ++-- .../openinv/listeners/PluginListener.java | 18 +++++- .../lishid/openinv/util/ConfigUpdater.java | 16 ++++++ plugin/plugin-v1_10_R1/pom.xml | 16 ++++++ .../listeners/InventoryDragListener.java | 18 +++++- plugin/pom.xml | 18 +++++- pom.xml | 21 ++++++- 165 files changed, 1603 insertions(+), 921 deletions(-) diff --git a/README.MD b/README.MD index 0b62e35..f4a8358 100644 --- a/README.MD +++ b/README.MD @@ -140,15 +140,15 @@ The final file is target/OpenInv.jar ## License ``` -Copyright (C) 2011-2014 lishid. All rights reserved. +Copyright (C) 2011-2018 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. +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 +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 diff --git a/api/pom.xml b/api/pom.xml index b9da1b7..1abe345 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/api/src/main/java/com/lishid/openinv/IOpenInv.java b/api/src/main/java/com/lishid/openinv/IOpenInv.java index 55a255b..58f3369 100644 --- a/api/src/main/java/com/lishid/openinv/IOpenInv.java +++ b/api/src/main/java/com/lishid/openinv/IOpenInv.java @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2011-2018 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 javax.annotation.Nullable; @@ -26,7 +42,7 @@ public interface IOpenInv { * * @return false unless configured otherwise */ - public boolean disableSaving(); + boolean disableSaving(); /** * Gets the active ISilentContainer implementation. May return null if the server version is @@ -35,7 +51,7 @@ public interface IOpenInv { * @return the ISilentContainer * @throws IllegalStateException if the server version is unsupported */ - public IAnySilentContainer getAnySilentContainer(); + IAnySilentContainer getAnySilentContainer(); /** * Gets an ISpecialEnderChest for the given Player. Returns null if the ISpecialEnderChest could @@ -49,7 +65,7 @@ public interface IOpenInv { */ @Deprecated @Nullable - public ISpecialEnderChest getEnderChest(Player player, boolean online); + ISpecialEnderChest getEnderChest(Player player, boolean online); /** * Gets an ISpecialPlayerInventory for the given Player. Returns null if the @@ -63,7 +79,7 @@ public interface IOpenInv { */ @Deprecated @Nullable - public ISpecialPlayerInventory getInventory(Player player, boolean online); + ISpecialPlayerInventory getInventory(Player player, boolean online); /** * Gets the active IInventoryAccess implementation. May return null if the server version is @@ -72,7 +88,7 @@ public interface IOpenInv { * @return the IInventoryAccess * @throws IllegalStateException if the server version is unsupported */ - public IInventoryAccess getInventoryAccess(); + IInventoryAccess getInventoryAccess(); /** * Gets the provided player's AnyChest setting. @@ -81,7 +97,7 @@ public interface IOpenInv { * @return true if AnyChest is enabled * @throws IllegalStateException if the server version is unsupported */ - public boolean getPlayerAnyChestStatus(OfflinePlayer player); + boolean getPlayerAnyChestStatus(OfflinePlayer player); /** * Gets a unique identifier by which the OfflinePlayer can be referenced. Using the value @@ -91,7 +107,7 @@ public interface IOpenInv { * @return the identifier * @throws IllegalStateException if the server version is unsupported */ - public String getPlayerID(OfflinePlayer offline); + String getPlayerID(OfflinePlayer offline); /** * Gets a player's SilentChest setting. @@ -100,7 +116,7 @@ public interface IOpenInv { * @return true if SilentChest is enabled * @throws IllegalStateException if the server version is unsupported */ - public boolean getPlayerSilentChestStatus(OfflinePlayer player); + boolean getPlayerSilentChestStatus(OfflinePlayer player); /** * Gets an ISpecialEnderChest for the given Player. @@ -111,7 +127,7 @@ public interface IOpenInv { * @throws IllegalStateException if the server version is unsupported * @throws InstantiationException if the ISpecialEnderChest could not be instantiated */ - public ISpecialEnderChest getSpecialEnderChest(Player player, boolean online) throws InstantiationException; + ISpecialEnderChest getSpecialEnderChest(Player player, boolean online) throws InstantiationException; /** * Gets an ISpecialPlayerInventory for the given Player. @@ -122,14 +138,14 @@ public interface IOpenInv { * @throws IllegalStateException if the server version is unsupported * @throws InstantiationException if the ISpecialPlayerInventory could not be instantiated */ - public ISpecialPlayerInventory getSpecialInventory(Player player, boolean online) throws InstantiationException; + ISpecialPlayerInventory getSpecialInventory(Player player, boolean online) throws InstantiationException; /** * Checks if the server version is supported by OpenInv. * * @return true if the server version is supported */ - public boolean isSupportedVersion(); + boolean isSupportedVersion(); /** * Load a Player from an OfflinePlayer. May return null under some circumstances. @@ -139,7 +155,7 @@ public interface IOpenInv { * @throws IllegalStateException if the server version is unsupported */ @Nullable - public Player loadPlayer(final OfflinePlayer offline); + Player loadPlayer(final OfflinePlayer offline); /** * Get an OfflinePlayer by name. @@ -152,7 +168,7 @@ public interface IOpenInv { * @return the OfflinePlayer with the closest matching name or null if no players have ever logged in */ @Nullable - public OfflinePlayer matchPlayer(String name); + OfflinePlayer matchPlayer(String name); /** * Check the configuration value for whether or not OpenInv displays a notification to the user @@ -160,7 +176,7 @@ public interface IOpenInv { * * @return true unless configured otherwise */ - public boolean notifyAnyChest(); + boolean notifyAnyChest(); /** * Check the configuration value for whether or not OpenInv displays a notification to the user @@ -168,7 +184,7 @@ public interface IOpenInv { * * @return true unless configured otherwise */ - public boolean notifySilentChest(); + boolean notifySilentChest(); /** * Mark a Player as no longer in use by a Plugin to allow OpenInv to remove it from the cache @@ -178,7 +194,7 @@ public interface IOpenInv { * @param plugin the Plugin no longer holding a reference to the Player * @throws IllegalStateException if the server version is unsupported */ - public void releasePlayer(Player player, Plugin plugin); + void releasePlayer(Player player, Plugin plugin); /** * Mark a Player as in use by a Plugin to prevent it from being removed from the cache. Used to @@ -203,7 +219,7 @@ public interface IOpenInv { * @param plugin the Plugin holding the reference to the Player * @throws IllegalStateException if the server version is unsupported */ - public void retainPlayer(Player player, Plugin plugin); + void retainPlayer(Player player, Plugin plugin); /** * Sets a player's AnyChest setting. @@ -212,7 +228,7 @@ public interface IOpenInv { * @param status the status * @throws IllegalStateException if the server version is unsupported */ - public void setPlayerAnyChestStatus(OfflinePlayer player, boolean status); + void setPlayerAnyChestStatus(OfflinePlayer player, boolean status); /** * Sets a player's SilentChest setting. @@ -221,7 +237,7 @@ public interface IOpenInv { * @param status the status * @throws IllegalStateException if the server version is unsupported */ - public void setPlayerSilentChestStatus(OfflinePlayer player, boolean status); + void setPlayerSilentChestStatus(OfflinePlayer player, boolean status); /** * Forcibly unload a cached Player's data. @@ -229,6 +245,6 @@ public interface IOpenInv { * @param player the OfflinePlayer to unload * @throws IllegalStateException if the server version is unsupported */ - public void unload(OfflinePlayer player); + void unload(OfflinePlayer player); } diff --git a/api/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java b/api/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java index 7eac2bf..d5c0136 100644 --- a/api/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java +++ b/api/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2011-2018 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; import org.bukkit.block.Block; @@ -15,14 +31,14 @@ public interface IAnySilentContainer { * @param block the Block * @return true if the container can be opened */ - public boolean activateContainer(Player player, boolean silentchest, Block block); + boolean activateContainer(Player player, boolean silentchest, Block block); /** * Closes the Player's currently open container silently, if necessary. * * @param player the Player closing a container */ - public void deactivateContainer(Player player); + void deactivateContainer(Player player); /** * Checks if the container at the given coordinates is blocked. @@ -31,7 +47,7 @@ public interface IAnySilentContainer { * @param block the Block * @return true if the container is blocked */ - public boolean isAnyContainerNeeded(Player player, Block block); + boolean isAnyContainerNeeded(Player player, Block block); /** * Checks if the given block is a container which can be unblocked or silenced. @@ -39,6 +55,6 @@ public interface IAnySilentContainer { * @param block the BlockState * @return true if the Block is a supported container */ - public boolean isAnySilentContainer(Block block); + boolean isAnySilentContainer(Block block); } diff --git a/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java b/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java index 3ea8bc6..98844f5 100644 --- a/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java +++ b/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java @@ -1,13 +1,13 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2018 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. + * 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 + * 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 @@ -30,7 +30,7 @@ public interface IInventoryAccess { * @return the ISpecialEnderChest or null */ @Nullable - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory); + ISpecialEnderChest getSpecialEnderChest(Inventory inventory); /** * Gets an ISpecialPlayerInventory from an Inventory or null if the Inventory is not backed by @@ -40,7 +40,7 @@ public interface IInventoryAccess { * @return the ISpecialPlayerInventory or null */ @Nullable - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory); + ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory); /** * Check if an Inventory is an ISpecialEnderChest implementation. @@ -48,7 +48,7 @@ public interface IInventoryAccess { * @param inventory the Inventory * @return true if the Inventory is backed by an ISpecialEnderChest */ - public boolean isSpecialEnderChest(Inventory inventory); + boolean isSpecialEnderChest(Inventory inventory); /** * Check if an Inventory is an ISpecialPlayerInventory implementation. @@ -56,6 +56,6 @@ public interface IInventoryAccess { * @param inventory the Inventory * @return true if the Inventory is backed by an ISpecialPlayerInventory */ - public boolean isSpecialPlayerInventory(Inventory inventory); + boolean isSpecialPlayerInventory(Inventory inventory); } diff --git a/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java b/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java index 29489e1..12caa86 100644 --- a/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java +++ b/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -23,28 +23,28 @@ public interface ISpecialEnderChest { /** * Gets the Inventory associated with this ISpecialEnderChest. - * + * * @return the Inventory */ - public Inventory getBukkitInventory(); + Inventory getBukkitInventory(); /** * Sets the Player associated with this ISpecialEnderChest online. - * + * * @param player the Player coming online */ - public void setPlayerOnline(Player player); + void setPlayerOnline(Player player); /** * Sets the Player associated with this ISpecialEnderChest offline. */ - public void setPlayerOffline(); + void setPlayerOffline(); /** * Gets whether or not this ISpecialEnderChest is in use. - * + * * @return true if the ISpecialEnderChest is in use */ - public boolean isInUse(); + boolean isInUse(); } diff --git a/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java b/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java index 0ee9900..fbae50e 100644 --- a/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java +++ b/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -23,28 +23,28 @@ public interface ISpecialPlayerInventory { /** * Gets the Inventory associated with this ISpecialPlayerInventory. - * + * * @return the Inventory */ - public Inventory getBukkitInventory(); + Inventory getBukkitInventory(); /** * Sets the Player associated with this ISpecialPlayerInventory online. - * + * * @param player the Player coming online */ - public void setPlayerOnline(Player player); + void setPlayerOnline(Player player); /** * Sets the Player associated with this ISpecialPlayerInventory offline. */ - public void setPlayerOffline(); + void setPlayerOffline(); /** * Gets whether or not this ISpecialPlayerInventory is in use. - * + * * @return true if the ISpecialPlayerInventory is in use */ - public boolean isInUse(); + boolean isInUse(); } diff --git a/assembly/pom.xml b/assembly/pom.xml index 1d0de45..7f8b81c 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/assembly/src/assembly/reactor-uberjar.xml b/assembly/src/assembly/reactor-uberjar.xml index 200bc85..b3ce4f0 100644 --- a/assembly/src/assembly/reactor-uberjar.xml +++ b/assembly/src/assembly/reactor-uberjar.xml @@ -1,3 +1,19 @@ + + diff --git a/common/pom.xml b/common/pom.xml index e991823..912ac5a 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/common/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java b/common/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java index 4024564..12df4a3 100644 --- a/common/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java +++ b/common/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -27,33 +27,33 @@ public interface IPlayerDataManager { * Loads a Player for an OfflinePlayer. *

      * This method is potentially blocking, and should not be called on the main thread. - * - * @param offline - * @return + * + * @param offline the OfflinePlayer + * @return the Player loaded */ - public Player loadPlayer(OfflinePlayer offline); + Player loadPlayer(OfflinePlayer offline); /** * Gets a unique identifying string for an OfflinePlayer. - * - * @param player - * @return + * + * @param offline the OfflinePlayer + * @return the unique identifier */ - public String getPlayerDataID(OfflinePlayer player); + String getPlayerDataID(OfflinePlayer offline); /** * Gets an OfflinePlayer by the given unique identifier. - * + * * @param identifier the unique identifier * @return the OfflinePlayer, or null if no exact match was found */ - public OfflinePlayer getPlayerByID(String identifier); + OfflinePlayer getPlayerByID(String identifier); /** * Gets a Collection of all Players currently online. - * + * * @return the Collection of Players */ - public Collection getOnlinePlayers(); + Collection getOnlinePlayers(); } diff --git a/common/src/main/java/com/lishid/openinv/util/Cache.java b/common/src/main/java/com/lishid/openinv/util/Cache.java index d0f40df..dd6d0da 100644 --- a/common/src/main/java/com/lishid/openinv/util/Cache.java +++ b/common/src/main/java/com/lishid/openinv/util/Cache.java @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2011-2018 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.util; import java.util.ArrayList; diff --git a/common/src/main/java/com/lishid/openinv/util/Function.java b/common/src/main/java/com/lishid/openinv/util/Function.java index 37894c1..05813b0 100644 --- a/common/src/main/java/com/lishid/openinv/util/Function.java +++ b/common/src/main/java/com/lishid/openinv/util/Function.java @@ -1,8 +1,24 @@ +/* + * Copyright (C) 2011-2018 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.util; /** * Abstraction for some simple cache calls. - * + * * @author Jikoo */ public abstract class Function { diff --git a/common/src/main/java/com/lishid/openinv/util/InternalAccessor.java b/common/src/main/java/com/lishid/openinv/util/InternalAccessor.java index 18a5f6a..652198a 100644 --- a/common/src/main/java/com/lishid/openinv/util/InternalAccessor.java +++ b/common/src/main/java/com/lishid/openinv/util/InternalAccessor.java @@ -1,13 +1,13 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2018 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. + * 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 + * 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 @@ -108,9 +108,7 @@ public class InternalAccessor { for (Object object : params) { builder.append(object.getClass().getName()).append(", "); } - if (params.length > 0) { - builder.delete(builder.length() - 2, builder.length()); - } + builder.delete(builder.length() - 2, builder.length()); String message = builder.append(']').toString(); this.plugin.getLogger().warning(message); diff --git a/common/src/main/java/com/lishid/openinv/util/Permissions.java b/common/src/main/java/com/lishid/openinv/util/Permissions.java index 3d8e4ec..56a3038 100644 --- a/common/src/main/java/com/lishid/openinv/util/Permissions.java +++ b/common/src/main/java/com/lishid/openinv/util/Permissions.java @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2011-2018 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.util; import org.bukkit.permissions.Permissible; diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 4680288..c00c0d1 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java index 4bff7b8..494e124 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java index 471fc75..5b7a11c 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java index c9a126a..4661453 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -59,8 +59,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getName(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getName(); } @Override diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java index fd3e707..a192485 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -22,7 +22,7 @@ import net.minecraft.server.v1_4_5.IInventory; import net.minecraft.server.v1_4_5.ItemStack; import net.minecraft.server.v1_4_5.PlayerInventory; -public class SilentContainerChest extends ContainerChest { +class SilentContainerChest extends ContainerChest { public SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java index ab2cb5c..83cf09a 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -42,13 +42,14 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); private final List transaction = new ArrayList(); - private boolean playerOnline = false; + private boolean playerOnline; private CraftPlayer owner; private int maxStack = MAX_STACK; public SpecialEnderChest(Player player, Boolean online) { - super(((CraftPlayer) player).getHandle().getEnderChest().getName(), - ((CraftPlayer) player).getHandle().getEnderChest().getSize()); + super(PlayerDataManager.getHandle(player).getEnderChest().getName(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.owner = nmsPlayer.getBukkitEntity(); diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java index fcf3231..fb70752 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -30,7 +30,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private final ItemStack[] extra = new ItemStack[5]; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 35228c2..666da4e 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java index f420591..024d64e 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java index 2fc37fc..72a209d 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java index e708908..9b56c4b 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -59,8 +59,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getName(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getName(); } @Override diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java index 93e1589..bc9d1d3 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -22,7 +22,7 @@ import net.minecraft.server.v1_4_6.IInventory; import net.minecraft.server.v1_4_6.ItemStack; import net.minecraft.server.v1_4_6.PlayerInventory; -public class SilentContainerChest extends ContainerChest { +class SilentContainerChest extends ContainerChest { public SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java index e019d03..f6eebc1 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -42,13 +42,14 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); private final List transaction = new ArrayList(); - private boolean playerOnline = false; + private boolean playerOnline; private CraftPlayer owner; private int maxStack = MAX_STACK; public SpecialEnderChest(Player player, Boolean online) { - super(((CraftPlayer) player).getHandle().getEnderChest().getName(), - ((CraftPlayer) player).getHandle().getEnderChest().getSize()); + super(PlayerDataManager.getHandle(player).getEnderChest().getName(), + PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.owner = nmsPlayer.getBukkitEntity(); diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java index 722ec74..0976e2b 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -30,7 +30,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private final ItemStack[] extra = new ItemStack[5]; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); diff --git a/internal/pom.xml b/internal/pom.xml index ee29de8..1540b78 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -1,4 +1,19 @@ - + + 4.0.0 @@ -44,7 +59,6 @@ v1_6_R1 v1_6_R2 v1_6_R3 - v1_7_R1 v1_7_R2 v1_7_R3 @@ -62,4 +76,4 @@ - \ No newline at end of file + diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index d1199e7..63fcf89 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java index 8f6d86c..e571d4f 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java @@ -1,13 +1,13 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2018 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. + * 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 + * 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 diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java index ae1e7b3..6d13fdf 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java index ca18f6f..dc11335 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -61,8 +61,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getUniqueId().toString(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getUniqueId().toString(); } @Override diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java index 66adece..95c7482 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -36,12 +36,13 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialEnderChest(Player player, Boolean online) { super(PlayerDataManager.getHandle(player).getEnderChest().getName(), PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.bukkitOwner = nmsPlayer.getBukkitEntity(); diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java index de99b24..36072a8 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -34,7 +34,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private final ItemStack[] extra = new ItemStack[4]; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); @@ -286,6 +286,11 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return player.getName(); } + @Override + public boolean hasCustomName() { + return true; + } + @Override public boolean a(EntityHuman entityhuman) { return true; diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 57f53a2..4b29bf5 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java index cb0a110..42a42f2 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java index 730e83a..741536c 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java index af39f4b..8d1566c 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -61,8 +61,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getUniqueId().toString(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getUniqueId().toString(); } @Override diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java index 9c235a9..a4115f0 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -37,12 +37,13 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialEnderChest(Player player, Boolean online) { super(PlayerDataManager.getHandle(player).getEnderChest().getName(), PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.bukkitOwner = nmsPlayer.getBukkitEntity(); diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java index 3731b70..b403d29 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -36,7 +36,7 @@ import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); @@ -70,7 +70,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP field = PlayerInventory.class.getDeclaredField("g"); field.setAccessible(true); modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, Arrays.asList(new NonNullList[] { items, armor, extraSlots })); + field.set(inventory, Arrays.asList(items, armor, extraSlots)); } catch (NoSuchFieldException e) { // Unable to set final fields to item arrays, we're screwed. Noisily fail. e.printStackTrace(); @@ -89,7 +89,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setPlayerOnline(Player player) { if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player);; + this.player = PlayerDataManager.getHandle(player); setItemArrays(this.player.inventory, items, armor, extraSlots); playerOnline = true; } @@ -157,7 +157,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return ItemStack.a; } - return list == null || list.get(i).isEmpty() ? ItemStack.a : ContainerUtil.a(list, i, j); + return list.get(i).isEmpty() ? ItemStack.a : ContainerUtil.a(list, i, j); } @Override @@ -182,7 +182,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return ItemStack.a; } - if (list != null && !list.get(i).isEmpty()) { + if (!list.get(i).isEmpty()) { ItemStack itemstack = list.get(i); list.set(i, ItemStack.a); @@ -215,9 +215,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return; } - if (list != null) { - list.set(i, itemstack); - } + list.set(i, itemstack); } private int getReversedItemSlotNum(int i) { @@ -251,6 +249,11 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return player.getName(); } + @Override + public boolean hasCustomName() { + return true; + } + @Override public boolean a(EntityHuman entityhuman) { return true; diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index 8016e64..ee4be3c 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java index 6502758..493eb5d 100644 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java @@ -1,13 +1,13 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2018 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. + * 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 + * 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 diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/InventoryAccess.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/InventoryAccess.java index 0da8f58..06c597a 100644 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/InventoryAccess.java +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/InventoryAccess.java @@ -1,11 +1,17 @@ /* - * 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 - * . + * Copyright (C) 2011-2018 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_12_R1; diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java index 6c83edd..885cde8 100644 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java @@ -1,11 +1,17 @@ /* - * 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 - * . + * Copyright (C) 2011-2018 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_12_R1; @@ -74,8 +80,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(final OfflinePlayer player) { - return player.getUniqueId().toString(); + public String getPlayerDataID(final OfflinePlayer offline) { + return offline.getUniqueId().toString(); } @Override diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java index e052616..d86c01f 100644 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java @@ -1,11 +1,17 @@ /* - * 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 - * . + * Copyright (C) 2011-2018 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_12_R1; @@ -32,12 +38,13 @@ public class SpecialEnderChest extends InventorySubcontainer private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialEnderChest(final Player player, final Boolean online) { super(PlayerDataManager.getHandle(player).getEnderChest().getName(), PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.bukkitOwner = nmsPlayer.getBukkitEntity(); @@ -64,13 +71,8 @@ public class SpecialEnderChest extends InventorySubcontainer Field field = InventorySubcontainer.class.getField("items"); modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); field.set(subcontainer, list); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { + } catch (NoSuchFieldException | SecurityException | IllegalArgumentException + | IllegalAccessException e) { e.printStackTrace(); } } diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java index 1687b98..5bbf01e 100644 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java @@ -1,11 +1,17 @@ /* - * 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 - * . + * Copyright (C) 2011-2018 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_12_R1; @@ -30,7 +36,7 @@ import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(final Player bukkitPlayer, final Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); @@ -82,6 +88,11 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return this.player.getName(); } + @Override + public boolean hasCustomName() { + return true; + } + private int getReversedArmorSlotNum(final int i) { if (i == 0) { return 3; @@ -138,9 +149,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return; } - if (list != null) { - list.set(i, itemstack); - } + list.set(i, itemstack); } private void setItemArrays(final PlayerInventory inventory, final NonNullList items, @@ -169,14 +178,10 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP field = PlayerInventory.class.getDeclaredField("f"); field.setAccessible(true); modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, Arrays.asList(new NonNullList[] { items, armor, extraSlots })); - } catch (NoSuchFieldException e) { + field.set(inventory, Arrays.asList(items, armor, extraSlots)); + } catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) { // Unable to set final fields to item lists, we're screwed. Noisily fail. e.printStackTrace(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); } } @@ -189,7 +194,6 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public void setPlayerOnline(final Player player) { if (!this.playerOnline) { this.player = PlayerDataManager.getHandle(player); - ; this.setItemArrays(this.player.inventory, this.items, this.armor, this.extraSlots); this.playerOnline = true; } @@ -217,7 +221,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return ItemStack.a; } - return list == null || list.get(i).isEmpty() ? ItemStack.a : ContainerUtil.a(list, i, j); + return list.get(i).isEmpty() ? ItemStack.a : ContainerUtil.a(list, i, j); } @Override @@ -242,7 +246,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return ItemStack.a; } - if (list != null && !list.get(i).isEmpty()) { + if (!list.get(i).isEmpty()) { ItemStack itemstack = list.get(i); list.set(i, ItemStack.a); diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index eb6489c..9524856 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java index 8bdcbd3..8308155 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java index eddf654..e452647 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java index e89517e..071c429 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -60,8 +60,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getName(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getName(); } @Override diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java index 9554dad..04be0cb 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -22,7 +22,7 @@ import net.minecraft.server.v1_4_R1.IInventory; import net.minecraft.server.v1_4_R1.ItemStack; import net.minecraft.server.v1_4_R1.PlayerInventory; -public class SilentContainerChest extends ContainerChest { +class SilentContainerChest extends ContainerChest { public SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java index 7108e07..5deeee7 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -42,13 +42,14 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); private final List transaction = new ArrayList(); - private boolean playerOnline = false; + private boolean playerOnline; private CraftPlayer owner; private int maxStack = MAX_STACK; public SpecialEnderChest(Player player, Boolean online) { super(PlayerDataManager.getHandle(player).getEnderChest().getName(), PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.owner = nmsPlayer.getBukkitEntity(); diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java index 4306769..ca45c7a 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -30,7 +30,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private final ItemStack[] extra = new ItemStack[5]; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 0be62b3..a6f2d41 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java index b2f3c43..57162f5 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java index bf22dc9..487e8c7 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java index 38bf6b9..58862d3 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -59,8 +59,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getName(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getName(); } @Override diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java index e7317cd..f5832ee 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -22,7 +22,7 @@ import net.minecraft.server.v1_5_R2.IInventory; import net.minecraft.server.v1_5_R2.ItemStack; import net.minecraft.server.v1_5_R2.PlayerInventory; -public class SilentContainerChest extends ContainerChest { +class SilentContainerChest extends ContainerChest { public SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java index 26c0285..375e0c4 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -42,7 +42,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); private final List transaction = new ArrayList(); - private boolean playerOnline = false; + private boolean playerOnline; private CraftPlayer owner; private int maxStack = MAX_STACK; @@ -50,6 +50,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento super(PlayerDataManager.getHandle(player).getEnderChest().getName(), PlayerDataManager.getHandle(player).getEnderChest().c(), PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.owner = nmsPlayer.getBukkitEntity(); diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java index b47eaf1..f599172 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -30,7 +30,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private final ItemStack[] extra = new ItemStack[5]; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 2e2ebeb..9f87949 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java index 02dc321..6a68365 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java index a58d68b..3177516 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java index 18b6be1..455cfb1 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -59,8 +59,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getName(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getName(); } @Override diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java index e0b217c..b80ed18 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -22,7 +22,7 @@ import net.minecraft.server.v1_5_R3.IInventory; import net.minecraft.server.v1_5_R3.ItemStack; import net.minecraft.server.v1_5_R3.PlayerInventory; -public class SilentContainerChest extends ContainerChest { public IInventory inv; +class SilentContainerChest extends ContainerChest { public SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java index 47ef32e..816e5b7 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -42,7 +42,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); private final List transaction = new ArrayList(); - private boolean playerOnline = false; + private boolean playerOnline; private CraftPlayer owner; private int maxStack = MAX_STACK; @@ -50,6 +50,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento super(PlayerDataManager.getHandle(player).getEnderChest().getName(), PlayerDataManager.getHandle(player).getEnderChest().c(), PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.owner = nmsPlayer.getBukkitEntity(); diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java index f212392..a0b44d0 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -30,7 +30,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private final ItemStack[] extra = new ItemStack[5]; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index aed0023..c933914 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java index 660fefd..81ab633 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java index 24c7ccd..11859fd 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java index b186ba3..fb7b230 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -59,8 +59,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getName(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getName(); } @Override diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java index e1ea429..56630e2 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -22,7 +22,7 @@ import net.minecraft.server.v1_6_R1.IInventory; import net.minecraft.server.v1_6_R1.ItemStack; import net.minecraft.server.v1_6_R1.PlayerInventory; -public class SilentContainerChest extends ContainerChest { +class SilentContainerChest extends ContainerChest { public SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java index a1051c8..10534d4 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -42,7 +42,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); private final List transaction = new ArrayList(); - private boolean playerOnline = false; + private boolean playerOnline; private CraftPlayer owner; private int maxStack = MAX_STACK; @@ -50,6 +50,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento super(PlayerDataManager.getHandle(player).getEnderChest().getName(), PlayerDataManager.getHandle(player).getEnderChest().c(), PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.owner = nmsPlayer.getBukkitEntity(); diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java index ef3cb03..7791a58 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -30,7 +30,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private final ItemStack[] extra = new ItemStack[5]; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 35af0a2..9015af3 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java index bd40860..fd40053 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java index 6dbaf56..24ea8a3 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java index f0f7b69..100f447 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -59,8 +59,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getName(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getName(); } @Override diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java index d86ca95..f128e6b 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -22,7 +22,7 @@ import net.minecraft.server.v1_6_R2.IInventory; import net.minecraft.server.v1_6_R2.ItemStack; import net.minecraft.server.v1_6_R2.PlayerInventory; -public class SilentContainerChest extends ContainerChest { +class SilentContainerChest extends ContainerChest { public SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java index 86ae0c0..d0810d0 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -42,7 +42,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); private final List transaction = new ArrayList(); - private boolean playerOnline = false; + private boolean playerOnline; private CraftPlayer owner; private int maxStack = MAX_STACK; @@ -50,6 +50,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento super(PlayerDataManager.getHandle(player).getEnderChest().getName(), PlayerDataManager.getHandle(player).getEnderChest().c(), PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.owner = nmsPlayer.getBukkitEntity(); diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java index f25c8cc..48a6909 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -30,7 +30,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private final ItemStack[] extra = new ItemStack[5]; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index b5ca6c5..481bf38 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java index d61e09c..580de75 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java index 1a41928..b11c4a0 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java index f930485..4843ab3 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -59,8 +59,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getName(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getName(); } @Override diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java index 19b20d6..9d6c56e 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -22,7 +22,7 @@ import net.minecraft.server.v1_6_R3.IInventory; import net.minecraft.server.v1_6_R3.ItemStack; import net.minecraft.server.v1_6_R3.PlayerInventory; -public class SilentContainerChest extends ContainerChest { +class SilentContainerChest extends ContainerChest { public SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java index 810fd72..a5dfeab 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -42,7 +42,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); private final List transaction = new ArrayList(); - private boolean playerOnline = false; + private boolean playerOnline; private CraftPlayer owner; private int maxStack = MAX_STACK; @@ -50,6 +50,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento super(PlayerDataManager.getHandle(player).getEnderChest().getName(), PlayerDataManager.getHandle(player).getEnderChest().c(), PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.owner = nmsPlayer.getBukkitEntity(); diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java index c6d4aac..a1d0702 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -30,7 +30,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private final ItemStack[] extra = new ItemStack[5]; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index df2b77b..2108d04 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java index f400239..3b31a04 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java index 056d132..8490c0c 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java index e063345..ca746d8 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -60,8 +60,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getName(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getName(); } @Override diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java index ea7861c..90bb62d 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -22,7 +22,7 @@ import net.minecraft.server.v1_7_R1.IInventory; import net.minecraft.server.v1_7_R1.ItemStack; import net.minecraft.server.v1_7_R1.PlayerInventory; -public class SilentContainerChest extends ContainerChest { +class SilentContainerChest extends ContainerChest { public SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java index 9ca3a5a..bfbb711 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -42,7 +42,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); private final List transaction = new ArrayList(); - private boolean playerOnline = false; + private boolean playerOnline; private CraftPlayer owner; private int maxStack = MAX_STACK; @@ -50,6 +50,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento super(PlayerDataManager.getHandle(player).getEnderChest().getInventoryName(), PlayerDataManager.getHandle(player).getEnderChest().k_(), PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.owner = nmsPlayer.getBukkitEntity(); diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java index 911d2fb..b16870f 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -30,7 +30,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private final ItemStack[] extra = new ItemStack[5]; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 9b9c3e9..a28d2bb 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java index d2f541c..622f2a2 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java index bb8464f..022379a 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java index d079981..cfe40d5 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -61,8 +61,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getName(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getName(); } @Override diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java index d6c943a..f04e1e3 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -22,7 +22,7 @@ import net.minecraft.server.v1_7_R2.IInventory; import net.minecraft.server.v1_7_R2.ItemStack; import net.minecraft.server.v1_7_R2.PlayerInventory; -public class SilentContainerChest extends ContainerChest { +class SilentContainerChest extends ContainerChest { public SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java index 1b12b80..4ee26f6 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -42,7 +42,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); private final List transaction = new ArrayList(); - private boolean playerOnline = false; + private boolean playerOnline; private CraftPlayer owner; private int maxStack = MAX_STACK; @@ -50,6 +50,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento super(((CraftPlayer) player).getHandle().getEnderChest().getInventoryName(), ((CraftPlayer) player).getHandle().getEnderChest().k_(), ((CraftPlayer) player).getHandle().getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.owner = nmsPlayer.getBukkitEntity(); diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java index f259f31..6302cb6 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -30,7 +30,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private final ItemStack[] extra = new ItemStack[5]; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 0548a7e..59a47c2 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java index 1675080..8d13937 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java index f62dbc4..bdce49a 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java index d8a7070..3fa9363 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -61,8 +61,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getUniqueId().toString(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getUniqueId().toString(); } @Override diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java index 3e89651..7397564 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -22,7 +22,7 @@ import net.minecraft.server.v1_7_R3.IInventory; import net.minecraft.server.v1_7_R3.ItemStack; import net.minecraft.server.v1_7_R3.PlayerInventory; -public class SilentContainerChest extends ContainerChest { +class SilentContainerChest extends ContainerChest { public SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java index 349fccb..0110821 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -42,7 +42,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); private final List transaction = new ArrayList(); - private boolean playerOnline = false; + private boolean playerOnline; private CraftPlayer owner; private int maxStack = MAX_STACK; @@ -50,6 +50,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento super(PlayerDataManager.getHandle(player).getEnderChest().getInventoryName(), PlayerDataManager.getHandle(player).getEnderChest().k_(), PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.owner = nmsPlayer.getBukkitEntity(); diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java index 5126447..18c1797 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -30,7 +30,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private final ItemStack[] extra = new ItemStack[5]; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 54d53aa..1f218d1 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java index 6323e5d..4a967c5 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java index 4f5e0c3..fd7c8e1 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java index 0b765ae..acddbdf 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -60,8 +60,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getUniqueId().toString(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getUniqueId().toString(); } @Override diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java index 1243cdd..0126208 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -22,7 +22,7 @@ import net.minecraft.server.v1_7_R4.IInventory; import net.minecraft.server.v1_7_R4.ItemStack; import net.minecraft.server.v1_7_R4.PlayerInventory; -public class SilentContainerChest extends ContainerChest { +class SilentContainerChest extends ContainerChest { public SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java index 7716d6a..78010da 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -41,8 +41,8 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); - public List transaction = new ArrayList(); - private boolean playerOnline = false; + private final List transaction = new ArrayList(); + private boolean playerOnline; private CraftPlayer owner; private int maxStack = MAX_STACK; @@ -50,6 +50,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento super(PlayerDataManager.getHandle(player).getEnderChest().getInventoryName(), PlayerDataManager.getHandle(player).getEnderChest().k_(), PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.owner = nmsPlayer.getBukkitEntity(); diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java index c4cadc8..b8925a3 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -30,7 +30,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private final ItemStack[] extra = new ItemStack[5]; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 19f8bd7..cc70d2f 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java index c579867..12009d1 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java @@ -1,13 +1,13 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2018 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. + * 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 + * 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 diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java index 6f39a6d..7597149 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java index 14b9fd4..a9ee9f8 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -61,8 +61,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getUniqueId().toString(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getUniqueId().toString(); } @Override diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java index b404385..9e28b7a 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -34,12 +34,13 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialEnderChest(Player player, Boolean online) { super(PlayerDataManager.getHandle(player).getEnderChest().getName(), PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.bukkitOwner = nmsPlayer.getBukkitEntity(); diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java index ad1911a..ce38472 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -30,7 +30,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private final ItemStack[] extra = new ItemStack[5]; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); @@ -224,4 +224,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return player.getName(); } + @Override + public boolean hasCustomName() { + return true; + } + } diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 8c46da0..385d775 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java index f6dae14..3e08935 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java @@ -1,13 +1,13 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2018 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. + * 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 + * 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 diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java index 7a11e0b..0c02956 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java index febbc68..a81b0cf 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -61,8 +61,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getUniqueId().toString(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getUniqueId().toString(); } @Override diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java index 278aa18..4c9f3b8 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -34,12 +34,13 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialEnderChest(Player player, Boolean online) { super(PlayerDataManager.getHandle(player).getEnderChest().getName(), PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.bukkitOwner = nmsPlayer.getBukkitEntity(); diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java index 0f4e596..cb12205 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -30,7 +30,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private final ItemStack[] extra = new ItemStack[5]; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); @@ -224,4 +224,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return player.getName(); } + @Override + public boolean hasCustomName() { + return true; + } + } diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index d2ed8bb..3be2f70 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java index 7310cf0..d252d7e 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java @@ -1,13 +1,13 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2018 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. + * 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 + * 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 diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java index 98c3357..5fe208d 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java index 76bcaf2..ee1b091 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -61,8 +61,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getUniqueId().toString(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getUniqueId().toString(); } @Override diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java index 1b4b8f4..3cabcd2 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -34,12 +34,13 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialEnderChest(Player player, Boolean online) { super(PlayerDataManager.getHandle(player).getEnderChest().getName(), PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.bukkitOwner = nmsPlayer.getBukkitEntity(); diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java index 8483a4c..c38d875 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -30,7 +30,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private final ItemStack[] extra = new ItemStack[5]; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); @@ -224,4 +224,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return player.getName(); } + @Override + public boolean hasCustomName() { + return true; + } + } diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index 69c3974..a7b7521 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java index 0c27d4c..6ac66fb 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java @@ -1,13 +1,13 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2018 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. + * 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 + * 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 diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java index 4cc1f93..991df8a 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java index b2e3988..43db944 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -61,8 +61,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getUniqueId().toString(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getUniqueId().toString(); } @Override diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java index ef2b09f..ee7d2dc 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -34,12 +34,13 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialEnderChest(Player player, Boolean online) { super(PlayerDataManager.getHandle(player).getEnderChest().getName(), PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.bukkitOwner = nmsPlayer.getBukkitEntity(); diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java index f86e4b2..1e3f8de 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -33,7 +33,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private final ItemStack[] extra = new ItemStack[4]; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); @@ -285,4 +285,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return player.getName(); } + @Override + public boolean hasCustomName() { + return true; + } + } diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index abc8f08..95a4671 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java index 42f6647..45f63c4 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java @@ -1,13 +1,13 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2018 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. + * 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 + * 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 diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java index fb2d2cc..14d0a01 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java index ff004f4..74199f3 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -61,8 +61,8 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override - public String getPlayerDataID(OfflinePlayer player) { - return player.getUniqueId().toString(); + public String getPlayerDataID(OfflinePlayer offline) { + return offline.getUniqueId().toString(); } @Override diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java index d95ea82..83bcec6 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -34,12 +34,13 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento private final InventoryEnderChest enderChest; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialEnderChest(Player player, Boolean online) { super(PlayerDataManager.getHandle(player).getEnderChest().getName(), PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), PlayerDataManager.getHandle(player).getEnderChest().getSize()); + this.playerOnline = online; EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.enderChest = nmsPlayer.getEnderChest(); this.bukkitOwner = nmsPlayer.getBukkitEntity(); diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java index b4e23de..ad146d4 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -27,14 +27,13 @@ import org.bukkit.inventory.Inventory; import net.minecraft.server.v1_9_R2.ItemStack; import net.minecraft.server.v1_9_R2.PlayerInventory; -import org.bukkit.craftbukkit.v1_9_R2.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { private final ItemStack[] extra = new ItemStack[4]; private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline = false; + private boolean playerOnline; public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); @@ -103,11 +102,6 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return !this.getViewers().isEmpty(); } - @Override - public void onClose(CraftHumanEntity who) { - super.onClose(who); - } - @Override public ItemStack[] getContents() { ItemStack[] contents = new ItemStack[getSize()]; @@ -291,4 +285,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return player.getName(); } + @Override + public boolean hasCustomName() { + return true; + } + } diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index d142fc7..ed7c357 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 @@ -40,4 +56,4 @@ - \ No newline at end of file + diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java index 02e05b1..c3ee807 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java @@ -1,13 +1,13 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2018 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. + * 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 + * 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 @@ -366,7 +366,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { Future future = Bukkit.getScheduler().callSyncMethod(this, new Callable() { @Override - public Player call() throws Exception { + public Player call() { return OpenInv.this.accessor.getPlayerDataManager().loadPlayer(offline); } }); diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java index d917e2d..ae132e8 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java @@ -1,13 +1,13 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2018 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. + * 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 + * 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 diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java index ec2e907..4239555 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -1,13 +1,13 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2018 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. + * 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 + * 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 @@ -56,7 +56,7 @@ public class OpenEnderPluginCommand implements CommandExecutor { // History management String history = this.openEnderHistory.get(player); - if (history == null || history == "") { + if (history == null || history.isEmpty()) { history = player.getName(); this.openEnderHistory.put(player, history); } diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java index 9aac909..ab62861 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -1,13 +1,13 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. + * Copyright (C) 2011-2018 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. + * 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 + * 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 @@ -56,7 +56,7 @@ public class OpenInvPluginCommand implements CommandExecutor { // History management String history = this.openInvHistory.get(player); - if (history == null || history == "") { + if (history == null || history.isEmpty()) { history = player.getName(); this.openInvHistory.put(player, history); } diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java index ec50990..522107b 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2011-2018 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.commands; import com.lishid.openinv.OpenInv; @@ -15,7 +31,7 @@ import org.bukkit.inventory.meta.ItemMeta; /** * Command adding the ability to search online players' inventories for enchantments of a specific * type at or above the level specified. - * + * * @author Jikoo */ public class SearchEnchantPluginCommand implements CommandExecutor { diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java index 2979593..267d1ad 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ @@ -41,8 +41,7 @@ public class SearchInvPluginCommand implements CommandExecutor { int count = 1; if (args.length >= 1) { - String[] gData = null; - gData = args[0].split(":"); + String[] gData = args[0].split(":"); material = Material.matchMaterial(gData[0]); } diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java index 3710f6e..1019234 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryClickListener.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryClickListener.java index f9b4fe7..63a4718 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryClickListener.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryClickListener.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryCloseListener.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryCloseListener.java index 73fe3eb..988a3d8 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryCloseListener.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryCloseListener.java @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2011-2018 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.listeners; import com.lishid.openinv.IOpenInv; diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PlayerListener.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PlayerListener.java index 984bbdc..b34914f 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PlayerListener.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PlayerListener.java @@ -1,15 +1,15 @@ /* - * Copyright (C) 2011-2014 lishid. All rights reserved. - * + * Copyright (C) 2011-2018 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. - * + * 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 + * 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 . */ diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PluginListener.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PluginListener.java index ea7dea8..158a434 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PluginListener.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PluginListener.java @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2011-2018 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.listeners; import com.lishid.openinv.OpenInv; @@ -8,7 +24,7 @@ import org.bukkit.event.server.PluginDisableEvent; /** * Listener for plugin-related events. - * + * * @author Jikoo */ public class PluginListener implements Listener { diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/util/ConfigUpdater.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/util/ConfigUpdater.java index 81d33cb..45aff2b 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/util/ConfigUpdater.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/util/ConfigUpdater.java @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2011-2018 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.util; import java.io.File; diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 2f257bc..41e2f2b 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 diff --git a/plugin/plugin-v1_10_R1/src/main/java/com/lishid/openinv/listeners/InventoryDragListener.java b/plugin/plugin-v1_10_R1/src/main/java/com/lishid/openinv/listeners/InventoryDragListener.java index 1b2f18a..520b762 100644 --- a/plugin/plugin-v1_10_R1/src/main/java/com/lishid/openinv/listeners/InventoryDragListener.java +++ b/plugin/plugin-v1_10_R1/src/main/java/com/lishid/openinv/listeners/InventoryDragListener.java @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2011-2018 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.listeners; import com.lishid.openinv.IOpenInv; @@ -12,7 +28,7 @@ import org.bukkit.inventory.Inventory; /** * Listener for InventoryDragEvents to prevent unpermitted modification of special inventories. - * + * * @author Jikoo */ public class InventoryDragListener implements Listener { diff --git a/plugin/pom.xml b/plugin/pom.xml index 10dd706..6344252 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -1,3 +1,19 @@ + + 4.0.0 @@ -18,4 +34,4 @@ plugin-core - \ No newline at end of file + diff --git a/pom.xml b/pom.xml index f0639a5..fad1666 100644 --- a/pom.xml +++ b/pom.xml @@ -1,4 +1,19 @@ - + + 4.0.0 @@ -26,7 +41,7 @@ @@ -107,4 +122,4 @@ - \ No newline at end of file + -- 2.49.1 From a8027692656da6646cf8b549e08b0643178455db Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 4 Feb 2018 10:35:35 -0500 Subject: [PATCH 125/253] Sneaky tabs, trying to slip in there. --- api/pom.xml | 2 +- .../java/com/lishid/openinv/IOpenInv.java | 48 +++++++++---------- .../openinv/internal/IAnySilentContainer.java | 14 +++--- .../openinv/internal/IInventoryAccess.java | 8 ++-- .../openinv/internal/ISpecialEnderChest.java | 8 ++-- .../internal/ISpecialPlayerInventory.java | 8 ++-- 6 files changed, 44 insertions(+), 44 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 1abe345..22846bd 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -15,7 +15,7 @@ --> + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 diff --git a/api/src/main/java/com/lishid/openinv/IOpenInv.java b/api/src/main/java/com/lishid/openinv/IOpenInv.java index 58f3369..d8b16c4 100644 --- a/api/src/main/java/com/lishid/openinv/IOpenInv.java +++ b/api/src/main/java/com/lishid/openinv/IOpenInv.java @@ -42,7 +42,7 @@ public interface IOpenInv { * * @return false unless configured otherwise */ - boolean disableSaving(); + boolean disableSaving(); /** * Gets the active ISilentContainer implementation. May return null if the server version is @@ -51,35 +51,35 @@ public interface IOpenInv { * @return the ISilentContainer * @throws IllegalStateException if the server version is unsupported */ - IAnySilentContainer getAnySilentContainer(); + IAnySilentContainer getAnySilentContainer(); /** * Gets an ISpecialEnderChest for the given Player. Returns null if the ISpecialEnderChest could * not be instantiated. * - * @deprecated Use {@link IOpenInv#getSpecialEnderChest(Player, boolean)} * @param player the Player * @param online true if the Player is currently online * @return the ISpecialEnderChest * @throws IllegalStateException if the server version is unsupported + * @deprecated Use {@link IOpenInv#getSpecialEnderChest(Player, boolean)} */ @Deprecated @Nullable - ISpecialEnderChest getEnderChest(Player player, boolean online); + ISpecialEnderChest getEnderChest(Player player, boolean online); /** * Gets an ISpecialPlayerInventory for the given Player. Returns null if the * ISpecialPlayerInventory could not be instantiated. * - * @deprecated Use {@link IOpenInv#getSpecialInventory(Player, boolean)} * @param player the Player * @param online true if the Player is currently online * @return the ISpecialPlayerInventory * @throws IllegalStateException if the server version is unsupported + * @deprecated Use {@link IOpenInv#getSpecialInventory(Player, boolean)} */ @Deprecated @Nullable - ISpecialPlayerInventory getInventory(Player player, boolean online); + ISpecialPlayerInventory getInventory(Player player, boolean online); /** * Gets the active IInventoryAccess implementation. May return null if the server version is @@ -88,7 +88,7 @@ public interface IOpenInv { * @return the IInventoryAccess * @throws IllegalStateException if the server version is unsupported */ - IInventoryAccess getInventoryAccess(); + IInventoryAccess getInventoryAccess(); /** * Gets the provided player's AnyChest setting. @@ -97,7 +97,7 @@ public interface IOpenInv { * @return true if AnyChest is enabled * @throws IllegalStateException if the server version is unsupported */ - boolean getPlayerAnyChestStatus(OfflinePlayer player); + boolean getPlayerAnyChestStatus(OfflinePlayer player); /** * Gets a unique identifier by which the OfflinePlayer can be referenced. Using the value @@ -107,7 +107,7 @@ public interface IOpenInv { * @return the identifier * @throws IllegalStateException if the server version is unsupported */ - String getPlayerID(OfflinePlayer offline); + String getPlayerID(OfflinePlayer offline); /** * Gets a player's SilentChest setting. @@ -116,7 +116,7 @@ public interface IOpenInv { * @return true if SilentChest is enabled * @throws IllegalStateException if the server version is unsupported */ - boolean getPlayerSilentChestStatus(OfflinePlayer player); + boolean getPlayerSilentChestStatus(OfflinePlayer player); /** * Gets an ISpecialEnderChest for the given Player. @@ -124,10 +124,10 @@ public interface IOpenInv { * @param player the Player * @param online true if the Player is currently online * @return the ISpecialEnderChest - * @throws IllegalStateException if the server version is unsupported + * @throws IllegalStateException if the server version is unsupported * @throws InstantiationException if the ISpecialEnderChest could not be instantiated */ - ISpecialEnderChest getSpecialEnderChest(Player player, boolean online) throws InstantiationException; + ISpecialEnderChest getSpecialEnderChest(Player player, boolean online) throws InstantiationException; /** * Gets an ISpecialPlayerInventory for the given Player. @@ -135,17 +135,17 @@ public interface IOpenInv { * @param player the Player * @param online true if the Player is currently online * @return the ISpecialPlayerInventory - * @throws IllegalStateException if the server version is unsupported + * @throws IllegalStateException if the server version is unsupported * @throws InstantiationException if the ISpecialPlayerInventory could not be instantiated */ - ISpecialPlayerInventory getSpecialInventory(Player player, boolean online) throws InstantiationException; + ISpecialPlayerInventory getSpecialInventory(Player player, boolean online) throws InstantiationException; /** * Checks if the server version is supported by OpenInv. * * @return true if the server version is supported */ - boolean isSupportedVersion(); + boolean isSupportedVersion(); /** * Load a Player from an OfflinePlayer. May return null under some circumstances. @@ -155,7 +155,7 @@ public interface IOpenInv { * @throws IllegalStateException if the server version is unsupported */ @Nullable - Player loadPlayer(final OfflinePlayer offline); + Player loadPlayer(final OfflinePlayer offline); /** * Get an OfflinePlayer by name. @@ -168,7 +168,7 @@ public interface IOpenInv { * @return the OfflinePlayer with the closest matching name or null if no players have ever logged in */ @Nullable - OfflinePlayer matchPlayer(String name); + OfflinePlayer matchPlayer(String name); /** * Check the configuration value for whether or not OpenInv displays a notification to the user @@ -176,7 +176,7 @@ public interface IOpenInv { * * @return true unless configured otherwise */ - boolean notifyAnyChest(); + boolean notifyAnyChest(); /** * Check the configuration value for whether or not OpenInv displays a notification to the user @@ -184,7 +184,7 @@ public interface IOpenInv { * * @return true unless configured otherwise */ - boolean notifySilentChest(); + boolean notifySilentChest(); /** * Mark a Player as no longer in use by a Plugin to allow OpenInv to remove it from the cache @@ -194,7 +194,7 @@ public interface IOpenInv { * @param plugin the Plugin no longer holding a reference to the Player * @throws IllegalStateException if the server version is unsupported */ - void releasePlayer(Player player, Plugin plugin); + void releasePlayer(Player player, Plugin plugin); /** * Mark a Player as in use by a Plugin to prevent it from being removed from the cache. Used to @@ -219,7 +219,7 @@ public interface IOpenInv { * @param plugin the Plugin holding the reference to the Player * @throws IllegalStateException if the server version is unsupported */ - void retainPlayer(Player player, Plugin plugin); + void retainPlayer(Player player, Plugin plugin); /** * Sets a player's AnyChest setting. @@ -228,7 +228,7 @@ public interface IOpenInv { * @param status the status * @throws IllegalStateException if the server version is unsupported */ - void setPlayerAnyChestStatus(OfflinePlayer player, boolean status); + void setPlayerAnyChestStatus(OfflinePlayer player, boolean status); /** * Sets a player's SilentChest setting. @@ -237,7 +237,7 @@ public interface IOpenInv { * @param status the status * @throws IllegalStateException if the server version is unsupported */ - void setPlayerSilentChestStatus(OfflinePlayer player, boolean status); + void setPlayerSilentChestStatus(OfflinePlayer player, boolean status); /** * Forcibly unload a cached Player's data. @@ -245,6 +245,6 @@ public interface IOpenInv { * @param player the OfflinePlayer to unload * @throws IllegalStateException if the server version is unsupported */ - void unload(OfflinePlayer player); + void unload(OfflinePlayer player); } diff --git a/api/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java b/api/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java index d5c0136..9361706 100644 --- a/api/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java +++ b/api/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java @@ -26,28 +26,28 @@ public interface IAnySilentContainer { * containers to open, be sure to check {@link #isAnyContainerNeeded(Player, Block)} * first. * - * @param player the Player opening the container + * @param player the Player opening the container * @param silentchest whether the container's noise is to be silenced - * @param block the Block + * @param block the Block * @return true if the container can be opened */ - boolean activateContainer(Player player, boolean silentchest, Block block); + boolean activateContainer(Player player, boolean silentchest, Block block); /** * Closes the Player's currently open container silently, if necessary. * * @param player the Player closing a container */ - void deactivateContainer(Player player); + void deactivateContainer(Player player); /** * Checks if the container at the given coordinates is blocked. * * @param player the Player opening the container - * @param block the Block + * @param block the Block * @return true if the container is blocked */ - boolean isAnyContainerNeeded(Player player, Block block); + boolean isAnyContainerNeeded(Player player, Block block); /** * Checks if the given block is a container which can be unblocked or silenced. @@ -55,6 +55,6 @@ public interface IAnySilentContainer { * @param block the BlockState * @return true if the Block is a supported container */ - boolean isAnySilentContainer(Block block); + boolean isAnySilentContainer(Block block); } diff --git a/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java b/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java index 98844f5..ceb4c5a 100644 --- a/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java +++ b/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java @@ -30,7 +30,7 @@ public interface IInventoryAccess { * @return the ISpecialEnderChest or null */ @Nullable - ISpecialEnderChest getSpecialEnderChest(Inventory inventory); + ISpecialEnderChest getSpecialEnderChest(Inventory inventory); /** * Gets an ISpecialPlayerInventory from an Inventory or null if the Inventory is not backed by @@ -40,7 +40,7 @@ public interface IInventoryAccess { * @return the ISpecialPlayerInventory or null */ @Nullable - ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory); + ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory); /** * Check if an Inventory is an ISpecialEnderChest implementation. @@ -48,7 +48,7 @@ public interface IInventoryAccess { * @param inventory the Inventory * @return true if the Inventory is backed by an ISpecialEnderChest */ - boolean isSpecialEnderChest(Inventory inventory); + boolean isSpecialEnderChest(Inventory inventory); /** * Check if an Inventory is an ISpecialPlayerInventory implementation. @@ -56,6 +56,6 @@ public interface IInventoryAccess { * @param inventory the Inventory * @return true if the Inventory is backed by an ISpecialPlayerInventory */ - boolean isSpecialPlayerInventory(Inventory inventory); + boolean isSpecialPlayerInventory(Inventory inventory); } diff --git a/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java b/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java index 12caa86..005f2d6 100644 --- a/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java +++ b/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java @@ -26,25 +26,25 @@ public interface ISpecialEnderChest { * * @return the Inventory */ - Inventory getBukkitInventory(); + Inventory getBukkitInventory(); /** * Sets the Player associated with this ISpecialEnderChest online. * * @param player the Player coming online */ - void setPlayerOnline(Player player); + void setPlayerOnline(Player player); /** * Sets the Player associated with this ISpecialEnderChest offline. */ - void setPlayerOffline(); + void setPlayerOffline(); /** * Gets whether or not this ISpecialEnderChest is in use. * * @return true if the ISpecialEnderChest is in use */ - boolean isInUse(); + boolean isInUse(); } diff --git a/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java b/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java index fbae50e..077c392 100644 --- a/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java +++ b/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java @@ -26,25 +26,25 @@ public interface ISpecialPlayerInventory { * * @return the Inventory */ - Inventory getBukkitInventory(); + Inventory getBukkitInventory(); /** * Sets the Player associated with this ISpecialPlayerInventory online. * * @param player the Player coming online */ - void setPlayerOnline(Player player); + void setPlayerOnline(Player player); /** * Sets the Player associated with this ISpecialPlayerInventory offline. */ - void setPlayerOffline(); + void setPlayerOffline(); /** * Gets whether or not this ISpecialPlayerInventory is in use. * * @return true if the ISpecialPlayerInventory is in use */ - boolean isInUse(); + boolean isInUse(); } -- 2.49.1 From 9e66885690721d655ba44eb65a09f6e75bea0e9a Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 7 Feb 2018 18:17:33 -0500 Subject: [PATCH 126/253] First load should not "update" nonexistent config, just use a default --- .../src/main/java/com/lishid/openinv/OpenInv.java | 7 +++++-- .../java/com/lishid/openinv/util/ConfigUpdater.java | 11 ++++------- plugin/plugin-core/src/main/resources/config.yml | 6 ++++++ 3 files changed, 15 insertions(+), 9 deletions(-) create mode 100644 plugin/plugin-core/src/main/resources/config.yml diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java index c3ee807..6c1975d 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java @@ -95,7 +95,8 @@ public class OpenInv extends JavaPlugin implements IOpenInv { // Check if inventory is stored, and if it is, remove it and eject all viewers if (OpenInv.this.inventories.containsKey(key)) { Inventory inv = OpenInv.this.inventories.remove(key).getBukkitInventory(); - for (HumanEntity entity : inv.getViewers()) { + List viewers = inv.getViewers(); + for (HumanEntity entity : viewers.toArray(new HumanEntity[viewers.size()])) { entity.closeInventory(); } } @@ -103,7 +104,8 @@ public class OpenInv extends JavaPlugin implements IOpenInv { // Check if ender chest is stored, and if it is, remove it and eject all viewers if (OpenInv.this.enderChests.containsKey(key)) { Inventory inv = OpenInv.this.enderChests.remove(key).getBukkitInventory(); - for (HumanEntity entity : inv.getViewers()) { + List viewers = inv.getViewers(); + for (HumanEntity entity : viewers.toArray(new HumanEntity[viewers.size()])) { entity.closeInventory(); } } @@ -517,6 +519,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return; } + this.saveDefaultConfig(); new ConfigUpdater(this).checkForUpdates(); // Register listeners diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/util/ConfigUpdater.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/util/ConfigUpdater.java index 45aff2b..f917699 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/util/ConfigUpdater.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/util/ConfigUpdater.java @@ -31,8 +31,6 @@ import org.bukkit.scheduler.BukkitRunnable; public class ConfigUpdater { - private static final int CONFIG_VERSION = 3; - private final OpenInv plugin; public ConfigUpdater(OpenInv plugin) { @@ -41,7 +39,7 @@ public class ConfigUpdater { public void checkForUpdates() { final int version = plugin.getConfig().getInt("config-version", 1); - if (version >= CONFIG_VERSION) { + if (version >= plugin.getConfig().getDefaults().getInt("config-version")) { return; } @@ -58,12 +56,11 @@ public class ConfigUpdater { new BukkitRunnable() { @Override public void run() { - switch (version) { - case 1: + if (version < 2) { updateConfig1To2(); - case 2: + } + if (version < 3) { updateConfig2To3(); - break; } new BukkitRunnable() { diff --git a/plugin/plugin-core/src/main/resources/config.yml b/plugin/plugin-core/src/main/resources/config.yml new file mode 100644 index 0000000..35f924c --- /dev/null +++ b/plugin/plugin-core/src/main/resources/config.yml @@ -0,0 +1,6 @@ +config-version: 3 +notify: + any-chest: true + silent-chest: true +settings: + disable-saving: false -- 2.49.1 From 669cfd72aa039a71b774be478b9c95b2cb116b02 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 7 Feb 2018 18:35:39 -0500 Subject: [PATCH 127/253] Bump version to 3.3.3 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 28 files changed, 52 insertions(+), 52 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 22846bd..4465570 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.3-SNAPSHOT + 3.3.3 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 7f8b81c..fd2ea5b 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.3-SNAPSHOT + 3.3.3 openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 912ac5a..d9a5541 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.3-SNAPSHOT + 3.3.3 openinvcommon @@ -38,7 +38,7 @@ com.lishid openinvapi - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index c00c0d1..e0843c6 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_4_5 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 666da4e..4d78caa 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_4_6 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/pom.xml b/internal/pom.xml index 1540b78..a2ebf1e 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 3.3.3-SNAPSHOT + 3.3.3 openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 63fcf89..7b8d1a5 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_10_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 4b29bf5..61d2245 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_11_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index ee4be3c..559221c 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_12_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 9524856..b4e1beb 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_4_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index a6f2d41..2e61856 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_5_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 9f87949..87e08c2 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_5_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index c933914..43933ac 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_6_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 9015af3..49720de 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_6_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 481bf38..d1abb48 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_6_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 2108d04..3fb9000 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_7_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index a28d2bb..c720149 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_7_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 59a47c2..0f412e8 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_7_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 1f218d1..74d1b71 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_7_R4 @@ -43,7 +43,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index cc70d2f..db73fcb 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_8_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 385d775..d056683 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_8_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 3be2f70..a5d139f 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index a7b7521..b139857 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_9_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index 95a4671..b4bdbf6 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3-SNAPSHOT + 3.3.3 openinvadapter1_9_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index ed7c357..623416f 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.3-SNAPSHOT + 3.3.3 openinvplugincore @@ -38,12 +38,12 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 com.lishid openinvpluginv1_10_r1 - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 41e2f2b..6d7d6a1 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.3-SNAPSHOT + 3.3.3 openinvpluginv1_10_r1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3-SNAPSHOT + 3.3.3 diff --git a/plugin/pom.xml b/plugin/pom.xml index 6344252..44f95a7 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.3-SNAPSHOT + 3.3.3 openinvplugin diff --git a/pom.xml b/pom.xml index fad1666..a68fb75 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.3.3-SNAPSHOT + 3.3.3 pom -- 2.49.1 From f5dce23f18f08e1a24670f46461569d7af184b3e Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 7 Feb 2018 18:36:15 -0500 Subject: [PATCH 128/253] Bump version to 3.3.4-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 28 files changed, 52 insertions(+), 52 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 4465570..e5f0cd0 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.3 + 3.3.4-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index fd2ea5b..bb9abb6 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.3 + 3.3.4-SNAPSHOT openinvassembly diff --git a/common/pom.xml b/common/pom.xml index d9a5541..4dcb0b6 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.3 + 3.3.4-SNAPSHOT openinvcommon @@ -38,7 +38,7 @@ com.lishid openinvapi - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index e0843c6..1b941f8 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_4_5 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 4d78caa..77c87ca 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_4_6 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/pom.xml b/internal/pom.xml index a2ebf1e..e3793bf 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 3.3.3 + 3.3.4-SNAPSHOT openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 7b8d1a5..2d918b1 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_10_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 61d2245..9e752c6 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_11_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index 559221c..ed3142f 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_12_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index b4e1beb..cec9ab6 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_4_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 2e61856..2181a64 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_5_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 87e08c2..9f2071e 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_5_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 43933ac..eda0987 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_6_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 49720de..bc51b0b 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_6_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index d1abb48..3c9dcdf 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_6_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 3fb9000..54b8e01 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_7_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index c720149..4c2e6a6 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_7_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 0f412e8..4aeafb2 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_7_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 74d1b71..c0a505d 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_7_R4 @@ -43,7 +43,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index db73fcb..0649838 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_8_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index d056683..4edfc44 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_8_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index a5d139f..1639426 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index b139857..a582b53 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_9_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index b4bdbf6..2b977b0 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.3 + 3.3.4-SNAPSHOT openinvadapter1_9_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index 623416f..a76c0ab 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.3 + 3.3.4-SNAPSHOT openinvplugincore @@ -38,12 +38,12 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT com.lishid openinvpluginv1_10_r1 - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 6d7d6a1..dc29f58 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.3 + 3.3.4-SNAPSHOT openinvpluginv1_10_r1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.3 + 3.3.4-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index 44f95a7..aaa983c 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.3 + 3.3.4-SNAPSHOT openinvplugin diff --git a/pom.xml b/pom.xml index a68fb75..8b69df5 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.3.3 + 3.3.4-SNAPSHOT pom -- 2.49.1 From 8ce6e2f8d3a61d4c0294bbaf0843effd73059f55 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sat, 26 May 2018 06:58:56 -0400 Subject: [PATCH 129/253] Reverse order of wildcard permission check, respect explicit values (#85) --- .../com/lishid/openinv/util/Permissions.java | 40 ++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/common/src/main/java/com/lishid/openinv/util/Permissions.java b/common/src/main/java/com/lishid/openinv/util/Permissions.java index 56a3038..ebb8998 100644 --- a/common/src/main/java/com/lishid/openinv/util/Permissions.java +++ b/common/src/main/java/com/lishid/openinv/util/Permissions.java @@ -25,9 +25,9 @@ public enum Permissions { EXEMPT("exempt"), CROSSWORLD("crossworld"), SILENT("silent"), - SILENT_DEFAULT("silent", "default"), + SILENT_DEFAULT("silent.default"), ANYCHEST("anychest"), - ANY_DEFAULT("any", "default"), + ANY_DEFAULT("any.default"), ENDERCHEST("openender"), ENDERCHEST_ALL("openenderall"), SEARCH("search"), @@ -35,31 +35,35 @@ public enum Permissions { EDITENDER("editender"), OPENSELF("openself"); - private final String[] permission; + private final String permission; - Permissions(String... permissions) { - this.permission = new String[permissions.length + 1]; - this.permission[0] = "OpenInv"; - System.arraycopy(permissions, 0, this.permission, 1, permissions.length); + Permissions(String permission) { + this.permission = "OpenInv." + permission; } public boolean hasPermission(Permissible permissible) { - StringBuilder permissionBuilder = new StringBuilder(); - // Support wildcard nodes. - for (int i = 0; i < permission.length; i++) { - if (permissible.hasPermission(permissionBuilder.toString() + "*")) { - return true; + boolean hasPermission = permissible.hasPermission(permission); + if (hasPermission || permissible.isPermissionSet(permission)) { + return hasPermission; + } + + StringBuilder permissionDestroyer = new StringBuilder(permission); + for (int lastPeriod = permissionDestroyer.lastIndexOf("."); lastPeriod > 0; + lastPeriod = permissionDestroyer.lastIndexOf(".")) { + permissionDestroyer.delete(lastPeriod + 1, permissionDestroyer.length()).append('*'); + + hasPermission = permissible.hasPermission(permissionDestroyer.toString()); + if (hasPermission || permissible.isPermissionSet(permissionDestroyer.toString())) { + return hasPermission; } - permissionBuilder.append(permission[i]).append('.'); + + permissionDestroyer.delete(lastPeriod, permissionDestroyer.length()); + } - // Delete trailing period. - if (permissionBuilder.length() > 0) { - permissionBuilder.deleteCharAt(permissionBuilder.length() - 1); - } + return permissible.hasPermission("*"); - return permissible.hasPermission(permissionBuilder.toString()); } } -- 2.49.1 From 077b34d304b3fffc51c469dea523a9c49e0ba420 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 15 Jul 2018 12:01:45 -0400 Subject: [PATCH 130/253] Support 1.13-pre7 --- internal/pom.xml | 3 +- internal/v1_13_R1/pom.xml | 57 ++++ .../internal/v1_13_R1/AnySilentContainer.java | 293 ++++++++++++++++++ .../internal/v1_13_R1/InventoryAccess.java | 80 +++++ .../internal/v1_13_R1/PlayerDataManager.java | 109 +++++++ .../internal/v1_13_R1/SpecialEnderChest.java | 99 ++++++ .../v1_13_R1/SpecialPlayerInventory.java | 258 +++++++++++++++ 7 files changed, 898 insertions(+), 1 deletion(-) create mode 100644 internal/v1_13_R1/pom.xml create mode 100644 internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java create mode 100644 internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/InventoryAccess.java create mode 100644 internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java create mode 100644 internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialEnderChest.java create mode 100644 internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialPlayerInventory.java diff --git a/internal/pom.xml b/internal/pom.xml index e3793bf..f84facc 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -41,8 +41,8 @@ recent - v1_11_R1 v1_12_R1 + v1_13_R1 @@ -71,6 +71,7 @@ v1_10_R1 v1_11_R1 v1_12_R1 + v1_13_R1 diff --git a/internal/v1_13_R1/pom.xml b/internal/v1_13_R1/pom.xml new file mode 100644 index 0000000..1ce8784 --- /dev/null +++ b/internal/v1_13_R1/pom.xml @@ -0,0 +1,57 @@ + + + + 4.0.0 + + + com.lishid + openinvinternal + 3.3.4-SNAPSHOT + + + openinvadapter1_13_R1 + OpenInvAdapter1_13_R1 + + + + org.spigotmc + spigot + 1.13-pre7-R0.1-SNAPSHOT + provided + + + com.lishid + openinvcommon + 3.3.4-SNAPSHOT + + + + + + + maven-compiler-plugin + 3.6.1 + + 1.8 + 1.8 + + + + + + diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java new file mode 100644 index 0000000..f4681f1 --- /dev/null +++ b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java @@ -0,0 +1,293 @@ +/* + * Copyright (C) 2011-2018 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_13_R1; + +import java.lang.reflect.Field; + +import com.lishid.openinv.internal.IAnySilentContainer; + +import net.minecraft.server.v1_13_R1.BlockChestTrapped; +import net.minecraft.server.v1_13_R1.ChatMessage; +import net.minecraft.server.v1_13_R1.VoxelShapes; +import org.bukkit.Material; +import org.bukkit.Statistic; +import org.bukkit.block.BlockState; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; + +import net.minecraft.server.v1_13_R1.AxisAlignedBB; +import net.minecraft.server.v1_13_R1.Block; +import net.minecraft.server.v1_13_R1.BlockChest; +import net.minecraft.server.v1_13_R1.BlockEnderChest; +import net.minecraft.server.v1_13_R1.BlockPosition; +import net.minecraft.server.v1_13_R1.BlockShulkerBox; +import net.minecraft.server.v1_13_R1.Entity; +import net.minecraft.server.v1_13_R1.EntityOcelot; +import net.minecraft.server.v1_13_R1.EntityPlayer; +import net.minecraft.server.v1_13_R1.EnumDirection; +import net.minecraft.server.v1_13_R1.EnumGamemode; +import net.minecraft.server.v1_13_R1.IBlockData; +import net.minecraft.server.v1_13_R1.ITileInventory; +import net.minecraft.server.v1_13_R1.InventoryEnderChest; +import net.minecraft.server.v1_13_R1.InventoryLargeChest; +import net.minecraft.server.v1_13_R1.PlayerInteractManager; +import net.minecraft.server.v1_13_R1.TileEntity; +import net.minecraft.server.v1_13_R1.TileEntityChest; +import net.minecraft.server.v1_13_R1.TileEntityEnderChest; +import net.minecraft.server.v1_13_R1.TileEntityShulkerBox; +import net.minecraft.server.v1_13_R1.World; + +public class AnySilentContainer implements IAnySilentContainer { + + private Field playerInteractManagerGamemode; + + public AnySilentContainer() { + try { + this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); + this.playerInteractManagerGamemode.setAccessible(true); + } catch (NoSuchFieldException | SecurityException e) { + System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); + e.printStackTrace(); + } + } + + @Override + public boolean isAnySilentContainer(final org.bukkit.block.Block block) { + if (block.getType() == Material.ENDER_CHEST) { + return true; + } + BlockState state = block.getState(); + return state instanceof org.bukkit.block.Chest + || state instanceof org.bukkit.block.ShulkerBox; + } + + @Override + public boolean isAnyContainerNeeded(final Player p, final org.bukkit.block.Block b) { + EntityPlayer player = com.lishid.openinv.internal.v1_13_R1.PlayerDataManager.getHandle(p); + World world = player.world; + BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + IBlockData blockData = world.getType(blockPosition); + Block block = blockData.getBlock(); + + if (block instanceof BlockShulkerBox) { + return this.isBlockedShulkerBox(world, blockPosition, blockData); + } + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.getType(blockPosition.up()).isOccluding(); + } + + // Check if chest is blocked or has an ocelot on top + if (this.isBlockedChest(world, blockPosition)) { + return true; + } + + // Check for matching adjacent chests that are blocked or have an ocelot on top + for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if (this.isBlockedChest(world, localBlockPosition)) { + return true; + } + } + + return false; + } + + private boolean isBlockedShulkerBox(final World world, final BlockPosition blockPosition, + final IBlockData blockData) { + // For reference, look at net.minecraft.server.BlockShulkerBox + TileEntity tile = world.getTileEntity(blockPosition); + + if (!(tile instanceof TileEntityShulkerBox)) { + return false; + } + + EnumDirection enumDirection = blockData.get(BlockShulkerBox.a); + if (((TileEntityShulkerBox) tile).r() == TileEntityShulkerBox.AnimationPhase.CLOSED) { + AxisAlignedBB axisAlignedBB = VoxelShapes.b().a() + .b(0.5F * enumDirection.getAdjacentX(), 0.5F * enumDirection.getAdjacentY(), 0.5F * enumDirection.getAdjacentZ()) + .a(enumDirection.getAdjacentX(), enumDirection.getAdjacentY(), enumDirection.getAdjacentZ()); + return !world.getCubes(null, axisAlignedBB.a(blockPosition.shift(enumDirection))); + } + + return false; + } + + private boolean isBlockedChest(final World world, final BlockPosition blockPosition) { + // For reference, loot at net.minecraft.server.BlockChest + return world.getType(blockPosition.up()).isOccluding() || this.hasOcelotOnTop(world, blockPosition); + } + + private boolean hasOcelotOnTop(final World world, final BlockPosition blockPosition) { + for (Entity entity : world.a(EntityOcelot.class, + new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, + blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, + blockPosition.getZ() + 1))) { + EntityOcelot entityOcelot = (EntityOcelot) entity; + if (entityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(final Player bukkitPlayer, final boolean silentchest, + final org.bukkit.block.Block bukkitBlock) { + + // Silent ender chest is API-only + if (silentchest && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); + bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); + return true; + } + + EntityPlayer player = com.lishid.openinv.internal.v1_13_R1.PlayerDataManager.getHandle(bukkitPlayer); + + final World world = player.world; + final BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); + final Object tile = world.getTileEntity(blockPosition); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); + return true; + } + + if (!(tile instanceof ITileInventory)) { + return false; + } + + ITileInventory tileInventory = (ITileInventory) tile; + Block block = world.getType(blockPosition).getBlock(); + + if (block instanceof BlockChest) { + for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { + BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); + Block localBlock = world.getType(localBlockPosition).getBlock(); + + if (localBlock != block) { + continue; + } + + TileEntity localTileEntity = world.getTileEntity(localBlockPosition); + if (!(localTileEntity instanceof TileEntityChest)) { + continue; + } + + if (localEnumDirection == EnumDirection.WEST + || localEnumDirection == EnumDirection.NORTH) { + tileInventory = new InventoryLargeChest(new ChatMessage("container.chestDouble"), + (TileEntityChest) localTileEntity, tileInventory); + } else { + tileInventory = new InventoryLargeChest(new ChatMessage("container.chestDouble"), + tileInventory, (TileEntityChest) localTileEntity); + } + break; + } + + if (block instanceof BlockChestTrapped) { + bukkitPlayer.incrementStatistic(Statistic.TRAPPED_CHEST_TRIGGERED); + } else { + bukkitPlayer.incrementStatistic(Statistic.CHEST_OPENED); + } + } + + if (block instanceof BlockShulkerBox) { + bukkitPlayer.incrementStatistic(Statistic.SHULKER_BOX_OPENED); + } + + // AnyChest only - SilentChest not active, container unsupported, or unnecessary. + if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { + player.openContainer(tileInventory); + return true; + } + + // SilentChest requires access to setting players' gamemode directly. + if (this.playerInteractManagerGamemode == null) { + return false; + } + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.openContainer(tileInventory); + this.forceGameMode(player, gamemode); + return true; + } + + @Override + public void deactivateContainer(final Player bukkitPlayer) { + if (this.playerInteractManagerGamemode == null) { + return; + } + + InventoryView view = bukkitPlayer.getOpenInventory(); + switch (view.getType()) { + case CHEST: + case ENDER_CHEST: + case SHULKER_BOX: + break; + default: + return; + } + + EntityPlayer player = com.lishid.openinv.internal.v1_13_R1.PlayerDataManager.getHandle(bukkitPlayer); + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.activeContainer.b(player); + player.activeContainer = player.defaultContainer; + this.forceGameMode(player, gamemode); + } + + private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { + if (this.playerInteractManagerGamemode == null) { + // No need to warn repeatedly, error on startup and lack of function should be enough. + return; + } + try { + if (!this.playerInteractManagerGamemode.isAccessible()) { + // Just in case, ensure accessible. + this.playerInteractManagerGamemode.setAccessible(true); + } + this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); + } catch (IllegalArgumentException | IllegalAccessException e) { + e.printStackTrace(); + } + } + +} diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/InventoryAccess.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/InventoryAccess.java new file mode 100644 index 0000000..fc5acc7 --- /dev/null +++ b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/InventoryAccess.java @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2011-2018 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_13_R1; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.util.InternalAccessor; + +import org.bukkit.inventory.Inventory; + +import net.minecraft.server.v1_13_R1.IInventory; + +import org.bukkit.craftbukkit.v1_13_R1.inventory.CraftInventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public ISpecialEnderChest getSpecialEnderChest(final Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof com.lishid.openinv.internal.v1_13_R1.SpecialEnderChest) { + return (com.lishid.openinv.internal.v1_13_R1.SpecialEnderChest) inv; + } + return null; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(final Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof com.lishid.openinv.internal.v1_13_R1.SpecialPlayerInventory) { + return (com.lishid.openinv.internal.v1_13_R1.SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(final Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, + inventory) instanceof ISpecialEnderChest; + } + + @Override + public boolean isSpecialPlayerInventory(final Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, + inventory) instanceof ISpecialPlayerInventory; + } + +} diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java new file mode 100644 index 0000000..079a3ff --- /dev/null +++ b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2011-2018 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_13_R1; + +import java.util.Collection; +import java.util.UUID; + +import com.lishid.openinv.internal.IPlayerDataManager; + +import com.mojang.authlib.GameProfile; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; +import org.bukkit.entity.Player; + +import net.minecraft.server.v1_13_R1.EntityPlayer; +import net.minecraft.server.v1_13_R1.MinecraftServer; +import net.minecraft.server.v1_13_R1.PlayerInteractManager; + +import org.bukkit.craftbukkit.v1_13_R1.CraftServer; +import org.bukkit.craftbukkit.v1_13_R1.entity.CraftPlayer; + +public class PlayerDataManager implements IPlayerDataManager { + + public static EntityPlayer getHandle(final Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + + @Override + public Collection getOnlinePlayers() { + return Bukkit.getOnlinePlayers(); + } + + @Override + public OfflinePlayer getPlayerByID(final String identifier) { + try { + UUID uuid = UUID.fromString(identifier); + OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } catch (IllegalArgumentException e) { + // Not a UUID + return null; + } + } + + @Override + public String getPlayerDataID(final OfflinePlayer offline) { + return offline.getUniqueId().toString(); + } + + @Override + public Player loadPlayer(final OfflinePlayer offline) { + // Ensure player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + // Create a profile and entity to load the player data + GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + 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; + } + +} diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialEnderChest.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialEnderChest.java new file mode 100644 index 0000000..7d3e41e --- /dev/null +++ b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialEnderChest.java @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2011-2018 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_13_R1; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.List; + +import com.lishid.openinv.internal.ISpecialEnderChest; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +import net.minecraft.server.v1_13_R1.EntityPlayer; +import net.minecraft.server.v1_13_R1.IInventory; +import net.minecraft.server.v1_13_R1.InventoryEnderChest; +import net.minecraft.server.v1_13_R1.InventorySubcontainer; +import net.minecraft.server.v1_13_R1.ItemStack; + +import org.bukkit.craftbukkit.v1_13_R1.inventory.CraftInventory; + +public class SpecialEnderChest extends InventorySubcontainer + implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline; + + public SpecialEnderChest(final Player player, final Boolean online) { + super(PlayerDataManager.getHandle(player).getEnderChest().getDisplayName(), + PlayerDataManager.getHandle(player).getEnderChest().getSize(), player); + this.playerOnline = online; + this.enderChest = PlayerDataManager.getHandle(player).getEnderChest(); + this.setItemLists(this, this.enderChest.getContents()); + } + + @Override + public Inventory getBukkitInventory() { + return this.inventory; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + private void setItemLists(final InventorySubcontainer subcontainer, final List list) { + try { + // Prepare to remove final modifier + Field modifiers = Field.class.getDeclaredField("modifiers"); + modifiers.setAccessible(true); + // Access and replace main inventory array + Field field = InventorySubcontainer.class.getField("items"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(subcontainer, list); + } catch (NoSuchFieldException | SecurityException | IllegalArgumentException + | IllegalAccessException e) { + e.printStackTrace(); + } + } + + @Override + public void setPlayerOffline() { + this.playerOnline = false; + } + + @Override + public void setPlayerOnline(final Player player) { + if (!this.playerOnline) { + try { + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.bukkitOwner = nmsPlayer.getBukkitEntity(); + this.setItemLists(nmsPlayer.getEnderChest(), this.items); + } catch (Exception e) {} + this.playerOnline = true; + } + } + + @Override + public void update() { + super.update(); + this.enderChest.update(); + } + +} diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialPlayerInventory.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialPlayerInventory.java new file mode 100644 index 0000000..5857f0b --- /dev/null +++ b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialPlayerInventory.java @@ -0,0 +1,258 @@ +/* + * Copyright (C) 2011-2018 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_13_R1; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.Arrays; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; + +import net.minecraft.server.v1_13_R1.ChatMessage; +import net.minecraft.server.v1_13_R1.IChatBaseComponent; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +import net.minecraft.server.v1_13_R1.ContainerUtil; +import net.minecraft.server.v1_13_R1.EntityHuman; +import net.minecraft.server.v1_13_R1.ItemStack; +import net.minecraft.server.v1_13_R1.NonNullList; +import net.minecraft.server.v1_13_R1.PlayerInventory; + +import org.bukkit.craftbukkit.v1_13_R1.inventory.CraftInventory; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline; + + public SpecialPlayerInventory(final Player bukkitPlayer, final Boolean online) { + super(PlayerDataManager.getHandle(bukkitPlayer)); + this.playerOnline = online; + this.setItemArrays(this, this.player.inventory.items, this.player.inventory.armor, + this.player.inventory.extraSlots); + } + + @Override + public boolean a(final EntityHuman entityhuman) { + return true; + } + + @Override + public Inventory getBukkitInventory() { + return this.inventory; + } + + @Override + public ItemStack getItem(int i) { + NonNullList list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + return list.get(i); + } + + @Override + public IChatBaseComponent getDisplayName() { + return new ChatMessage(this.player.getName()); + } + + @Override + public boolean hasCustomName() { + return true; + } + + private int getReversedArmorSlotNum(final int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + private int getReversedItemSlotNum(final int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + @Override + public int getSize() { + return super.getSize() + 4; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public void setItem(int i, final ItemStack itemstack) { + NonNullList list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + this.player.drop(itemstack, true); + return; + } + + list.set(i, itemstack); + } + + private void setItemArrays(final PlayerInventory inventory, final NonNullList items, + final NonNullList armor, final NonNullList extraSlots) { + try { + // Prepare to remove final modifier + Field modifiers = Field.class.getDeclaredField("modifiers"); + modifiers.setAccessible(true); + + // Access and replace main inventory list + Field field = PlayerInventory.class.getField("items"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, items); + + // Access and replace armor inventory list + field = PlayerInventory.class.getField("armor"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, armor); + + // Access and replace offhand inventory list + field = PlayerInventory.class.getField("extraSlots"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, extraSlots); + + // Access and replace list containing all inventory lists + field = PlayerInventory.class.getDeclaredField("f"); + field.setAccessible(true); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, Arrays.asList(items, armor, extraSlots)); + } catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) { + // Unable to set final fields to item lists, we're screwed. Noisily fail. + e.printStackTrace(); + } + } + + @Override + public void setPlayerOffline() { + this.playerOnline = false; + } + + @Override + public void setPlayerOnline(final Player player) { + if (!this.playerOnline) { + this.player = PlayerDataManager.getHandle(player); + this.setItemArrays(this.player.inventory, this.items, this.armor, this.extraSlots); + this.playerOnline = true; + } + } + + @Override + public ItemStack splitStack(int i, final int j) { + NonNullList list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + return list.get(i).isEmpty() ? ItemStack.a : ContainerUtil.a(list, i, j); + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + NonNullList list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + if (!list.get(i).isEmpty()) { + ItemStack itemstack = list.get(i); + + list.set(i, ItemStack.a); + return itemstack; + } + + return ItemStack.a; + } + +} -- 2.49.1 From 60dcb64558b90132c1815d1d06de7dbf257ad622 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 15 Jul 2018 12:05:52 -0400 Subject: [PATCH 131/253] Bump version for alpha release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_13_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 29 files changed, 54 insertions(+), 54 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index e5f0cd0..d12f1ee 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index bb9abb6..1c4f633 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 4dcb0b6..35face4 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvcommon @@ -38,7 +38,7 @@ com.lishid openinvapi - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 1b941f8..155cc14 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_4_5 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 77c87ca..2789440 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_4_6 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/pom.xml b/internal/pom.xml index f84facc..010a9e8 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 2d918b1..00b83d7 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_10_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 9e752c6..90a10e0 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_11_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index ed3142f..f9edc95 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_12_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/v1_13_R1/pom.xml b/internal/v1_13_R1/pom.xml index 1ce8784..923b822 100644 --- a/internal/v1_13_R1/pom.xml +++ b/internal/v1_13_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_13_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index cec9ab6..4b1dfb3 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_4_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 2181a64..10182ca 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_5_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 9f2071e..4af0763 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_5_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index eda0987..8177819 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_6_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index bc51b0b..1b680d6 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_6_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 3c9dcdf..e44e79f 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_6_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 54b8e01..6789ab5 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_7_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 4c2e6a6..6452a86 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_7_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 4aeafb2..292b949 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_7_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index c0a505d..971b6c8 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_7_R4 @@ -43,7 +43,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 0649838..5c0f627 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_8_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 4edfc44..f904739 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_8_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 1639426..72d1374 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index a582b53..b0755bf 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_9_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index 2b977b0..cb496f4 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvadapter1_9_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index a76c0ab..a014a58 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvplugincore @@ -38,12 +38,12 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 com.lishid openinvpluginv1_10_r1 - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index dc29f58..49df53f 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvpluginv1_10_r1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-SNAPSHOT + 3.3.4-A1 diff --git a/plugin/pom.xml b/plugin/pom.xml index aaa983c..aba75da 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.4-SNAPSHOT + 3.3.4-A1 openinvplugin diff --git a/pom.xml b/pom.xml index 8b69df5..b2adaed 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.3.4-SNAPSHOT + 3.3.4-A1 pom -- 2.49.1 From 165f3fb00e73a1cc423caca333e499d77e8aee77 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 22 Jul 2018 09:44:27 -0400 Subject: [PATCH 132/253] Bump version to 3.3.4 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_13_R1/pom.xml | 6 +++--- .../lishid/openinv/internal/v1_13_R1/PlayerDataManager.java | 2 +- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 30 files changed, 56 insertions(+), 56 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index d12f1ee..bdfde51 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.4-A1 + 3.3.4 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 1c4f633..40916ae 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.4-A1 + 3.3.4 openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 35face4..f249c1c 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.4-A1 + 3.3.4 openinvcommon @@ -38,7 +38,7 @@ com.lishid openinvapi - 3.3.4-A1 + 3.3.4 diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 155cc14..6d6774c 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_4_5 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 2789440..528affe 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_4_6 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/pom.xml b/internal/pom.xml index 010a9e8..aa3f4a6 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 3.3.4-A1 + 3.3.4 openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 00b83d7..b6753d4 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_10_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 90a10e0..3877c19 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_11_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index f9edc95..34f0fb9 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_12_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/v1_13_R1/pom.xml b/internal/v1_13_R1/pom.xml index 923b822..7fae102 100644 --- a/internal/v1_13_R1/pom.xml +++ b/internal/v1_13_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_13_R1 @@ -31,13 +31,13 @@ org.spigotmc spigot - 1.13-pre7-R0.1-SNAPSHOT + 1.13-R0.1-SNAPSHOT provided com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java index 079a3ff..73db1d0 100644 --- a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java +++ b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java @@ -97,7 +97,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = entity == null ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 4b1dfb3..4e51c6f 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_4_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 10182ca..a80d269 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_5_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 4af0763..6907d6a 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_5_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 8177819..4a9cc52 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_6_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 1b680d6..ea30c2d 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_6_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index e44e79f..2dc9fe7 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_6_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 6789ab5..f874325 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_7_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 6452a86..34f6643 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_7_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 292b949..962a21a 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_7_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 971b6c8..0cdb9bf 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_7_R4 @@ -43,7 +43,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 5c0f627..ee5014d 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_8_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index f904739..de80076 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_8_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 72d1374..64e72a5 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index b0755bf..0f75dd8 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_9_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index cb496f4..04803e7 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4-A1 + 3.3.4 openinvadapter1_9_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index a014a58..7460753 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.4-A1 + 3.3.4 openinvplugincore @@ -38,12 +38,12 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 com.lishid openinvpluginv1_10_r1 - 3.3.4-A1 + 3.3.4 diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 49df53f..aef37bb 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.4-A1 + 3.3.4 openinvpluginv1_10_r1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4-A1 + 3.3.4 diff --git a/plugin/pom.xml b/plugin/pom.xml index aba75da..10a71c5 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.4-A1 + 3.3.4 openinvplugin diff --git a/pom.xml b/pom.xml index b2adaed..98e67ff 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.3.4-A1 + 3.3.4 pom -- 2.49.1 From 27812c133db6f10e26efa4b4745bc4e826bbdce2 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 22 Jul 2018 09:45:01 -0400 Subject: [PATCH 133/253] Bump version to 3.3.5-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_13_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 29 files changed, 54 insertions(+), 54 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index bdfde51..10047f5 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.4 + 3.3.5-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 40916ae..df98a57 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.4 + 3.3.5-SNAPSHOT openinvassembly diff --git a/common/pom.xml b/common/pom.xml index f249c1c..846644a 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.4 + 3.3.5-SNAPSHOT openinvcommon @@ -38,7 +38,7 @@ com.lishid openinvapi - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 6d6774c..6584484 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_4_5 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 528affe..ea74f1e 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_4_6 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/pom.xml b/internal/pom.xml index aa3f4a6..7a30e00 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 3.3.4 + 3.3.5-SNAPSHOT openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index b6753d4..0149d10 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_10_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 3877c19..ea69370 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_11_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index 34f0fb9..a09d4a8 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_12_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/v1_13_R1/pom.xml b/internal/v1_13_R1/pom.xml index 7fae102..57c79c2 100644 --- a/internal/v1_13_R1/pom.xml +++ b/internal/v1_13_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_13_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 4e51c6f..585893f 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_4_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index a80d269..5b828fa 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_5_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 6907d6a..db8acdd 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_5_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 4a9cc52..134f82b 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_6_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index ea30c2d..c8de54b 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_6_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 2dc9fe7..9b802c0 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_6_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index f874325..7ca10d8 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_7_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 34f6643..54a3086 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_7_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 962a21a..e9caa8f 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_7_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 0cdb9bf..ec36df8 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_7_R4 @@ -43,7 +43,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index ee5014d..91a5d2f 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_8_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index de80076..22b19a4 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_8_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 64e72a5..21c668f 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index 0f75dd8..bbc1e61 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_9_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index 04803e7..bab9ed2 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.4 + 3.3.5-SNAPSHOT openinvadapter1_9_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index 7460753..7e2b427 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.4 + 3.3.5-SNAPSHOT openinvplugincore @@ -38,12 +38,12 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT com.lishid openinvpluginv1_10_r1 - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index aef37bb..9f147c7 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.4 + 3.3.5-SNAPSHOT openinvpluginv1_10_r1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.4 + 3.3.5-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index 10a71c5..60d96ed 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.4 + 3.3.5-SNAPSHOT openinvplugin diff --git a/pom.xml b/pom.xml index 98e67ff..e879261 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.3.4 + 3.3.5-SNAPSHOT pom -- 2.49.1 From 59a8ed70bbc6043b49dd7c55cf0696126d3e1891 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Thu, 9 Aug 2018 18:50:24 -0400 Subject: [PATCH 134/253] Correct double chest logic for Silent/AnyContainer in 1.13 --- .../internal/v1_13_R1/AnySilentContainer.java | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java index f4681f1..9d56ffa 100644 --- a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java +++ b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java @@ -21,6 +21,7 @@ import java.lang.reflect.Field; import com.lishid.openinv.internal.IAnySilentContainer; import net.minecraft.server.v1_13_R1.BlockChestTrapped; +import net.minecraft.server.v1_13_R1.BlockPropertyChestType; import net.minecraft.server.v1_13_R1.ChatMessage; import net.minecraft.server.v1_13_R1.VoxelShapes; import org.bukkit.Material; @@ -193,31 +194,34 @@ public class AnySilentContainer implements IAnySilentContainer { } ITileInventory tileInventory = (ITileInventory) tile; - Block block = world.getType(blockPosition).getBlock(); + IBlockData blockData = world.getType(blockPosition); + Block block = blockData.getBlock(); if (block instanceof BlockChest) { - for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); - if (localBlock != block) { - continue; - } + BlockPropertyChestType chestType = blockData.get(BlockChest.b); - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } + if (chestType != BlockPropertyChestType.SINGLE) { - if (localEnumDirection == EnumDirection.WEST - || localEnumDirection == EnumDirection.NORTH) { - tileInventory = new InventoryLargeChest(new ChatMessage("container.chestDouble"), - (TileEntityChest) localTileEntity, tileInventory); - } else { - tileInventory = new InventoryLargeChest(new ChatMessage("container.chestDouble"), - tileInventory, (TileEntityChest) localTileEntity); + BlockPosition adjacentBlockPosition = blockPosition.shift(BlockChest.k(blockData)); + IBlockData adjacentBlockData = world.getType(adjacentBlockPosition); + + if (adjacentBlockData.getBlock() == block) { + + BlockPropertyChestType adjacentChestType = adjacentBlockData.get(BlockChest.b); + + if (adjacentChestType != BlockPropertyChestType.SINGLE && chestType != adjacentChestType + && adjacentBlockData.get(BlockChest.FACING) == blockData.get(BlockChest.FACING)) { + + TileEntity adjacentTile = world.getTileEntity(adjacentBlockPosition); + + if (adjacentTile instanceof TileEntityChest) { + ITileInventory rightChest = chestType == BlockPropertyChestType.RIGHT ? tileInventory : (ITileInventory) adjacentTile; + ITileInventory leftChest = chestType == BlockPropertyChestType.RIGHT ? (ITileInventory) adjacentTile : tileInventory; + tileInventory = new InventoryLargeChest(new ChatMessage("container.chestDouble"), rightChest, leftChest); + } + } } - break; } if (block instanceof BlockChestTrapped) { -- 2.49.1 From 582c7201dd18fb4cb90954c436de7dda0eb09d3d Mon Sep 17 00:00:00 2001 From: Jikoo Date: Mon, 13 Aug 2018 21:31:17 -0400 Subject: [PATCH 135/253] Bump version to 3.3.5 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_13_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 29 files changed, 54 insertions(+), 54 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 10047f5..cc7207d 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.5-SNAPSHOT + 3.3.5 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index df98a57..9691200 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.5-SNAPSHOT + 3.3.5 openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 846644a..fd549c4 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.5-SNAPSHOT + 3.3.5 openinvcommon @@ -38,7 +38,7 @@ com.lishid openinvapi - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 6584484..368b528 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_4_5 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index ea74f1e..e21dbdc 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_4_6 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/pom.xml b/internal/pom.xml index 7a30e00..eeab584 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 3.3.5-SNAPSHOT + 3.3.5 openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 0149d10..3a881df 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_10_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index ea69370..9860643 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_11_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index a09d4a8..fac0e99 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_12_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/v1_13_R1/pom.xml b/internal/v1_13_R1/pom.xml index 57c79c2..69a9e58 100644 --- a/internal/v1_13_R1/pom.xml +++ b/internal/v1_13_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_13_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 585893f..1191bac 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_4_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 5b828fa..5972ebb 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_5_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index db8acdd..d173b81 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_5_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 134f82b..bfdaaca 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_6_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index c8de54b..8a40992 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_6_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 9b802c0..f4d728a 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_6_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 7ca10d8..01f11ef 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_7_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 54a3086..d8872e6 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_7_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index e9caa8f..b26c062 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_7_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index ec36df8..c316d58 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_7_R4 @@ -43,7 +43,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 91a5d2f..3ab3ea0 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_8_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 22b19a4..6872117 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_8_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 21c668f..261b60f 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index bbc1e61..e248601 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_9_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index bab9ed2..7c5ea37 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5-SNAPSHOT + 3.3.5 openinvadapter1_9_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index 7e2b427..dff1f1e 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.5-SNAPSHOT + 3.3.5 openinvplugincore @@ -38,12 +38,12 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 com.lishid openinvpluginv1_10_r1 - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 9f147c7..ee246cb 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.5-SNAPSHOT + 3.3.5 openinvpluginv1_10_r1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5-SNAPSHOT + 3.3.5 diff --git a/plugin/pom.xml b/plugin/pom.xml index 60d96ed..acddd69 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.5-SNAPSHOT + 3.3.5 openinvplugin diff --git a/pom.xml b/pom.xml index e879261..1d9b864 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.3.5-SNAPSHOT + 3.3.5 pom -- 2.49.1 From 6bff759d72c21ddb31a81e125e1c267da1a0a8d0 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Mon, 13 Aug 2018 21:31:46 -0400 Subject: [PATCH 136/253] Bump version to 3.3.6-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_13_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 29 files changed, 54 insertions(+), 54 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index cc7207d..cb26e9e 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.5 + 3.3.6-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 9691200..3fee53b 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.5 + 3.3.6-SNAPSHOT openinvassembly diff --git a/common/pom.xml b/common/pom.xml index fd549c4..4f03c02 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.5 + 3.3.6-SNAPSHOT openinvcommon @@ -38,7 +38,7 @@ com.lishid openinvapi - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 368b528..2205583 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_4_5 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index e21dbdc..95f9868 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_4_6 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/pom.xml b/internal/pom.xml index eeab584..2959b13 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 3.3.5 + 3.3.6-SNAPSHOT openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 3a881df..93cf814 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_10_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 9860643..618349f 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_11_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index fac0e99..568c07e 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_12_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/v1_13_R1/pom.xml b/internal/v1_13_R1/pom.xml index 69a9e58..86904de 100644 --- a/internal/v1_13_R1/pom.xml +++ b/internal/v1_13_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_13_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 1191bac..2fcc13f 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_4_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 5972ebb..98253d3 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_5_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index d173b81..c5de6a8 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_5_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index bfdaaca..8f8ab50 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_6_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 8a40992..d4fd8fe 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_6_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index f4d728a..3ea66fb 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_6_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 01f11ef..fad6188 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_7_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index d8872e6..4eb8fba 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_7_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index b26c062..4b21eb9 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_7_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index c316d58..ddae573 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_7_R4 @@ -43,7 +43,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 3ab3ea0..faf539d 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_8_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 6872117..e3f1c30 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_8_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 261b60f..84508a9 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index e248601..09c06c5 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_9_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index 7c5ea37..bc7b1e8 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.5 + 3.3.6-SNAPSHOT openinvadapter1_9_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index dff1f1e..8e576c2 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.5 + 3.3.6-SNAPSHOT openinvplugincore @@ -38,12 +38,12 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT com.lishid openinvpluginv1_10_r1 - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index ee246cb..b56618b 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.5 + 3.3.6-SNAPSHOT openinvpluginv1_10_r1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.5 + 3.3.6-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index acddd69..a430d00 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.5 + 3.3.6-SNAPSHOT openinvplugin diff --git a/pom.xml b/pom.xml index 1d9b864..e954bd6 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.3.5 + 3.3.6-SNAPSHOT pom -- 2.49.1 From c22e18c09658ac84a0cff89c26d011dd3a1d9f01 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 26 Aug 2018 14:37:29 -0400 Subject: [PATCH 137/253] Correct unnecessary AnyContainer usage --- .../internal/v1_13_R1/AnySilentContainer.java | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java index 9d56ffa..35da30c 100644 --- a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java +++ b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java @@ -16,26 +16,16 @@ package com.lishid.openinv.internal.v1_13_R1; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; - -import net.minecraft.server.v1_13_R1.BlockChestTrapped; -import net.minecraft.server.v1_13_R1.BlockPropertyChestType; -import net.minecraft.server.v1_13_R1.ChatMessage; -import net.minecraft.server.v1_13_R1.VoxelShapes; -import org.bukkit.Material; -import org.bukkit.Statistic; -import org.bukkit.block.BlockState; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; - import net.minecraft.server.v1_13_R1.AxisAlignedBB; import net.minecraft.server.v1_13_R1.Block; import net.minecraft.server.v1_13_R1.BlockChest; +import net.minecraft.server.v1_13_R1.BlockChestTrapped; import net.minecraft.server.v1_13_R1.BlockEnderChest; import net.minecraft.server.v1_13_R1.BlockPosition; +import net.minecraft.server.v1_13_R1.BlockPropertyChestType; import net.minecraft.server.v1_13_R1.BlockShulkerBox; +import net.minecraft.server.v1_13_R1.ChatMessage; import net.minecraft.server.v1_13_R1.Entity; import net.minecraft.server.v1_13_R1.EntityOcelot; import net.minecraft.server.v1_13_R1.EntityPlayer; @@ -50,7 +40,15 @@ import net.minecraft.server.v1_13_R1.TileEntity; import net.minecraft.server.v1_13_R1.TileEntityChest; import net.minecraft.server.v1_13_R1.TileEntityEnderChest; import net.minecraft.server.v1_13_R1.TileEntityShulkerBox; +import net.minecraft.server.v1_13_R1.VoxelShapes; import net.minecraft.server.v1_13_R1.World; +import org.bukkit.Material; +import org.bukkit.Statistic; +import org.bukkit.block.BlockState; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; + +import java.lang.reflect.Field; public class AnySilentContainer implements IAnySilentContainer { @@ -99,21 +97,23 @@ public class AnySilentContainer implements IAnySilentContainer { } // Check for matching adjacent chests that are blocked or have an ocelot on top - for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); + BlockPropertyChestType chestType = blockData.get(BlockChest.b); - if (localBlock != block) { - continue; - } + if (chestType == BlockPropertyChestType.SINGLE) { + return false; + } - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } + BlockPosition adjacentBlockPosition = blockPosition.shift(BlockChest.k(blockData)); + IBlockData adjacentBlockData = world.getType(adjacentBlockPosition); - if (this.isBlockedChest(world, localBlockPosition)) { - return true; + if (adjacentBlockData.getBlock() == block) { + + BlockPropertyChestType adjacentChestType = adjacentBlockData.get(BlockChest.b); + + if (adjacentChestType != BlockPropertyChestType.SINGLE && chestType != adjacentChestType + && adjacentBlockData.get(BlockChest.FACING) == blockData.get(BlockChest.FACING)) { + + return this.isBlockedChest(world, adjacentBlockPosition); } } -- 2.49.1 From 3725711b9440d6d6d7a1d2ff64e83f5917733b00 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 26 Aug 2018 14:43:21 -0400 Subject: [PATCH 138/253] Support Spigot 1.13.1 --- internal/pom.xml | 3 +- internal/v1_13_R2/pom.xml | 57 ++++ .../internal/v1_13_R2/AnySilentContainer.java | 297 ++++++++++++++++++ .../internal/v1_13_R2/InventoryAccess.java | 77 +++++ .../internal/v1_13_R2/PlayerDataManager.java | 106 +++++++ .../internal/v1_13_R2/SpecialEnderChest.java | 96 ++++++ .../v1_13_R2/SpecialPlayerInventory.java | 255 +++++++++++++++ 7 files changed, 890 insertions(+), 1 deletion(-) create mode 100644 internal/v1_13_R2/pom.xml create mode 100644 internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/AnySilentContainer.java create mode 100644 internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/InventoryAccess.java create mode 100644 internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/PlayerDataManager.java create mode 100644 internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java create mode 100644 internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java diff --git a/internal/pom.xml b/internal/pom.xml index 2959b13..06875b5 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -41,8 +41,8 @@ recent - v1_12_R1 v1_13_R1 + v1_13_R2 @@ -72,6 +72,7 @@ v1_11_R1 v1_12_R1 v1_13_R1 + v1_13_R2 diff --git a/internal/v1_13_R2/pom.xml b/internal/v1_13_R2/pom.xml new file mode 100644 index 0000000..40b6667 --- /dev/null +++ b/internal/v1_13_R2/pom.xml @@ -0,0 +1,57 @@ + + + + 4.0.0 + + + com.lishid + openinvinternal + 3.3.6-SNAPSHOT + + + openinvadapter1_13_R2 + OpenInvAdapter1_13_R2 + + + + org.spigotmc + spigot + 1.13.1-R0.1-SNAPSHOT + provided + + + com.lishid + openinvcommon + 3.3.6-SNAPSHOT + + + + + + + maven-compiler-plugin + 3.6.1 + + 1.8 + 1.8 + + + + + + diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/AnySilentContainer.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/AnySilentContainer.java new file mode 100644 index 0000000..b2a9fd3 --- /dev/null +++ b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/AnySilentContainer.java @@ -0,0 +1,297 @@ +/* + * Copyright (C) 2011-2018 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_13_R2; + +import com.lishid.openinv.internal.IAnySilentContainer; +import net.minecraft.server.v1_13_R2.AxisAlignedBB; +import net.minecraft.server.v1_13_R2.Block; +import net.minecraft.server.v1_13_R2.BlockChest; +import net.minecraft.server.v1_13_R2.BlockChestTrapped; +import net.minecraft.server.v1_13_R2.BlockEnderChest; +import net.minecraft.server.v1_13_R2.BlockPosition; +import net.minecraft.server.v1_13_R2.BlockPropertyChestType; +import net.minecraft.server.v1_13_R2.BlockShulkerBox; +import net.minecraft.server.v1_13_R2.ChatMessage; +import net.minecraft.server.v1_13_R2.Entity; +import net.minecraft.server.v1_13_R2.EntityOcelot; +import net.minecraft.server.v1_13_R2.EntityPlayer; +import net.minecraft.server.v1_13_R2.EnumDirection; +import net.minecraft.server.v1_13_R2.EnumGamemode; +import net.minecraft.server.v1_13_R2.IBlockData; +import net.minecraft.server.v1_13_R2.ITileInventory; +import net.minecraft.server.v1_13_R2.InventoryEnderChest; +import net.minecraft.server.v1_13_R2.InventoryLargeChest; +import net.minecraft.server.v1_13_R2.PlayerInteractManager; +import net.minecraft.server.v1_13_R2.TileEntity; +import net.minecraft.server.v1_13_R2.TileEntityChest; +import net.minecraft.server.v1_13_R2.TileEntityEnderChest; +import net.minecraft.server.v1_13_R2.TileEntityShulkerBox; +import net.minecraft.server.v1_13_R2.VoxelShapes; +import net.minecraft.server.v1_13_R2.World; +import org.bukkit.Material; +import org.bukkit.Statistic; +import org.bukkit.block.BlockState; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; + +import java.lang.reflect.Field; + +public class AnySilentContainer implements IAnySilentContainer { + + private Field playerInteractManagerGamemode; + + public AnySilentContainer() { + try { + this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); + this.playerInteractManagerGamemode.setAccessible(true); + } catch (NoSuchFieldException | SecurityException e) { + System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); + e.printStackTrace(); + } + } + + @Override + public boolean isAnySilentContainer(final org.bukkit.block.Block block) { + if (block.getType() == Material.ENDER_CHEST) { + return true; + } + BlockState state = block.getState(); + return state instanceof org.bukkit.block.Chest + || state instanceof org.bukkit.block.ShulkerBox; + } + + @Override + public boolean isAnyContainerNeeded(final Player p, final org.bukkit.block.Block b) { + EntityPlayer player = PlayerDataManager.getHandle(p); + World world = player.world; + BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + IBlockData blockData = world.getType(blockPosition); + Block block = blockData.getBlock(); + + if (block instanceof BlockShulkerBox) { + return this.isBlockedShulkerBox(world, blockPosition, blockData); + } + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.getType(blockPosition.up()).isOccluding(); + } + + // Check if chest is blocked or has an ocelot on top + if (this.isBlockedChest(world, blockPosition)) { + return true; + } + + // Check for matching adjacent chests that are blocked or have an ocelot on top + BlockPropertyChestType chestType = blockData.get(BlockChest.b); + + if (chestType == BlockPropertyChestType.SINGLE) { + return false; + } + + BlockPosition adjacentBlockPosition = blockPosition.shift(BlockChest.k(blockData)); + IBlockData adjacentBlockData = world.getType(adjacentBlockPosition); + + if (adjacentBlockData.getBlock() == block) { + + BlockPropertyChestType adjacentChestType = adjacentBlockData.get(BlockChest.b); + + if (adjacentChestType != BlockPropertyChestType.SINGLE && chestType != adjacentChestType + && adjacentBlockData.get(BlockChest.FACING) == blockData.get(BlockChest.FACING)) { + + return this.isBlockedChest(world, adjacentBlockPosition); + } + } + + return false; + } + + private boolean isBlockedShulkerBox(final World world, final BlockPosition blockPosition, + final IBlockData blockData) { + // For reference, look at net.minecraft.server.BlockShulkerBox + TileEntity tile = world.getTileEntity(blockPosition); + + if (!(tile instanceof TileEntityShulkerBox)) { + return false; + } + + EnumDirection enumDirection = blockData.get(BlockShulkerBox.a); + if (((TileEntityShulkerBox) tile).r() == TileEntityShulkerBox.AnimationPhase.CLOSED) { + AxisAlignedBB axisAlignedBB = VoxelShapes.b().a() + .b(0.5F * enumDirection.getAdjacentX(), 0.5F * enumDirection.getAdjacentY(), 0.5F * enumDirection.getAdjacentZ()) + .a(enumDirection.getAdjacentX(), enumDirection.getAdjacentY(), enumDirection.getAdjacentZ()); + return !world.getCubes(null, axisAlignedBB.a(blockPosition.shift(enumDirection))); + } + + return false; + } + + private boolean isBlockedChest(final World world, final BlockPosition blockPosition) { + // For reference, loot at net.minecraft.server.BlockChest + return world.getType(blockPosition.up()).isOccluding() || this.hasOcelotOnTop(world, blockPosition); + } + + private boolean hasOcelotOnTop(final World world, final BlockPosition blockPosition) { + for (Entity entity : world.a(EntityOcelot.class, + new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, + blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, + blockPosition.getZ() + 1))) { + EntityOcelot entityOcelot = (EntityOcelot) entity; + if (entityOcelot.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(final Player bukkitPlayer, final boolean silentchest, + final org.bukkit.block.Block bukkitBlock) { + + // Silent ender chest is API-only + if (silentchest && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); + bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); + return true; + } + + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + + final World world = player.world; + final BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); + final Object tile = world.getTileEntity(blockPosition); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(enderChest); + bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); + return true; + } + + if (!(tile instanceof ITileInventory)) { + return false; + } + + ITileInventory tileInventory = (ITileInventory) tile; + IBlockData blockData = world.getType(blockPosition); + Block block = blockData.getBlock(); + + if (block instanceof BlockChest) { + + BlockPropertyChestType chestType = blockData.get(BlockChest.b); + + if (chestType != BlockPropertyChestType.SINGLE) { + + BlockPosition adjacentBlockPosition = blockPosition.shift(BlockChest.k(blockData)); + IBlockData adjacentBlockData = world.getType(adjacentBlockPosition); + + if (adjacentBlockData.getBlock() == block) { + + BlockPropertyChestType adjacentChestType = adjacentBlockData.get(BlockChest.b); + + if (adjacentChestType != BlockPropertyChestType.SINGLE && chestType != adjacentChestType + && adjacentBlockData.get(BlockChest.FACING) == blockData.get(BlockChest.FACING)) { + + TileEntity adjacentTile = world.getTileEntity(adjacentBlockPosition); + + if (adjacentTile instanceof TileEntityChest) { + ITileInventory rightChest = chestType == BlockPropertyChestType.RIGHT ? tileInventory : (ITileInventory) adjacentTile; + ITileInventory leftChest = chestType == BlockPropertyChestType.RIGHT ? (ITileInventory) adjacentTile : tileInventory; + tileInventory = new InventoryLargeChest(new ChatMessage("container.chestDouble"), rightChest, leftChest); + } + } + } + } + + if (block instanceof BlockChestTrapped) { + bukkitPlayer.incrementStatistic(Statistic.TRAPPED_CHEST_TRIGGERED); + } else { + bukkitPlayer.incrementStatistic(Statistic.CHEST_OPENED); + } + } + + if (block instanceof BlockShulkerBox) { + bukkitPlayer.incrementStatistic(Statistic.SHULKER_BOX_OPENED); + } + + // AnyChest only - SilentChest not active, container unsupported, or unnecessary. + if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { + player.openContainer(tileInventory); + return true; + } + + // SilentChest requires access to setting players' gamemode directly. + if (this.playerInteractManagerGamemode == null) { + return false; + } + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.openContainer(tileInventory); + this.forceGameMode(player, gamemode); + return true; + } + + @Override + public void deactivateContainer(final Player bukkitPlayer) { + if (this.playerInteractManagerGamemode == null) { + return; + } + + InventoryView view = bukkitPlayer.getOpenInventory(); + switch (view.getType()) { + case CHEST: + case ENDER_CHEST: + case SHULKER_BOX: + break; + default: + return; + } + + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.activeContainer.b(player); + player.activeContainer = player.defaultContainer; + this.forceGameMode(player, gamemode); + } + + private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { + if (this.playerInteractManagerGamemode == null) { + // No need to warn repeatedly, error on startup and lack of function should be enough. + return; + } + try { + if (!this.playerInteractManagerGamemode.isAccessible()) { + // Just in case, ensure accessible. + this.playerInteractManagerGamemode.setAccessible(true); + } + this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); + } catch (IllegalArgumentException | IllegalAccessException e) { + e.printStackTrace(); + } + } + +} diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/InventoryAccess.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/InventoryAccess.java new file mode 100644 index 0000000..eca054c --- /dev/null +++ b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/InventoryAccess.java @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2011-2018 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_13_R2; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.util.InternalAccessor; +import net.minecraft.server.v1_13_R2.IInventory; +import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public ISpecialEnderChest getSpecialEnderChest(final Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(final Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(final Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, + inventory) instanceof ISpecialEnderChest; + } + + @Override + public boolean isSpecialPlayerInventory(final Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, + inventory) instanceof ISpecialPlayerInventory; + } + +} diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/PlayerDataManager.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/PlayerDataManager.java new file mode 100644 index 0000000..8db7a45 --- /dev/null +++ b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/PlayerDataManager.java @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2011-2018 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_13_R2; + +import com.lishid.openinv.internal.IPlayerDataManager; +import com.mojang.authlib.GameProfile; +import net.minecraft.server.v1_13_R2.DimensionManager; +import net.minecraft.server.v1_13_R2.EntityPlayer; +import net.minecraft.server.v1_13_R2.MinecraftServer; +import net.minecraft.server.v1_13_R2.PlayerInteractManager; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; +import org.bukkit.craftbukkit.v1_13_R2.CraftServer; +import org.bukkit.craftbukkit.v1_13_R2.entity.CraftPlayer; +import org.bukkit.entity.Player; + +import java.util.Collection; +import java.util.UUID; + +public class PlayerDataManager implements IPlayerDataManager { + + public static EntityPlayer getHandle(final Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + + @Override + public Collection getOnlinePlayers() { + return Bukkit.getOnlinePlayers(); + } + + @Override + public OfflinePlayer getPlayerByID(final String identifier) { + try { + UUID uuid = UUID.fromString(identifier); + OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); + // Ensure player is a real player, otherwise return null + if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } catch (IllegalArgumentException e) { + // Not a UUID + return null; + } + } + + @Override + public String getPlayerDataID(final OfflinePlayer offline) { + return offline.getUniqueId().toString(); + } + + @Override + public Player loadPlayer(final OfflinePlayer offline) { + // Ensure player has data + if (offline == null || !offline.hasPlayedBefore()) { + return null; + } + + // Create a profile and entity to load the player data + GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(DimensionManager.OVERWORLD), profile, + new PlayerInteractManager(server.getWorldServer(DimensionManager.OVERWORLD))); + + // Get the bukkit entity + Player target = entity.getBukkitEntity(); + if (target != null) { + // Load data + target.loadData(); + } + // Return the entity + return target; + } + +} diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java new file mode 100644 index 0000000..8414323 --- /dev/null +++ b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2011-2018 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_13_R2; + +import com.lishid.openinv.internal.ISpecialEnderChest; +import net.minecraft.server.v1_13_R2.EntityPlayer; +import net.minecraft.server.v1_13_R2.IInventory; +import net.minecraft.server.v1_13_R2.InventoryEnderChest; +import net.minecraft.server.v1_13_R2.InventorySubcontainer; +import net.minecraft.server.v1_13_R2.ItemStack; +import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftInventory; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.List; + +public class SpecialEnderChest extends InventorySubcontainer + implements IInventory, ISpecialEnderChest { + + private final InventoryEnderChest enderChest; + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline; + + public SpecialEnderChest(final Player player, final Boolean online) { + super(PlayerDataManager.getHandle(player).getEnderChest().getDisplayName(), + PlayerDataManager.getHandle(player).getEnderChest().getSize(), player); + this.playerOnline = online; + this.enderChest = PlayerDataManager.getHandle(player).getEnderChest(); + this.setItemLists(this, this.enderChest.getContents()); + } + + @Override + public Inventory getBukkitInventory() { + return this.inventory; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + private void setItemLists(final InventorySubcontainer subcontainer, final List list) { + try { + // Prepare to remove final modifier + Field modifiers = Field.class.getDeclaredField("modifiers"); + modifiers.setAccessible(true); + // Access and replace main inventory array + Field field = InventorySubcontainer.class.getField("items"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(subcontainer, list); + } catch (NoSuchFieldException | SecurityException | IllegalArgumentException + | IllegalAccessException e) { + e.printStackTrace(); + } + } + + @Override + public void setPlayerOffline() { + this.playerOnline = false; + } + + @Override + public void setPlayerOnline(final Player player) { + if (!this.playerOnline) { + try { + EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); + this.bukkitOwner = nmsPlayer.getBukkitEntity(); + this.setItemLists(nmsPlayer.getEnderChest(), this.items); + } catch (Exception e) {} + this.playerOnline = true; + } + } + + @Override + public void update() { + super.update(); + this.enderChest.update(); + } + +} diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java new file mode 100644 index 0000000..5fa8548 --- /dev/null +++ b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java @@ -0,0 +1,255 @@ +/* + * Copyright (C) 2011-2018 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_13_R2; + +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import net.minecraft.server.v1_13_R2.ChatMessage; +import net.minecraft.server.v1_13_R2.ContainerUtil; +import net.minecraft.server.v1_13_R2.EntityHuman; +import net.minecraft.server.v1_13_R2.IChatBaseComponent; +import net.minecraft.server.v1_13_R2.ItemStack; +import net.minecraft.server.v1_13_R2.NonNullList; +import net.minecraft.server.v1_13_R2.PlayerInventory; +import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftInventory; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.Arrays; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline; + + public SpecialPlayerInventory(final Player bukkitPlayer, final Boolean online) { + super(PlayerDataManager.getHandle(bukkitPlayer)); + this.playerOnline = online; + this.setItemArrays(this, this.player.inventory.items, this.player.inventory.armor, + this.player.inventory.extraSlots); + } + + @Override + public boolean a(final EntityHuman entityhuman) { + return true; + } + + @Override + public Inventory getBukkitInventory() { + return this.inventory; + } + + @Override + public ItemStack getItem(int i) { + NonNullList list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + return list.get(i); + } + + @Override + public IChatBaseComponent getDisplayName() { + return new ChatMessage(this.player.getName()); + } + + @Override + public boolean hasCustomName() { + return true; + } + + private int getReversedArmorSlotNum(final int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + private int getReversedItemSlotNum(final int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + @Override + public int getSize() { + return super.getSize() + 4; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public void setItem(int i, final ItemStack itemstack) { + NonNullList list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + this.player.drop(itemstack, true); + return; + } + + list.set(i, itemstack); + } + + private void setItemArrays(final PlayerInventory inventory, final NonNullList items, + final NonNullList armor, final NonNullList extraSlots) { + try { + // Prepare to remove final modifier + Field modifiers = Field.class.getDeclaredField("modifiers"); + modifiers.setAccessible(true); + + // Access and replace main inventory list + Field field = PlayerInventory.class.getField("items"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, items); + + // Access and replace armor inventory list + field = PlayerInventory.class.getField("armor"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, armor); + + // Access and replace offhand inventory list + field = PlayerInventory.class.getField("extraSlots"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, extraSlots); + + // Access and replace list containing all inventory lists + field = PlayerInventory.class.getDeclaredField("f"); + field.setAccessible(true); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, Arrays.asList(items, armor, extraSlots)); + } catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) { + // Unable to set final fields to item lists, we're screwed. Noisily fail. + e.printStackTrace(); + } + } + + @Override + public void setPlayerOffline() { + this.playerOnline = false; + } + + @Override + public void setPlayerOnline(final Player player) { + if (!this.playerOnline) { + this.player = PlayerDataManager.getHandle(player); + this.setItemArrays(this.player.inventory, this.items, this.armor, this.extraSlots); + this.playerOnline = true; + } + } + + @Override + public ItemStack splitStack(int i, final int j) { + NonNullList list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + return list.get(i).isEmpty() ? ItemStack.a : ContainerUtil.a(list, i, j); + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + NonNullList list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + if (!list.get(i).isEmpty()) { + ItemStack itemstack = list.get(i); + + list.set(i, ItemStack.a); + return itemstack; + } + + return ItemStack.a; + } + +} -- 2.49.1 From 5753648d77f2a2bada39cc5155d1168cff7190cc Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 26 Aug 2018 14:46:33 -0400 Subject: [PATCH 139/253] Bump version to 3.3.6 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_13_R1/pom.xml | 4 ++-- internal/v1_13_R2/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 30 files changed, 56 insertions(+), 56 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index cb26e9e..f231540 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.6-SNAPSHOT + 3.3.6 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 3fee53b..e1c9fc2 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.6-SNAPSHOT + 3.3.6 openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 4f03c02..a4140fb 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.6-SNAPSHOT + 3.3.6 openinvcommon @@ -38,7 +38,7 @@ com.lishid openinvapi - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 2205583..080d213 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_4_5 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 95f9868..edf7665 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_4_6 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/pom.xml b/internal/pom.xml index 06875b5..21e33df 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 3.3.6-SNAPSHOT + 3.3.6 openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 93cf814..4ea0cfd 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_10_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 618349f..64d3099 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_11_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index 568c07e..7b19f2b 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_12_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_13_R1/pom.xml b/internal/v1_13_R1/pom.xml index 86904de..ee7164f 100644 --- a/internal/v1_13_R1/pom.xml +++ b/internal/v1_13_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_13_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_13_R2/pom.xml b/internal/v1_13_R2/pom.xml index 40b6667..03cbae1 100644 --- a/internal/v1_13_R2/pom.xml +++ b/internal/v1_13_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_13_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 2fcc13f..5c30053 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_4_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 98253d3..961d692 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_5_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index c5de6a8..29bc29f 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_5_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 8f8ab50..4c53345 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_6_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index d4fd8fe..dd82a4c 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_6_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 3ea66fb..f137b80 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_6_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index fad6188..3b8d93d 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_7_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 4eb8fba..cf53528 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_7_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 4b21eb9..49a7f7c 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_7_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index ddae573..ecd1d94 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_7_R4 @@ -43,7 +43,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index faf539d..16f91dd 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_8_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index e3f1c30..19c338e 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_8_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 84508a9..43a3a03 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index 09c06c5..ce9c908 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_9_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index bc7b1e8..ab7f03d 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6-SNAPSHOT + 3.3.6 openinvadapter1_9_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index 8e576c2..2257136 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.6-SNAPSHOT + 3.3.6 openinvplugincore @@ -38,12 +38,12 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 com.lishid openinvpluginv1_10_r1 - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index b56618b..e447983 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.6-SNAPSHOT + 3.3.6 openinvpluginv1_10_r1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6-SNAPSHOT + 3.3.6 diff --git a/plugin/pom.xml b/plugin/pom.xml index a430d00..7ea8f41 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.6-SNAPSHOT + 3.3.6 openinvplugin diff --git a/pom.xml b/pom.xml index e954bd6..3b49a29 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.3.6-SNAPSHOT + 3.3.6 pom -- 2.49.1 From 96c38895e2108e4ae3d062d0eb320b78df23dad5 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 26 Aug 2018 14:47:13 -0400 Subject: [PATCH 140/253] Bump version to 3.3.7-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_13_R1/pom.xml | 4 ++-- internal/v1_13_R2/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 30 files changed, 56 insertions(+), 56 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index f231540..bc5c2d6 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.6 + 3.3.7-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index e1c9fc2..ea73318 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.6 + 3.3.7-SNAPSHOT openinvassembly diff --git a/common/pom.xml b/common/pom.xml index a4140fb..c747ef1 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.6 + 3.3.7-SNAPSHOT openinvcommon @@ -38,7 +38,7 @@ com.lishid openinvapi - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 080d213..6214e22 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_4_5 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index edf7665..e844681 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_4_6 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/pom.xml b/internal/pom.xml index 21e33df..9c68b7b 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 3.3.6 + 3.3.7-SNAPSHOT openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 4ea0cfd..1c38a4d 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_10_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 64d3099..f0a38ed 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_11_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index 7b19f2b..814f303 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_12_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_13_R1/pom.xml b/internal/v1_13_R1/pom.xml index ee7164f..bdf2016 100644 --- a/internal/v1_13_R1/pom.xml +++ b/internal/v1_13_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_13_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_13_R2/pom.xml b/internal/v1_13_R2/pom.xml index 03cbae1..1078c74 100644 --- a/internal/v1_13_R2/pom.xml +++ b/internal/v1_13_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_13_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 5c30053..af48572 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_4_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 961d692..05a60ea 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_5_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 29bc29f..1dbcf2a 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_5_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 4c53345..cdf05d2 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_6_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index dd82a4c..f62a757 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_6_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index f137b80..92327e1 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_6_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 3b8d93d..810b9c9 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_7_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index cf53528..8e47bba 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_7_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 49a7f7c..65ac2bd 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_7_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index ecd1d94..b837f79 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_7_R4 @@ -43,7 +43,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 16f91dd..6158bd0 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_8_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 19c338e..517e473 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_8_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 43a3a03..188e902 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index ce9c908..27e4333 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_9_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index ab7f03d..8203a95 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.6 + 3.3.7-SNAPSHOT openinvadapter1_9_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index 2257136..c3cf877 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.6 + 3.3.7-SNAPSHOT openinvplugincore @@ -38,12 +38,12 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT com.lishid openinvpluginv1_10_r1 - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index e447983..6629961 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.6 + 3.3.7-SNAPSHOT openinvpluginv1_10_r1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.6 + 3.3.7-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index 7ea8f41..d183319 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.6 + 3.3.7-SNAPSHOT openinvplugin diff --git a/pom.xml b/pom.xml index 3b49a29..ffc69f6 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.3.6 + 3.3.7-SNAPSHOT pom -- 2.49.1 From 4f4d46974af3f15d275ad038bc9c6c0bf2c05c5e Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 15 Jan 2019 20:01:41 -0500 Subject: [PATCH 141/253] Support 1.13.2 (#94) --- internal/v1_13_R2/pom.xml | 2 +- .../internal/v1_13_R2/AnySilentContainer.java | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/internal/v1_13_R2/pom.xml b/internal/v1_13_R2/pom.xml index 1078c74..6223c78 100644 --- a/internal/v1_13_R2/pom.xml +++ b/internal/v1_13_R2/pom.xml @@ -31,7 +31,7 @@ org.spigotmc spigot - 1.13.1-R0.1-SNAPSHOT + 1.13.2-R0.1-SNAPSHOT provided diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/AnySilentContainer.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/AnySilentContainer.java index b2a9fd3..511a1b6 100644 --- a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/AnySilentContainer.java +++ b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/AnySilentContainer.java @@ -40,6 +40,7 @@ import net.minecraft.server.v1_13_R2.TileEntity; import net.minecraft.server.v1_13_R2.TileEntityChest; import net.minecraft.server.v1_13_R2.TileEntityEnderChest; import net.minecraft.server.v1_13_R2.TileEntityShulkerBox; +import net.minecraft.server.v1_13_R2.VoxelShape; import net.minecraft.server.v1_13_R2.VoxelShapes; import net.minecraft.server.v1_13_R2.World; import org.bukkit.Material; @@ -49,6 +50,8 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.InventoryView; import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; public class AnySilentContainer implements IAnySilentContainer { @@ -131,7 +134,16 @@ public class AnySilentContainer implements IAnySilentContainer { EnumDirection enumDirection = blockData.get(BlockShulkerBox.a); if (((TileEntityShulkerBox) tile).r() == TileEntityShulkerBox.AnimationPhase.CLOSED) { - AxisAlignedBB axisAlignedBB = VoxelShapes.b().a() + AxisAlignedBB axisAlignedBB; + try { + Method method = VoxelShape.class.getMethod("a"); + axisAlignedBB = (AxisAlignedBB) method.invoke(VoxelShapes.b()); + } catch (NoSuchMethodException e) { + axisAlignedBB = VoxelShapes.b().getBoundingBox(); + } catch (InvocationTargetException | IllegalAccessException e) { + return false; + } + axisAlignedBB = axisAlignedBB .b(0.5F * enumDirection.getAdjacentX(), 0.5F * enumDirection.getAdjacentY(), 0.5F * enumDirection.getAdjacentZ()) .a(enumDirection.getAdjacentX(), enumDirection.getAdjacentY(), enumDirection.getAdjacentZ()); return !world.getCubes(null, axisAlignedBB.a(blockPosition.shift(enumDirection))); -- 2.49.1 From d497772ad757332649cc3a3179ba5cf32619d6fc Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 18 Jan 2019 18:35:50 -0500 Subject: [PATCH 142/253] Bump version to 3.3.7 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_13_R1/pom.xml | 4 ++-- internal/v1_13_R2/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 30 files changed, 56 insertions(+), 56 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index bc5c2d6..401017a 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.7-SNAPSHOT + 3.3.7 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index ea73318..e9047b0 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.7-SNAPSHOT + 3.3.7 openinvassembly diff --git a/common/pom.xml b/common/pom.xml index c747ef1..8c584d2 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.7-SNAPSHOT + 3.3.7 openinvcommon @@ -38,7 +38,7 @@ com.lishid openinvapi - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 6214e22..c393aa0 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_4_5 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index e844681..40e5487 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_4_6 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/pom.xml b/internal/pom.xml index 9c68b7b..febca4a 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 3.3.7-SNAPSHOT + 3.3.7 openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 1c38a4d..a1d9887 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_10_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index f0a38ed..9d89450 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_11_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index 814f303..7ff25c0 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_12_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_13_R1/pom.xml b/internal/v1_13_R1/pom.xml index bdf2016..d4a1f8c 100644 --- a/internal/v1_13_R1/pom.xml +++ b/internal/v1_13_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_13_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_13_R2/pom.xml b/internal/v1_13_R2/pom.xml index 6223c78..95278ef 100644 --- a/internal/v1_13_R2/pom.xml +++ b/internal/v1_13_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_13_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index af48572..b494993 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_4_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 05a60ea..9200345 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_5_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 1dbcf2a..185cc84 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_5_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index cdf05d2..2b51405 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_6_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index f62a757..b3d4bfe 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_6_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 92327e1..d8d1a84 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_6_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 810b9c9..387522d 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_7_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 8e47bba..74b0358 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_7_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 65ac2bd..3bc623c 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_7_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index b837f79..7fafc77 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_7_R4 @@ -43,7 +43,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 6158bd0..94a28c3 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_8_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 517e473..eae4f48 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_8_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 188e902..c6e9756 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index 27e4333..9ccf4e6 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_9_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index 8203a95..3c598a6 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7-SNAPSHOT + 3.3.7 openinvadapter1_9_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index c3cf877..775713e 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.7-SNAPSHOT + 3.3.7 openinvplugincore @@ -38,12 +38,12 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 com.lishid openinvpluginv1_10_r1 - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 6629961..918dac8 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.7-SNAPSHOT + 3.3.7 openinvpluginv1_10_r1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7-SNAPSHOT + 3.3.7 diff --git a/plugin/pom.xml b/plugin/pom.xml index d183319..5c6364c 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.7-SNAPSHOT + 3.3.7 openinvplugin diff --git a/pom.xml b/pom.xml index ffc69f6..77c79c5 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.3.7-SNAPSHOT + 3.3.7 pom -- 2.49.1 From dc59356f760bac2898c934d7e84c162246ea5833 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 18 Jan 2019 18:36:28 -0500 Subject: [PATCH 143/253] Bump version to 3.3.8-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_13_R1/pom.xml | 4 ++-- internal/v1_13_R2/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 30 files changed, 56 insertions(+), 56 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 401017a..18791a4 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.7 + 3.3.8-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index e9047b0..184b2d4 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.7 + 3.3.8-SNAPSHOT openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 8c584d2..9010aee 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.7 + 3.3.8-SNAPSHOT openinvcommon @@ -38,7 +38,7 @@ com.lishid openinvapi - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index c393aa0..7ff574a 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_4_5 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 40e5487..78322ea 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_4_6 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/pom.xml b/internal/pom.xml index febca4a..1446216 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 3.3.7 + 3.3.8-SNAPSHOT openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index a1d9887..26afc6f 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_10_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 9d89450..dc685c2 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_11_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index 7ff25c0..02f02e8 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_12_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_13_R1/pom.xml b/internal/v1_13_R1/pom.xml index d4a1f8c..aab5195 100644 --- a/internal/v1_13_R1/pom.xml +++ b/internal/v1_13_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_13_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_13_R2/pom.xml b/internal/v1_13_R2/pom.xml index 95278ef..d6cb962 100644 --- a/internal/v1_13_R2/pom.xml +++ b/internal/v1_13_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_13_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index b494993..fca07a5 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_4_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 9200345..9412b40 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_5_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 185cc84..3adfb30 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_5_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 2b51405..cea569b 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_6_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index b3d4bfe..ea26aeb 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_6_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index d8d1a84..652fd68 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_6_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 387522d..6d697b6 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_7_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 74b0358..cda25d8 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_7_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 3bc623c..c07bf14 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_7_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 7fafc77..1a1d7fe 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_7_R4 @@ -43,7 +43,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 94a28c3..1802d0f 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_8_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index eae4f48..7d2419f 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_8_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index c6e9756..851a9ae 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index 9ccf4e6..dcc4b9d 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_9_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index 3c598a6..89c032d 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.7 + 3.3.8-SNAPSHOT openinvadapter1_9_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index 775713e..1ab74b4 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.7 + 3.3.8-SNAPSHOT openinvplugincore @@ -38,12 +38,12 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT com.lishid openinvpluginv1_10_r1 - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 918dac8..005df7e 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.7 + 3.3.8-SNAPSHOT openinvpluginv1_10_r1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.7 + 3.3.8-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index 5c6364c..ccb3c7b 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.7 + 3.3.8-SNAPSHOT openinvplugin diff --git a/pom.xml b/pom.xml index 77c79c5..707a3c3 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.3.7 + 3.3.8-SNAPSHOT pom -- 2.49.1 From c5c1f471672ef1aa21c1beea986df885b085052a Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 12 Apr 2019 20:56:05 -0400 Subject: [PATCH 144/253] Hacky workaround for Java 9 reflection changes (#93) --- .../internal/v1_13_R2/SpecialEnderChest.java | 229 +++++-- .../v1_13_R2/SpecialPlayerInventory.java | 564 ++++++++++++++++-- 2 files changed, 708 insertions(+), 85 deletions(-) diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java index 8414323..95e54e0 100644 --- a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java +++ b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java @@ -17,32 +17,31 @@ package com.lishid.openinv.internal.v1_13_R2; import com.lishid.openinv.internal.ISpecialEnderChest; -import net.minecraft.server.v1_13_R2.EntityPlayer; -import net.minecraft.server.v1_13_R2.IInventory; -import net.minecraft.server.v1_13_R2.InventoryEnderChest; -import net.minecraft.server.v1_13_R2.InventorySubcontainer; -import net.minecraft.server.v1_13_R2.ItemStack; +import net.minecraft.server.v1_13_R2.*; +import org.bukkit.Location; +import org.bukkit.craftbukkit.v1_13_R2.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; +import javax.annotation.Nullable; import java.util.List; -public class SpecialEnderChest extends InventorySubcontainer - implements IInventory, ISpecialEnderChest { +public class SpecialEnderChest implements IInventory, ISpecialEnderChest, AutoRecipeOutput { - private final InventoryEnderChest enderChest; + private EntityPlayer owner; + private final IChatBaseComponent displayName; + private NonNullList items; private final CraftInventory inventory = new CraftInventory(this); private boolean playerOnline; public SpecialEnderChest(final Player player, final Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getDisplayName(), - PlayerDataManager.getHandle(player).getEnderChest().getSize(), player); + this.owner = PlayerDataManager.getHandle(player); + this.displayName = this.owner.getEnderChest().getDisplayName(); this.playerOnline = online; - this.enderChest = PlayerDataManager.getHandle(player).getEnderChest(); - this.setItemLists(this, this.enderChest.getContents()); + this.items = this.owner.getEnderChest().items; } @Override @@ -55,21 +54,6 @@ public class SpecialEnderChest extends InventorySubcontainer return !this.getViewers().isEmpty(); } - private void setItemLists(final InventorySubcontainer subcontainer, final List list) { - try { - // Prepare to remove final modifier - Field modifiers = Field.class.getDeclaredField("modifiers"); - modifiers.setAccessible(true); - // Access and replace main inventory array - Field field = InventorySubcontainer.class.getField("items"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(subcontainer, list); - } catch (NoSuchFieldException | SecurityException | IllegalArgumentException - | IllegalAccessException e) { - e.printStackTrace(); - } - } - @Override public void setPlayerOffline() { this.playerOnline = false; @@ -79,18 +63,193 @@ public class SpecialEnderChest extends InventorySubcontainer public void setPlayerOnline(final Player player) { if (!this.playerOnline) { try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.bukkitOwner = nmsPlayer.getBukkitEntity(); - this.setItemLists(nmsPlayer.getEnderChest(), this.items); - } catch (Exception e) {} + this.owner = PlayerDataManager.getHandle(player); + InventoryEnderChest enderChest = owner.getEnderChest(); + for (int i = 0; i < enderChest.getSize(); ++i) { + enderChest.setItem(i, this.items.get(i)); + } + this.items = enderChest.items; + } catch (Exception ignored) {} this.playerOnline = true; } } @Override public void update() { - super.update(); - this.enderChest.update(); + this.owner.getEnderChest().update(); + } + + public List getContents() { + return this.items; + } + + public void onOpen(CraftHumanEntity who) { + this.owner.getEnderChest().onOpen(who); + } + + public void onClose(CraftHumanEntity who) { + this.owner.getEnderChest().onClose(who); + } + + public List getViewers() { + return this.owner.getEnderChest().getViewers(); + } + + public void setMaxStackSize(int i) { + this.owner.getEnderChest().setMaxStackSize(i); + } + + public InventoryHolder getOwner() { + return this.owner.getEnderChest().getOwner(); + } + + public Location getLocation() { + return null; + } + + public void a(IInventoryListener iinventorylistener) { + this.owner.getEnderChest().a(iinventorylistener); + } + + public void b(IInventoryListener iinventorylistener) { + this.owner.getEnderChest().b(iinventorylistener); + } + + public ItemStack getItem(int i) { + return i >= 0 && i < this.items.size() ? this.items.get(i) : ItemStack.a; + } + + public ItemStack splitStack(int i, int j) { + ItemStack itemstack = ContainerUtil.a(this.items, i, j); + if (!itemstack.isEmpty()) { + this.update(); + } + + return itemstack; + } + + public ItemStack a(ItemStack itemstack) { + ItemStack itemstack1 = itemstack.cloneItemStack(); + + for (int i = 0; i < this.getSize(); ++i) { + ItemStack itemstack2 = this.getItem(i); + if (itemstack2.isEmpty()) { + this.setItem(i, itemstack1); + this.update(); + return ItemStack.a; + } + + if (ItemStack.c(itemstack2, itemstack1)) { + int j = Math.min(this.getMaxStackSize(), itemstack2.getMaxStackSize()); + int k = Math.min(itemstack1.getCount(), j - itemstack2.getCount()); + if (k > 0) { + itemstack2.add(k); + itemstack1.subtract(k); + if (itemstack1.isEmpty()) { + this.update(); + return ItemStack.a; + } + } + } + } + + if (itemstack1.getCount() != itemstack.getCount()) { + this.update(); + } + + return itemstack1; + } + + public ItemStack splitWithoutUpdate(int i) { + ItemStack itemstack = this.items.get(i); + if (itemstack.isEmpty()) { + return ItemStack.a; + } else { + this.items.set(i, ItemStack.a); + return itemstack; + } + } + + public void setItem(int i, ItemStack itemstack) { + this.items.set(i, itemstack); + if (!itemstack.isEmpty() && itemstack.getCount() > this.getMaxStackSize()) { + itemstack.setCount(this.getMaxStackSize()); + } + + this.update(); + } + + public int getSize() { + return this.owner.getEnderChest().getSize(); + } + + public boolean P_() { + + for (ItemStack itemstack : this.items) { + if (!itemstack.isEmpty()) { + return false; + } + } + + return true; + } + + public IChatBaseComponent getDisplayName() { + return this.displayName; + } + + @Nullable + public IChatBaseComponent getCustomName() { + return this.displayName; + } + + public boolean hasCustomName() { + return false; + } + + public void a(@Nullable IChatBaseComponent ichatbasecomponent) { + // Ignored - name is always player's name. + } + + public int getMaxStackSize() { + return 64; + } + + public boolean a(EntityHuman entityhuman) { + return true; + } + + public void startOpen(EntityHuman entityhuman) { + } + + public void closeContainer(EntityHuman entityhuman) { + } + + public boolean b(int i, ItemStack itemstack) { + return true; + } + + public int getProperty(int i) { + return 0; + } + + public void setProperty(int i, int j) { + } + + public int h() { + return 0; + } + + public void clear() { + this.items.clear(); + } + + public void a(AutoRecipeStackManager autorecipestackmanager) { + + for (ItemStack itemstack : this.items) { + autorecipestackmanager.b(itemstack); + } + } } diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java index 5fa8548..ef47dba 100644 --- a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java +++ b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java @@ -16,32 +16,69 @@ package com.lishid.openinv.internal.v1_13_R2; +import com.google.common.collect.ImmutableList; import com.lishid.openinv.internal.ISpecialPlayerInventory; +import net.minecraft.server.v1_13_R2.AutoRecipeStackManager; import net.minecraft.server.v1_13_R2.ChatMessage; import net.minecraft.server.v1_13_R2.ContainerUtil; +import net.minecraft.server.v1_13_R2.CrashReport; +import net.minecraft.server.v1_13_R2.CrashReportSystemDetails; import net.minecraft.server.v1_13_R2.EntityHuman; +import net.minecraft.server.v1_13_R2.EntityPlayer; +import net.minecraft.server.v1_13_R2.IBlockData; import net.minecraft.server.v1_13_R2.IChatBaseComponent; +import net.minecraft.server.v1_13_R2.Item; +import net.minecraft.server.v1_13_R2.ItemArmor; import net.minecraft.server.v1_13_R2.ItemStack; +import net.minecraft.server.v1_13_R2.NBTTagCompound; +import net.minecraft.server.v1_13_R2.NBTTagList; import net.minecraft.server.v1_13_R2.NonNullList; +import net.minecraft.server.v1_13_R2.PacketPlayOutSetSlot; import net.minecraft.server.v1_13_R2.PlayerInventory; +import net.minecraft.server.v1_13_R2.ReportedException; +import net.minecraft.server.v1_13_R2.World; +import org.bukkit.Location; +import org.bukkit.craftbukkit.v1_13_R2.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.Arrays; +import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.function.Predicate; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { private final CraftInventory inventory = new CraftInventory(this); private boolean playerOnline; + private NonNullList items, armor, extraSlots; + private final List> f; public SpecialPlayerInventory(final Player bukkitPlayer, final Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); this.playerOnline = online; - this.setItemArrays(this, this.player.inventory.items, this.player.inventory.armor, - this.player.inventory.extraSlots); + this.items = this.player.inventory.items; + this.armor = this.player.inventory.armor; + this.extraSlots = this.player.inventory.extraSlots; + this.f = ImmutableList.of(this.items, this.armor, this.extraSlots); + } + + @Override + public void setPlayerOnline(final Player player) { + if (!this.playerOnline) { + EntityPlayer entityPlayer = PlayerDataManager.getHandle(player); + entityPlayer.inventory.transaction.addAll(this.transaction); + this.player = entityPlayer; + this.player.inventory.a(this); + this.items = this.player.inventory.items; + this.armor = this.player.inventory.armor; + this.extraSlots = this.player.inventory.extraSlots; + this.playerOnline = true; + } } @Override @@ -56,7 +93,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public ItemStack getItem(int i) { - NonNullList list = this.items; + List list = this.items; if (i >= list.size()) { i -= list.size(); @@ -86,7 +123,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public boolean hasCustomName() { - return true; + return false; } private int getReversedArmorSlotNum(final int i) { @@ -124,7 +161,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void setItem(int i, final ItemStack itemstack) { - NonNullList list = this.items; + List list = this.items; if (i >= list.size()) { i -= list.size(); @@ -148,53 +185,11 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP list.set(i, itemstack); } - private void setItemArrays(final PlayerInventory inventory, final NonNullList items, - final NonNullList armor, final NonNullList extraSlots) { - try { - // Prepare to remove final modifier - Field modifiers = Field.class.getDeclaredField("modifiers"); - modifiers.setAccessible(true); - - // Access and replace main inventory list - Field field = PlayerInventory.class.getField("items"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, items); - - // Access and replace armor inventory list - field = PlayerInventory.class.getField("armor"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, armor); - - // Access and replace offhand inventory list - field = PlayerInventory.class.getField("extraSlots"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, extraSlots); - - // Access and replace list containing all inventory lists - field = PlayerInventory.class.getDeclaredField("f"); - field.setAccessible(true); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, Arrays.asList(items, armor, extraSlots)); - } catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) { - // Unable to set final fields to item lists, we're screwed. Noisily fail. - e.printStackTrace(); - } - } - @Override public void setPlayerOffline() { this.playerOnline = false; } - @Override - public void setPlayerOnline(final Player player) { - if (!this.playerOnline) { - this.player = PlayerDataManager.getHandle(player); - this.setItemArrays(this.player.inventory, this.items, this.armor, this.extraSlots); - this.playerOnline = true; - } - } - @Override public ItemStack splitStack(int i, final int j) { NonNullList list = this.items; @@ -252,4 +247,473 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return ItemStack.a; } + public List getContents() { + List combined = new ArrayList<>(this.items.size() + this.armor.size() + this.extraSlots.size()); + + for (List sub : this.f) { + combined.addAll(sub); + } + + return combined; + } + + public List getArmorContents() { + return this.armor; + } + + public void onOpen(CraftHumanEntity who) { + this.transaction.add(who); + } + + public void onClose(CraftHumanEntity who) { + this.transaction.remove(who); + } + + public List getViewers() { + return this.transaction; + } + + public InventoryHolder getOwner() { + return this.player.getBukkitEntity(); + } + + public Location getLocation() { + return this.player.getBukkitEntity().getLocation(); + } + + public ItemStack getItemInHand() { + return e(this.itemInHandIndex) ? this.items.get(this.itemInHandIndex) : ItemStack.a; + } + + public static int getHotbarSize() { + return 9; + } + + private boolean a(ItemStack itemstack, ItemStack itemstack1) { + return !itemstack.isEmpty() && this.b(itemstack, itemstack1) && itemstack.isStackable() && itemstack.getCount() < itemstack.getMaxStackSize() && itemstack.getCount() < this.getMaxStackSize(); + } + + private boolean b(ItemStack itemstack, ItemStack itemstack1) { + return itemstack.getItem() == itemstack1.getItem() && ItemStack.equals(itemstack, itemstack1); + } + + public int canHold(ItemStack itemstack) { + int remains = itemstack.getCount(); + + for(int i = 0; i < this.items.size(); ++i) { + ItemStack itemstack1 = this.getItem(i); + if (itemstack1.isEmpty()) { + return itemstack.getCount(); + } + + if (!this.a(itemstack, itemstack1)) { + remains -= (itemstack1.getMaxStackSize() < this.getMaxStackSize() ? itemstack1.getMaxStackSize() : this.getMaxStackSize()) - itemstack1.getCount(); + } + + if (remains <= 0) { + return itemstack.getCount(); + } + } + + return itemstack.getCount() - remains; + } + + public int getFirstEmptySlotIndex() { + for(int i = 0; i < this.items.size(); ++i) { + if (this.items.get(i).isEmpty()) { + return i; + } + } + + return -1; + } + + public void d(int i) { + this.itemInHandIndex = this.l(); + ItemStack itemstack = this.items.get(this.itemInHandIndex); + this.items.set(this.itemInHandIndex, this.items.get(i)); + this.items.set(i, itemstack); + } + + public static boolean e(int i) { + return i >= 0 && i < 9; + } + + public int c(ItemStack itemstack) { + for(int i = 0; i < this.items.size(); ++i) { + ItemStack itemstack1 = this.items.get(i); + if (!this.items.get(i).isEmpty() && this.b(itemstack, this.items.get(i)) && !this.items.get(i).f() && !itemstack1.hasEnchantments() && !itemstack1.hasName()) { + return i; + } + } + + return -1; + } + + public int l() { + int i; + int j; + for(j = 0; j < 9; ++j) { + i = (this.itemInHandIndex + j) % 9; + if (this.items.get(i).isEmpty()) { + return i; + } + } + + for(j = 0; j < 9; ++j) { + i = (this.itemInHandIndex + j) % 9; + if (!this.items.get(i).hasEnchantments()) { + return i; + } + } + + return this.itemInHandIndex; + } + + public int a(Predicate predicate, int i) { + int j = 0; + + int k; + for(k = 0; k < this.getSize(); ++k) { + ItemStack itemstack = this.getItem(k); + if (!itemstack.isEmpty() && predicate.test(itemstack)) { + int l = i <= 0 ? itemstack.getCount() : Math.min(i - j, itemstack.getCount()); + j += l; + if (i != 0) { + itemstack.subtract(l); + if (itemstack.isEmpty()) { + this.setItem(k, ItemStack.a); + } + + if (i > 0 && j >= i) { + return j; + } + } + } + } + + if (!this.getCarried().isEmpty() && predicate.test(this.getCarried())) { + k = i <= 0 ? this.getCarried().getCount() : Math.min(i - j, this.getCarried().getCount()); + j += k; + if (i != 0) { + this.getCarried().subtract(k); + if (this.getCarried().isEmpty()) { + this.setCarried(ItemStack.a); + } + + if (i > 0 && j >= i) { + return j; + } + } + } + + return j; + } + + private int i(ItemStack itemstack) { + int i = this.firstPartial(itemstack); + if (i == -1) { + i = this.getFirstEmptySlotIndex(); + } + + return i == -1 ? itemstack.getCount() : this.d(i, itemstack); + } + + private int d(int i, ItemStack itemstack) { + Item item = itemstack.getItem(); + int j = itemstack.getCount(); + ItemStack itemstack1 = this.getItem(i); + if (itemstack1.isEmpty()) { + itemstack1 = new ItemStack(item, 0); + if (itemstack.hasTag()) { + itemstack1.setTag(itemstack.getTag().clone()); + } + + this.setItem(i, itemstack1); + } + + int k = j; + if (j > itemstack1.getMaxStackSize() - itemstack1.getCount()) { + k = itemstack1.getMaxStackSize() - itemstack1.getCount(); + } + + if (k > this.getMaxStackSize() - itemstack1.getCount()) { + k = this.getMaxStackSize() - itemstack1.getCount(); + } + + if (k == 0) { + return j; + } else { + j -= k; + itemstack1.add(k); + itemstack1.d(5); + return j; + } + } + + public int firstPartial(ItemStack itemstack) { + if (this.a(this.getItem(this.itemInHandIndex), itemstack)) { + return this.itemInHandIndex; + } else if (this.a(this.getItem(40), itemstack)) { + return 40; + } else { + for(int i = 0; i < this.items.size(); ++i) { + if (this.a(this.items.get(i), itemstack)) { + return i; + } + } + + return -1; + } + } + + public void p() { + + for (NonNullList itemStacks : this.f) { + for (int i = 0; i < itemStacks.size(); ++i) { + if (!itemStacks.get(i).isEmpty()) { + itemStacks.get(i).a(this.player.world, this.player, i, this.itemInHandIndex == i); + } + } + } + + } + + public boolean pickup(ItemStack itemstack) { + return this.c(-1, itemstack); + } + + public boolean c(int i, ItemStack itemstack) { + if (itemstack.isEmpty()) { + return false; + } else { + try { + if (itemstack.f()) { + if (i == -1) { + i = this.getFirstEmptySlotIndex(); + } + + if (i >= 0) { + this.items.set(i, itemstack.cloneItemStack()); + this.items.get(i).d(5); + itemstack.setCount(0); + return true; + } else if (this.player.abilities.canInstantlyBuild) { + itemstack.setCount(0); + return true; + } else { + return false; + } + } else { + int j; + do { + j = itemstack.getCount(); + if (i == -1) { + itemstack.setCount(this.i(itemstack)); + } else { + itemstack.setCount(this.d(i, itemstack)); + } + } while(!itemstack.isEmpty() && itemstack.getCount() < j); + + if (itemstack.getCount() == j && this.player.abilities.canInstantlyBuild) { + itemstack.setCount(0); + return true; + } else { + return itemstack.getCount() < j; + } + } + } catch (Throwable var6) { + CrashReport crashreport = CrashReport.a(var6, "Adding item to inventory"); + CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Item being added"); + crashreportsystemdetails.a("Item ID", Item.getId(itemstack.getItem())); + crashreportsystemdetails.a("Item data", itemstack.getDamage()); + crashreportsystemdetails.a("Item name", () -> itemstack.getName().getString()); + throw new ReportedException(crashreport); + } + } + } + + public void a(World world, ItemStack itemstack) { + if (!world.isClientSide) { + while(!itemstack.isEmpty()) { + int i = this.firstPartial(itemstack); + if (i == -1) { + i = this.getFirstEmptySlotIndex(); + } + + if (i == -1) { + this.player.drop(itemstack, false); + break; + } + + int j = itemstack.getMaxStackSize() - this.getItem(i).getCount(); + if (this.c(i, itemstack.cloneAndSubtract(j))) { + ((EntityPlayer)this.player).playerConnection.sendPacket(new PacketPlayOutSetSlot(-2, i, this.getItem(i))); + } + } + } + + } + + public void f(ItemStack itemstack) { + + for (NonNullList nonnulllist : this.f) { + for (int i = 0; i < nonnulllist.size(); ++i) { + if (nonnulllist.get(i) == itemstack) { + nonnulllist.set(i, ItemStack.a); + break; + } + } + } + } + + public float a(IBlockData iblockdata) { + return this.items.get(this.itemInHandIndex).a(iblockdata); + } + + public NBTTagList a(NBTTagList nbttaglist) { + NBTTagCompound nbttagcompound; + int i; + for(i = 0; i < this.items.size(); ++i) { + if (!this.items.get(i).isEmpty()) { + nbttagcompound = new NBTTagCompound(); + nbttagcompound.setByte("Slot", (byte) i); + this.items.get(i).save(nbttagcompound); + nbttaglist.add(nbttagcompound); + } + } + + for(i = 0; i < this.armor.size(); ++i) { + if (!this.armor.get(i).isEmpty()) { + nbttagcompound = new NBTTagCompound(); + nbttagcompound.setByte("Slot", (byte) (i + 100)); + this.armor.get(i).save(nbttagcompound); + nbttaglist.add(nbttagcompound); + } + } + + for(i = 0; i < this.extraSlots.size(); ++i) { + if (!this.extraSlots.get(i).isEmpty()) { + nbttagcompound = new NBTTagCompound(); + nbttagcompound.setByte("Slot", (byte) (i + 150)); + this.extraSlots.get(i).save(nbttagcompound); + nbttaglist.add(nbttagcompound); + } + } + + return nbttaglist; + } + + public void b(NBTTagList nbttaglist) { + this.items.clear(); + this.armor.clear(); + this.extraSlots.clear(); + + for(int i = 0; i < nbttaglist.size(); ++i) { + NBTTagCompound nbttagcompound = nbttaglist.getCompound(i); + int j = nbttagcompound.getByte("Slot") & 255; + ItemStack itemstack = ItemStack.a(nbttagcompound); + if (!itemstack.isEmpty()) { + if (j >= 0 && j < this.items.size()) { + this.items.set(j, itemstack); + } else if (j >= 100 && j < this.armor.size() + 100) { + this.armor.set(j - 100, itemstack); + } else if (j >= 150 && j < this.extraSlots.size() + 150) { + this.extraSlots.set(j - 150, itemstack); + } + } + } + + } + + public boolean P_() { + Iterator iterator = this.items.iterator(); + + ItemStack itemstack; + while(iterator.hasNext()) { + itemstack = (ItemStack)iterator.next(); + if (!itemstack.isEmpty()) { + return false; + } + } + + iterator = this.armor.iterator(); + + while(iterator.hasNext()) { + itemstack = (ItemStack)iterator.next(); + if (!itemstack.isEmpty()) { + return false; + } + } + + iterator = this.extraSlots.iterator(); + + while(iterator.hasNext()) { + itemstack = (ItemStack)iterator.next(); + if (!itemstack.isEmpty()) { + return false; + } + } + + return true; + } + + @Nullable + public IChatBaseComponent getCustomName() { + return null; + } + + public boolean b(IBlockData iblockdata) { + return this.getItem(this.itemInHandIndex).b(iblockdata); + } + + public void a(float f) { + if (f > 0.0F) { + f /= 4.0F; + if (f < 1.0F) { + f = 1.0F; + } + + for (ItemStack itemstack : this.armor) { + if (itemstack.getItem() instanceof ItemArmor) { + itemstack.damage((int) f, this.player); + } + } + } + } + + public void dropContents() { + for (NonNullList itemStacks : this.f) { + for (int i = 0; i < itemStacks.size(); ++i) { + ItemStack itemstack = itemStacks.get(i); + if (!itemstack.isEmpty()) { + itemStacks.set(i, ItemStack.a); + this.player.a(itemstack, true, false); + } + } + } + } + + public boolean h(ItemStack itemstack) { + return this.f.stream().flatMap(NonNullList::stream).anyMatch(itemStack1 -> !itemStack1.isEmpty() && itemStack1.doMaterialsMatch(itemstack)); + } + + public void a(PlayerInventory playerinventory) { + for (int i = 0; i < playerinventory.getSize(); ++i) { + this.setItem(i, playerinventory.getItem(i)); + } + + this.itemInHandIndex = playerinventory.itemInHandIndex; + } + + public void clear() { + this.f.forEach(NonNullList::clear); + } + + public void a(AutoRecipeStackManager autorecipestackmanager) { + for (ItemStack itemstack : this.items) { + autorecipestackmanager.a(itemstack); + } + } + } -- 2.49.1 From a469c732cc89c349f3cf97a0f8821ad7a65313c9 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 28 Apr 2019 11:03:00 -0400 Subject: [PATCH 145/253] Store UUID instead of name for faster re-open lookups --- .../com/lishid/openinv/commands/OpenEnderPluginCommand.java | 4 ++-- .../com/lishid/openinv/commands/OpenInvPluginCommand.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java index 4239555..cfc8672 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -131,10 +131,10 @@ public class OpenEnderPluginCommand implements CommandExecutor { } // Record the target - this.openEnderHistory.put(player, onlineTarget.getName()); + this.openEnderHistory.put(player, this.plugin.getPlayerID(target)); // Create the inventory - ISpecialEnderChest chest; + final ISpecialEnderChest chest; try { chest = this.plugin.getSpecialEnderChest(onlineTarget, online); } catch (Exception e) { diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java index ab62861..69d7e46 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -140,10 +140,10 @@ public class OpenInvPluginCommand implements CommandExecutor { } // Record the target - this.openInvHistory.put(player, onlineTarget.getName()); + this.openInvHistory.put(player, this.plugin.getPlayerID(target)); // Create the inventory - ISpecialPlayerInventory inv; + final ISpecialPlayerInventory inv; try { inv = this.plugin.getSpecialInventory(onlineTarget, online); } catch (Exception e) { -- 2.49.1 From adc35e9ad5e3828656f59bee19c0b82f8edb85bc Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 28 Apr 2019 12:11:59 -0400 Subject: [PATCH 146/253] Correct players not being properly released --- .../src/main/java/com/lishid/openinv/OpenInv.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java index 6c1975d..e37127e 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java @@ -543,7 +543,17 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } public void releaseAllPlayers(final Plugin plugin) { - this.pluginUsage.removeAll(plugin.getClass()); + Iterator>> iterator = this.pluginUsage.entries().iterator(); + + if (!iterator.hasNext()) { + return; + } + + for (Map.Entry> entry = iterator.next(); iterator.hasNext(); entry = iterator.next()) { + if (entry.getValue().equals(plugin.getClass())) { + iterator.remove(); + } + } } @Override -- 2.49.1 From 9e37cbbca8fe5d763997d37314ca368d57ca28bb Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 28 Apr 2019 20:37:05 -0400 Subject: [PATCH 147/253] Prepare for 1.14 To continue providing renamed ender chests/player inventories we can no longer just provide an Inventory, a full InventoryView is required. To avoid confusion the old method has been removed entirely, leading to a major API revision bump. --- api/pom.xml | 2 +- .../java/com/lishid/openinv/IOpenInv.java | 76 ++++-------- .../openinv/internal/IAnySilentContainer.java | 15 +-- .../openinv/internal/IInventoryAccess.java | 12 +- .../openinv/internal/ISpecialEnderChest.java | 14 ++- .../internal/ISpecialPlayerInventory.java | 14 ++- assembly/pom.xml | 2 +- common/pom.xml | 4 +- .../openinv/internal/IPlayerDataManager.java | 15 ++- .../java/com/lishid/openinv/util/Cache.java | 5 +- .../lishid/openinv/util/InternalAccessor.java | 11 +- internal/1_4_5/pom.xml | 4 +- .../internal/v1_4_5/AnySilentContainer.java | 78 ++++++------ .../internal/v1_4_5/InventoryAccess.java | 14 +-- .../internal/v1_4_5/PlayerDataManager.java | 31 +++-- .../internal/v1_4_5/SilentContainerChest.java | 2 +- .../internal/v1_4_5/SpecialEnderChest.java | 43 +++++-- .../v1_4_5/SpecialPlayerInventory.java | 35 ++++-- internal/1_4_6/pom.xml | 4 +- .../internal/v1_4_6/AnySilentContainer.java | 78 ++++++------ .../internal/v1_4_6/InventoryAccess.java | 14 +-- .../internal/v1_4_6/PlayerDataManager.java | 31 +++-- .../internal/v1_4_6/SilentContainerChest.java | 2 +- .../internal/v1_4_6/SpecialEnderChest.java | 43 +++++-- .../v1_4_6/SpecialPlayerInventory.java | 35 ++++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 +- .../internal/v1_10_R1/AnySilentContainer.java | 38 +++--- .../internal/v1_10_R1/InventoryAccess.java | 14 +-- .../internal/v1_10_R1/PlayerDataManager.java | 34 +++--- .../internal/v1_10_R1/SpecialEnderChest.java | 40 +++++-- .../v1_10_R1/SpecialPlayerInventory.java | 38 ++++-- internal/v1_11_R1/pom.xml | 4 +- .../internal/v1_11_R1/AnySilentContainer.java | 46 ++++--- .../internal/v1_11_R1/InventoryAccess.java | 14 +-- .../internal/v1_11_R1/PlayerDataManager.java | 34 +++--- .../internal/v1_11_R1/SpecialEnderChest.java | 40 +++++-- .../v1_11_R1/SpecialPlayerInventory.java | 38 ++++-- internal/v1_12_R1/pom.xml | 4 +- .../internal/v1_12_R1/AnySilentContainer.java | 36 +++--- .../internal/v1_12_R1/InventoryAccess.java | 14 +-- .../internal/v1_12_R1/PlayerDataManager.java | 34 +++--- .../internal/v1_12_R1/SpecialEnderChest.java | 40 +++++-- .../v1_12_R1/SpecialPlayerInventory.java | 38 ++++-- internal/v1_13_R1/pom.xml | 4 +- .../internal/v1_13_R1/AnySilentContainer.java | 28 ++--- .../internal/v1_13_R1/InventoryAccess.java | 14 +-- .../internal/v1_13_R1/PlayerDataManager.java | 32 +++-- .../internal/v1_13_R1/SpecialEnderChest.java | 40 +++++-- .../v1_13_R1/SpecialPlayerInventory.java | 40 +++++-- internal/v1_13_R2/pom.xml | 4 +- .../internal/v1_13_R2/AnySilentContainer.java | 32 ++--- .../internal/v1_13_R2/InventoryAccess.java | 9 +- .../internal/v1_13_R2/PlayerDataManager.java | 22 ++-- .../internal/v1_13_R2/SpecialEnderChest.java | 48 ++++++-- .../v1_13_R2/SpecialPlayerInventory.java | 44 +++++-- internal/v1_4_R1/pom.xml | 4 +- .../internal/v1_4_R1/AnySilentContainer.java | 78 ++++++------ .../internal/v1_4_R1/InventoryAccess.java | 14 +-- .../internal/v1_4_R1/PlayerDataManager.java | 31 +++-- .../v1_4_R1/SilentContainerChest.java | 2 +- .../internal/v1_4_R1/SpecialEnderChest.java | 43 +++++-- .../v1_4_R1/SpecialPlayerInventory.java | 35 ++++-- internal/v1_5_R2/pom.xml | 4 +- .../internal/v1_5_R2/AnySilentContainer.java | 78 ++++++------ .../internal/v1_5_R2/InventoryAccess.java | 14 +-- .../internal/v1_5_R2/PlayerDataManager.java | 31 +++-- .../v1_5_R2/SilentContainerChest.java | 2 +- .../internal/v1_5_R2/SpecialEnderChest.java | 43 +++++-- .../v1_5_R2/SpecialPlayerInventory.java | 35 ++++-- internal/v1_5_R3/pom.xml | 4 +- .../internal/v1_5_R3/AnySilentContainer.java | 78 ++++++------ .../internal/v1_5_R3/InventoryAccess.java | 14 +-- .../internal/v1_5_R3/PlayerDataManager.java | 31 +++-- .../v1_5_R3/SilentContainerChest.java | 2 +- .../internal/v1_5_R3/SpecialEnderChest.java | 43 +++++-- .../v1_5_R3/SpecialPlayerInventory.java | 35 ++++-- internal/v1_6_R1/pom.xml | 4 +- .../internal/v1_6_R1/AnySilentContainer.java | 78 ++++++------ .../internal/v1_6_R1/InventoryAccess.java | 14 +-- .../internal/v1_6_R1/PlayerDataManager.java | 31 +++-- .../v1_6_R1/SilentContainerChest.java | 2 +- .../internal/v1_6_R1/SpecialEnderChest.java | 43 +++++-- .../v1_6_R1/SpecialPlayerInventory.java | 35 ++++-- internal/v1_6_R2/pom.xml | 4 +- .../internal/v1_6_R2/AnySilentContainer.java | 78 ++++++------ .../internal/v1_6_R2/InventoryAccess.java | 14 +-- .../internal/v1_6_R2/PlayerDataManager.java | 31 +++-- .../v1_6_R2/SilentContainerChest.java | 2 +- .../internal/v1_6_R2/SpecialEnderChest.java | 43 +++++-- .../v1_6_R2/SpecialPlayerInventory.java | 35 ++++-- internal/v1_6_R3/pom.xml | 4 +- .../internal/v1_6_R3/AnySilentContainer.java | 78 ++++++------ .../internal/v1_6_R3/InventoryAccess.java | 14 +-- .../internal/v1_6_R3/PlayerDataManager.java | 31 +++-- .../v1_6_R3/SilentContainerChest.java | 2 +- .../internal/v1_6_R3/SpecialEnderChest.java | 43 +++++-- .../v1_6_R3/SpecialPlayerInventory.java | 35 ++++-- internal/v1_7_R1/pom.xml | 4 +- .../internal/v1_7_R1/AnySilentContainer.java | 77 ++++++------ .../internal/v1_7_R1/InventoryAccess.java | 14 +-- .../internal/v1_7_R1/PlayerDataManager.java | 31 +++-- .../v1_7_R1/SilentContainerChest.java | 2 +- .../internal/v1_7_R1/SpecialEnderChest.java | 43 +++++-- .../v1_7_R1/SpecialPlayerInventory.java | 35 ++++-- internal/v1_7_R2/pom.xml | 4 +- .../internal/v1_7_R2/AnySilentContainer.java | 77 ++++++------ .../internal/v1_7_R2/InventoryAccess.java | 14 +-- .../internal/v1_7_R2/PlayerDataManager.java | 31 +++-- .../v1_7_R2/SilentContainerChest.java | 2 +- .../internal/v1_7_R2/SpecialEnderChest.java | 43 +++++-- .../v1_7_R2/SpecialPlayerInventory.java | 35 ++++-- internal/v1_7_R3/pom.xml | 4 +- .../internal/v1_7_R3/AnySilentContainer.java | 76 ++++++------ .../internal/v1_7_R3/InventoryAccess.java | 14 +-- .../internal/v1_7_R3/PlayerDataManager.java | 31 +++-- .../v1_7_R3/SilentContainerChest.java | 2 +- .../internal/v1_7_R3/SpecialEnderChest.java | 43 +++++-- .../v1_7_R3/SpecialPlayerInventory.java | 35 ++++-- internal/v1_7_R4/pom.xml | 4 +- .../internal/v1_7_R4/AnySilentContainer.java | 77 ++++++------ .../internal/v1_7_R4/InventoryAccess.java | 14 +-- .../internal/v1_7_R4/PlayerDataManager.java | 31 +++-- .../v1_7_R4/SilentContainerChest.java | 2 +- .../internal/v1_7_R4/SpecialEnderChest.java | 43 +++++-- .../v1_7_R4/SpecialPlayerInventory.java | 35 ++++-- internal/v1_8_R1/pom.xml | 4 +- .../internal/v1_8_R1/AnySilentContainer.java | 36 +++--- .../internal/v1_8_R1/InventoryAccess.java | 14 +-- .../internal/v1_8_R1/PlayerDataManager.java | 34 +++--- .../internal/v1_8_R1/SpecialEnderChest.java | 40 +++++-- .../v1_8_R1/SpecialPlayerInventory.java | 35 ++++-- internal/v1_8_R2/pom.xml | 4 +- .../internal/v1_8_R2/AnySilentContainer.java | 40 +++---- .../internal/v1_8_R2/InventoryAccess.java | 14 +-- .../internal/v1_8_R2/PlayerDataManager.java | 34 +++--- .../internal/v1_8_R2/SpecialEnderChest.java | 40 +++++-- .../v1_8_R2/SpecialPlayerInventory.java | 35 ++++-- internal/v1_8_R3/pom.xml | 4 +- .../internal/v1_8_R3/AnySilentContainer.java | 38 +++--- .../internal/v1_8_R3/InventoryAccess.java | 14 +-- .../internal/v1_8_R3/PlayerDataManager.java | 34 +++--- .../internal/v1_8_R3/SpecialEnderChest.java | 40 +++++-- .../v1_8_R3/SpecialPlayerInventory.java | 35 ++++-- internal/v1_9_R1/pom.xml | 4 +- .../internal/v1_9_R1/AnySilentContainer.java | 38 +++--- .../internal/v1_9_R1/InventoryAccess.java | 14 +-- .../internal/v1_9_R1/PlayerDataManager.java | 34 +++--- .../internal/v1_9_R1/SpecialEnderChest.java | 40 +++++-- .../v1_9_R1/SpecialPlayerInventory.java | 38 ++++-- internal/v1_9_R2/pom.xml | 4 +- .../internal/v1_9_R2/AnySilentContainer.java | 38 +++--- .../internal/v1_9_R2/InventoryAccess.java | 14 +-- .../internal/v1_9_R2/PlayerDataManager.java | 34 +++--- .../internal/v1_9_R2/SpecialEnderChest.java | 40 +++++-- .../v1_9_R2/SpecialPlayerInventory.java | 38 ++++-- plugin/plugin-core/pom.xml | 6 +- .../main/java/com/lishid/openinv/OpenInv.java | 112 +++++++----------- .../commands/AnyChestPluginCommand.java | 1 - .../commands/OpenEnderPluginCommand.java | 6 +- .../commands/OpenInvPluginCommand.java | 6 +- .../commands/SearchEnchantPluginCommand.java | 1 - .../commands/SearchInvPluginCommand.java | 1 - .../commands/SilentChestPluginCommand.java | 3 +- .../listeners/InventoryClickListener.java | 1 - .../listeners/InventoryCloseListener.java | 1 - .../openinv/listeners/PlayerListener.java | 1 - .../openinv/listeners/PluginListener.java | 1 - .../lishid/openinv/util/ConfigUpdater.java | 17 ++- plugin/plugin-v1_10_R1/pom.xml | 4 +- .../listeners/InventoryDragListener.java | 1 - plugin/pom.xml | 2 +- pom.xml | 10 +- 173 files changed, 2572 insertions(+), 1911 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 18791a4..3ea7a3c 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvapi diff --git a/api/src/main/java/com/lishid/openinv/IOpenInv.java b/api/src/main/java/com/lishid/openinv/IOpenInv.java index d8b16c4..db8919b 100644 --- a/api/src/main/java/com/lishid/openinv/IOpenInv.java +++ b/api/src/main/java/com/lishid/openinv/IOpenInv.java @@ -16,16 +16,15 @@ package com.lishid.openinv; -import javax.annotation.Nullable; - import com.lishid.openinv.internal.IAnySilentContainer; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; - import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * Interface defining behavior for the OpenInv plugin. @@ -45,49 +44,21 @@ public interface IOpenInv { boolean disableSaving(); /** - * Gets the active ISilentContainer implementation. May return null if the server version is - * unsupported. + * Gets the active ISilentContainer implementation. * * @return the ISilentContainer * @throws IllegalStateException if the server version is unsupported */ + @NotNull IAnySilentContainer getAnySilentContainer(); /** - * Gets an ISpecialEnderChest for the given Player. Returns null if the ISpecialEnderChest could - * not be instantiated. - * - * @param player the Player - * @param online true if the Player is currently online - * @return the ISpecialEnderChest - * @throws IllegalStateException if the server version is unsupported - * @deprecated Use {@link IOpenInv#getSpecialEnderChest(Player, boolean)} - */ - @Deprecated - @Nullable - ISpecialEnderChest getEnderChest(Player player, boolean online); - - /** - * Gets an ISpecialPlayerInventory for the given Player. Returns null if the - * ISpecialPlayerInventory could not be instantiated. - * - * @param player the Player - * @param online true if the Player is currently online - * @return the ISpecialPlayerInventory - * @throws IllegalStateException if the server version is unsupported - * @deprecated Use {@link IOpenInv#getSpecialInventory(Player, boolean)} - */ - @Deprecated - @Nullable - ISpecialPlayerInventory getInventory(Player player, boolean online); - - /** - * Gets the active IInventoryAccess implementation. May return null if the server version is - * unsupported. + * Gets the active IInventoryAccess implementation. * * @return the IInventoryAccess * @throws IllegalStateException if the server version is unsupported */ + @NotNull IInventoryAccess getInventoryAccess(); /** @@ -97,7 +68,7 @@ public interface IOpenInv { * @return true if AnyChest is enabled * @throws IllegalStateException if the server version is unsupported */ - boolean getPlayerAnyChestStatus(OfflinePlayer player); + boolean getPlayerAnyChestStatus(@NotNull OfflinePlayer player); /** * Gets a unique identifier by which the OfflinePlayer can be referenced. Using the value @@ -107,16 +78,17 @@ public interface IOpenInv { * @return the identifier * @throws IllegalStateException if the server version is unsupported */ - String getPlayerID(OfflinePlayer offline); + @NotNull + String getPlayerID(@NotNull OfflinePlayer offline); /** * Gets a player's SilentChest setting. * - * @param player the OfflinePlayer + * @param offline the OfflinePlayer * @return true if SilentChest is enabled * @throws IllegalStateException if the server version is unsupported */ - boolean getPlayerSilentChestStatus(OfflinePlayer player); + boolean getPlayerSilentChestStatus(@NotNull OfflinePlayer offline); /** * Gets an ISpecialEnderChest for the given Player. @@ -127,7 +99,8 @@ public interface IOpenInv { * @throws IllegalStateException if the server version is unsupported * @throws InstantiationException if the ISpecialEnderChest could not be instantiated */ - ISpecialEnderChest getSpecialEnderChest(Player player, boolean online) throws InstantiationException; + @NotNull + ISpecialEnderChest getSpecialEnderChest(@NotNull Player player, boolean online) throws InstantiationException; /** * Gets an ISpecialPlayerInventory for the given Player. @@ -138,7 +111,8 @@ public interface IOpenInv { * @throws IllegalStateException if the server version is unsupported * @throws InstantiationException if the ISpecialPlayerInventory could not be instantiated */ - ISpecialPlayerInventory getSpecialInventory(Player player, boolean online) throws InstantiationException; + @NotNull + ISpecialPlayerInventory getSpecialInventory(@NotNull Player player, boolean online) throws InstantiationException; /** * Checks if the server version is supported by OpenInv. @@ -155,7 +129,7 @@ public interface IOpenInv { * @throws IllegalStateException if the server version is unsupported */ @Nullable - Player loadPlayer(final OfflinePlayer offline); + Player loadPlayer(@NotNull final OfflinePlayer offline); /** * Get an OfflinePlayer by name. @@ -168,7 +142,7 @@ public interface IOpenInv { * @return the OfflinePlayer with the closest matching name or null if no players have ever logged in */ @Nullable - OfflinePlayer matchPlayer(String name); + OfflinePlayer matchPlayer(@NotNull String name); /** * Check the configuration value for whether or not OpenInv displays a notification to the user @@ -194,7 +168,7 @@ public interface IOpenInv { * @param plugin the Plugin no longer holding a reference to the Player * @throws IllegalStateException if the server version is unsupported */ - void releasePlayer(Player player, Plugin plugin); + void releasePlayer(@NotNull Player player, @NotNull Plugin plugin); /** * Mark a Player as in use by a Plugin to prevent it from being removed from the cache. Used to @@ -219,32 +193,32 @@ public interface IOpenInv { * @param plugin the Plugin holding the reference to the Player * @throws IllegalStateException if the server version is unsupported */ - void retainPlayer(Player player, Plugin plugin); + void retainPlayer(@NotNull Player player, @NotNull Plugin plugin); /** * Sets a player's AnyChest setting. * - * @param player the OfflinePlayer + * @param offline the OfflinePlayer * @param status the status * @throws IllegalStateException if the server version is unsupported */ - void setPlayerAnyChestStatus(OfflinePlayer player, boolean status); + void setPlayerAnyChestStatus(@NotNull OfflinePlayer offline, boolean status); /** * Sets a player's SilentChest setting. * - * @param player the OfflinePlayer + * @param offline the OfflinePlayer * @param status the status * @throws IllegalStateException if the server version is unsupported */ - void setPlayerSilentChestStatus(OfflinePlayer player, boolean status); + void setPlayerSilentChestStatus(@NotNull OfflinePlayer offline, boolean status); /** * Forcibly unload a cached Player's data. * - * @param player the OfflinePlayer to unload + * @param offline the OfflinePlayer to unload * @throws IllegalStateException if the server version is unsupported */ - void unload(OfflinePlayer player); + void unload(@NotNull OfflinePlayer offline); } diff --git a/api/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java b/api/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java index 9361706..4533999 100644 --- a/api/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java +++ b/api/src/main/java/com/lishid/openinv/internal/IAnySilentContainer.java @@ -18,6 +18,7 @@ package com.lishid.openinv.internal; import org.bukkit.block.Block; import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public interface IAnySilentContainer { @@ -26,19 +27,19 @@ public interface IAnySilentContainer { * containers to open, be sure to check {@link #isAnyContainerNeeded(Player, Block)} * first. * - * @param player the Player opening the container - * @param silentchest whether the container's noise is to be silenced - * @param block the Block + * @param player the Player opening the container + * @param silent whether the container's noise is to be silenced + * @param block the Block * @return true if the container can be opened */ - boolean activateContainer(Player player, boolean silentchest, Block block); + boolean activateContainer(@NotNull Player player, boolean silent, @NotNull Block block); /** * Closes the Player's currently open container silently, if necessary. * * @param player the Player closing a container */ - void deactivateContainer(Player player); + void deactivateContainer(@NotNull Player player); /** * Checks if the container at the given coordinates is blocked. @@ -47,7 +48,7 @@ public interface IAnySilentContainer { * @param block the Block * @return true if the container is blocked */ - boolean isAnyContainerNeeded(Player player, Block block); + boolean isAnyContainerNeeded(@NotNull Player player, @NotNull Block block); /** * Checks if the given block is a container which can be unblocked or silenced. @@ -55,6 +56,6 @@ public interface IAnySilentContainer { * @param block the BlockState * @return true if the Block is a supported container */ - boolean isAnySilentContainer(Block block); + boolean isAnySilentContainer(@NotNull Block block); } diff --git a/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java b/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java index ceb4c5a..648cce9 100644 --- a/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java +++ b/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java @@ -16,9 +16,9 @@ package com.lishid.openinv.internal; -import javax.annotation.Nullable; - import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public interface IInventoryAccess { @@ -30,7 +30,7 @@ public interface IInventoryAccess { * @return the ISpecialEnderChest or null */ @Nullable - ISpecialEnderChest getSpecialEnderChest(Inventory inventory); + ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory); /** * Gets an ISpecialPlayerInventory from an Inventory or null if the Inventory is not backed by @@ -40,7 +40,7 @@ public interface IInventoryAccess { * @return the ISpecialPlayerInventory or null */ @Nullable - ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory); + ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory); /** * Check if an Inventory is an ISpecialEnderChest implementation. @@ -48,7 +48,7 @@ public interface IInventoryAccess { * @param inventory the Inventory * @return true if the Inventory is backed by an ISpecialEnderChest */ - boolean isSpecialEnderChest(Inventory inventory); + boolean isSpecialEnderChest(@NotNull Inventory inventory); /** * Check if an Inventory is an ISpecialPlayerInventory implementation. @@ -56,6 +56,6 @@ public interface IInventoryAccess { * @param inventory the Inventory * @return true if the Inventory is backed by an ISpecialPlayerInventory */ - boolean isSpecialPlayerInventory(Inventory inventory); + boolean isSpecialPlayerInventory(@NotNull Inventory inventory); } diff --git a/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java b/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java index 005f2d6..f076d20 100644 --- a/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java +++ b/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java @@ -17,23 +17,27 @@ package com.lishid.openinv.internal; import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public interface ISpecialEnderChest { /** - * Gets the Inventory associated with this ISpecialEnderChest. + * Gets the InventoryView associated with this ISpecialEnderChest. * - * @return the Inventory + * @param viewer the Player opening the ISpecialEnderChest + * @return the InventoryView */ - Inventory getBukkitInventory(); + @NotNull + InventoryView getBukkitView(@Nullable Player viewer); /** * Sets the Player associated with this ISpecialEnderChest online. * * @param player the Player coming online */ - void setPlayerOnline(Player player); + void setPlayerOnline(@NotNull Player player); /** * Sets the Player associated with this ISpecialEnderChest offline. diff --git a/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java b/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java index 077c392..87708b6 100644 --- a/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java +++ b/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java @@ -17,23 +17,27 @@ package com.lishid.openinv.internal; import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public interface ISpecialPlayerInventory { /** - * Gets the Inventory associated with this ISpecialPlayerInventory. + * Gets the InventoryView associated with this ISpecialPlayerInventory. * - * @return the Inventory + * @param viewer the Player opening the ISpecialPlayerInventory + * @return the InventoryView */ - Inventory getBukkitInventory(); + @NotNull + InventoryView getBukkitView(@Nullable Player viewer); /** * Sets the Player associated with this ISpecialPlayerInventory online. * * @param player the Player coming online */ - void setPlayerOnline(Player player); + void setPlayerOnline(@NotNull Player player); /** * Sets the Player associated with this ISpecialPlayerInventory offline. diff --git a/assembly/pom.xml b/assembly/pom.xml index 184b2d4..7d102a0 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 9010aee..d8a6e2a 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvcommon @@ -38,7 +38,7 @@ com.lishid openinvapi - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/common/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java b/common/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java index 12df4a3..3dc3d75 100644 --- a/common/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java +++ b/common/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java @@ -17,9 +17,10 @@ package com.lishid.openinv.internal; import java.util.Collection; - import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public interface IPlayerDataManager { @@ -31,7 +32,8 @@ public interface IPlayerDataManager { * @param offline the OfflinePlayer * @return the Player loaded */ - Player loadPlayer(OfflinePlayer offline); + @Nullable + Player loadPlayer(@NotNull OfflinePlayer offline); /** * Gets a unique identifying string for an OfflinePlayer. @@ -39,7 +41,8 @@ public interface IPlayerDataManager { * @param offline the OfflinePlayer * @return the unique identifier */ - String getPlayerDataID(OfflinePlayer offline); + @NotNull + String getPlayerDataID(@NotNull OfflinePlayer offline); /** * Gets an OfflinePlayer by the given unique identifier. @@ -47,13 +50,15 @@ public interface IPlayerDataManager { * @param identifier the unique identifier * @return the OfflinePlayer, or null if no exact match was found */ - OfflinePlayer getPlayerByID(String identifier); + @Nullable + OfflinePlayer getPlayerByID(@NotNull String identifier); /** * Gets a Collection of all Players currently online. * * @return the Collection of Players */ - Collection getOnlinePlayers(); + @NotNull + Collection getOnlinePlayers(); } diff --git a/common/src/main/java/com/lishid/openinv/util/Cache.java b/common/src/main/java/com/lishid/openinv/util/Cache.java index dd6d0da..155bcf1 100644 --- a/common/src/main/java/com/lishid/openinv/util/Cache.java +++ b/common/src/main/java/com/lishid/openinv/util/Cache.java @@ -16,6 +16,8 @@ package com.lishid.openinv.util; +import com.google.common.collect.Multimap; +import com.google.common.collect.TreeMultimap; import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; @@ -23,9 +25,6 @@ import java.util.Iterator; import java.util.List; import java.util.Map; -import com.google.common.collect.Multimap; -import com.google.common.collect.TreeMultimap; - /** * A minimal thread-safe time-based cache implementation backed by a HashMap and TreeMultimap. * diff --git a/common/src/main/java/com/lishid/openinv/util/InternalAccessor.java b/common/src/main/java/com/lishid/openinv/util/InternalAccessor.java index 652198a..74153b5 100644 --- a/common/src/main/java/com/lishid/openinv/util/InternalAccessor.java +++ b/common/src/main/java/com/lishid/openinv/util/InternalAccessor.java @@ -16,16 +16,14 @@ package com.lishid.openinv.util; -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; - import com.lishid.openinv.internal.IAnySilentContainer; 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 java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; @@ -63,13 +61,14 @@ public class InternalAccessor { this.version = packageName.substring(packageName.lastIndexOf('.') + 1); try { + // TODO: implement support for CraftMagicNumbers#getMappingsVersion Class.forName("com.lishid.openinv.internal." + this.version + ".SpecialPlayerInventory"); Class.forName("com.lishid.openinv.internal." + this.version + ".SpecialEnderChest"); this.playerDataManager = this.createObject(IPlayerDataManager.class, "PlayerDataManager"); this.inventoryAccess = this.createObject(IInventoryAccess.class, "InventoryAccess"); this.anySilentContainer = this.createObject(IAnySilentContainer.class, "AnySilentContainer"); this.supported = true; - } catch (Exception e) {} + } catch (Exception ignored) {} } private T createObject(final Class assignableClass, final String className, diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 7ff574a..08d0b2a 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_4_5 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java index 494e124..fb0f1ce 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java @@ -17,11 +17,6 @@ package com.lishid.openinv.internal.v1_4_5; import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_4_5.AxisAlignedBB; import net.minecraft.server.v1_4_5.BlockEnderChest; import net.minecraft.server.v1_4_5.Container; @@ -34,43 +29,46 @@ import net.minecraft.server.v1_4_5.Packet100OpenWindow; import net.minecraft.server.v1_4_5.TileEntityChest; import net.minecraft.server.v1_4_5.TileEntityEnderChest; import net.minecraft.server.v1_4_5.World; - +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_4_5.event.CraftEventFactory; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + public boolean isAnySilentContainer(@NotNull Block bukkitBlock) { + return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull Block bukkitBlock) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; + World world = PlayerDataManager.getHandle(bukkitPlayer).world; - if (block instanceof BlockEnderChest) { + if (bukkitBlock instanceof BlockEnderChest) { // Ender chests are not blocked by ocelots. - return world.t(block.getX(), block.getY() + 1, block.getZ()); + return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); } // If block or ocelot on top - if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { return true; } - int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); // If block next to chest is chest and has a block or ocelot on top - if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); - } else if(world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); - } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); - } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); + } else if(world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); + } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); + } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); } return false; @@ -93,18 +91,18 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is API-only - if (silentchest && block.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); return true; } World world = player.world; - Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); if (tile == null) { return false; @@ -123,20 +121,20 @@ public class AnySilentContainer implements IAnySilentContainer { } IInventory inventory = (IInventory) tile; - int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); - } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); - } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); - } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); + if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); + } else if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); + } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); + } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); } // AnyChest only - if (!silentchest) { + if (!silent) { player.openContainer(inventory); return true; } @@ -160,12 +158,12 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } catch (Exception e) { e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); return false; } } @Override - public void deactivateContainer(final Player bukkitPlayer) {} + public void deactivateContainer(@NotNull final Player bukkitPlayer) {} } diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java index 5b7a11c..f2bbb18 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_4_5.IInventory; - import org.bukkit.craftbukkit.v1_4_5.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java index 4661453..f92cc0e 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java @@ -16,29 +16,26 @@ package com.lishid.openinv.internal.v1_4_5; +import com.lishid.openinv.internal.IPlayerDataManager; import java.util.Arrays; import java.util.Collection; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_4_5.EntityPlayer; import net.minecraft.server.v1_4_5.ItemInWorldManager; import net.minecraft.server.v1_4_5.MinecraftServer; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_4_5.CraftServer; import org.bukkit.craftbukkit.v1_4_5.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure the player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -49,7 +46,7 @@ public class PlayerDataManager implements IPlayerDataManager { new ItemInWorldManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -58,13 +55,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); // Ensure player is a real player, otherwise return null if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { @@ -73,7 +71,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java index a192485..01a0641 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java @@ -24,7 +24,7 @@ import net.minecraft.server.v1_4_5.PlayerInventory; class SilentContainerChest extends ContainerChest { - public SilentContainerChest(IInventory i1, IInventory i2) { + SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); // Send close signal i2.f(); diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java index 83cf09a..d31e94b 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java @@ -16,26 +16,25 @@ package com.lishid.openinv.internal.v1_4_5; +import com.lishid.openinv.internal.ISpecialEnderChest; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; - -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - import net.minecraft.server.v1_4_5.EntityPlayer; import net.minecraft.server.v1_4_5.IInventory; import net.minecraft.server.v1_4_5.InventoryEnderChest; import net.minecraft.server.v1_4_5.InventorySubcontainer; import net.minecraft.server.v1_4_5.ItemStack; - import org.bukkit.craftbukkit.v1_4_5.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_4_5.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_4_5.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -56,13 +55,31 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); @@ -71,7 +88,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java index fb70752..dc3d4e1 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java @@ -17,14 +17,15 @@ package com.lishid.openinv.internal.v1_4_5; import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_4_5.ItemStack; import net.minecraft.server.v1_4_5.PlayerInventory; - import org.bukkit.craftbukkit.v1_4_5.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -39,13 +40,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 78322ea..4381239 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_4_6 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java index 024d64e..51ac76b 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java @@ -17,11 +17,6 @@ package com.lishid.openinv.internal.v1_4_6; import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_4_6.AxisAlignedBB; import net.minecraft.server.v1_4_6.BlockEnderChest; import net.minecraft.server.v1_4_6.Container; @@ -34,43 +29,46 @@ import net.minecraft.server.v1_4_6.Packet100OpenWindow; import net.minecraft.server.v1_4_6.TileEntityChest; import net.minecraft.server.v1_4_6.TileEntityEnderChest; import net.minecraft.server.v1_4_6.World; - +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_4_6.event.CraftEventFactory; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + public boolean isAnySilentContainer(@NotNull Block bukkitBlock) { + return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull Block bukkitBlock) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; + World world = PlayerDataManager.getHandle(bukkitPlayer).world; - if (block instanceof BlockEnderChest) { + if (bukkitBlock instanceof BlockEnderChest) { // Ender chests are not blocked by ocelots. - return world.t(block.getX(), block.getY() + 1, block.getZ()); + return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); } // If block or ocelot on top - if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { return true; } - int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); // If block next to chest is chest and has a block or ocelot on top - if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); - } else if(world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); - } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); - } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); + } else if(world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); + } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); + } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); } return false; @@ -93,18 +91,18 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is API-only - if (silentchest && block.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); return true; } World world = player.world; - Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); if (tile == null) { return false; @@ -123,20 +121,20 @@ public class AnySilentContainer implements IAnySilentContainer { } IInventory inventory = (IInventory) tile; - int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); - } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); - } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); - } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); + if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); + } else if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); + } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); + } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); } // AnyChest only - if (!silentchest) { + if (!silent) { player.openContainer(inventory); return true; } @@ -160,12 +158,12 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } catch (Exception e) { e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); return false; } } @Override - public void deactivateContainer(final Player bukkitPlayer) {} + public void deactivateContainer(@NotNull final Player bukkitPlayer) {} } diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java index 72a209d..89db605 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_4_6.IInventory; - import org.bukkit.craftbukkit.v1_4_6.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java index 9b56c4b..5ce88e0 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java @@ -16,29 +16,26 @@ package com.lishid.openinv.internal.v1_4_6; +import com.lishid.openinv.internal.IPlayerDataManager; import java.util.Arrays; import java.util.Collection; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_4_6.EntityPlayer; import net.minecraft.server.v1_4_6.MinecraftServer; import net.minecraft.server.v1_4_6.PlayerInteractManager; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_4_6.CraftServer; import org.bukkit.craftbukkit.v1_4_6.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure the player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -49,7 +46,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -58,13 +55,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); // Ensure player is a real player, otherwise return null if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { @@ -73,7 +71,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java index bc9d1d3..7094676 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java @@ -24,7 +24,7 @@ import net.minecraft.server.v1_4_6.PlayerInventory; class SilentContainerChest extends ContainerChest { - public SilentContainerChest(IInventory i1, IInventory i2) { + SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); // Send close signal i2.f(); diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java index f6eebc1..2e2e8ae 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java @@ -16,26 +16,25 @@ package com.lishid.openinv.internal.v1_4_6; +import com.lishid.openinv.internal.ISpecialEnderChest; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; - -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - import net.minecraft.server.v1_4_6.EntityPlayer; import net.minecraft.server.v1_4_6.IInventory; import net.minecraft.server.v1_4_6.InventoryEnderChest; import net.minecraft.server.v1_4_6.InventorySubcontainer; import net.minecraft.server.v1_4_6.ItemStack; - import org.bukkit.craftbukkit.v1_4_6.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_4_6.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_4_6.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -56,13 +55,31 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); @@ -71,7 +88,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java index 0976e2b..2e0c822 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java @@ -17,14 +17,15 @@ package com.lishid.openinv.internal.v1_4_6; import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_4_6.ItemStack; import net.minecraft.server.v1_4_6.PlayerInventory; - import org.bukkit.craftbukkit.v1_4_6.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -39,13 +40,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; diff --git a/internal/pom.xml b/internal/pom.xml index 1446216..2fee337 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index 26afc6f..b327947 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_10_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java index e571d4f..ed05132 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java @@ -16,14 +16,8 @@ package com.lishid.openinv.internal.v1_10_R1; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; - +import java.lang.reflect.Field; import net.minecraft.server.v1_10_R1.AxisAlignedBB; import net.minecraft.server.v1_10_R1.Block; import net.minecraft.server.v1_10_R1.BlockChest; @@ -43,6 +37,10 @@ import net.minecraft.server.v1_10_R1.TileEntity; import net.minecraft.server.v1_10_R1.TileEntityChest; import net.minecraft.server.v1_10_R1.TileEntityEnderChest; import net.minecraft.server.v1_10_R1.World; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @@ -59,15 +57,15 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { + return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; - BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { + + World world = PlayerDataManager.getHandle(bukkitPlayer).world; + BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); Block block = world.getType(blockPosition).getBlock(); if (block instanceof BlockEnderChest) { @@ -122,19 +120,19 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is pretty much API-only - if (silentchest && b.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); player.b(StatisticList.X); return true; } World world = player.world; - BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); Object tile = world.getTileEntity(blockPosition); if (tile == null) { @@ -190,7 +188,7 @@ public class AnySilentContainer implements IAnySilentContainer { } // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { + if (!silent || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { player.openContainer(tileInventory); return true; } @@ -208,7 +206,7 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public void deactivateContainer(final Player bukkitPlayer) { + public void deactivateContainer(@NotNull final Player bukkitPlayer) { if (this.playerInteractManagerGamemode == null) { return; } diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java index 6d13fdf..f3ecfb6 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_10_R1.IInventory; - import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java index dc11335..6d5d91c 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java @@ -16,31 +16,27 @@ package com.lishid.openinv.internal.v1_10_R1; +import com.lishid.openinv.internal.IPlayerDataManager; +import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import com.mojang.authlib.GameProfile; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_10_R1.EntityPlayer; import net.minecraft.server.v1_10_R1.MinecraftServer; import net.minecraft.server.v1_10_R1.PlayerInteractManager; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_10_R1.CraftServer; import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -51,7 +47,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -60,13 +56,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getUniqueId().toString(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { try { UUID uuid = UUID.fromString(identifier); OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); @@ -81,7 +78,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java index 95c7482..3d8a4f7 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java @@ -16,21 +16,21 @@ package com.lishid.openinv.internal.v1_10_R1; +import com.lishid.openinv.internal.ISpecialEnderChest; import java.lang.reflect.Field; import java.lang.reflect.Modifier; - -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_10_R1.EntityPlayer; import net.minecraft.server.v1_10_R1.IInventory; import net.minecraft.server.v1_10_R1.InventoryEnderChest; import net.minecraft.server.v1_10_R1.InventorySubcontainer; import net.minecraft.server.v1_10_R1.ItemStack; - import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -69,19 +69,37 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.bukkitOwner = nmsPlayer.getBukkitEntity(); setItemArrays(nmsPlayer.getEnderChest(), this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java index 36072a8..8b4c5e7 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java @@ -16,19 +16,19 @@ package com.lishid.openinv.internal.v1_10_R1; +import com.lishid.openinv.internal.ISpecialPlayerInventory; import java.lang.reflect.Field; import java.lang.reflect.Modifier; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_10_R1.EntityHuman; import net.minecraft.server.v1_10_R1.ItemStack; import net.minecraft.server.v1_10_R1.PlayerInventory; - import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -79,13 +79,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); setItemArrays(this.player.inventory, items, armor, extraSlots); diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index dc685c2..b8c6a52 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_11_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java index 42a42f2..35eeab0 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java @@ -16,15 +16,8 @@ package com.lishid.openinv.internal.v1_11_R1; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.Material; -import org.bukkit.block.BlockState; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; - +import java.lang.reflect.Field; import net.minecraft.server.v1_11_R1.AxisAlignedBB; import net.minecraft.server.v1_11_R1.Block; import net.minecraft.server.v1_11_R1.BlockChest; @@ -35,18 +28,23 @@ import net.minecraft.server.v1_11_R1.Entity; import net.minecraft.server.v1_11_R1.EntityOcelot; import net.minecraft.server.v1_11_R1.EntityPlayer; import net.minecraft.server.v1_11_R1.EnumDirection; +import net.minecraft.server.v1_11_R1.EnumGamemode; import net.minecraft.server.v1_11_R1.IBlockData; import net.minecraft.server.v1_11_R1.ITileInventory; import net.minecraft.server.v1_11_R1.InventoryEnderChest; import net.minecraft.server.v1_11_R1.InventoryLargeChest; +import net.minecraft.server.v1_11_R1.PlayerInteractManager; import net.minecraft.server.v1_11_R1.StatisticList; import net.minecraft.server.v1_11_R1.TileEntity; import net.minecraft.server.v1_11_R1.TileEntityChest; import net.minecraft.server.v1_11_R1.TileEntityEnderChest; import net.minecraft.server.v1_11_R1.TileEntityShulkerBox; import net.minecraft.server.v1_11_R1.World; -import net.minecraft.server.v1_11_R1.EnumGamemode; -import net.minecraft.server.v1_11_R1.PlayerInteractManager; +import org.bukkit.Material; +import org.bukkit.block.BlockState; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @@ -63,19 +61,19 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - if (block.getType() == Material.ENDER_CHEST) { + public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { + if (bukkitBlock.getType() == Material.ENDER_CHEST) { return true; } - BlockState state = block.getState(); + BlockState state = bukkitBlock.getState(); return state instanceof org.bukkit.block.Chest || state instanceof org.bukkit.block.ShulkerBox; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; - BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { + + World world = PlayerDataManager.getHandle(bukkitPlayer).world; + BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); IBlockData blockData = world.getType(blockPosition); Block block = blockData.getBlock(); @@ -162,19 +160,19 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is pretty much API-only - if (silentchest && b.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); player.b(StatisticList.getStatistic("stat.enderchestOpened")); return true; } final World world = player.world; - final BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + final BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); final Object tile = world.getTileEntity(blockPosition); if (tile == null) { @@ -234,7 +232,7 @@ public class AnySilentContainer implements IAnySilentContainer { } // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { + if (!silent || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { player.openContainer(tileInventory); return true; } @@ -252,7 +250,7 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public void deactivateContainer(final Player bukkitPlayer) { + public void deactivateContainer(@NotNull final Player bukkitPlayer) { if (this.playerInteractManagerGamemode == null) { return; } diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java index 741536c..6692094 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_11_R1.IInventory; - import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java index 8d1566c..083bc0f 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java @@ -16,31 +16,27 @@ package com.lishid.openinv.internal.v1_11_R1; +import com.lishid.openinv.internal.IPlayerDataManager; +import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import com.mojang.authlib.GameProfile; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_11_R1.EntityPlayer; import net.minecraft.server.v1_11_R1.MinecraftServer; import net.minecraft.server.v1_11_R1.PlayerInteractManager; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_11_R1.CraftServer; import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -51,7 +47,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -60,13 +56,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getUniqueId().toString(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { try { UUID uuid = UUID.fromString(identifier); OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); @@ -81,7 +78,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java index a4115f0..5619dbf 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java @@ -16,22 +16,22 @@ package com.lishid.openinv.internal.v1_11_R1; +import com.lishid.openinv.internal.ISpecialEnderChest; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.List; - -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_11_R1.EntityPlayer; import net.minecraft.server.v1_11_R1.IInventory; import net.minecraft.server.v1_11_R1.InventoryEnderChest; import net.minecraft.server.v1_11_R1.InventorySubcontainer; import net.minecraft.server.v1_11_R1.ItemStack; - import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -70,19 +70,37 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.bukkitOwner = nmsPlayer.getBukkitEntity(); setItemLists(nmsPlayer.getEnderChest(), this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java index b403d29..42baa12 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java @@ -16,22 +16,22 @@ package com.lishid.openinv.internal.v1_11_R1; +import com.lishid.openinv.internal.ISpecialPlayerInventory; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.Arrays; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_11_R1.ContainerUtil; import net.minecraft.server.v1_11_R1.EntityHuman; import net.minecraft.server.v1_11_R1.ItemStack; import net.minecraft.server.v1_11_R1.NonNullList; import net.minecraft.server.v1_11_R1.PlayerInventory; - import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -81,13 +81,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); setItemArrays(this.player.inventory, items, armor, extraSlots); diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index 02f02e8..4538501 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_12_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java index 493eb5d..4bf1a17 100644 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java @@ -16,16 +16,8 @@ package com.lishid.openinv.internal.v1_12_R1; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.Material; -import org.bukkit.Statistic; -import org.bukkit.block.BlockState; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; - +import java.lang.reflect.Field; import net.minecraft.server.v1_12_R1.AxisAlignedBB; import net.minecraft.server.v1_12_R1.Block; import net.minecraft.server.v1_12_R1.BlockChest; @@ -47,6 +39,12 @@ import net.minecraft.server.v1_12_R1.TileEntityChest; import net.minecraft.server.v1_12_R1.TileEntityEnderChest; import net.minecraft.server.v1_12_R1.TileEntityShulkerBox; import net.minecraft.server.v1_12_R1.World; +import org.bukkit.Material; +import org.bukkit.Statistic; +import org.bukkit.block.BlockState; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @@ -63,20 +61,20 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean isAnySilentContainer(final org.bukkit.block.Block block) { - if (block.getType() == Material.ENDER_CHEST) { + public boolean isAnySilentContainer(@NotNull final org.bukkit.block.Block bukkitBlock) { + if (bukkitBlock.getType() == Material.ENDER_CHEST) { return true; } - BlockState state = block.getState(); + BlockState state = bukkitBlock.getState(); return state instanceof org.bukkit.block.Chest || state instanceof org.bukkit.block.ShulkerBox; } @Override - public boolean isAnyContainerNeeded(final Player p, final org.bukkit.block.Block b) { - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; - BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + public boolean isAnyContainerNeeded(@NotNull final Player p, @NotNull final org.bukkit.block.Block bukkitBlock) { + + World world = PlayerDataManager.getHandle(p).world; + BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); IBlockData blockData = world.getType(blockPosition); Block block = blockData.getBlock(); @@ -158,8 +156,8 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(final Player bukkitPlayer, final boolean silentchest, - final org.bukkit.block.Block bukkitBlock) { + public boolean activateContainer(@NotNull final Player bukkitPlayer, final boolean silentchest, + @NotNull final org.bukkit.block.Block bukkitBlock) { // Silent ender chest is API-only if (silentchest && bukkitBlock.getType() == Material.ENDER_CHEST) { @@ -250,7 +248,7 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public void deactivateContainer(final Player bukkitPlayer) { + public void deactivateContainer(@NotNull final Player bukkitPlayer) { if (this.playerInteractManagerGamemode == null) { return; } diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/InventoryAccess.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/InventoryAccess.java index 06c597a..810a228 100644 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/InventoryAccess.java +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_12_R1.IInventory; - import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public ISpecialEnderChest getSpecialEnderChest(final Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull final Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -45,7 +43,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(final Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull final Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -60,7 +58,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(final Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull final Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -69,7 +67,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialPlayerInventory(final Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull final Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java index 885cde8..6261ae6 100644 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java @@ -16,24 +16,20 @@ package com.lishid.openinv.internal.v1_12_R1; +import com.lishid.openinv.internal.IPlayerDataManager; +import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import com.mojang.authlib.GameProfile; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_12_R1.EntityPlayer; import net.minecraft.server.v1_12_R1.MinecraftServer; import net.minecraft.server.v1_12_R1.PlayerInteractManager; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_12_R1.CraftServer; import org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -58,13 +54,14 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } @Override - public OfflinePlayer getPlayerByID(final String identifier) { + public OfflinePlayer getPlayerByID(@NotNull final String identifier) { try { UUID uuid = UUID.fromString(identifier); OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); @@ -79,15 +76,16 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @Override - public String getPlayerDataID(final OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull final OfflinePlayer offline) { return offline.getUniqueId().toString(); } @Override - public Player loadPlayer(final OfflinePlayer offline) { + public Player loadPlayer(@NotNull final OfflinePlayer offline) { // Ensure player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -98,7 +96,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = entity == null ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java index d86c01f..ca7b565 100644 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java @@ -16,22 +16,22 @@ package com.lishid.openinv.internal.v1_12_R1; +import com.lishid.openinv.internal.ISpecialEnderChest; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.List; - -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_12_R1.EntityPlayer; import net.minecraft.server.v1_12_R1.IInventory; import net.minecraft.server.v1_12_R1.InventoryEnderChest; import net.minecraft.server.v1_12_R1.InventorySubcontainer; import net.minecraft.server.v1_12_R1.ItemStack; - import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -51,9 +51,27 @@ public class SpecialEnderChest extends InventorySubcontainer this.setItemLists(this, this.enderChest.getContents()); } + @NotNull @Override - public Inventory getBukkitInventory() { - return this.inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override @@ -83,13 +101,13 @@ public class SpecialEnderChest extends InventorySubcontainer } @Override - public void setPlayerOnline(final Player player) { + public void setPlayerOnline(@NotNull final Player player) { if (!this.playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.bukkitOwner = nmsPlayer.getBukkitEntity(); this.setItemLists(nmsPlayer.getEnderChest(), this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} this.playerOnline = true; } } diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java index 5bbf01e..13f5ee1 100644 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java @@ -16,22 +16,22 @@ package com.lishid.openinv.internal.v1_12_R1; +import com.lishid.openinv.internal.ISpecialPlayerInventory; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.Arrays; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_12_R1.ContainerUtil; import net.minecraft.server.v1_12_R1.EntityHuman; import net.minecraft.server.v1_12_R1.ItemStack; import net.minecraft.server.v1_12_R1.NonNullList; import net.minecraft.server.v1_12_R1.PlayerInventory; - import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -50,9 +50,27 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return true; } + @NotNull @Override - public Inventory getBukkitInventory() { - return this.inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override @@ -191,7 +209,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void setPlayerOnline(final Player player) { + public void setPlayerOnline(@NotNull final Player player) { if (!this.playerOnline) { this.player = PlayerDataManager.getHandle(player); this.setItemArrays(this.player.inventory, this.items, this.armor, this.extraSlots); diff --git a/internal/v1_13_R1/pom.xml b/internal/v1_13_R1/pom.xml index aab5195..308c68e 100644 --- a/internal/v1_13_R1/pom.xml +++ b/internal/v1_13_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_13_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java index 35da30c..a60097e 100644 --- a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java +++ b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_13_R1; import com.lishid.openinv.internal.IAnySilentContainer; +import java.lang.reflect.Field; import net.minecraft.server.v1_13_R1.AxisAlignedBB; import net.minecraft.server.v1_13_R1.Block; import net.minecraft.server.v1_13_R1.BlockChest; @@ -47,8 +48,7 @@ import org.bukkit.Statistic; import org.bukkit.block.BlockState; import org.bukkit.entity.Player; import org.bukkit.inventory.InventoryView; - -import java.lang.reflect.Field; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @@ -65,20 +65,20 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean isAnySilentContainer(final org.bukkit.block.Block block) { - if (block.getType() == Material.ENDER_CHEST) { + public boolean isAnySilentContainer(@NotNull final org.bukkit.block.Block bukkitBlock) { + if (bukkitBlock.getType() == Material.ENDER_CHEST) { return true; } - BlockState state = block.getState(); + BlockState state = bukkitBlock.getState(); return state instanceof org.bukkit.block.Chest || state instanceof org.bukkit.block.ShulkerBox; } @Override - public boolean isAnyContainerNeeded(final Player p, final org.bukkit.block.Block b) { - EntityPlayer player = com.lishid.openinv.internal.v1_13_R1.PlayerDataManager.getHandle(p); - World world = player.world; - BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + public boolean isAnyContainerNeeded(@NotNull final Player bukkitPlayer, @NotNull final org.bukkit.block.Block bukkitBlock) { + + World world = PlayerDataManager.getHandle(bukkitPlayer).world; + BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); IBlockData blockData = world.getType(blockPosition); Block block = blockData.getBlock(); @@ -160,11 +160,11 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(final Player bukkitPlayer, final boolean silentchest, - final org.bukkit.block.Block bukkitBlock) { + public boolean activateContainer(@NotNull final Player bukkitPlayer, final boolean silentsilent, + @NotNull final org.bukkit.block.Block bukkitBlock) { // Silent ender chest is API-only - if (silentchest && bukkitBlock.getType() == Material.ENDER_CHEST) { + if (silentsilent && bukkitBlock.getType() == Material.ENDER_CHEST) { bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); return true; @@ -236,7 +236,7 @@ public class AnySilentContainer implements IAnySilentContainer { } // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { + if (!silentsilent || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { player.openContainer(tileInventory); return true; } @@ -254,7 +254,7 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public void deactivateContainer(final Player bukkitPlayer) { + public void deactivateContainer(@NotNull final Player bukkitPlayer) { if (this.playerInteractManagerGamemode == null) { return; } diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/InventoryAccess.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/InventoryAccess.java index fc5acc7..404e41d 100644 --- a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/InventoryAccess.java +++ b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_13_R1.IInventory; - import org.bukkit.craftbukkit.v1_13_R1.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public ISpecialEnderChest getSpecialEnderChest(final Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull final Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -45,7 +43,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(final Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull final Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -60,7 +58,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(final Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull final Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -69,7 +67,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialPlayerInventory(final Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull final Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java index 73db1d0..f36015e 100644 --- a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java +++ b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java @@ -16,24 +16,20 @@ package com.lishid.openinv.internal.v1_13_R1; +import com.lishid.openinv.internal.IPlayerDataManager; +import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import com.mojang.authlib.GameProfile; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_13_R1.EntityPlayer; import net.minecraft.server.v1_13_R1.MinecraftServer; import net.minecraft.server.v1_13_R1.PlayerInteractManager; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_13_R1.CraftServer; import org.bukkit.craftbukkit.v1_13_R1.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -57,13 +53,14 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } @Override - public OfflinePlayer getPlayerByID(final String identifier) { + public OfflinePlayer getPlayerByID(@NotNull final String identifier) { try { UUID uuid = UUID.fromString(identifier); OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); @@ -78,15 +75,16 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @Override - public String getPlayerDataID(final OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull final OfflinePlayer offline) { return offline.getUniqueId().toString(); } @Override - public Player loadPlayer(final OfflinePlayer offline) { + public Player loadPlayer(@NotNull final OfflinePlayer offline) { // Ensure player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialEnderChest.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialEnderChest.java index 7d3e41e..28d1569 100644 --- a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialEnderChest.java +++ b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialEnderChest.java @@ -16,22 +16,22 @@ package com.lishid.openinv.internal.v1_13_R1; +import com.lishid.openinv.internal.ISpecialEnderChest; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.List; - -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_13_R1.EntityPlayer; import net.minecraft.server.v1_13_R1.IInventory; import net.minecraft.server.v1_13_R1.InventoryEnderChest; import net.minecraft.server.v1_13_R1.InventorySubcontainer; import net.minecraft.server.v1_13_R1.ItemStack; - import org.bukkit.craftbukkit.v1_13_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -48,9 +48,27 @@ public class SpecialEnderChest extends InventorySubcontainer this.setItemLists(this, this.enderChest.getContents()); } + @NotNull @Override - public Inventory getBukkitInventory() { - return this.inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override @@ -79,13 +97,13 @@ public class SpecialEnderChest extends InventorySubcontainer } @Override - public void setPlayerOnline(final Player player) { + public void setPlayerOnline(@NotNull final Player player) { if (!this.playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); this.bukkitOwner = nmsPlayer.getBukkitEntity(); this.setItemLists(nmsPlayer.getEnderChest(), this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} this.playerOnline = true; } } diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialPlayerInventory.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialPlayerInventory.java index 5857f0b..bcdf026 100644 --- a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialPlayerInventory.java +++ b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialPlayerInventory.java @@ -16,24 +16,24 @@ package com.lishid.openinv.internal.v1_13_R1; +import com.lishid.openinv.internal.ISpecialPlayerInventory; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.Arrays; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; - import net.minecraft.server.v1_13_R1.ChatMessage; -import net.minecraft.server.v1_13_R1.IChatBaseComponent; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_13_R1.ContainerUtil; import net.minecraft.server.v1_13_R1.EntityHuman; +import net.minecraft.server.v1_13_R1.IChatBaseComponent; import net.minecraft.server.v1_13_R1.ItemStack; import net.minecraft.server.v1_13_R1.NonNullList; import net.minecraft.server.v1_13_R1.PlayerInventory; - import org.bukkit.craftbukkit.v1_13_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -52,9 +52,27 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return true; } + @NotNull @Override - public Inventory getBukkitInventory() { - return this.inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override @@ -190,7 +208,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void setPlayerOnline(final Player player) { + public void setPlayerOnline(@NotNull final Player player) { if (!this.playerOnline) { this.player = PlayerDataManager.getHandle(player); this.setItemArrays(this.player.inventory, this.items, this.armor, this.extraSlots); diff --git a/internal/v1_13_R2/pom.xml b/internal/v1_13_R2/pom.xml index d6cb962..229e1c9 100644 --- a/internal/v1_13_R2/pom.xml +++ b/internal/v1_13_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_13_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/AnySilentContainer.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/AnySilentContainer.java index 511a1b6..778dfb9 100644 --- a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/AnySilentContainer.java +++ b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/AnySilentContainer.java @@ -17,6 +17,9 @@ package com.lishid.openinv.internal.v1_13_R2; import com.lishid.openinv.internal.IAnySilentContainer; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import net.minecraft.server.v1_13_R2.AxisAlignedBB; import net.minecraft.server.v1_13_R2.Block; import net.minecraft.server.v1_13_R2.BlockChest; @@ -48,10 +51,7 @@ import org.bukkit.Statistic; import org.bukkit.block.BlockState; import org.bukkit.entity.Player; import org.bukkit.inventory.InventoryView; - -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @@ -68,20 +68,20 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean isAnySilentContainer(final org.bukkit.block.Block block) { - if (block.getType() == Material.ENDER_CHEST) { + public boolean isAnySilentContainer(@NotNull final org.bukkit.block.Block bukkitBlock) { + if (bukkitBlock.getType() == Material.ENDER_CHEST) { return true; } - BlockState state = block.getState(); + BlockState state = bukkitBlock.getState(); return state instanceof org.bukkit.block.Chest || state instanceof org.bukkit.block.ShulkerBox; } @Override - public boolean isAnyContainerNeeded(final Player p, final org.bukkit.block.Block b) { - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; - BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + public boolean isAnyContainerNeeded(@NotNull final Player bukkitPlayer, @NotNull final org.bukkit.block.Block bukkitBlock) { + + World world = PlayerDataManager.getHandle(bukkitPlayer).world; + BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); IBlockData blockData = world.getType(blockPosition); Block block = blockData.getBlock(); @@ -172,11 +172,11 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(final Player bukkitPlayer, final boolean silentchest, - final org.bukkit.block.Block bukkitBlock) { + public boolean activateContainer(@NotNull final Player bukkitPlayer, final boolean silent, + @NotNull final org.bukkit.block.Block bukkitBlock) { // Silent ender chest is API-only - if (silentchest && bukkitBlock.getType() == Material.ENDER_CHEST) { + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); return true; @@ -248,7 +248,7 @@ public class AnySilentContainer implements IAnySilentContainer { } // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { + if (!silent || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { player.openContainer(tileInventory); return true; } @@ -266,7 +266,7 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public void deactivateContainer(final Player bukkitPlayer) { + public void deactivateContainer(@NotNull final Player bukkitPlayer) { if (this.playerInteractManagerGamemode == null) { return; } diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/InventoryAccess.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/InventoryAccess.java index eca054c..60022cf 100644 --- a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/InventoryAccess.java +++ b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/InventoryAccess.java @@ -23,11 +23,12 @@ import com.lishid.openinv.util.InternalAccessor; import net.minecraft.server.v1_13_R2.IInventory; import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftInventory; import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public ISpecialEnderChest getSpecialEnderChest(final Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull final Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -42,7 +43,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(final Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull final Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -57,7 +58,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(final Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull final Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -66,7 +67,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialPlayerInventory(final Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull final Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/PlayerDataManager.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/PlayerDataManager.java index 8db7a45..79fd697 100644 --- a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/PlayerDataManager.java +++ b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/PlayerDataManager.java @@ -18,6 +18,8 @@ package com.lishid.openinv.internal.v1_13_R2; import com.lishid.openinv.internal.IPlayerDataManager; import com.mojang.authlib.GameProfile; +import java.util.Collection; +import java.util.UUID; import net.minecraft.server.v1_13_R2.DimensionManager; import net.minecraft.server.v1_13_R2.EntityPlayer; import net.minecraft.server.v1_13_R2.MinecraftServer; @@ -28,9 +30,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_13_R2.CraftServer; import org.bukkit.craftbukkit.v1_13_R2.entity.CraftPlayer; import org.bukkit.entity.Player; - -import java.util.Collection; -import java.util.UUID; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -54,18 +54,19 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } @Override - public OfflinePlayer getPlayerByID(final String identifier) { + public OfflinePlayer getPlayerByID(@NotNull final String identifier) { try { UUID uuid = UUID.fromString(identifier); OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { + if (!player.hasPlayedBefore() && !player.isOnline()) { return null; } return player; @@ -75,15 +76,16 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @Override - public String getPlayerDataID(final OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull final OfflinePlayer offline) { return offline.getUniqueId().toString(); } @Override - public Player loadPlayer(final OfflinePlayer offline) { + public Player loadPlayer(@NotNull final OfflinePlayer offline) { // Ensure player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java index 95e54e0..44969fb 100644 --- a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java +++ b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java @@ -17,17 +17,29 @@ package com.lishid.openinv.internal.v1_13_R2; import com.lishid.openinv.internal.ISpecialEnderChest; -import net.minecraft.server.v1_13_R2.*; +import java.util.List; +import javax.annotation.Nullable; +import net.minecraft.server.v1_13_R2.AutoRecipeOutput; +import net.minecraft.server.v1_13_R2.AutoRecipeStackManager; +import net.minecraft.server.v1_13_R2.ContainerUtil; +import net.minecraft.server.v1_13_R2.EntityHuman; +import net.minecraft.server.v1_13_R2.EntityPlayer; +import net.minecraft.server.v1_13_R2.IChatBaseComponent; +import net.minecraft.server.v1_13_R2.IInventory; +import net.minecraft.server.v1_13_R2.IInventoryListener; +import net.minecraft.server.v1_13_R2.InventoryEnderChest; +import net.minecraft.server.v1_13_R2.ItemStack; +import net.minecraft.server.v1_13_R2.NonNullList; import org.bukkit.Location; import org.bukkit.craftbukkit.v1_13_R2.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; - -import javax.annotation.Nullable; -import java.util.List; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest implements IInventory, ISpecialEnderChest, AutoRecipeOutput { @@ -44,9 +56,31 @@ public class SpecialEnderChest implements IInventory, ISpecialEnderChest, AutoRe this.items = this.owner.getEnderChest().items; } + @NotNull @Override - public Inventory getBukkitInventory() { - return this.inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @NotNull + @Override + public Inventory getTopInventory() { + return inventory; + } + @NotNull + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @NotNull + @Override + public HumanEntity getPlayer() { + return viewer; + } + @NotNull + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override @@ -60,7 +94,7 @@ public class SpecialEnderChest implements IInventory, ISpecialEnderChest, AutoRe } @Override - public void setPlayerOnline(final Player player) { + public void setPlayerOnline(@NotNull final Player player) { if (!this.playerOnline) { try { this.owner = PlayerDataManager.getHandle(player); diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java index ef47dba..cb904ff 100644 --- a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java +++ b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java @@ -18,6 +18,11 @@ package com.lishid.openinv.internal.v1_13_R2; import com.google.common.collect.ImmutableList; import com.lishid.openinv.internal.ISpecialPlayerInventory; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.function.Predicate; +import javax.annotation.Nullable; import net.minecraft.server.v1_13_R2.AutoRecipeStackManager; import net.minecraft.server.v1_13_R2.ChatMessage; import net.minecraft.server.v1_13_R2.ContainerUtil; @@ -42,14 +47,11 @@ import org.bukkit.craftbukkit.v1_13_R2.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; - -import javax.annotation.Nullable; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.function.Predicate; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -68,7 +70,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void setPlayerOnline(final Player player) { + public void setPlayerOnline(@NotNull final Player player) { if (!this.playerOnline) { EntityPlayer entityPlayer = PlayerDataManager.getHandle(player); entityPlayer.inventory.transaction.addAll(this.transaction); @@ -86,9 +88,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return true; } + @NotNull @Override - public Inventory getBukkitInventory() { - return this.inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @NotNull + @Override + public Inventory getTopInventory() { + return inventory; + } + @NotNull + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @NotNull + @Override + public HumanEntity getPlayer() { + return viewer; + } + @NotNull + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override @@ -614,7 +638,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP int j = nbttagcompound.getByte("Slot") & 255; ItemStack itemstack = ItemStack.a(nbttagcompound); if (!itemstack.isEmpty()) { - if (j >= 0 && j < this.items.size()) { + if (j < this.items.size()) { this.items.set(j, itemstack); } else if (j >= 100 && j < this.armor.size() + 100) { this.armor.set(j - 100, itemstack); diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index fca07a5..98bd6b8 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_4_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java index 8308155..052d011 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java @@ -17,11 +17,6 @@ package com.lishid.openinv.internal.v1_4_R1; import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_4_R1.AxisAlignedBB; import net.minecraft.server.v1_4_R1.BlockEnderChest; import net.minecraft.server.v1_4_R1.Container; @@ -34,43 +29,46 @@ import net.minecraft.server.v1_4_R1.Packet100OpenWindow; import net.minecraft.server.v1_4_R1.TileEntityChest; import net.minecraft.server.v1_4_R1.TileEntityEnderChest; import net.minecraft.server.v1_4_R1.World; - +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_4_R1.event.CraftEventFactory; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + public boolean isAnySilentContainer(@NotNull Block bukkitBlock) { + return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull Block bukkitBlock) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; + World world = PlayerDataManager.getHandle(bukkitPlayer).world; - if (block instanceof BlockEnderChest) { + if (bukkitBlock instanceof BlockEnderChest) { // Ender chests are not blocked by ocelots. - return world.t(block.getX(), block.getY() + 1, block.getZ()); + return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); } // If block or ocelot on top - if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { return true; } - int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); // If block next to chest is chest and has a block or ocelot on top - if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); - } else if(world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); - } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); - } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); + } else if(world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); + } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); + } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); } return false; @@ -93,18 +91,18 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is API-only - if (silentchest && block.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); return true; } World world = player.world; - Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); if (tile == null) { return false; @@ -123,20 +121,20 @@ public class AnySilentContainer implements IAnySilentContainer { } IInventory inventory = (IInventory) tile; - int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); - } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); - } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); - } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); + if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); + } else if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); + } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); + } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); } // AnyChest only - if (!silentchest) { + if (!silent) { player.openContainer(inventory); return true; } @@ -160,12 +158,12 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } catch (Exception e) { e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); return false; } } @Override - public void deactivateContainer(final Player bukkitPlayer) {} + public void deactivateContainer(@NotNull final Player bukkitPlayer) {} } diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java index e452647..ebf7e28 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_4_R1.IInventory; - import org.bukkit.craftbukkit.v1_4_R1.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java index 071c429..827a3cf 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java @@ -16,30 +16,27 @@ package com.lishid.openinv.internal.v1_4_R1; +import com.lishid.openinv.internal.IPlayerDataManager; import java.util.Arrays; import java.util.Collection; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_4_R1.EntityPlayer; import net.minecraft.server.v1_4_R1.MinecraftServer; import net.minecraft.server.v1_4_R1.PlayerInteractManager; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_4_R1.CraftServer; import org.bukkit.craftbukkit.v1_4_R1.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure the player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -50,7 +47,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -59,13 +56,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); // Ensure player is a real player, otherwise return null if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { @@ -74,7 +72,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java index 04be0cb..f4c436d 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java @@ -24,7 +24,7 @@ import net.minecraft.server.v1_4_R1.PlayerInventory; class SilentContainerChest extends ContainerChest { - public SilentContainerChest(IInventory i1, IInventory i2) { + SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); // Send close signal i2.f(); diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java index 5deeee7..d662411 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java @@ -16,26 +16,25 @@ package com.lishid.openinv.internal.v1_4_R1; +import com.lishid.openinv.internal.ISpecialEnderChest; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; - -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - import net.minecraft.server.v1_4_R1.EntityPlayer; import net.minecraft.server.v1_4_R1.IInventory; import net.minecraft.server.v1_4_R1.InventoryEnderChest; import net.minecraft.server.v1_4_R1.InventorySubcontainer; import net.minecraft.server.v1_4_R1.ItemStack; - import org.bukkit.craftbukkit.v1_4_R1.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_4_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_4_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -56,13 +55,31 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); @@ -71,7 +88,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java index ca45c7a..5bd5233 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java @@ -17,14 +17,15 @@ package com.lishid.openinv.internal.v1_4_R1; import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_4_R1.ItemStack; import net.minecraft.server.v1_4_R1.PlayerInventory; - import org.bukkit.craftbukkit.v1_4_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -39,13 +40,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 9412b40..0051f26 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_5_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java index 57162f5..812c890 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java @@ -17,11 +17,6 @@ package com.lishid.openinv.internal.v1_5_R2; import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_5_R2.AxisAlignedBB; import net.minecraft.server.v1_5_R2.BlockEnderChest; import net.minecraft.server.v1_5_R2.Container; @@ -34,43 +29,46 @@ import net.minecraft.server.v1_5_R2.Packet100OpenWindow; import net.minecraft.server.v1_5_R2.TileEntityChest; import net.minecraft.server.v1_5_R2.TileEntityEnderChest; import net.minecraft.server.v1_5_R2.World; - +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_5_R2.event.CraftEventFactory; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + public boolean isAnySilentContainer(@NotNull Block bukkitBlock) { + return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull Block bukkitBlock) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; + World world = PlayerDataManager.getHandle(bukkitPlayer).world; - if (block instanceof BlockEnderChest) { + if (bukkitBlock instanceof BlockEnderChest) { // Ender chests are not blocked by ocelots. - return world.t(block.getX(), block.getY() + 1, block.getZ()); + return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); } // If block or ocelot on top - if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { return true; } - int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); // If block next to chest is chest and has a block or ocelot on top - if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); - } else if(world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); - } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); - } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); + } else if(world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); + } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); + } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); } return false; @@ -93,18 +91,18 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is API-only - if (silentchest && block.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); return true; } World world = player.world; - Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); if (tile == null) { return false; @@ -123,20 +121,20 @@ public class AnySilentContainer implements IAnySilentContainer { } IInventory inventory = (IInventory) tile; - int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); - } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); - } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); - } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); + if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); + } else if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); + } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); + } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); } // AnyChest only - if (!silentchest) { + if (!silent) { player.openContainer(inventory); return true; } @@ -160,12 +158,12 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } catch (Exception e) { e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); return false; } } @Override - public void deactivateContainer(final Player bukkitPlayer) {} + public void deactivateContainer(@NotNull final Player bukkitPlayer) {} } diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java index 487e8c7..4c4a9a8 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_5_R2.IInventory; - import org.bukkit.craftbukkit.v1_5_R2.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java index 58862d3..e6248c8 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java @@ -16,29 +16,26 @@ package com.lishid.openinv.internal.v1_5_R2; +import com.lishid.openinv.internal.IPlayerDataManager; import java.util.Arrays; import java.util.Collection; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_5_R2.EntityPlayer; import net.minecraft.server.v1_5_R2.MinecraftServer; import net.minecraft.server.v1_5_R2.PlayerInteractManager; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_5_R2.CraftServer; import org.bukkit.craftbukkit.v1_5_R2.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure the player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -49,7 +46,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -58,13 +55,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); // Ensure player is a real player, otherwise return null if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { @@ -73,7 +71,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java index f5832ee..0c6f634 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java @@ -24,7 +24,7 @@ import net.minecraft.server.v1_5_R2.PlayerInventory; class SilentContainerChest extends ContainerChest { - public SilentContainerChest(IInventory i1, IInventory i2) { + SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); // Send close signal i2.g(); diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java index 375e0c4..7c835e6 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java @@ -16,26 +16,25 @@ package com.lishid.openinv.internal.v1_5_R2; +import com.lishid.openinv.internal.ISpecialEnderChest; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; - -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - import net.minecraft.server.v1_5_R2.EntityPlayer; import net.minecraft.server.v1_5_R2.IInventory; import net.minecraft.server.v1_5_R2.InventoryEnderChest; import net.minecraft.server.v1_5_R2.InventorySubcontainer; import net.minecraft.server.v1_5_R2.ItemStack; - import org.bukkit.craftbukkit.v1_5_R2.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_5_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_5_R2.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -57,13 +56,31 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); @@ -72,7 +89,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java index f599172..20f82d6 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java @@ -17,14 +17,15 @@ package com.lishid.openinv.internal.v1_5_R2; import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_5_R2.ItemStack; import net.minecraft.server.v1_5_R2.PlayerInventory; - import org.bukkit.craftbukkit.v1_5_R2.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -39,13 +40,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 3adfb30..41dcb0c 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_5_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java index 6a68365..f138bcd 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java @@ -17,11 +17,6 @@ package com.lishid.openinv.internal.v1_5_R3; import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_5_R3.AxisAlignedBB; import net.minecraft.server.v1_5_R3.BlockEnderChest; import net.minecraft.server.v1_5_R3.Container; @@ -34,43 +29,46 @@ import net.minecraft.server.v1_5_R3.Packet100OpenWindow; import net.minecraft.server.v1_5_R3.TileEntityChest; import net.minecraft.server.v1_5_R3.TileEntityEnderChest; import net.minecraft.server.v1_5_R3.World; - +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_5_R3.event.CraftEventFactory; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + public boolean isAnySilentContainer(@NotNull Block bukkitBlock) { + return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull Block bukkitBlock) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; + World world = PlayerDataManager.getHandle(bukkitPlayer).world; - if (block instanceof BlockEnderChest) { + if (bukkitBlock instanceof BlockEnderChest) { // Ender chests are not blocked by ocelots. - return world.t(block.getX(), block.getY() + 1, block.getZ()); + return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); } // If block or ocelot on top - if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { return true; } - int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); // If block next to chest is chest and has a block or ocelot on top - if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); - } else if(world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); - } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); - } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); + } else if(world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); + } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); + } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); } return false; @@ -93,18 +91,18 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is API-only - if (silentchest && block.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); return true; } World world = player.world; - Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); if (tile == null) { return false; @@ -123,20 +121,20 @@ public class AnySilentContainer implements IAnySilentContainer { } IInventory inventory = (IInventory) tile; - int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); - } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); - } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); - } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); + if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); + } else if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); + } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); + } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); } // AnyChest only - if (!silentchest) { + if (!silent) { player.openContainer(inventory); return true; } @@ -160,12 +158,12 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } catch (Exception e) { e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); return false; } } @Override - public void deactivateContainer(final Player bukkitPlayer) {} + public void deactivateContainer(@NotNull final Player bukkitPlayer) {} } diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java index 3177516..f7dab0f 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_5_R3.IInventory; - import org.bukkit.craftbukkit.v1_5_R3.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java index 455cfb1..1054c49 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java @@ -16,29 +16,26 @@ package com.lishid.openinv.internal.v1_5_R3; +import com.lishid.openinv.internal.IPlayerDataManager; import java.util.Arrays; import java.util.Collection; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_5_R3.EntityPlayer; import net.minecraft.server.v1_5_R3.MinecraftServer; import net.minecraft.server.v1_5_R3.PlayerInteractManager; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_5_R3.CraftServer; import org.bukkit.craftbukkit.v1_5_R3.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure the player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -49,7 +46,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -58,13 +55,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); // Ensure player is a real player, otherwise return null if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { @@ -73,7 +71,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java index b80ed18..a65a051 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java @@ -24,7 +24,7 @@ import net.minecraft.server.v1_5_R3.PlayerInventory; class SilentContainerChest extends ContainerChest { - public SilentContainerChest(IInventory i1, IInventory i2) { + SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); // Send close signal i2.g(); diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java index 816e5b7..bc524e4 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java @@ -16,26 +16,25 @@ package com.lishid.openinv.internal.v1_5_R3; +import com.lishid.openinv.internal.ISpecialEnderChest; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; - -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - import net.minecraft.server.v1_5_R3.EntityPlayer; import net.minecraft.server.v1_5_R3.IInventory; import net.minecraft.server.v1_5_R3.InventoryEnderChest; import net.minecraft.server.v1_5_R3.InventorySubcontainer; import net.minecraft.server.v1_5_R3.ItemStack; - import org.bukkit.craftbukkit.v1_5_R3.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_5_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_5_R3.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -57,13 +56,31 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); @@ -72,7 +89,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java index a0b44d0..4f9703a 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java @@ -17,14 +17,15 @@ package com.lishid.openinv.internal.v1_5_R3; import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_5_R3.ItemStack; import net.minecraft.server.v1_5_R3.PlayerInventory; - import org.bukkit.craftbukkit.v1_5_R3.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -39,13 +40,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index cea569b..72f6d38 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_6_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java index 81ab633..8451e89 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java @@ -17,11 +17,6 @@ package com.lishid.openinv.internal.v1_6_R1; import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_6_R1.AxisAlignedBB; import net.minecraft.server.v1_6_R1.BlockEnderChest; import net.minecraft.server.v1_6_R1.Container; @@ -34,43 +29,46 @@ import net.minecraft.server.v1_6_R1.Packet100OpenWindow; import net.minecraft.server.v1_6_R1.TileEntityChest; import net.minecraft.server.v1_6_R1.TileEntityEnderChest; import net.minecraft.server.v1_6_R1.World; - +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_6_R1.event.CraftEventFactory; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + public boolean isAnySilentContainer(@NotNull Block bukkitBlock) { + return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull Block bukkitBlock) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; + World world = PlayerDataManager.getHandle(bukkitPlayer).world; - if (block instanceof BlockEnderChest) { + if (bukkitBlock instanceof BlockEnderChest) { // Ender chests are not blocked by ocelots. - return world.t(block.getX(), block.getY() + 1, block.getZ()); + return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); } // If block or ocelot on top - if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { return true; } - int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); // If block next to chest is chest and has a block or ocelot on top - if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); - } else if(world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); - } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); - } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); + } else if(world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); + } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); + } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); } return false; @@ -93,18 +91,18 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is API-only - if (silentchest && block.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); return true; } World world = player.world; - Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); if (tile == null) { return false; @@ -123,20 +121,20 @@ public class AnySilentContainer implements IAnySilentContainer { } IInventory inventory = (IInventory) tile; - int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); - } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); - } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); - } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); + if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); + } else if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); + } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); + } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); } // AnyChest only - if (!silentchest) { + if (!silent) { player.openContainer(inventory); return true; } @@ -160,12 +158,12 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } catch (Exception e) { e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); return false; } } @Override - public void deactivateContainer(final Player bukkitPlayer) {} + public void deactivateContainer(@NotNull final Player bukkitPlayer) {} } diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java index 11859fd..768f1b4 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_6_R1.IInventory; - import org.bukkit.craftbukkit.v1_6_R1.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java index fb7b230..75a55f8 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java @@ -16,29 +16,26 @@ package com.lishid.openinv.internal.v1_6_R1; +import com.lishid.openinv.internal.IPlayerDataManager; import java.util.Arrays; import java.util.Collection; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_6_R1.EntityPlayer; import net.minecraft.server.v1_6_R1.MinecraftServer; import net.minecraft.server.v1_6_R1.PlayerInteractManager; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_6_R1.CraftServer; import org.bukkit.craftbukkit.v1_6_R1.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure the player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -49,7 +46,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -58,13 +55,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); // Ensure player is a real player, otherwise return null if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { @@ -73,7 +71,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java index 56630e2..1f17c6e 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java @@ -24,7 +24,7 @@ import net.minecraft.server.v1_6_R1.PlayerInventory; class SilentContainerChest extends ContainerChest { - public SilentContainerChest(IInventory i1, IInventory i2) { + SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); // Send close signal i2.g(); diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java index 10534d4..8935f95 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java @@ -16,26 +16,25 @@ package com.lishid.openinv.internal.v1_6_R1; +import com.lishid.openinv.internal.ISpecialEnderChest; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; - -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - import net.minecraft.server.v1_6_R1.EntityPlayer; import net.minecraft.server.v1_6_R1.IInventory; import net.minecraft.server.v1_6_R1.InventoryEnderChest; import net.minecraft.server.v1_6_R1.InventorySubcontainer; import net.minecraft.server.v1_6_R1.ItemStack; - import org.bukkit.craftbukkit.v1_6_R1.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_6_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_6_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -57,13 +56,31 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); @@ -72,7 +89,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java index 7791a58..851024c 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java @@ -17,14 +17,15 @@ package com.lishid.openinv.internal.v1_6_R1; import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_6_R1.ItemStack; import net.minecraft.server.v1_6_R1.PlayerInventory; - import org.bukkit.craftbukkit.v1_6_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -39,13 +40,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index ea26aeb..9fd049b 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_6_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java index fd40053..63ae036 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java @@ -17,11 +17,6 @@ package com.lishid.openinv.internal.v1_6_R2; import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_6_R2.AxisAlignedBB; import net.minecraft.server.v1_6_R2.BlockEnderChest; import net.minecraft.server.v1_6_R2.Container; @@ -34,43 +29,46 @@ import net.minecraft.server.v1_6_R2.Packet100OpenWindow; import net.minecraft.server.v1_6_R2.TileEntityChest; import net.minecraft.server.v1_6_R2.TileEntityEnderChest; import net.minecraft.server.v1_6_R2.World; - +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + public boolean isAnySilentContainer(@NotNull Block bukkitBlock) { + return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull Block bukkitBlock) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; + World world = PlayerDataManager.getHandle(bukkitPlayer).world; - if (block instanceof BlockEnderChest) { + if (bukkitBlock instanceof BlockEnderChest) { // Ender chests are not blocked by ocelots. - return world.t(block.getX(), block.getY() + 1, block.getZ()); + return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); } // If block or ocelot on top - if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { return true; } - int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); // If block next to chest is chest and has a block or ocelot on top - if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); - } else if(world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); - } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); - } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); + } else if(world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); + } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); + } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); } return false; @@ -93,18 +91,18 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is API-only - if (silentchest && block.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); return true; } World world = player.world; - Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); if (tile == null) { return false; @@ -123,20 +121,20 @@ public class AnySilentContainer implements IAnySilentContainer { } IInventory inventory = (IInventory) tile; - int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); - } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); - } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); - } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); + if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); + } else if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); + } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); + } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); } // AnyChest only - if (!silentchest) { + if (!silent) { player.openContainer(inventory); return true; } @@ -160,12 +158,12 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } catch (Exception e) { e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); return false; } } @Override - public void deactivateContainer(final Player bukkitPlayer) {} + public void deactivateContainer(@NotNull final Player bukkitPlayer) {} } diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java index 24ea8a3..e01d6f0 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_6_R2.IInventory; - import org.bukkit.craftbukkit.v1_6_R2.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java index 100f447..2fdf434 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java @@ -16,29 +16,26 @@ package com.lishid.openinv.internal.v1_6_R2; +import com.lishid.openinv.internal.IPlayerDataManager; import java.util.Arrays; import java.util.Collection; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_6_R2.EntityPlayer; import net.minecraft.server.v1_6_R2.MinecraftServer; import net.minecraft.server.v1_6_R2.PlayerInteractManager; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_6_R2.CraftServer; import org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure the player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -49,7 +46,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -58,13 +55,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); // Ensure player is a real player, otherwise return null if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { @@ -73,7 +71,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java index f128e6b..426a6b3 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java @@ -24,7 +24,7 @@ import net.minecraft.server.v1_6_R2.PlayerInventory; class SilentContainerChest extends ContainerChest { - public SilentContainerChest(IInventory i1, IInventory i2) { + SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); // Send close signal i2.g(); diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java index d0810d0..4ab38bf 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java @@ -16,26 +16,25 @@ package com.lishid.openinv.internal.v1_6_R2; +import com.lishid.openinv.internal.ISpecialEnderChest; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; - -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - import net.minecraft.server.v1_6_R2.EntityPlayer; import net.minecraft.server.v1_6_R2.IInventory; import net.minecraft.server.v1_6_R2.InventoryEnderChest; import net.minecraft.server.v1_6_R2.InventorySubcontainer; import net.minecraft.server.v1_6_R2.ItemStack; - import org.bukkit.craftbukkit.v1_6_R2.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_6_R2.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -57,13 +56,31 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); @@ -72,7 +89,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java index 48a6909..0c32d1c 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java @@ -17,14 +17,15 @@ package com.lishid.openinv.internal.v1_6_R2; import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_6_R2.ItemStack; import net.minecraft.server.v1_6_R2.PlayerInventory; - import org.bukkit.craftbukkit.v1_6_R2.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -39,13 +40,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 652fd68..791e004 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_6_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java index 580de75..26f8921 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java @@ -17,11 +17,6 @@ package com.lishid.openinv.internal.v1_6_R3; import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_6_R3.AxisAlignedBB; import net.minecraft.server.v1_6_R3.BlockEnderChest; import net.minecraft.server.v1_6_R3.Container; @@ -34,43 +29,46 @@ import net.minecraft.server.v1_6_R3.Packet100OpenWindow; import net.minecraft.server.v1_6_R3.TileEntityChest; import net.minecraft.server.v1_6_R3.TileEntityEnderChest; import net.minecraft.server.v1_6_R3.World; - +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_6_R3.event.CraftEventFactory; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + public boolean isAnySilentContainer(@NotNull Block bukkitBlock) { + return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull Block bukkitBlock) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; + World world = PlayerDataManager.getHandle(bukkitPlayer).world; - if (block instanceof BlockEnderChest) { + if (bukkitBlock instanceof BlockEnderChest) { // Ender chests are not blocked by ocelots. - return world.t(block.getX(), block.getY() + 1, block.getZ()); + return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); } // If block or ocelot on top - if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { return true; } - int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); // If block next to chest is chest and has a block or ocelot on top - if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); - } else if(world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); - } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); - } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); + } else if(world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); + } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); + } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); } return false; @@ -93,18 +91,18 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is API-only - if (silentchest && block.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); return true; } World world = player.world; - Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); if (tile == null) { return false; @@ -123,20 +121,20 @@ public class AnySilentContainer implements IAnySilentContainer { } IInventory inventory = (IInventory) tile; - int id = world.getTypeId(block.getX(), block.getY(), block.getZ()); + int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - if (world.getTypeId(block.getX(), block.getY(), block.getZ() + 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); - } else if (world.getTypeId(block.getX(), block.getY(), block.getZ() - 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); - } else if (world.getTypeId(block.getX() + 1, block.getY(), block.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); - } else if (world.getTypeId(block.getX() - 1, block.getY(), block.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); + if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); + } else if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); + } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); + } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); } // AnyChest only - if (!silentchest) { + if (!silent) { player.openContainer(inventory); return true; } @@ -160,12 +158,12 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } catch (Exception e) { e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); return false; } } @Override - public void deactivateContainer(final Player bukkitPlayer) {} + public void deactivateContainer(@NotNull final Player bukkitPlayer) {} } diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java index b11c4a0..ae411ec 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_6_R3.IInventory; - import org.bukkit.craftbukkit.v1_6_R3.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java index 4843ab3..5ae8ab7 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java @@ -16,29 +16,26 @@ package com.lishid.openinv.internal.v1_6_R3; +import com.lishid.openinv.internal.IPlayerDataManager; import java.util.Arrays; import java.util.Collection; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_6_R3.EntityPlayer; import net.minecraft.server.v1_6_R3.MinecraftServer; import net.minecraft.server.v1_6_R3.PlayerInteractManager; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_6_R3.CraftServer; import org.bukkit.craftbukkit.v1_6_R3.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure the player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -49,7 +46,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -58,13 +55,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); // Ensure player is a real player, otherwise return null if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { @@ -73,7 +71,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java index 9d6c56e..fc4f245 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java @@ -24,7 +24,7 @@ import net.minecraft.server.v1_6_R3.PlayerInventory; class SilentContainerChest extends ContainerChest { - public SilentContainerChest(IInventory i1, IInventory i2) { + SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); // Send close signal i2.g(); diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java index a5dfeab..ff6f0c4 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java @@ -16,26 +16,25 @@ package com.lishid.openinv.internal.v1_6_R3; +import com.lishid.openinv.internal.ISpecialEnderChest; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; - -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - import net.minecraft.server.v1_6_R3.EntityPlayer; import net.minecraft.server.v1_6_R3.IInventory; import net.minecraft.server.v1_6_R3.InventoryEnderChest; import net.minecraft.server.v1_6_R3.InventorySubcontainer; import net.minecraft.server.v1_6_R3.ItemStack; - import org.bukkit.craftbukkit.v1_6_R3.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_6_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_6_R3.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -57,13 +56,31 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); @@ -72,7 +89,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java index a1d0702..1c4dfd0 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java @@ -17,14 +17,15 @@ package com.lishid.openinv.internal.v1_6_R3; import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_6_R3.ItemStack; import net.minecraft.server.v1_6_R3.PlayerInventory; - import org.bukkit.craftbukkit.v1_6_R3.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -39,13 +40,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 6d697b6..70f40a6 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_7_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java index 3b31a04..0908f23 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java @@ -17,11 +17,6 @@ package com.lishid.openinv.internal.v1_7_R1; import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_7_R1.AxisAlignedBB; import net.minecraft.server.v1_7_R1.Block; import net.minecraft.server.v1_7_R1.BlockEnderChest; @@ -35,43 +30,45 @@ import net.minecraft.server.v1_7_R1.PacketPlayOutOpenWindow; import net.minecraft.server.v1_7_R1.TileEntityChest; import net.minecraft.server.v1_7_R1.TileEntityEnderChest; import net.minecraft.server.v1_7_R1.World; - +import org.bukkit.ChatColor; +import org.bukkit.Material; import org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { + return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; + World world = PlayerDataManager.getHandle(bukkitPlayer).world; - if (block instanceof BlockEnderChest) { + if (bukkitBlock instanceof BlockEnderChest) { // Ender chests are not blocked by ocelots. - return world.t(block.getX(), block.getY() + 1, block.getZ()); + return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); } // If block or ocelot on top - if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { return true; } - int id = Block.b(world.getType(block.getX(), block.getY(), block.getZ())); + int id = Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ())); // If block next to chest is chest and has a block or ocelot on top - if (Block.b(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); - } else if(Block.b(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); - } else if (Block.b(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { - return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); - } else if (Block.b(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { - return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + if (Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); + } else if(Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1)) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); + } else if (Block.b(world.getType(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { + return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); + } else if (Block.b(world.getType(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { + return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); } return false; @@ -94,18 +91,18 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is API-only - if (silentchest && block.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); return true; } World world = player.world; - Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); if (tile == null) { return false; @@ -124,20 +121,20 @@ public class AnySilentContainer implements IAnySilentContainer { } IInventory inventory = (IInventory) tile; - int id = Block.b(world.getType(block.getX(), block.getY(), block.getZ())); + int id = Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ())); - if (Block.b(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); - } else if(Block.b(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); - } else if (Block.b(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); - } else if (Block.b(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); + if (Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); + } else if(Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1)) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); + } else if (Block.b(world.getType(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); + } else if (Block.b(world.getType(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); } // AnyChest only - if (!silentchest) { + if (!silent) { player.openContainer(inventory); return true; } @@ -161,12 +158,12 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } catch (Exception e) { e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); return false; } } @Override - public void deactivateContainer(final Player bukkitPlayer) {} + public void deactivateContainer(@NotNull final Player bukkitPlayer) {} } diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java index 8490c0c..b814c1a 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_7_R1.IInventory; - import org.bukkit.craftbukkit.v1_7_R1.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java index ca746d8..a90e3e8 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java @@ -16,30 +16,27 @@ package com.lishid.openinv.internal.v1_7_R1; +import com.lishid.openinv.internal.IPlayerDataManager; import java.util.Arrays; import java.util.Collection; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_7_R1.EntityPlayer; import net.minecraft.server.v1_7_R1.MinecraftServer; import net.minecraft.server.v1_7_R1.PlayerInteractManager; import net.minecraft.util.com.mojang.authlib.GameProfile; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_7_R1.CraftServer; import org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure the player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -50,7 +47,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -59,13 +56,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); // Ensure player is a real player, otherwise return null if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { @@ -74,7 +72,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java index 90bb62d..bb8c4f1 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java @@ -24,7 +24,7 @@ import net.minecraft.server.v1_7_R1.PlayerInventory; class SilentContainerChest extends ContainerChest { - public SilentContainerChest(IInventory i1, IInventory i2) { + SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); // Send close signal i2.l_(); diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java index bfbb711..2427c47 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java @@ -16,26 +16,25 @@ package com.lishid.openinv.internal.v1_7_R1; +import com.lishid.openinv.internal.ISpecialEnderChest; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; - -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - import net.minecraft.server.v1_7_R1.EntityPlayer; import net.minecraft.server.v1_7_R1.IInventory; import net.minecraft.server.v1_7_R1.InventoryEnderChest; import net.minecraft.server.v1_7_R1.InventorySubcontainer; import net.minecraft.server.v1_7_R1.ItemStack; - import org.bukkit.craftbukkit.v1_7_R1.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_7_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -57,13 +56,31 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); @@ -72,7 +89,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java index b16870f..4ab6947 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java @@ -17,14 +17,15 @@ package com.lishid.openinv.internal.v1_7_R1; import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_7_R1.ItemStack; import net.minecraft.server.v1_7_R1.PlayerInventory; - import org.bukkit.craftbukkit.v1_7_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -39,13 +40,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index cda25d8..75ed361 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_7_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java index 622f2a2..18897db 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java @@ -17,11 +17,6 @@ package com.lishid.openinv.internal.v1_7_R2; import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_7_R2.AxisAlignedBB; import net.minecraft.server.v1_7_R2.Block; import net.minecraft.server.v1_7_R2.BlockEnderChest; @@ -35,43 +30,45 @@ import net.minecraft.server.v1_7_R2.PacketPlayOutOpenWindow; import net.minecraft.server.v1_7_R2.TileEntityChest; import net.minecraft.server.v1_7_R2.TileEntityEnderChest; import net.minecraft.server.v1_7_R2.World; - +import org.bukkit.ChatColor; +import org.bukkit.Material; import org.bukkit.craftbukkit.v1_7_R2.event.CraftEventFactory; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { + return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; + World world = PlayerDataManager.getHandle(bukkitPlayer).world; - if (block instanceof BlockEnderChest) { + if (bukkitBlock instanceof BlockEnderChest) { // Ender chests are not blocked by ocelots. - return world.t(block.getX(), block.getY() + 1, block.getZ()); + return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); } // If block or ocelot on top - if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { return true; } - int id = Block.b(world.getType(block.getX(), block.getY(), block.getZ())); + int id = Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ())); // If block next to chest is chest and has a block or ocelot on top - if (Block.b(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); - } else if(Block.b(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); - } else if (Block.b(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { - return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); - } else if (Block.b(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { - return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + if (Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); + } else if(Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1)) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); + } else if (Block.b(world.getType(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { + return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); + } else if (Block.b(world.getType(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { + return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); } return false; @@ -94,18 +91,18 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is API-only - if (silentchest && block.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); return true; } World world = player.world; - Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); if (tile == null) { return false; @@ -124,20 +121,20 @@ public class AnySilentContainer implements IAnySilentContainer { } IInventory inventory = (IInventory) tile; - int id = Block.b(world.getType(block.getX(), block.getY(), block.getZ())); + int id = Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ())); - if (Block.b(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); - } else if(Block.b(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); - } else if (Block.b(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); - } else if (Block.b(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); + if (Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); + } else if(Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1)) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); + } else if (Block.b(world.getType(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); + } else if (Block.b(world.getType(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); } // AnyChest only - if (!silentchest) { + if (!silent) { player.openContainer(inventory); return true; } @@ -161,12 +158,12 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } catch (Exception e) { e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); return false; } } @Override - public void deactivateContainer(final Player bukkitPlayer) {} + public void deactivateContainer(@NotNull final Player bukkitPlayer) {} } diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java index 022379a..906fad9 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_7_R2.IInventory; - import org.bukkit.craftbukkit.v1_7_R2.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java index cfe40d5..f8100c0 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java @@ -16,31 +16,28 @@ package com.lishid.openinv.internal.v1_7_R2; +import com.lishid.openinv.internal.IPlayerDataManager; import java.util.Arrays; import java.util.Collection; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_7_R2.EntityPlayer; import net.minecraft.server.v1_7_R2.MinecraftServer; import net.minecraft.server.v1_7_R2.PlayerInteractManager; import net.minecraft.util.com.mojang.authlib.GameProfile; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_7_R2.CraftServer; import org.bukkit.craftbukkit.v1_7_R2.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; @SuppressWarnings("deprecation") // Deprecated methods are used properly and will not change. public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure the player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -51,7 +48,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -60,13 +57,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); // Ensure player is a real player, otherwise return null if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { @@ -75,7 +73,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java index f04e1e3..fd28ed9 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java @@ -24,7 +24,7 @@ import net.minecraft.server.v1_7_R2.PlayerInventory; class SilentContainerChest extends ContainerChest { - public SilentContainerChest(IInventory i1, IInventory i2) { + SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); // Send close signal i2.l_(); diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java index 4ee26f6..4807da1 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java @@ -16,26 +16,25 @@ package com.lishid.openinv.internal.v1_7_R2; +import com.lishid.openinv.internal.ISpecialEnderChest; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; - -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - import net.minecraft.server.v1_7_R2.EntityPlayer; import net.minecraft.server.v1_7_R2.IInventory; import net.minecraft.server.v1_7_R2.InventoryEnderChest; import net.minecraft.server.v1_7_R2.InventorySubcontainer; import net.minecraft.server.v1_7_R2.ItemStack; - import org.bukkit.craftbukkit.v1_7_R2.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_7_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_7_R2.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -57,13 +56,31 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); @@ -72,7 +89,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java index 6302cb6..4185d03 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java @@ -17,14 +17,15 @@ package com.lishid.openinv.internal.v1_7_R2; import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_7_R2.ItemStack; import net.minecraft.server.v1_7_R2.PlayerInventory; - import org.bukkit.craftbukkit.v1_7_R2.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -39,13 +40,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index c07bf14..5610e64 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_7_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java index 8d13937..219e93a 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java @@ -17,11 +17,6 @@ package com.lishid.openinv.internal.v1_7_R3; import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_7_R3.AxisAlignedBB; import net.minecraft.server.v1_7_R3.Block; import net.minecraft.server.v1_7_R3.BlockEnderChest; @@ -35,43 +30,46 @@ import net.minecraft.server.v1_7_R3.PacketPlayOutOpenWindow; import net.minecraft.server.v1_7_R3.TileEntityChest; import net.minecraft.server.v1_7_R3.TileEntityEnderChest; import net.minecraft.server.v1_7_R3.World; - +import org.bukkit.ChatColor; +import org.bukkit.Material; import org.bukkit.craftbukkit.v1_7_R3.event.CraftEventFactory; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { + return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); World world = player.world; - if (block instanceof BlockEnderChest) { + if (bukkitBlock instanceof BlockEnderChest) { // Ender chests are not blocked by ocelots. - return world.t(block.getX(), block.getY() + 1, block.getZ()); + return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); } // If block or ocelot on top - if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { return true; } - int id = Block.b(world.getType(block.getX(), block.getY(), block.getZ())); + int id = Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ())); // If block next to chest is chest and has a block or ocelot on top - if (Block.b(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); - } else if(Block.b(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); - } else if (Block.b(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { - return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); - } else if (Block.b(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { - return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + if (Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); + } else if(Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1)) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); + } else if (Block.b(world.getType(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { + return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); + } else if (Block.b(world.getType(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { + return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); } return false; @@ -94,18 +92,18 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is API-only - if (silentchest && block.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); return true; } World world = player.world; - Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); if (tile == null) { return false; @@ -124,20 +122,20 @@ public class AnySilentContainer implements IAnySilentContainer { } IInventory inventory = (IInventory) tile; - int id = Block.b(world.getType(block.getX(), block.getY(), block.getZ())); + int id = Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ())); - if (Block.b(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); - } else if(Block.b(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); - } else if (Block.b(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); - } else if (Block.b(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); + if (Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); + } else if(Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1)) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); + } else if (Block.b(world.getType(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); + } else if (Block.b(world.getType(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); } // AnyChest only - if (!silentchest) { + if (!silent) { player.openContainer(inventory); return true; } @@ -161,12 +159,12 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } catch (Exception e) { e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); return false; } } @Override - public void deactivateContainer(final Player bukkitPlayer) {} + public void deactivateContainer(@NotNull final Player bukkitPlayer) {} } diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java index bdce49a..aa0cacb 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_7_R3.IInventory; - import org.bukkit.craftbukkit.v1_7_R3.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java index 3fa9363..eec7474 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java @@ -16,31 +16,28 @@ package com.lishid.openinv.internal.v1_7_R3; +import com.lishid.openinv.internal.IPlayerDataManager; import java.util.Arrays; import java.util.Collection; import java.util.UUID; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_7_R3.EntityPlayer; import net.minecraft.server.v1_7_R3.MinecraftServer; import net.minecraft.server.v1_7_R3.PlayerInteractManager; import net.minecraft.util.com.mojang.authlib.GameProfile; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_7_R3.CraftServer; import org.bukkit.craftbukkit.v1_7_R3.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure the player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -51,7 +48,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -60,13 +57,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getUniqueId().toString(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { try { UUID uuid = UUID.fromString(identifier); OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); @@ -81,7 +79,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java index 7397564..57d88c9 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java @@ -24,7 +24,7 @@ import net.minecraft.server.v1_7_R3.PlayerInventory; class SilentContainerChest extends ContainerChest { - public SilentContainerChest(IInventory i1, IInventory i2) { + SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); i2.l_(); } diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java index 0110821..90041f3 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java @@ -16,26 +16,25 @@ package com.lishid.openinv.internal.v1_7_R3; +import com.lishid.openinv.internal.ISpecialEnderChest; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; - -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - import net.minecraft.server.v1_7_R3.EntityPlayer; import net.minecraft.server.v1_7_R3.IInventory; import net.minecraft.server.v1_7_R3.InventoryEnderChest; import net.minecraft.server.v1_7_R3.InventorySubcontainer; import net.minecraft.server.v1_7_R3.ItemStack; - import org.bukkit.craftbukkit.v1_7_R3.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_7_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_7_R3.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -57,13 +56,31 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); @@ -72,7 +89,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java index 18c1797..23e7a7d 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java @@ -17,14 +17,15 @@ package com.lishid.openinv.internal.v1_7_R3; import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_7_R3.ItemStack; import net.minecraft.server.v1_7_R3.PlayerInventory; - import org.bukkit.craftbukkit.v1_7_R3.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -39,13 +40,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 1a1d7fe..807d3bf 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_7_R4 @@ -43,7 +43,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java index 4a967c5..17d8e11 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java @@ -17,11 +17,6 @@ package com.lishid.openinv.internal.v1_7_R4; import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_7_R4.AxisAlignedBB; import net.minecraft.server.v1_7_R4.Block; import net.minecraft.server.v1_7_R4.BlockEnderChest; @@ -35,43 +30,45 @@ import net.minecraft.server.v1_7_R4.PacketPlayOutOpenWindow; import net.minecraft.server.v1_7_R4.TileEntityChest; import net.minecraft.server.v1_7_R4.TileEntityEnderChest; import net.minecraft.server.v1_7_R4.World; - +import org.bukkit.ChatColor; +import org.bukkit.Material; import org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { + return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block block) { + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; + World world = PlayerDataManager.getHandle(bukkitPlayer).world; - if (block instanceof BlockEnderChest) { + if (bukkitBlock instanceof BlockEnderChest) { // Ender chests are not blocked by ocelots. - return world.t(block.getX(), block.getY() + 1, block.getZ()); + return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); } // If block or ocelot on top - if (isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ())) { + if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { return true; } - int id = Block.getId(world.getType(block.getX(), block.getY(), block.getZ())); + int id = Block.getId(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ())); // If block next to chest is chest and has a block or ocelot on top - if (Block.getId(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() + 1); - } else if(Block.getId(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { - return isBlockedChest(world, block.getX(), block.getY() + 1, block.getZ() - 1); - } else if (Block.getId(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { - return isBlockedChest(world, block.getX() + 1, block.getY() + 1, block.getZ()); - } else if (Block.getId(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { - return isBlockedChest(world, block.getX() - 1, block.getY() + 1, block.getZ()); + if (Block.getId(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); + } else if(Block.getId(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1)) == id) { + return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); + } else if (Block.getId(world.getType(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { + return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); + } else if (Block.getId(world.getType(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { + return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); } return false; @@ -94,18 +91,18 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block block) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is API-only - if (silentchest && block.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); return true; } World world = player.world; - Object tile = world.getTileEntity(block.getX(), block.getY(), block.getZ()); + Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); if (tile == null) { return false; @@ -124,20 +121,20 @@ public class AnySilentContainer implements IAnySilentContainer { } IInventory inventory = (IInventory) tile; - int id = Block.getId(world.getType(block.getX(), block.getY(), block.getZ())); + int id = Block.getId(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ())); - if (Block.getId(world.getType(block.getX(), block.getY(), block.getZ() + 1)) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() + 1)); - } else if(Block.getId(world.getType(block.getX(), block.getY(), block.getZ() - 1)) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX(), block.getY(), block.getZ() - 1), inventory); - } else if (Block.getId(world.getType(block.getX() + 1, block.getY(), block.getZ())) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(block.getX() + 1, block.getY(), block.getZ())); - } else if (Block.getId(world.getType(block.getX() - 1, block.getY(), block.getZ())) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(block.getX() - 1, block.getY(), block.getZ()), inventory); + if (Block.getId(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); + } else if(Block.getId(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1)) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); + } else if (Block.getId(world.getType(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { + inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); + } else if (Block.getId(world.getType(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { + inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); } // AnyChest only - if (!silentchest) { + if (!silent) { player.openContainer(inventory); return true; } @@ -161,12 +158,12 @@ public class AnySilentContainer implements IAnySilentContainer { return true; } catch (Exception e) { e.printStackTrace(); - p.sendMessage(ChatColor.RED + "Error while sending silent container."); + bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); return false; } } @Override - public void deactivateContainer(final Player bukkitPlayer) {} + public void deactivateContainer(@NotNull final Player bukkitPlayer) {} } diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java index fd7c8e1..9027674 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_7_R4.IInventory; - import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java index acddbdf..ba130ed 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java @@ -16,30 +16,27 @@ package com.lishid.openinv.internal.v1_7_R4; +import com.lishid.openinv.internal.IPlayerDataManager; import java.util.Collection; import java.util.UUID; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_7_R4.EntityPlayer; import net.minecraft.server.v1_7_R4.MinecraftServer; import net.minecraft.server.v1_7_R4.PlayerInteractManager; import net.minecraft.util.com.mojang.authlib.GameProfile; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_7_R4.CraftServer; import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure the player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -50,7 +47,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -59,13 +56,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getUniqueId().toString(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { try { UUID uuid = UUID.fromString(identifier); OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); @@ -80,7 +78,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java index 0126208..47e27c3 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java @@ -24,7 +24,7 @@ import net.minecraft.server.v1_7_R4.PlayerInventory; class SilentContainerChest extends ContainerChest { - public SilentContainerChest(IInventory i1, IInventory i2) { + SilentContainerChest(IInventory i1, IInventory i2) { super(i1, i2); // Send close signal i2.closeContainer(); diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java index 78010da..9fde84f 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java @@ -16,26 +16,25 @@ package com.lishid.openinv.internal.v1_7_R4; +import com.lishid.openinv.internal.ISpecialEnderChest; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; - -import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; - import net.minecraft.server.v1_7_R4.EntityPlayer; import net.minecraft.server.v1_7_R4.IInventory; import net.minecraft.server.v1_7_R4.InventoryEnderChest; import net.minecraft.server.v1_7_R4.InventorySubcontainer; import net.minecraft.server.v1_7_R4.ItemStack; - import org.bukkit.craftbukkit.v1_7_R4.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -57,13 +56,31 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); @@ -72,7 +89,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java index b8925a3..62612e5 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java @@ -17,14 +17,15 @@ package com.lishid.openinv.internal.v1_7_R4; import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_7_R4.ItemStack; import net.minecraft.server.v1_7_R4.PlayerInventory; - import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -39,13 +40,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 1802d0f..166d811 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_8_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java index 12009d1..05e1b99 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java @@ -16,14 +16,8 @@ package com.lishid.openinv.internal.v1_8_R1; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; - +import java.lang.reflect.Field; import net.minecraft.server.v1_8_R1.AxisAlignedBB; import net.minecraft.server.v1_8_R1.Block; import net.minecraft.server.v1_8_R1.BlockChest; @@ -41,6 +35,10 @@ import net.minecraft.server.v1_8_R1.TileEntity; import net.minecraft.server.v1_8_R1.TileEntityChest; import net.minecraft.server.v1_8_R1.TileEntityEnderChest; import net.minecraft.server.v1_8_R1.World; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @@ -57,15 +55,15 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { + return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; - BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { + + World world = PlayerDataManager.getHandle(bukkitPlayer).world; + BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); Block block = world.getType(blockPosition).getBlock(); if (block instanceof BlockEnderChest) { @@ -125,18 +123,18 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silentchest, @NotNull org.bukkit.block.Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is API-only - if (silentchest && b.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silentchest && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); return true; } World world = player.world; - BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); Object tile = world.getTileEntity(blockPosition); if (tile == null) { @@ -207,7 +205,7 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public void deactivateContainer(final Player bukkitPlayer) { + public void deactivateContainer(@NotNull final Player bukkitPlayer) { if (this.playerInteractManagerGamemode == null) { return; } diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java index 7597149..7cdf976 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_8_R1.IInventory; - import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java index a9ee9f8..413eab4 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java @@ -16,31 +16,27 @@ package com.lishid.openinv.internal.v1_8_R1; +import com.lishid.openinv.internal.IPlayerDataManager; +import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import com.mojang.authlib.GameProfile; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_8_R1.EntityPlayer; import net.minecraft.server.v1_8_R1.MinecraftServer; import net.minecraft.server.v1_8_R1.PlayerInteractManager; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_8_R1.CraftServer; import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure the player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -51,7 +47,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -60,13 +56,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getUniqueId().toString(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { try { UUID uuid = UUID.fromString(identifier); OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); @@ -81,7 +78,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java index 9e28b7a..9159ccf 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java @@ -16,19 +16,19 @@ package com.lishid.openinv.internal.v1_8_R1; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - +import java.lang.reflect.Field; import net.minecraft.server.v1_8_R1.EntityPlayer; import net.minecraft.server.v1_8_R1.IInventory; import net.minecraft.server.v1_8_R1.InventoryEnderChest; import net.minecraft.server.v1_8_R1.InventorySubcontainer; - import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -47,13 +47,31 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); @@ -62,7 +80,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java index ce38472..5a98553 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java @@ -17,14 +17,15 @@ package com.lishid.openinv.internal.v1_8_R1; import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_8_R1.ItemStack; import net.minecraft.server.v1_8_R1.PlayerInventory; - import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -39,13 +40,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 7d2419f..c076d42 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_8_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java index 3e08935..2169fbf 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java @@ -16,15 +16,8 @@ package com.lishid.openinv.internal.v1_8_R2; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; - -import net.minecraft.server.v1_8_R2.WorldSettings; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; - +import java.lang.reflect.Field; import net.minecraft.server.v1_8_R2.AxisAlignedBB; import net.minecraft.server.v1_8_R2.Block; import net.minecraft.server.v1_8_R2.BlockChest; @@ -43,7 +36,12 @@ import net.minecraft.server.v1_8_R2.TileEntity; import net.minecraft.server.v1_8_R2.TileEntityChest; import net.minecraft.server.v1_8_R2.TileEntityEnderChest; import net.minecraft.server.v1_8_R2.World; +import net.minecraft.server.v1_8_R2.WorldSettings; import net.minecraft.server.v1_8_R2.WorldSettings.EnumGamemode; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @@ -60,15 +58,15 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { + return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; - BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { + + World world = PlayerDataManager.getHandle(bukkitPlayer).world; + BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); Block block = world.getType(blockPosition).getBlock(); if (block instanceof BlockEnderChest) { @@ -123,19 +121,19 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is pretty much API-only - if (silentchest && b.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); player.b(StatisticList.V); return true; } World world = player.world; - BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); Object tile = world.getTileEntity(blockPosition); if (tile == null) { @@ -191,7 +189,7 @@ public class AnySilentContainer implements IAnySilentContainer { } // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silentchest || player.playerInteractManager.getGameMode() == WorldSettings.EnumGamemode.SPECTATOR) { + if (!silent || player.playerInteractManager.getGameMode() == WorldSettings.EnumGamemode.SPECTATOR) { player.openContainer(tileInventory); return true; } @@ -209,7 +207,7 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public void deactivateContainer(final Player bukkitPlayer) { + public void deactivateContainer(@NotNull final Player bukkitPlayer) { if (this.playerInteractManagerGamemode == null) { return; } diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java index 0c02956..ff9736e 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_8_R2.IInventory; - import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java index a81b0cf..3ba11c6 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java @@ -16,31 +16,27 @@ package com.lishid.openinv.internal.v1_8_R2; +import com.lishid.openinv.internal.IPlayerDataManager; +import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import com.mojang.authlib.GameProfile; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_8_R2.EntityPlayer; import net.minecraft.server.v1_8_R2.MinecraftServer; import net.minecraft.server.v1_8_R2.PlayerInteractManager; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_8_R2.CraftServer; import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure the player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -51,7 +47,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -60,13 +56,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getUniqueId().toString(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { try { UUID uuid = UUID.fromString(identifier); OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); @@ -81,7 +78,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java index 4c9f3b8..9fc0fdf 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java @@ -16,19 +16,19 @@ package com.lishid.openinv.internal.v1_8_R2; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - +import java.lang.reflect.Field; import net.minecraft.server.v1_8_R2.EntityPlayer; import net.minecraft.server.v1_8_R2.IInventory; import net.minecraft.server.v1_8_R2.InventoryEnderChest; import net.minecraft.server.v1_8_R2.InventorySubcontainer; - import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -47,13 +47,31 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); @@ -62,7 +80,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java index cb12205..16dd136 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java @@ -17,14 +17,15 @@ package com.lishid.openinv.internal.v1_8_R2; import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_8_R2.ItemStack; import net.minecraft.server.v1_8_R2.PlayerInventory; - import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -39,13 +40,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 851a9ae..61e67f1 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java index d252d7e..e574d51 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java @@ -16,14 +16,8 @@ package com.lishid.openinv.internal.v1_8_R3; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; - +import java.lang.reflect.Field; import net.minecraft.server.v1_8_R3.AxisAlignedBB; import net.minecraft.server.v1_8_R3.Block; import net.minecraft.server.v1_8_R3.BlockChest; @@ -43,6 +37,10 @@ import net.minecraft.server.v1_8_R3.TileEntityChest; import net.minecraft.server.v1_8_R3.TileEntityEnderChest; import net.minecraft.server.v1_8_R3.World; import net.minecraft.server.v1_8_R3.WorldSettings.EnumGamemode; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @@ -59,15 +57,15 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { + return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; - BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { + + World world = PlayerDataManager.getHandle(bukkitPlayer).world; + BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); Block block = world.getType(blockPosition).getBlock(); if (block instanceof BlockEnderChest) { @@ -122,19 +120,19 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is pretty much API-only - if (silentchest && b.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); player.b(StatisticList.V); return true; } World world = player.world; - BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); Object tile = world.getTileEntity(blockPosition); if (tile == null) { @@ -190,7 +188,7 @@ public class AnySilentContainer implements IAnySilentContainer { } // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { + if (!silent || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { player.openContainer(tileInventory); return true; } @@ -208,7 +206,7 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public void deactivateContainer(final Player bukkitPlayer) { + public void deactivateContainer(@NotNull final Player bukkitPlayer) { if (this.playerInteractManagerGamemode == null) { return; } diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java index 5fe208d..537437a 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_8_R3.IInventory; - import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java index ee1b091..85852fd 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java @@ -16,31 +16,27 @@ package com.lishid.openinv.internal.v1_8_R3; +import com.lishid.openinv.internal.IPlayerDataManager; +import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import com.mojang.authlib.GameProfile; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_8_R3.EntityPlayer; import net.minecraft.server.v1_8_R3.MinecraftServer; import net.minecraft.server.v1_8_R3.PlayerInteractManager; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_8_R3.CraftServer; import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure the player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -51,7 +47,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -60,13 +56,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getUniqueId().toString(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { try { UUID uuid = UUID.fromString(identifier); OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); @@ -81,7 +78,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java index 3cabcd2..159af2a 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java @@ -16,19 +16,19 @@ package com.lishid.openinv.internal.v1_8_R3; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - +import java.lang.reflect.Field; import net.minecraft.server.v1_8_R3.EntityPlayer; import net.minecraft.server.v1_8_R3.IInventory; import net.minecraft.server.v1_8_R3.InventoryEnderChest; import net.minecraft.server.v1_8_R3.InventorySubcontainer; - import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -47,13 +47,31 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); @@ -62,7 +80,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java index c38d875..960779f 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java @@ -17,14 +17,15 @@ package com.lishid.openinv.internal.v1_8_R3; import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_8_R3.ItemStack; import net.minecraft.server.v1_8_R3.PlayerInventory; - import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -39,13 +40,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); this.player.inventory.items = this.items; diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index dcc4b9d..f196a99 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_9_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java index 6ac66fb..fe27588 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java @@ -16,14 +16,8 @@ package com.lishid.openinv.internal.v1_9_R1; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; - +import java.lang.reflect.Field; import net.minecraft.server.v1_9_R1.AxisAlignedBB; import net.minecraft.server.v1_9_R1.Block; import net.minecraft.server.v1_9_R1.BlockChest; @@ -43,6 +37,10 @@ import net.minecraft.server.v1_9_R1.TileEntityChest; import net.minecraft.server.v1_9_R1.TileEntityEnderChest; import net.minecraft.server.v1_9_R1.World; import net.minecraft.server.v1_9_R1.WorldSettings.EnumGamemode; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @@ -59,15 +57,15 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { + return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; - BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { + + World world = PlayerDataManager.getHandle(bukkitPlayer).world; + BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); Block block = world.getType(blockPosition).getBlock(); if (block instanceof BlockEnderChest) { @@ -122,19 +120,19 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is pretty much API-only - if (silentchest && b.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); player.b(StatisticList.X); return true; } World world = player.world; - BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); Object tile = world.getTileEntity(blockPosition); if (tile == null) { @@ -190,7 +188,7 @@ public class AnySilentContainer implements IAnySilentContainer { } // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { + if (!silent || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { player.openContainer(tileInventory); return true; } @@ -208,7 +206,7 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public void deactivateContainer(final Player bukkitPlayer) { + public void deactivateContainer(@NotNull final Player bukkitPlayer) { if (this.playerInteractManagerGamemode == null) { return; } diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java index 991df8a..0849e07 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_9_R1.IInventory; - import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java index 43db944..b7dd8b2 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java @@ -16,31 +16,27 @@ package com.lishid.openinv.internal.v1_9_R1; +import com.lishid.openinv.internal.IPlayerDataManager; +import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import com.mojang.authlib.GameProfile; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_9_R1.EntityPlayer; import net.minecraft.server.v1_9_R1.MinecraftServer; import net.minecraft.server.v1_9_R1.PlayerInteractManager; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_9_R1.CraftServer; import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure the player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -51,7 +47,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -60,13 +56,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getUniqueId().toString(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { try { UUID uuid = UUID.fromString(identifier); OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); @@ -81,7 +78,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java index ee7d2dc..d1b10ef 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java @@ -16,19 +16,19 @@ package com.lishid.openinv.internal.v1_9_R1; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - +import java.lang.reflect.Field; import net.minecraft.server.v1_9_R1.EntityPlayer; import net.minecraft.server.v1_9_R1.IInventory; import net.minecraft.server.v1_9_R1.InventoryEnderChest; import net.minecraft.server.v1_9_R1.InventorySubcontainer; - import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -47,13 +47,31 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); @@ -62,7 +80,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java index 1e3f8de..9dfc2b9 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java @@ -16,18 +16,18 @@ package com.lishid.openinv.internal.v1_9_R1; +import com.lishid.openinv.internal.ISpecialPlayerInventory; import java.lang.reflect.Field; import java.lang.reflect.Modifier; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_9_R1.ItemStack; import net.minecraft.server.v1_9_R1.PlayerInventory; - import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -78,13 +78,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); setItemArrays(this.player.inventory, items, armor, extraSlots); diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index 89c032d..bafa59f 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvadapter1_9_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java index 45f63c4..4ca5e61 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java @@ -16,14 +16,8 @@ package com.lishid.openinv.internal.v1_9_R2; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.IAnySilentContainer; - -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; - +import java.lang.reflect.Field; import net.minecraft.server.v1_9_R2.AxisAlignedBB; import net.minecraft.server.v1_9_R2.Block; import net.minecraft.server.v1_9_R2.BlockChest; @@ -43,6 +37,10 @@ import net.minecraft.server.v1_9_R2.TileEntityChest; import net.minecraft.server.v1_9_R2.TileEntityEnderChest; import net.minecraft.server.v1_9_R2.World; import net.minecraft.server.v1_9_R2.WorldSettings.EnumGamemode; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class AnySilentContainer implements IAnySilentContainer { @@ -59,15 +57,15 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean isAnySilentContainer(org.bukkit.block.Block block) { - return block.getType() == Material.ENDER_CHEST || block.getState() instanceof org.bukkit.block.Chest; + public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { + return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; } @Override - public boolean isAnyContainerNeeded(Player p, org.bukkit.block.Block b) { - EntityPlayer player = PlayerDataManager.getHandle(p); - World world = player.world; - BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { + + World world = PlayerDataManager.getHandle(bukkitPlayer).world; + BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); Block block = world.getType(blockPosition).getBlock(); if (block instanceof BlockEnderChest) { @@ -122,19 +120,19 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public boolean activateContainer(Player p, boolean silentchest, org.bukkit.block.Block b) { + public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - EntityPlayer player = PlayerDataManager.getHandle(p); + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); // Silent ender chest is pretty much API-only - if (silentchest && b.getType() == Material.ENDER_CHEST) { - p.openInventory(p.getEnderChest()); + if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); player.b(StatisticList.X); return true; } World world = player.world; - BlockPosition blockPosition = new BlockPosition(b.getX(), b.getY(), b.getZ()); + BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); Object tile = world.getTileEntity(blockPosition); if (tile == null) { @@ -190,7 +188,7 @@ public class AnySilentContainer implements IAnySilentContainer { } // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { + if (!silent || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { player.openContainer(tileInventory); return true; } @@ -208,7 +206,7 @@ public class AnySilentContainer implements IAnySilentContainer { } @Override - public void deactivateContainer(final Player bukkitPlayer) { + public void deactivateContainer(@NotNull final Player bukkitPlayer) { if (this.playerInteractManagerGamemode == null) { return; } diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java index 14d0a01..386258f 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java @@ -20,17 +20,15 @@ import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InternalAccessor; - -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_9_R2.IInventory; - import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class InventoryAccess implements IInventoryAccess { @Override - public boolean isSpecialPlayerInventory(Inventory inventory) { + public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; } @@ -38,7 +36,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(Inventory inventory) { + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); @@ -53,7 +51,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public boolean isSpecialEnderChest(Inventory inventory) { + public boolean isSpecialEnderChest(@NotNull Inventory inventory) { if (inventory instanceof CraftInventory) { return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; } @@ -61,7 +59,7 @@ public class InventoryAccess implements IInventoryAccess { } @Override - public ISpecialEnderChest getSpecialEnderChest(Inventory inventory) { + public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { IInventory inv; if (inventory instanceof CraftInventory) { inv = ((CraftInventory) inventory).getInventory(); diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java index 74199f3..8eecdb6 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java @@ -16,31 +16,27 @@ package com.lishid.openinv.internal.v1_9_R2; +import com.lishid.openinv.internal.IPlayerDataManager; +import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; - -import com.lishid.openinv.internal.IPlayerDataManager; - -import com.mojang.authlib.GameProfile; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.entity.Player; - import net.minecraft.server.v1_9_R2.EntityPlayer; import net.minecraft.server.v1_9_R2.MinecraftServer; import net.minecraft.server.v1_9_R2.PlayerInteractManager; - +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; import org.bukkit.craftbukkit.v1_9_R2.CraftServer; import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @Override - public Player loadPlayer(OfflinePlayer offline) { + public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure player has data - if (offline == null || !offline.hasPlayedBefore()) { + if (!offline.hasPlayedBefore()) { return null; } @@ -51,7 +47,7 @@ public class PlayerDataManager implements IPlayerDataManager { new PlayerInteractManager(server.getWorldServer(0))); // Get the bukkit entity - Player target = (entity == null) ? null : entity.getBukkitEntity(); + Player target = entity.getBukkitEntity(); if (target != null) { // Load data target.loadData(); @@ -60,13 +56,14 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override - public String getPlayerDataID(OfflinePlayer offline) { + @NotNull + @Override + public String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getUniqueId().toString(); } @Override - public OfflinePlayer getPlayerByID(String identifier) { + public OfflinePlayer getPlayerByID(@NotNull String identifier) { try { UUID uuid = UUID.fromString(identifier); OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); @@ -81,7 +78,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @Override + @NotNull + @Override public Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java index 83bcec6..cf21a3e 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java @@ -16,19 +16,19 @@ package com.lishid.openinv.internal.v1_9_R2; -import java.lang.reflect.Field; - import com.lishid.openinv.internal.ISpecialEnderChest; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - +import java.lang.reflect.Field; import net.minecraft.server.v1_9_R2.EntityPlayer; import net.minecraft.server.v1_9_R2.IInventory; import net.minecraft.server.v1_9_R2.InventoryEnderChest; import net.minecraft.server.v1_9_R2.InventorySubcontainer; - import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -47,13 +47,31 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { try { EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); @@ -62,7 +80,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento Field field = playerEnderChest.getClass().getField("items"); field.setAccessible(true); field.set(playerEnderChest, this.items); - } catch (Exception e) {} + } catch (Exception ignored) {} playerOnline = true; } } diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java index ad146d4..22a000c 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java @@ -16,18 +16,18 @@ package com.lishid.openinv.internal.v1_9_R2; +import com.lishid.openinv.internal.ISpecialPlayerInventory; import java.lang.reflect.Field; import java.lang.reflect.Modifier; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - import net.minecraft.server.v1_9_R2.ItemStack; import net.minecraft.server.v1_9_R2.PlayerInventory; - import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -78,13 +78,31 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } } + @NotNull @Override - public Inventory getBukkitInventory() { - return inventory; + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @Override + public Inventory getTopInventory() { + return inventory; + } + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @Override + public HumanEntity getPlayer() { + return viewer; + } + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + }; } @Override - public void setPlayerOnline(Player player) { + public void setPlayerOnline(@NotNull Player player) { if (!playerOnline) { this.player = PlayerDataManager.getHandle(player); setItemArrays(this.player.inventory, items, armor, extraSlots); diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index 1ab74b4..ac104d3 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvplugincore @@ -38,12 +38,12 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT com.lishid openinvpluginv1_10_r1 - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java index e37127e..415294c 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java @@ -16,20 +16,8 @@ package com.lishid.openinv; -import java.lang.reflect.Method; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Future; - -import javax.annotation.Nullable; - +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Multimap; import com.lishid.openinv.commands.AnyChestPluginCommand; import com.lishid.openinv.commands.OpenEnderPluginCommand; import com.lishid.openinv.commands.OpenInvPluginCommand; @@ -50,10 +38,18 @@ import com.lishid.openinv.util.ConfigUpdater; import com.lishid.openinv.util.Function; import com.lishid.openinv.util.InternalAccessor; import com.lishid.openinv.util.Permissions; - -import com.google.common.collect.HashMultimap; -import com.google.common.collect.Multimap; - +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; +import javax.annotation.Nullable; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.PluginCommand; @@ -64,6 +60,7 @@ import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitRunnable; +import org.jetbrains.annotations.NotNull; /** * Open other player's inventory @@ -94,18 +91,18 @@ public class OpenInv extends JavaPlugin implements IOpenInv { // Check if inventory is stored, and if it is, remove it and eject all viewers if (OpenInv.this.inventories.containsKey(key)) { - Inventory inv = OpenInv.this.inventories.remove(key).getBukkitInventory(); + Inventory inv = OpenInv.this.inventories.remove(key).getBukkitView(null).getTopInventory(); List viewers = inv.getViewers(); - for (HumanEntity entity : viewers.toArray(new HumanEntity[viewers.size()])) { + for (HumanEntity entity : viewers.toArray(new HumanEntity[0])) { entity.closeInventory(); } } // Check if ender chest is stored, and if it is, remove it and eject all viewers if (OpenInv.this.enderChests.containsKey(key)) { - Inventory inv = OpenInv.this.enderChests.remove(key).getBukkitInventory(); + Inventory inv = OpenInv.this.enderChests.remove(key).getBukkitView(null).getTopInventory(); List viewers = inv.getViewers(); - for (HumanEntity entity : viewers.toArray(new HumanEntity[viewers.size()])) { + for (HumanEntity entity : viewers.toArray(new HumanEntity[0])) { entity.closeInventory(); } } @@ -134,7 +131,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } if (this.inventories.containsKey(key)) { - Iterator iterator = this.inventories.get(key).getBukkitInventory().getViewers().iterator(); + Iterator iterator = this.inventories.get(key).getBukkitView(null).getTopInventory().getViewers().iterator(); while (iterator.hasNext()) { HumanEntity human = iterator.next(); // If player has permission or is in the same world, allow continued access @@ -148,7 +145,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } if (this.enderChests.containsKey(key)) { - Iterator iterator = this.enderChests.get(key).getBukkitInventory().getViewers().iterator(); + Iterator iterator = this.enderChests.get(key).getBukkitView(null).getTopInventory().getViewers().iterator(); while (iterator.hasNext()) { HumanEntity human = iterator.next(); if (Permissions.CROSSWORLD.hasPermission(human) || human.getWorld() == null @@ -165,33 +162,13 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return this.getConfig().getBoolean("settings.disable-saving", false); } + @NotNull @Override public IAnySilentContainer getAnySilentContainer() { return this.accessor.getAnySilentContainer(); } - @Deprecated - @Override - public ISpecialEnderChest getEnderChest(final Player player, final boolean online) { - try { - return this.getSpecialEnderChest(player, online); - } catch (InstantiationException e) { - e.printStackTrace(); - return null; - } - } - - @Deprecated - @Override - public ISpecialPlayerInventory getInventory(final Player player, final boolean online) { - try { - return this.getSpecialInventory(player, online); - } catch (InstantiationException e) { - e.printStackTrace(); - return null; - } - } - + @NotNull @Override public IInventoryAccess getInventoryAccess() { return this.accessor.getInventoryAccess(); @@ -272,7 +249,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } @Override - public boolean getPlayerAnyChestStatus(final OfflinePlayer player) { + public boolean getPlayerAnyChestStatus(@NotNull final OfflinePlayer player) { boolean defaultState = false; if (player.isOnline()) { @@ -285,27 +262,29 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return this.getConfig().getBoolean("toggles.any-chest." + this.accessor.getPlayerDataManager().getPlayerDataID(player), defaultState); } + @NotNull @Override - public String getPlayerID(final OfflinePlayer offline) { + public String getPlayerID(@NotNull final OfflinePlayer offline) { return this.accessor.getPlayerDataManager().getPlayerDataID(offline); } @Override - public boolean getPlayerSilentChestStatus(final OfflinePlayer player) { + public boolean getPlayerSilentChestStatus(@NotNull final OfflinePlayer offline) { boolean defaultState = false; - if (player.isOnline()) { - Player onlinePlayer = player.getPlayer(); + if (offline.isOnline()) { + Player onlinePlayer = offline.getPlayer(); if (onlinePlayer != null) { defaultState = Permissions.SILENT_DEFAULT.hasPermission(onlinePlayer); } } - return this.getConfig().getBoolean("toggles.silent-chest." + this.accessor.getPlayerDataManager().getPlayerDataID(player), defaultState); + return this.getConfig().getBoolean("toggles.silent-chest." + this.accessor.getPlayerDataManager().getPlayerDataID(offline), defaultState); } + @NotNull @Override - public ISpecialEnderChest getSpecialEnderChest(final Player player, final boolean online) + public ISpecialEnderChest getSpecialEnderChest(@NotNull final Player player, final boolean online) throws InstantiationException { String id = this.accessor.getPlayerDataManager().getPlayerDataID(player); if (this.enderChests.containsKey(id)) { @@ -317,8 +296,9 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return inv; } + @NotNull @Override - public ISpecialPlayerInventory getSpecialInventory(final Player player, final boolean online) + public ISpecialPlayerInventory getSpecialInventory(@NotNull final Player player, final boolean online) throws InstantiationException { String id = this.accessor.getPlayerDataManager().getPlayerDataID(player); if (this.inventories.containsKey(id)) { @@ -337,11 +317,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { @Nullable @Override - public Player loadPlayer(final OfflinePlayer offline) { - - if (offline == null) { - return null; - } + public Player loadPlayer(@NotNull final OfflinePlayer offline) { String key = this.accessor.getPlayerDataManager().getPlayerDataID(offline); if (this.playerCache.containsKey(key)) { @@ -407,7 +383,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { @Nullable @Override - public OfflinePlayer matchPlayer(final String name) { + public OfflinePlayer matchPlayer(@NotNull final String name) { // Warn if called on the main thread - if we resort to searching offline players, this may take several seconds. if (this.getServer().isPrimaryThread()) { @@ -557,7 +533,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } @Override - public void releasePlayer(final Player player, final Plugin plugin) { + public void releasePlayer(@NotNull final Player player, @NotNull final Plugin plugin) { String key = this.accessor.getPlayerDataManager().getPlayerDataID(player); if (!this.pluginUsage.containsEntry(key, plugin.getClass())) { @@ -568,7 +544,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } @Override - public void retainPlayer(final Player player, final Plugin plugin) { + public void retainPlayer(@NotNull final Player player, @NotNull final Plugin plugin) { String key = this.accessor.getPlayerDataManager().getPlayerDataID(player); if (this.pluginUsage.containsEntry(key, plugin.getClass())) { @@ -579,8 +555,8 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } @Override - public void setPlayerAnyChestStatus(final OfflinePlayer player, final boolean status) { - this.getConfig().set("toggles.any-chest." + this.accessor.getPlayerDataManager().getPlayerDataID(player), status); + public void setPlayerAnyChestStatus(@NotNull final OfflinePlayer offline, final boolean status) { + this.getConfig().set("toggles.any-chest." + this.accessor.getPlayerDataManager().getPlayerDataID(offline), status); this.saveConfig(); } @@ -644,8 +620,8 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } @Override - public void setPlayerSilentChestStatus(final OfflinePlayer player, final boolean status) { - this.getConfig().set("toggles.silent-chest." + this.accessor.getPlayerDataManager().getPlayerDataID(player), status); + public void setPlayerSilentChestStatus(@NotNull final OfflinePlayer offline, final boolean status) { + this.getConfig().set("toggles.silent-chest." + this.accessor.getPlayerDataManager().getPlayerDataID(offline), status); this.saveConfig(); } @@ -685,8 +661,8 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } @Override - public void unload(final OfflinePlayer player) { - this.playerCache.invalidate(this.accessor.getPlayerDataManager().getPlayerDataID(player)); + public void unload(@NotNull final OfflinePlayer offline) { + this.playerCache.invalidate(this.accessor.getPlayerDataManager().getPlayerDataID(offline)); } } diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java index ae132e8..a0253a9 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java @@ -17,7 +17,6 @@ package com.lishid.openinv.commands; import com.lishid.openinv.OpenInv; - import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java index cfc8672..9bd1f41 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -16,12 +16,10 @@ package com.lishid.openinv.commands; -import java.util.HashMap; - import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.util.Permissions; - +import java.util.HashMap; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; @@ -144,7 +142,7 @@ public class OpenEnderPluginCommand implements CommandExecutor { } // Open the inventory - player.openInventory(chest.getBukkitInventory()); + player.openInventory(chest.getBukkitView(player)); } } diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java index 69d7e46..7a38846 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -16,12 +16,10 @@ package com.lishid.openinv.commands; -import java.util.HashMap; - import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.Permissions; - +import java.util.HashMap; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; @@ -153,7 +151,7 @@ public class OpenInvPluginCommand implements CommandExecutor { } // Open the inventory - player.openInventory(inv.getBukkitInventory()); + player.openInventory(inv.getBukkitView(player)); } } diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java index 522107b..ce2f687 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java @@ -17,7 +17,6 @@ package com.lishid.openinv.commands; import com.lishid.openinv.OpenInv; - import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java index 267d1ad..98c9912 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java @@ -17,7 +17,6 @@ package com.lishid.openinv.commands; import com.lishid.openinv.OpenInv; - import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.command.Command; diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java index 1019234..cade3f1 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java @@ -16,14 +16,13 @@ package com.lishid.openinv.commands; +import com.lishid.openinv.OpenInv; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.lishid.openinv.OpenInv; - public class SilentChestPluginCommand implements CommandExecutor { private final OpenInv plugin; diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryClickListener.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryClickListener.java index 63a4718..e806214 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryClickListener.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryClickListener.java @@ -18,7 +18,6 @@ package com.lishid.openinv.listeners; import com.lishid.openinv.IOpenInv; import com.lishid.openinv.util.Permissions; - import org.bukkit.entity.HumanEntity; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryCloseListener.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryCloseListener.java index 988a3d8..a6bf404 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryCloseListener.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/InventoryCloseListener.java @@ -17,7 +17,6 @@ package com.lishid.openinv.listeners; import com.lishid.openinv.IOpenInv; - import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PlayerListener.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PlayerListener.java index b34914f..acc3e3d 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PlayerListener.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PlayerListener.java @@ -18,7 +18,6 @@ package com.lishid.openinv.listeners; import com.lishid.openinv.OpenInv; import com.lishid.openinv.util.Permissions; - import org.bukkit.entity.Player; import org.bukkit.event.Event.Result; import org.bukkit.event.EventHandler; diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PluginListener.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PluginListener.java index 158a434..01a53fd 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PluginListener.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/listeners/PluginListener.java @@ -17,7 +17,6 @@ package com.lishid.openinv.listeners; import com.lishid.openinv.OpenInv; - import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.server.PluginDisableEvent; diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/util/ConfigUpdater.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/util/ConfigUpdater.java index f917699..3658d67 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/util/ConfigUpdater.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/util/ConfigUpdater.java @@ -16,14 +16,12 @@ package com.lishid.openinv.util; +import com.lishid.openinv.OpenInv; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Set; - -import com.lishid.openinv.OpenInv; - import org.bukkit.Material; import org.bukkit.OfflinePlayer; import org.bukkit.configuration.ConfigurationSection; @@ -107,12 +105,12 @@ public class ConfigUpdater { } }.runTask(plugin); - updateToggles("AnyChest", ".toggle", "toggles.any-chest"); - updateToggles("ItemOpenInv", ".toggle", "toggles.items.open-inv"); - updateToggles("SilentChest", ".toggle", "toggles.silent-chest"); + updateToggles("AnyChest", "toggles.any-chest"); + updateToggles("ItemOpenInv", "toggles.items.open-inv"); + updateToggles("SilentChest", "toggles.silent-chest"); } - private void updateToggles(final String sectionName, String suffix, final String newSectionName) { + private void updateToggles(final String sectionName, final String newSectionName) { // Ensure section exists if (!plugin.getConfig().isConfigurationSection(sectionName)) { return; @@ -130,8 +128,9 @@ public class ConfigUpdater { for (String playerName : keys) { OfflinePlayer player = plugin.matchPlayer(playerName); - String dataID = plugin.getPlayerID(player); - toggles.put(dataID, section.getBoolean(playerName + suffix, false)); + if (player != null) { + toggles.put(plugin.getPlayerID(player), section.getBoolean(playerName + ".toggle", false)); + } } new BukkitRunnable() { diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 005df7e..d43228f 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvpluginv1_10_r1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT diff --git a/plugin/plugin-v1_10_R1/src/main/java/com/lishid/openinv/listeners/InventoryDragListener.java b/plugin/plugin-v1_10_R1/src/main/java/com/lishid/openinv/listeners/InventoryDragListener.java index 520b762..603073f 100644 --- a/plugin/plugin-v1_10_R1/src/main/java/com/lishid/openinv/listeners/InventoryDragListener.java +++ b/plugin/plugin-v1_10_R1/src/main/java/com/lishid/openinv/listeners/InventoryDragListener.java @@ -18,7 +18,6 @@ package com.lishid.openinv.listeners; import com.lishid.openinv.IOpenInv; import com.lishid.openinv.util.Permissions; - import org.bukkit.entity.HumanEntity; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; diff --git a/plugin/pom.xml b/plugin/pom.xml index ccb3c7b..f48283e 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT openinvplugin diff --git a/pom.xml b/pom.xml index 707a3c3..3236a43 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 3.3.8-SNAPSHOT + 4.0.0-SNAPSHOT pom @@ -84,6 +84,14 @@ + + + org.jetbrains + annotations + 17.0.0 + + + -- 2.49.1 From e4d002029675c9833cdad874748c731caa3e94c3 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 28 Apr 2019 20:37:45 -0400 Subject: [PATCH 148/253] Update to 1.14 (#101) --- internal/pom.xml | 5 +- internal/v1_14_R1/pom.xml | 59 ++ .../internal/v1_14_R1/AnySilentContainer.java | 320 ++++++++ .../internal/v1_14_R1/InventoryAccess.java | 78 ++ .../internal/v1_14_R1/PlayerDataManager.java | 108 +++ .../internal/v1_14_R1/SpecialEnderChest.java | 285 +++++++ .../v1_14_R1/SpecialPlayerInventory.java | 770 ++++++++++++++++++ 7 files changed, 1623 insertions(+), 2 deletions(-) create mode 100644 internal/v1_14_R1/pom.xml create mode 100644 internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/AnySilentContainer.java create mode 100644 internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/InventoryAccess.java create mode 100644 internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java create mode 100644 internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialEnderChest.java create mode 100644 internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java diff --git a/internal/pom.xml b/internal/pom.xml index 2fee337..2fc01d0 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -33,7 +33,7 @@ latest - v1_12_R1 + v1_14_R1 @@ -41,8 +41,8 @@ recent - v1_13_R1 v1_13_R2 + v1_14_R1 @@ -73,6 +73,7 @@ v1_12_R1 v1_13_R1 v1_13_R2 + v1_14_R1 diff --git a/internal/v1_14_R1/pom.xml b/internal/v1_14_R1/pom.xml new file mode 100644 index 0000000..fde7cdd --- /dev/null +++ b/internal/v1_14_R1/pom.xml @@ -0,0 +1,59 @@ + + + + + 4.0.0 + + + com.lishid + openinvinternal + 4.0.0-SNAPSHOT + + + openinvadapter1_14_R1 + OpenInvAdapter1_14_R1 + + + + org.spigotmc + spigot + 1.14-R0.1-SNAPSHOT + provided + + + com.lishid + openinvcommon + 4.0.0-SNAPSHOT + + + + + + + maven-compiler-plugin + 3.6.1 + + 1.8 + 1.8 + + + + + + + \ No newline at end of file diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/AnySilentContainer.java b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/AnySilentContainer.java new file mode 100644 index 0000000..379762d --- /dev/null +++ b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/AnySilentContainer.java @@ -0,0 +1,320 @@ +/* + * Copyright (C) 2011-2019 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_14_R1; + +import com.lishid.openinv.internal.IAnySilentContainer; +import java.lang.reflect.Field; +import javax.annotation.Nullable; +import net.minecraft.server.v1_14_R1.AxisAlignedBB; +import net.minecraft.server.v1_14_R1.Block; +import net.minecraft.server.v1_14_R1.BlockChest; +import net.minecraft.server.v1_14_R1.BlockChestTrapped; +import net.minecraft.server.v1_14_R1.BlockEnderChest; +import net.minecraft.server.v1_14_R1.BlockPosition; +import net.minecraft.server.v1_14_R1.BlockPropertyChestType; +import net.minecraft.server.v1_14_R1.BlockShulkerBox; +import net.minecraft.server.v1_14_R1.ChatMessage; +import net.minecraft.server.v1_14_R1.Container; +import net.minecraft.server.v1_14_R1.ContainerChest; +import net.minecraft.server.v1_14_R1.Entity; +import net.minecraft.server.v1_14_R1.EntityCat; +import net.minecraft.server.v1_14_R1.EntityHuman; +import net.minecraft.server.v1_14_R1.EntityPlayer; +import net.minecraft.server.v1_14_R1.EnumDirection; +import net.minecraft.server.v1_14_R1.EnumGamemode; +import net.minecraft.server.v1_14_R1.IBlockData; +import net.minecraft.server.v1_14_R1.IChatBaseComponent; +import net.minecraft.server.v1_14_R1.ITileInventory; +import net.minecraft.server.v1_14_R1.InventoryEnderChest; +import net.minecraft.server.v1_14_R1.InventoryLargeChest; +import net.minecraft.server.v1_14_R1.PlayerInteractManager; +import net.minecraft.server.v1_14_R1.PlayerInventory; +import net.minecraft.server.v1_14_R1.TileEntity; +import net.minecraft.server.v1_14_R1.TileEntityChest; +import net.minecraft.server.v1_14_R1.TileEntityEnderChest; +import net.minecraft.server.v1_14_R1.TileEntityShulkerBox; +import net.minecraft.server.v1_14_R1.TileInventory; +import net.minecraft.server.v1_14_R1.VoxelShapes; +import net.minecraft.server.v1_14_R1.World; +import org.bukkit.Material; +import org.bukkit.Statistic; +import org.bukkit.block.BlockState; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; + +public class AnySilentContainer implements IAnySilentContainer { + + private Field playerInteractManagerGamemode; + + public AnySilentContainer() { + try { + this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); + this.playerInteractManagerGamemode.setAccessible(true); + } catch (NoSuchFieldException | SecurityException e) { + System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); + e.printStackTrace(); + } + } + + @Override + public boolean isAnySilentContainer(@NotNull final org.bukkit.block.Block bukkitBlock) { + if (bukkitBlock.getType() == Material.ENDER_CHEST) { + return true; + } + BlockState state = bukkitBlock.getState(); + return state instanceof org.bukkit.block.Chest + || state instanceof org.bukkit.block.ShulkerBox; + } + + @Override + public boolean isAnyContainerNeeded(@NotNull final Player p, @NotNull final org.bukkit.block.Block bukkitBlock) { + EntityPlayer player = PlayerDataManager.getHandle(p); + World world = player.world; + BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); + IBlockData blockData = world.getType(blockPosition); + Block block = blockData.getBlock(); + + if (block instanceof BlockShulkerBox) { + return this.isBlockedShulkerBox(world, blockPosition, blockData); + } + + if (block instanceof BlockEnderChest) { + // Ender chests are not blocked by ocelots. + return world.getType(blockPosition.up()).isOccluding(world, blockPosition); + } + + // Check if chest is blocked or has an ocelot on top + if (this.isBlockedChest(world, blockPosition)) { + return true; + } + + // Check for matching adjacent chests that are blocked or have an ocelot on top + BlockPropertyChestType chestType = blockData.get(BlockChest.b); + + if (chestType == BlockPropertyChestType.SINGLE) { + return false; + } + + BlockPosition adjacentBlockPosition = blockPosition.shift(BlockChest.j(blockData)); + IBlockData adjacentBlockData = world.getType(adjacentBlockPosition); + + if (adjacentBlockData.getBlock() == block) { + + BlockPropertyChestType adjacentChestType = adjacentBlockData.get(BlockChest.b); + + if (adjacentChestType != BlockPropertyChestType.SINGLE && chestType != adjacentChestType + && adjacentBlockData.get(BlockChest.FACING) == blockData.get(BlockChest.FACING)) { + + return this.isBlockedChest(world, adjacentBlockPosition); + } + } + + return false; + } + + private boolean isBlockedShulkerBox(final World world, final BlockPosition blockPosition, + final IBlockData blockData) { + // For reference, look at net.minecraft.server.BlockShulkerBox + TileEntity tile = world.getTileEntity(blockPosition); + + if (!(tile instanceof TileEntityShulkerBox)) { + return false; + } + + EnumDirection enumDirection = blockData.get(BlockShulkerBox.a); + if (((TileEntityShulkerBox) tile).s() == TileEntityShulkerBox.AnimationPhase.CLOSED) { + AxisAlignedBB axisAlignedBB = VoxelShapes.b().getBoundingBox() + .b(0.5F * enumDirection.getAdjacentX(), 0.5F * enumDirection.getAdjacentY(), 0.5F * enumDirection.getAdjacentZ()) + .a(enumDirection.getAdjacentX(), enumDirection.getAdjacentY(), enumDirection.getAdjacentZ()); + return !world.getCubes(null, axisAlignedBB.a(blockPosition.shift(enumDirection))); + } + + return false; + } + + private boolean isBlockedChest(final World world, final BlockPosition blockPosition) { + // For reference, loot at net.minecraft.server.BlockChest + return world.getType(blockPosition.up()).isOccluding(world, blockPosition) || this.hasOcelotOnTop(world, blockPosition); + } + + private boolean hasOcelotOnTop(final World world, final BlockPosition blockPosition) { + for (Entity entity : world.a(EntityCat.class, + new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, + blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, + blockPosition.getZ() + 1))) { + EntityCat entityCat = (EntityCat) entity; + if (entityCat.isSitting()) { + return true; + } + } + + return false; + } + + @Override + public boolean activateContainer(@NotNull final Player bukkitPlayer, final boolean silentchest, + @NotNull final org.bukkit.block.Block bukkitBlock) { + + // Silent ender chest is API-only + if (silentchest && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); + bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); + return true; + } + + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + + final World world = player.world; + final BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); + final Object tile = world.getTileEntity(blockPosition); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(new TileInventory((containerCounter, playerInventory, ignored) -> + ContainerChest.a(containerCounter, playerInventory, enderChest), BlockEnderChest.d)); + bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); + return true; + } + + if (!(tile instanceof ITileInventory)) { + return false; + } + + ITileInventory tileInventory = (ITileInventory) tile; + IBlockData blockData = world.getType(blockPosition); + Block block = blockData.getBlock(); + + if (block instanceof BlockChest) { + + BlockPropertyChestType chestType = blockData.get(BlockChest.b); + + if (chestType != BlockPropertyChestType.SINGLE) { + + BlockPosition adjacentBlockPosition = blockPosition.shift(BlockChest.j(blockData)); + IBlockData adjacentBlockData = world.getType(adjacentBlockPosition); + + if (adjacentBlockData.getBlock() == block) { + + BlockPropertyChestType adjacentChestType = adjacentBlockData.get(BlockChest.b); + + if (adjacentChestType != BlockPropertyChestType.SINGLE && chestType != adjacentChestType + && adjacentBlockData.get(BlockChest.FACING) == blockData.get(BlockChest.FACING)) { + + TileEntity adjacentTile = world.getTileEntity(adjacentBlockPosition); + + if (adjacentTile instanceof TileEntityChest && tileInventory instanceof TileEntityChest) { + TileEntityChest rightChest = chestType == BlockPropertyChestType.RIGHT ? ((TileEntityChest) tileInventory) : (TileEntityChest) adjacentTile; + TileEntityChest leftChest = chestType == BlockPropertyChestType.RIGHT ? (TileEntityChest) adjacentTile : ((TileEntityChest) tileInventory); + tileInventory = new ITileInventory() { + @Nullable + public Container createMenu(int containerCounter, PlayerInventory playerInventory, EntityHuman entityHuman) { + if (leftChest.e(entityHuman) && rightChest.e(entityHuman)) { + leftChest.d(playerInventory.player); + rightChest.d(playerInventory.player); + return ContainerChest.b(containerCounter, playerInventory, new InventoryLargeChest(rightChest, leftChest)); + } else { + return null; + } + } + + public IChatBaseComponent getScoreboardDisplayName() { + return new ChatMessage("container.chestDouble"); + } + }; + } + } + } + } + + if (block instanceof BlockChestTrapped) { + bukkitPlayer.incrementStatistic(Statistic.TRAPPED_CHEST_TRIGGERED); + } else { + bukkitPlayer.incrementStatistic(Statistic.CHEST_OPENED); + } + } + + if (block instanceof BlockShulkerBox) { + bukkitPlayer.incrementStatistic(Statistic.SHULKER_BOX_OPENED); + } + + // AnyChest only - SilentChest not active, container unsupported, or unnecessary. + if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { + player.openContainer(tileInventory); + return true; + } + + // SilentChest requires access to setting players' gamemode directly. + if (this.playerInteractManagerGamemode == null) { + return false; + } + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.openContainer(tileInventory); + this.forceGameMode(player, gamemode); + return true; + } + + @Override + public void deactivateContainer(@NotNull final Player bukkitPlayer) { + if (this.playerInteractManagerGamemode == null) { + return; + } + + InventoryView view = bukkitPlayer.getOpenInventory(); + switch (view.getType()) { + case CHEST: + case ENDER_CHEST: + case SHULKER_BOX: + break; + default: + return; + } + + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.activeContainer.b(player); + player.activeContainer = player.defaultContainer; + this.forceGameMode(player, gamemode); + } + + private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { + if (this.playerInteractManagerGamemode == null) { + // No need to warn repeatedly, error on startup and lack of function should be enough. + return; + } + try { + if (!this.playerInteractManagerGamemode.isAccessible()) { + // Just in case, ensure accessible. + this.playerInteractManagerGamemode.setAccessible(true); + } + this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); + } catch (IllegalArgumentException | IllegalAccessException e) { + e.printStackTrace(); + } + } + +} diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/InventoryAccess.java b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/InventoryAccess.java new file mode 100644 index 0000000..2830c43 --- /dev/null +++ b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/InventoryAccess.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2011-2019 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_14_R1; + +import com.lishid.openinv.internal.IInventoryAccess; +import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.util.InternalAccessor; +import net.minecraft.server.v1_14_R1.IInventory; +import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftInventory; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; + +public class InventoryAccess implements IInventoryAccess { + + @Override + public ISpecialEnderChest getSpecialEnderChest(@NotNull final Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialEnderChest) { + return (SpecialEnderChest) inv; + } + return null; + } + + @Override + public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull final Inventory inventory) { + IInventory inv; + if (inventory instanceof CraftInventory) { + inv = ((CraftInventory) inventory).getInventory(); + } else { + inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); + } + + if (inv instanceof SpecialPlayerInventory) { + return (SpecialPlayerInventory) inv; + } + return null; + } + + @Override + public boolean isSpecialEnderChest(@NotNull final Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, + inventory) instanceof ISpecialEnderChest; + } + + @Override + public boolean isSpecialPlayerInventory(@NotNull final Inventory inventory) { + if (inventory instanceof CraftInventory) { + return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; + } + return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, + inventory) instanceof ISpecialPlayerInventory; + } + +} diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java new file mode 100644 index 0000000..35b5202 --- /dev/null +++ b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2011-2019 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_14_R1; + +import com.lishid.openinv.internal.IPlayerDataManager; +import com.mojang.authlib.GameProfile; +import java.util.Collection; +import java.util.UUID; +import net.minecraft.server.v1_14_R1.DimensionManager; +import net.minecraft.server.v1_14_R1.EntityPlayer; +import net.minecraft.server.v1_14_R1.MinecraftServer; +import net.minecraft.server.v1_14_R1.PlayerInteractManager; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; +import org.bukkit.craftbukkit.v1_14_R1.CraftServer; +import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +public class PlayerDataManager implements IPlayerDataManager { + + public static EntityPlayer getHandle(final Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + + @NotNull + @Override + public Collection getOnlinePlayers() { + return Bukkit.getOnlinePlayers(); + } + + @Override + public OfflinePlayer getPlayerByID(@NotNull final String identifier) { + try { + UUID uuid = UUID.fromString(identifier); + OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); + // Ensure player is a real player, otherwise return null + if (!player.hasPlayedBefore() && !player.isOnline()) { + return null; + } + return player; + } catch (IllegalArgumentException e) { + // Not a UUID + return null; + } + } + + @NotNull + @Override + public String getPlayerDataID(@NotNull final OfflinePlayer offline) { + return offline.getUniqueId().toString(); + } + + @Override + public Player loadPlayer(@NotNull final OfflinePlayer offline) { + // Ensure player has data + if (!offline.hasPlayedBefore()) { + return null; + } + + // Create a profile and entity to load the player data + GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(DimensionManager.OVERWORLD), profile, + new PlayerInteractManager(server.getWorldServer(DimensionManager.OVERWORLD))); + + // Get the bukkit entity + Player target = entity.getBukkitEntity(); + if (target != null) { + // Load data + target.loadData(); + } + // Return the entity + return target; + } + +} diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialEnderChest.java b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialEnderChest.java new file mode 100644 index 0000000..2304e8a --- /dev/null +++ b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialEnderChest.java @@ -0,0 +1,285 @@ +/* + * Copyright (C) 2011-2019 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_14_R1; + +import com.lishid.openinv.internal.ISpecialEnderChest; +import java.util.List; +import net.minecraft.server.v1_14_R1.AutoRecipeStackManager; +import net.minecraft.server.v1_14_R1.ContainerUtil; +import net.minecraft.server.v1_14_R1.EntityHuman; +import net.minecraft.server.v1_14_R1.EntityPlayer; +import net.minecraft.server.v1_14_R1.IInventoryListener; +import net.minecraft.server.v1_14_R1.InventoryEnderChest; +import net.minecraft.server.v1_14_R1.ItemStack; +import net.minecraft.server.v1_14_R1.NonNullList; +import org.bukkit.Location; +import org.bukkit.craftbukkit.v1_14_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; + +public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEnderChest { + + private final CraftInventory inventory; + private EntityPlayer owner; + private NonNullList items; + private boolean playerOnline; + + public SpecialEnderChest(final Player player, final Boolean online) { + super(PlayerDataManager.getHandle(player)); + this.inventory = new CraftInventory(this); + this.owner = PlayerDataManager.getHandle(player); + this.playerOnline = online; + this.items = this.owner.getEnderChest().items; + } + + @NotNull + @Override + public InventoryView getBukkitView(Player viewer) { + return new InventoryView() { + @NotNull + @Override + public Inventory getTopInventory() { + return inventory; + } + @NotNull + @Override + public Inventory getBottomInventory() { + return viewer.getInventory(); + } + @NotNull + @Override + public HumanEntity getPlayer() { + return viewer; + } + @NotNull + @Override + public InventoryType getType() { + return InventoryType.ENDER_CHEST; + } + @NotNull + @Override + public String getTitle() { + return viewer != null && viewer.equals(owner.getBukkitEntity()) ? InventoryType.ENDER_CHEST.getDefaultTitle() : owner.getName() + "'s Ender Chest"; + } + }; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public void setPlayerOffline() { + this.playerOnline = false; + } + + @Override + public void setPlayerOnline(@NotNull final Player player) { + if (!this.playerOnline) { + try { + this.owner = PlayerDataManager.getHandle(player); + InventoryEnderChest enderChest = owner.getEnderChest(); + for (int i = 0; i < enderChest.getSize(); ++i) { + enderChest.setItem(i, this.items.get(i)); + } + this.items = enderChest.items; + } catch (Exception ignored) {} + this.playerOnline = true; + } + } + + @Override + public void update() { + this.owner.getEnderChest().update(); + } + + @Override + public List getContents() { + return this.items; + } + + @Override + public void onOpen(CraftHumanEntity who) { + this.owner.getEnderChest().onOpen(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + this.owner.getEnderChest().onClose(who); + } + + @Override + public List getViewers() { + return this.owner.getEnderChest().getViewers(); + } + + @Override + public void setMaxStackSize(int i) { + this.owner.getEnderChest().setMaxStackSize(i); + } + + @Override + public InventoryHolder getOwner() { + return this.owner.getEnderChest().getOwner(); + } + + @Override + public Location getLocation() { + return null; + } + + @Override + public void a(IInventoryListener iinventorylistener) { + this.owner.getEnderChest().a(iinventorylistener); + } + + @Override + public void b(IInventoryListener iinventorylistener) { + this.owner.getEnderChest().b(iinventorylistener); + } + + @Override + public ItemStack getItem(int i) { + return i >= 0 && i < this.items.size() ? this.items.get(i) : ItemStack.a; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack itemstack = ContainerUtil.a(this.items, i, j); + if (!itemstack.isEmpty()) { + this.update(); + } + + return itemstack; + } + + @Override + public ItemStack a(ItemStack itemstack) { + ItemStack itemstack1 = itemstack.cloneItemStack(); + + for (int i = 0; i < this.getSize(); ++i) { + ItemStack itemstack2 = this.getItem(i); + if (itemstack2.isEmpty()) { + this.setItem(i, itemstack1); + this.update(); + return ItemStack.a; + } + + if (ItemStack.c(itemstack2, itemstack1)) { + int j = Math.min(this.getMaxStackSize(), itemstack2.getMaxStackSize()); + int k = Math.min(itemstack1.getCount(), j - itemstack2.getCount()); + if (k > 0) { + itemstack2.add(k); + itemstack1.subtract(k); + if (itemstack1.isEmpty()) { + this.update(); + return ItemStack.a; + } + } + } + } + + if (itemstack1.getCount() != itemstack.getCount()) { + this.update(); + } + + return itemstack1; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack itemstack = this.items.get(i); + if (itemstack.isEmpty()) { + return ItemStack.a; + } else { + this.items.set(i, ItemStack.a); + return itemstack; + } + } + + @Override + public void setItem(int i, ItemStack itemstack) { + this.items.set(i, itemstack); + if (!itemstack.isEmpty() && itemstack.getCount() > this.getMaxStackSize()) { + itemstack.setCount(this.getMaxStackSize()); + } + + this.update(); + } + + @Override + public int getSize() { + return this.owner.getEnderChest().getSize(); + } + + @Override + public boolean isNotEmpty() { + + for (ItemStack itemstack : this.items) { + if (!itemstack.isEmpty()) { + return false; + } + } + + return true; + } + + @Override + public int getMaxStackSize() { + return 64; + } + + @Override + public boolean a(EntityHuman entityhuman) { + return true; + } + + @Override + public void startOpen(EntityHuman entityhuman) { + } + + @Override + public void closeContainer(EntityHuman entityhuman) { + } + + @Override + public boolean b(int i, ItemStack itemstack) { + return true; + } + + @Override + public void clear() { + this.items.clear(); + } + + @Override + public void a(AutoRecipeStackManager autorecipestackmanager) { + + for (ItemStack itemstack : this.items) { + autorecipestackmanager.b(itemstack); + } + + } + +} diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java new file mode 100644 index 0000000..76db509 --- /dev/null +++ b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java @@ -0,0 +1,770 @@ +/* + * Copyright (C) 2011-2019 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_14_R1; + +import com.google.common.collect.ImmutableList; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import java.util.Iterator; +import java.util.List; +import java.util.function.Predicate; +import java.util.stream.Collectors; +import javax.annotation.Nullable; +import net.minecraft.server.v1_14_R1.AutoRecipeStackManager; +import net.minecraft.server.v1_14_R1.ChatMessage; +import net.minecraft.server.v1_14_R1.ContainerUtil; +import net.minecraft.server.v1_14_R1.CrashReport; +import net.minecraft.server.v1_14_R1.CrashReportSystemDetails; +import net.minecraft.server.v1_14_R1.EntityHuman; +import net.minecraft.server.v1_14_R1.EntityPlayer; +import net.minecraft.server.v1_14_R1.EnumItemSlot; +import net.minecraft.server.v1_14_R1.IBlockData; +import net.minecraft.server.v1_14_R1.IChatBaseComponent; +import net.minecraft.server.v1_14_R1.Item; +import net.minecraft.server.v1_14_R1.ItemArmor; +import net.minecraft.server.v1_14_R1.ItemStack; +import net.minecraft.server.v1_14_R1.NBTTagCompound; +import net.minecraft.server.v1_14_R1.NBTTagList; +import net.minecraft.server.v1_14_R1.NonNullList; +import net.minecraft.server.v1_14_R1.PacketPlayOutSetSlot; +import net.minecraft.server.v1_14_R1.PlayerInventory; +import net.minecraft.server.v1_14_R1.ReportedException; +import net.minecraft.server.v1_14_R1.World; +import org.bukkit.Location; +import org.bukkit.craftbukkit.v1_14_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final CraftInventory inventory = new CraftInventory(this); + private boolean playerOnline; + private EntityHuman player; + private NonNullList items, armor, extraSlots; + private final List> f; + + public SpecialPlayerInventory(final Player bukkitPlayer, final Boolean online) { + super(PlayerDataManager.getHandle(bukkitPlayer)); + this.playerOnline = online; + this.items = this.player.inventory.items; + this.armor = this.player.inventory.armor; + this.extraSlots = this.player.inventory.extraSlots; + this.f = ImmutableList.of(this.items, this.armor, this.extraSlots); + } + + @Override + public void setPlayerOnline(@org.jetbrains.annotations.NotNull final Player player) { + if (!this.playerOnline) { + EntityPlayer entityPlayer = PlayerDataManager.getHandle(player); + entityPlayer.inventory.transaction.addAll(this.transaction); + this.player = entityPlayer; + this.player.inventory.a(this); + this.items = this.player.inventory.items; + this.armor = this.player.inventory.armor; + this.extraSlots = this.player.inventory.extraSlots; + this.playerOnline = true; + } + } + + @Override + public boolean a(final EntityHuman entityhuman) { + return true; + } + + @NotNull + @Override + public InventoryView getBukkitView(final Player viewer) { + return new InventoryView() { + @NotNull + @Override + public Inventory getTopInventory() { + return inventory; + } + @NotNull + @Override + public Inventory getBottomInventory() { + return viewer == null ? player.getBukkitEntity().getInventory() : viewer.getInventory(); + } + @NotNull + @Override + public HumanEntity getPlayer() { + return viewer == null ? player.getBukkitEntity() : viewer; + } + @NotNull + @Override + public InventoryType getType() { + return InventoryType.PLAYER; + } + @NotNull + @Override + public String getTitle() { + return (player.getName() != null ? player.getName() : player.getUniqueID().toString()) + "'s Inventory"; + } + }; + } + + @Override + public ItemStack getItem(int i) { + List list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + return list.get(i); + } + + @Override + public IChatBaseComponent getDisplayName() { + return new ChatMessage(this.player.getName()); + } + + @Override + public boolean hasCustomName() { + return false; + } + + private int getReversedArmorSlotNum(final int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + private int getReversedItemSlotNum(final int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + @Override + public int getSize() { + return super.getSize() + 4; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public void setItem(int i, final ItemStack itemstack) { + List list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + this.player.drop(itemstack, true); + return; + } + + list.set(i, itemstack); + } + + @Override + public void setPlayerOffline() { + this.playerOnline = false; + } + + @Override + public ItemStack splitStack(int i, final int j) { + List list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + return list.get(i).isEmpty() ? ItemStack.a : ContainerUtil.a(list, i, j); + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + List list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + if (!list.get(i).isEmpty()) { + ItemStack itemstack = list.get(i); + + list.set(i, ItemStack.a); + return itemstack; + } + + return ItemStack.a; + } + + @Override + public List getContents() { + return this.f.stream().flatMap(List::stream).collect(Collectors.toList()); + } + + @Override + public List getArmorContents() { + return this.armor; + } + + @Override + public void onOpen(CraftHumanEntity who) { + this.transaction.add(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + this.transaction.remove(who); + } + + @Override + public List getViewers() { + return this.transaction; + } + + @Override + public InventoryHolder getOwner() { + return this.player.getBukkitEntity(); + } + + @Override + public Location getLocation() { + return this.player.getBukkitEntity().getLocation(); + } + + @Override + public ItemStack getItemInHand() { + return d(this.itemInHandIndex) ? this.items.get(this.itemInHandIndex) : ItemStack.a; + } + + private boolean a(ItemStack itemstack, ItemStack itemstack1) { + return !itemstack.isEmpty() && this.b(itemstack, itemstack1) && itemstack.isStackable() && itemstack.getCount() < itemstack.getMaxStackSize() && itemstack.getCount() < this.getMaxStackSize(); + } + + private boolean b(ItemStack itemstack, ItemStack itemstack1) { + return itemstack.getItem() == itemstack1.getItem() && ItemStack.equals(itemstack, itemstack1); + } + + @Override + public int canHold(ItemStack itemstack) { + int remains = itemstack.getCount(); + + for (int i = 0; i < this.items.size(); ++i) { + ItemStack itemstack1 = this.getItem(i); + if (itemstack1.isEmpty()) { + return itemstack.getCount(); + } + + if (!this.a(itemstack, itemstack1)) { + remains -= (itemstack1.getMaxStackSize() < this.getMaxStackSize() ? itemstack1.getMaxStackSize() : this.getMaxStackSize()) - itemstack1.getCount(); + } + + if (remains <= 0) { + return itemstack.getCount(); + } + } + + return itemstack.getCount() - remains; + } + + @Override + public int getFirstEmptySlotIndex() { + for (int i = 0; i < this.items.size(); ++i) { + if (this.items.get(i).isEmpty()) { + return i; + } + } + + return -1; + } + + @Override + public void c(int i) { + this.itemInHandIndex = this.i(); + ItemStack itemstack = this.items.get(this.itemInHandIndex); + this.items.set(this.itemInHandIndex, this.items.get(i)); + this.items.set(i, itemstack); + } + + @Override + public int c(ItemStack itemstack) { + for (int i = 0; i < this.items.size(); ++i) { + ItemStack itemstack1 = this.items.get(i); + if (!this.items.get(i).isEmpty() && this.b(itemstack, this.items.get(i)) && !this.items.get(i).f() && !itemstack1.hasEnchantments() && !itemstack1.hasName()) { + return i; + } + } + + return -1; + } + + @Override + public int i() { + int i; + int j; + for (j = 0; j < 9; ++j) { + i = (this.itemInHandIndex + j) % 9; + if (this.items.get(i).isEmpty()) { + return i; + } + } + + for (j = 0; j < 9; ++j) { + i = (this.itemInHandIndex + j) % 9; + if (!this.items.get(i).hasEnchantments()) { + return i; + } + } + + return this.itemInHandIndex; + } + + @Override + public int a(Predicate predicate, int i) { + int j = 0; + + int k; + for (k = 0; k < this.getSize(); ++k) { + ItemStack itemstack = this.getItem(k); + if (!itemstack.isEmpty() && predicate.test(itemstack)) { + int l = i <= 0 ? itemstack.getCount() : Math.min(i - j, itemstack.getCount()); + j += l; + if (i != 0) { + itemstack.subtract(l); + if (itemstack.isEmpty()) { + this.setItem(k, ItemStack.a); + } + + if (i > 0 && j >= i) { + return j; + } + } + } + } + + if (!this.getCarried().isEmpty() && predicate.test(this.getCarried())) { + k = i <= 0 ? this.getCarried().getCount() : Math.min(i - j, this.getCarried().getCount()); + j += k; + if (i != 0) { + this.getCarried().subtract(k); + if (this.getCarried().isEmpty()) { + this.setCarried(ItemStack.a); + } + + if (i > 0 && j >= i) { + return j; + } + } + } + + return j; + } + + private int i(ItemStack itemstack) { + int i = this.firstPartial(itemstack); + if (i == -1) { + i = this.getFirstEmptySlotIndex(); + } + + return i == -1 ? itemstack.getCount() : this.d(i, itemstack); + } + + private int d(int i, ItemStack itemstack) { + Item item = itemstack.getItem(); + int j = itemstack.getCount(); + ItemStack itemstack1 = this.getItem(i); + if (itemstack1.isEmpty()) { + itemstack1 = new ItemStack(item, 0); + if (itemstack.hasTag()) { + itemstack1.setTag(itemstack.getTag().clone()); + } + + this.setItem(i, itemstack1); + } + + int k = j; + if (j > itemstack1.getMaxStackSize() - itemstack1.getCount()) { + k = itemstack1.getMaxStackSize() - itemstack1.getCount(); + } + + if (k > this.getMaxStackSize() - itemstack1.getCount()) { + k = this.getMaxStackSize() - itemstack1.getCount(); + } + + if (k == 0) { + return j; + } else { + j -= k; + itemstack1.add(k); + itemstack1.d(5); + return j; + } + } + + @Override + public int firstPartial(ItemStack itemstack) { + if (this.a(this.getItem(this.itemInHandIndex), itemstack)) { + return this.itemInHandIndex; + } else if (this.a(this.getItem(40), itemstack)) { + return 40; + } else { + for (int i = 0; i < this.items.size(); ++i) { + if (this.a(this.items.get(i), itemstack)) { + return i; + } + } + + return -1; + } + } + + @Override + public void j() { + + for (List itemStacks : this.f) { + for (int i = 0; i < itemStacks.size(); ++i) { + if (!itemStacks.get(i).isEmpty()) { + itemStacks.get(i).a(this.player.world, this.player, i, this.itemInHandIndex == i); + } + } + } + + } + + @Override + public boolean pickup(ItemStack itemstack) { + return this.c(-1, itemstack); + } + + @Override + public boolean c(int i, ItemStack itemstack) { + if (itemstack.isEmpty()) { + return false; + } else { + try { + if (itemstack.f()) { + if (i == -1) { + i = this.getFirstEmptySlotIndex(); + } + + if (i >= 0) { + this.items.set(i, itemstack.cloneItemStack()); + this.items.get(i).d(5); + itemstack.setCount(0); + return true; + } else if (this.player.abilities.canInstantlyBuild) { + itemstack.setCount(0); + return true; + } else { + return false; + } + } else { + int j; + do { + j = itemstack.getCount(); + if (i == -1) { + itemstack.setCount(this.i(itemstack)); + } else { + itemstack.setCount(this.d(i, itemstack)); + } + } while(!itemstack.isEmpty() && itemstack.getCount() < j); + + if (itemstack.getCount() == j && this.player.abilities.canInstantlyBuild) { + itemstack.setCount(0); + return true; + } else { + return itemstack.getCount() < j; + } + } + } catch (Throwable var6) { + CrashReport crashreport = CrashReport.a(var6, "Adding item to inventory"); + CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Item being added"); + crashreportsystemdetails.a("Item ID", Item.getId(itemstack.getItem())); + crashreportsystemdetails.a("Item data", itemstack.getDamage()); + crashreportsystemdetails.a("Item name", () -> itemstack.getName().getString()); + throw new ReportedException(crashreport); + } + } + } + + @Override + public void a(World world, ItemStack itemstack) { + if (!world.isClientSide) { + while(!itemstack.isEmpty()) { + int i = this.firstPartial(itemstack); + if (i == -1) { + i = this.getFirstEmptySlotIndex(); + } + + if (i == -1) { + this.player.drop(itemstack, false); + break; + } + + int j = itemstack.getMaxStackSize() - this.getItem(i).getCount(); + if (this.c(i, itemstack.cloneAndSubtract(j))) { + ((EntityPlayer)this.player).playerConnection.sendPacket(new PacketPlayOutSetSlot(-2, i, this.getItem(i))); + } + } + } + + } + + @Override + public void f(ItemStack itemstack) { + + for (List list : this.f) { + for (int i = 0; i < list.size(); ++i) { + if (list.get(i) == itemstack) { + list.set(i, ItemStack.a); + break; + } + } + } + } + + @Override + public float a(IBlockData iblockdata) { + return this.items.get(this.itemInHandIndex).a(iblockdata); + } + + @Override + public NBTTagList a(NBTTagList nbttaglist) { + NBTTagCompound nbttagcompound; + int i; + for (i = 0; i < this.items.size(); ++i) { + if (!this.items.get(i).isEmpty()) { + nbttagcompound = new NBTTagCompound(); + nbttagcompound.setByte("Slot", (byte) i); + this.items.get(i).save(nbttagcompound); + nbttaglist.add(nbttagcompound); + } + } + + for (i = 0; i < this.armor.size(); ++i) { + if (!this.armor.get(i).isEmpty()) { + nbttagcompound = new NBTTagCompound(); + nbttagcompound.setByte("Slot", (byte) (i + 100)); + this.armor.get(i).save(nbttagcompound); + nbttaglist.add(nbttagcompound); + } + } + + for (i = 0; i < this.extraSlots.size(); ++i) { + if (!this.extraSlots.get(i).isEmpty()) { + nbttagcompound = new NBTTagCompound(); + nbttagcompound.setByte("Slot", (byte) (i + 150)); + this.extraSlots.get(i).save(nbttagcompound); + nbttaglist.add(nbttagcompound); + } + } + + return nbttaglist; + } + + @Override + public void b(NBTTagList nbttaglist) { + this.items.clear(); + this.armor.clear(); + this.extraSlots.clear(); + + for(int i = 0; i < nbttaglist.size(); ++i) { + NBTTagCompound nbttagcompound = nbttaglist.getCompound(i); + int j = nbttagcompound.getByte("Slot") & 255; + ItemStack itemstack = ItemStack.a(nbttagcompound); + if (!itemstack.isEmpty()) { + if (j < this.items.size()) { + this.items.set(j, itemstack); + } else if (j >= 100 && j < this.armor.size() + 100) { + this.armor.set(j - 100, itemstack); + } else if (j >= 150 && j < this.extraSlots.size() + 150) { + this.extraSlots.set(j - 150, itemstack); + } + } + } + + } + + @Override + public boolean isNotEmpty() { + Iterator iterator = this.items.iterator(); + + ItemStack itemstack; + while (iterator.hasNext()) { + itemstack = (ItemStack)iterator.next(); + if (!itemstack.isEmpty()) { + return false; + } + } + + iterator = this.armor.iterator(); + + while (iterator.hasNext()) { + itemstack = (ItemStack)iterator.next(); + if (!itemstack.isEmpty()) { + return false; + } + } + + iterator = this.extraSlots.iterator(); + + while (iterator.hasNext()) { + itemstack = (ItemStack)iterator.next(); + if (!itemstack.isEmpty()) { + return false; + } + } + + return true; + } + + @Nullable + @Override + public IChatBaseComponent getCustomName() { + return null; + } + + @Override + public boolean b(IBlockData iblockdata) { + return this.getItem(this.itemInHandIndex).b(iblockdata); + } + + @Override + public void a(float f) { + if (f > 0.0F) { + f /= 4.0F; + if (f < 1.0F) { + f = 1.0F; + } + + for (int i = 0; i < this.armor.size(); ++i) { + ItemStack itemstack = this.armor.get(0); + int index = i; + if (itemstack.getItem() instanceof ItemArmor) { + itemstack.damage((int) f, this.player, (entityhuman) -> entityhuman.c(EnumItemSlot.a(EnumItemSlot.Function.ARMOR, index))); + } + } + } + } + + @Override + public void dropContents() { + for (List itemStacks : this.f) { + for (int i = 0; i < itemStacks.size(); ++i) { + ItemStack itemstack = itemStacks.get(i); + if (!itemstack.isEmpty()) { + itemStacks.set(i, ItemStack.a); + this.player.a(itemstack, true, false); + } + } + } + } + + @Override + public boolean h(ItemStack itemstack) { + return this.f.stream().flatMap(List::stream).anyMatch(itemStack1 -> !itemStack1.isEmpty() && itemStack1.doMaterialsMatch(itemstack)); + } + + @Override + public void a(PlayerInventory playerinventory) { + for (int i = 0; i < playerinventory.getSize(); ++i) { + this.setItem(i, playerinventory.getItem(i)); + } + + this.itemInHandIndex = playerinventory.itemInHandIndex; + } + + @Override + public void clear() { + this.f.forEach(List::clear); + } + + @Override + public void a(AutoRecipeStackManager autorecipestackmanager) { + for (ItemStack itemstack : this.items) { + autorecipestackmanager.a(itemstack); + } + } + +} -- 2.49.1 From 185f0372549effd4b1389bab252808a87f24a20a Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 5 May 2019 12:40:47 -0400 Subject: [PATCH 149/253] Revert API changes, fix SpecialPlayerInventory implementation --- .../openinv/internal/ISpecialEnderChest.java | 10 ++-- .../internal/ISpecialPlayerInventory.java | 10 ++-- .../internal/v1_4_5/SpecialEnderChest.java | 24 +--------- .../v1_4_5/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_4_6/SpecialEnderChest.java | 24 +--------- .../v1_4_6/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_10_R1/SpecialEnderChest.java | 25 +--------- .../v1_10_R1/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_11_R1/SpecialEnderChest.java | 25 +--------- .../v1_11_R1/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_12_R1/SpecialEnderChest.java | 25 +--------- .../v1_12_R1/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_13_R1/SpecialEnderChest.java | 25 +--------- .../v1_13_R1/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_13_R2/SpecialEnderChest.java | 33 ++----------- .../v1_13_R2/SpecialPlayerInventory.java | 28 +---------- .../internal/v1_14_R1/SpecialEnderChest.java | 33 +------------ .../v1_14_R1/SpecialPlayerInventory.java | 48 ++++++------------- .../internal/v1_4_R1/SpecialEnderChest.java | 24 +--------- .../v1_4_R1/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_5_R2/SpecialEnderChest.java | 24 +--------- .../v1_5_R2/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_5_R3/SpecialEnderChest.java | 24 +--------- .../v1_5_R3/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_6_R1/SpecialEnderChest.java | 24 +--------- .../v1_6_R1/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_6_R2/SpecialEnderChest.java | 24 +--------- .../v1_6_R2/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_6_R3/SpecialEnderChest.java | 24 +--------- .../v1_6_R3/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_7_R1/SpecialEnderChest.java | 24 +--------- .../v1_7_R1/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_7_R2/SpecialEnderChest.java | 24 +--------- .../v1_7_R2/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_7_R3/SpecialEnderChest.java | 24 +--------- .../v1_7_R3/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_7_R4/SpecialEnderChest.java | 24 +--------- .../v1_7_R4/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_8_R1/SpecialEnderChest.java | 25 +--------- .../v1_8_R1/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_8_R2/SpecialEnderChest.java | 25 +--------- .../v1_8_R2/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_8_R3/SpecialEnderChest.java | 25 +--------- .../v1_8_R3/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_9_R1/SpecialEnderChest.java | 25 +--------- .../v1_9_R1/SpecialPlayerInventory.java | 25 +--------- .../internal/v1_9_R2/SpecialEnderChest.java | 25 +--------- .../v1_9_R2/SpecialPlayerInventory.java | 25 +--------- .../main/java/com/lishid/openinv/OpenInv.java | 8 ++-- .../commands/OpenEnderPluginCommand.java | 2 +- .../commands/OpenInvPluginCommand.java | 2 +- 51 files changed, 121 insertions(+), 1091 deletions(-) diff --git a/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java b/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java index f076d20..5cc04ef 100644 --- a/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java +++ b/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java @@ -17,20 +17,18 @@ package com.lishid.openinv.internal; import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; +import org.bukkit.inventory.Inventory; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public interface ISpecialEnderChest { /** - * Gets the InventoryView associated with this ISpecialEnderChest. + * Gets the Inventory associated with this ISpecialEnderChest. * - * @param viewer the Player opening the ISpecialEnderChest - * @return the InventoryView + * @return the Inventory */ @NotNull - InventoryView getBukkitView(@Nullable Player viewer); + Inventory getBukkitInventory(); /** * Sets the Player associated with this ISpecialEnderChest online. diff --git a/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java b/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java index 87708b6..5420962 100644 --- a/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java +++ b/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java @@ -17,20 +17,18 @@ package com.lishid.openinv.internal; import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; +import org.bukkit.inventory.Inventory; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public interface ISpecialPlayerInventory { /** - * Gets the InventoryView associated with this ISpecialPlayerInventory. + * Gets the Inventory associated with this ISpecialPlayerInventory. * - * @param viewer the Player opening the ISpecialPlayerInventory - * @return the InventoryView + * @return the Inventory */ @NotNull - InventoryView getBukkitView(@Nullable Player viewer); + Inventory getBukkitInventory(); /** * Sets the Player associated with this ISpecialPlayerInventory online. diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java index d31e94b..51a0932 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java @@ -30,10 +30,8 @@ import org.bukkit.craftbukkit.v1_4_5.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_4_5.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -55,27 +53,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java index dc3d4e1..7480774 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java @@ -20,11 +20,8 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import net.minecraft.server.v1_4_5.ItemStack; import net.minecraft.server.v1_4_5.PlayerInventory; import org.bukkit.craftbukkit.v1_4_5.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -40,27 +37,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java index 2e2e8ae..817b4dd 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java @@ -30,10 +30,8 @@ import org.bukkit.craftbukkit.v1_4_6.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_4_6.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -55,27 +53,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java index 2e0c822..c85fd7a 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java @@ -20,11 +20,8 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import net.minecraft.server.v1_4_6.ItemStack; import net.minecraft.server.v1_4_6.PlayerInventory; import org.bukkit.craftbukkit.v1_4_6.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -40,27 +37,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java index 3d8a4f7..405c486 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java @@ -25,11 +25,8 @@ import net.minecraft.server.v1_10_R1.InventoryEnderChest; import net.minecraft.server.v1_10_R1.InventorySubcontainer; import net.minecraft.server.v1_10_R1.ItemStack; import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -69,27 +66,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java index 8b4c5e7..33f82e4 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java @@ -23,11 +23,8 @@ import net.minecraft.server.v1_10_R1.EntityHuman; import net.minecraft.server.v1_10_R1.ItemStack; import net.minecraft.server.v1_10_R1.PlayerInventory; import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -79,27 +76,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java index 5619dbf..cff4665 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java @@ -26,11 +26,8 @@ import net.minecraft.server.v1_11_R1.InventoryEnderChest; import net.minecraft.server.v1_11_R1.InventorySubcontainer; import net.minecraft.server.v1_11_R1.ItemStack; import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -70,27 +67,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java index 42baa12..e7ab28f 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java @@ -26,11 +26,8 @@ import net.minecraft.server.v1_11_R1.ItemStack; import net.minecraft.server.v1_11_R1.NonNullList; import net.minecraft.server.v1_11_R1.PlayerInventory; import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -81,27 +78,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java index ca7b565..4ca22e7 100644 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java @@ -26,11 +26,8 @@ import net.minecraft.server.v1_12_R1.InventoryEnderChest; import net.minecraft.server.v1_12_R1.InventorySubcontainer; import net.minecraft.server.v1_12_R1.ItemStack; import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer @@ -51,27 +48,9 @@ public class SpecialEnderChest extends InventorySubcontainer this.setItemLists(this, this.enderChest.getContents()); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java index 13f5ee1..328e2a8 100644 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java @@ -26,11 +26,8 @@ import net.minecraft.server.v1_12_R1.ItemStack; import net.minecraft.server.v1_12_R1.NonNullList; import net.minecraft.server.v1_12_R1.PlayerInventory; import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -50,27 +47,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return true; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialEnderChest.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialEnderChest.java index 28d1569..8697405 100644 --- a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialEnderChest.java +++ b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialEnderChest.java @@ -26,11 +26,8 @@ import net.minecraft.server.v1_13_R1.InventoryEnderChest; import net.minecraft.server.v1_13_R1.InventorySubcontainer; import net.minecraft.server.v1_13_R1.ItemStack; import org.bukkit.craftbukkit.v1_13_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer @@ -48,27 +45,9 @@ public class SpecialEnderChest extends InventorySubcontainer this.setItemLists(this, this.enderChest.getContents()); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialPlayerInventory.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialPlayerInventory.java index bcdf026..daf5773 100644 --- a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialPlayerInventory.java +++ b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialPlayerInventory.java @@ -28,11 +28,8 @@ import net.minecraft.server.v1_13_R1.ItemStack; import net.minecraft.server.v1_13_R1.NonNullList; import net.minecraft.server.v1_13_R1.PlayerInventory; import org.bukkit.craftbukkit.v1_13_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -52,27 +49,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return true; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java index 44969fb..21c6f67 100644 --- a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java +++ b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java @@ -35,52 +35,29 @@ import org.bukkit.craftbukkit.v1_13_R2.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest implements IInventory, ISpecialEnderChest, AutoRecipeOutput { private EntityPlayer owner; private final IChatBaseComponent displayName; + private final CraftInventory inventory; private NonNullList items; - private final CraftInventory inventory = new CraftInventory(this); private boolean playerOnline; public SpecialEnderChest(final Player player, final Boolean online) { this.owner = PlayerDataManager.getHandle(player); this.displayName = this.owner.getEnderChest().getDisplayName(); - this.playerOnline = online; + this.inventory = new CraftInventory(this); this.items = this.owner.getEnderChest().items; + this.playerOnline = online; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @NotNull - @Override - public Inventory getTopInventory() { - return inventory; - } - @NotNull - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @NotNull - @Override - public HumanEntity getPlayer() { - return viewer; - } - @NotNull - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return this.inventory; } @Override diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java index cb904ff..26e013a 100644 --- a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java +++ b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java @@ -47,10 +47,8 @@ import org.bukkit.craftbukkit.v1_13_R2.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -88,31 +86,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return true; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @NotNull - @Override - public Inventory getTopInventory() { - return inventory; - } - @NotNull - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @NotNull - @Override - public HumanEntity getPlayer() { - return viewer; - } - @NotNull - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialEnderChest.java b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialEnderChest.java index 2304e8a..ea18d13 100644 --- a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialEnderChest.java +++ b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialEnderChest.java @@ -31,10 +31,8 @@ import org.bukkit.craftbukkit.v1_14_R1.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEnderChest { @@ -52,36 +50,9 @@ public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEn this.items = this.owner.getEnderChest().items; } - @NotNull @Override - public InventoryView getBukkitView(Player viewer) { - return new InventoryView() { - @NotNull - @Override - public Inventory getTopInventory() { - return inventory; - } - @NotNull - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @NotNull - @Override - public HumanEntity getPlayer() { - return viewer; - } - @NotNull - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - @NotNull - @Override - public String getTitle() { - return viewer != null && viewer.equals(owner.getBukkitEntity()) ? InventoryType.ENDER_CHEST.getDefaultTitle() : owner.getName() + "'s Ender Chest"; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java index 76db509..df9f668 100644 --- a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java +++ b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java @@ -22,7 +22,6 @@ import java.util.Iterator; import java.util.List; import java.util.function.Predicate; import java.util.stream.Collectors; -import javax.annotation.Nullable; import net.minecraft.server.v1_14_R1.AutoRecipeStackManager; import net.minecraft.server.v1_14_R1.ChatMessage; import net.minecraft.server.v1_14_R1.ContainerUtil; @@ -51,12 +50,12 @@ import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - private final CraftInventory inventory = new CraftInventory(this); + private final CraftInventory inventory; private boolean playerOnline; private EntityHuman player; private NonNullList items, armor, extraSlots; @@ -64,7 +63,15 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public SpecialPlayerInventory(final Player bukkitPlayer, final Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); + this.inventory = new CraftInventory(this) { + @NotNull + @Override + public InventoryType getType() { + return InventoryType.CHEST; + } + }; this.playerOnline = online; + this.player = super.player; this.items = this.player.inventory.items; this.armor = this.player.inventory.armor; this.extraSlots = this.player.inventory.extraSlots; @@ -72,7 +79,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public void setPlayerOnline(@org.jetbrains.annotations.NotNull final Player player) { + public void setPlayerOnline(@NotNull final Player player) { if (!this.playerOnline) { EntityPlayer entityPlayer = PlayerDataManager.getHandle(player); entityPlayer.inventory.transaction.addAll(this.transaction); @@ -90,36 +97,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return true; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @NotNull - @Override - public Inventory getTopInventory() { - return inventory; - } - @NotNull - @Override - public Inventory getBottomInventory() { - return viewer == null ? player.getBukkitEntity().getInventory() : viewer.getInventory(); - } - @NotNull - @Override - public HumanEntity getPlayer() { - return viewer == null ? player.getBukkitEntity() : viewer; - } - @NotNull - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - @NotNull - @Override - public String getTitle() { - return (player.getName() != null ? player.getName() : player.getUniqueID().toString()) + "'s Inventory"; - } - }; + public @NotNull Inventory getBukkitInventory() { + return this.inventory; } @Override @@ -182,7 +162,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public int getSize() { - return super.getSize() + 4; + return 45; } @Override diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java index d662411..c62069d 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java @@ -30,10 +30,8 @@ import org.bukkit.craftbukkit.v1_4_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_4_R1.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -55,27 +53,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java index 5bd5233..219edff 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java @@ -20,11 +20,8 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import net.minecraft.server.v1_4_R1.ItemStack; import net.minecraft.server.v1_4_R1.PlayerInventory; import org.bukkit.craftbukkit.v1_4_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -40,27 +37,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java index 7c835e6..611439b 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java @@ -30,10 +30,8 @@ import org.bukkit.craftbukkit.v1_5_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_5_R2.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -56,27 +54,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java index 20f82d6..45668b9 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java @@ -20,11 +20,8 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import net.minecraft.server.v1_5_R2.ItemStack; import net.minecraft.server.v1_5_R2.PlayerInventory; import org.bukkit.craftbukkit.v1_5_R2.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -40,27 +37,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java index bc524e4..98f326c 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java @@ -30,10 +30,8 @@ import org.bukkit.craftbukkit.v1_5_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_5_R3.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -56,27 +54,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java index 4f9703a..269066c 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java @@ -20,11 +20,8 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import net.minecraft.server.v1_5_R3.ItemStack; import net.minecraft.server.v1_5_R3.PlayerInventory; import org.bukkit.craftbukkit.v1_5_R3.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -40,27 +37,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java index 8935f95..d3e1a3e 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java @@ -30,10 +30,8 @@ import org.bukkit.craftbukkit.v1_6_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_6_R1.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -56,27 +54,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java index 851024c..9ddacd6 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java @@ -20,11 +20,8 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import net.minecraft.server.v1_6_R1.ItemStack; import net.minecraft.server.v1_6_R1.PlayerInventory; import org.bukkit.craftbukkit.v1_6_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -40,27 +37,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java index 4ab38bf..431b4e3 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java @@ -30,10 +30,8 @@ import org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_6_R2.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -56,27 +54,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java index 0c32d1c..bd52442 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java @@ -20,11 +20,8 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import net.minecraft.server.v1_6_R2.ItemStack; import net.minecraft.server.v1_6_R2.PlayerInventory; import org.bukkit.craftbukkit.v1_6_R2.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -40,27 +37,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java index ff6f0c4..c6770c5 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java @@ -30,10 +30,8 @@ import org.bukkit.craftbukkit.v1_6_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_6_R3.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -56,27 +54,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java index 1c4dfd0..176d3b0 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java @@ -20,11 +20,8 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import net.minecraft.server.v1_6_R3.ItemStack; import net.minecraft.server.v1_6_R3.PlayerInventory; import org.bukkit.craftbukkit.v1_6_R3.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -40,27 +37,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java index 2427c47..223cb91 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java @@ -30,10 +30,8 @@ import org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_7_R1.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -56,27 +54,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java index 4ab6947..9a5a742 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java @@ -20,11 +20,8 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import net.minecraft.server.v1_7_R1.ItemStack; import net.minecraft.server.v1_7_R1.PlayerInventory; import org.bukkit.craftbukkit.v1_7_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -40,27 +37,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java index 4807da1..f7ac8d5 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java @@ -30,10 +30,8 @@ import org.bukkit.craftbukkit.v1_7_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_7_R2.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -56,27 +54,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java index 4185d03..3cf7da7 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java @@ -20,11 +20,8 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import net.minecraft.server.v1_7_R2.ItemStack; import net.minecraft.server.v1_7_R2.PlayerInventory; import org.bukkit.craftbukkit.v1_7_R2.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -40,27 +37,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java index 90041f3..65aa764 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java @@ -30,10 +30,8 @@ import org.bukkit.craftbukkit.v1_7_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_7_R3.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -56,27 +54,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java index 23e7a7d..87870f8 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java @@ -20,11 +20,8 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import net.minecraft.server.v1_7_R3.ItemStack; import net.minecraft.server.v1_7_R3.PlayerInventory; import org.bukkit.craftbukkit.v1_7_R3.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -40,27 +37,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java index 9fde84f..1217552 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java @@ -30,10 +30,8 @@ import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -56,27 +54,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java index 62612e5..51e9196 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java @@ -20,11 +20,8 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import net.minecraft.server.v1_7_R4.ItemStack; import net.minecraft.server.v1_7_R4.PlayerInventory; import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -40,27 +37,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java index 9159ccf..e6fd896 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java @@ -23,11 +23,8 @@ import net.minecraft.server.v1_8_R1.IInventory; import net.minecraft.server.v1_8_R1.InventoryEnderChest; import net.minecraft.server.v1_8_R1.InventorySubcontainer; import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -47,27 +44,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java index 5a98553..f5b8693 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java @@ -20,11 +20,8 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import net.minecraft.server.v1_8_R1.ItemStack; import net.minecraft.server.v1_8_R1.PlayerInventory; import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -40,27 +37,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java index 9fc0fdf..e9662e3 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java @@ -23,11 +23,8 @@ import net.minecraft.server.v1_8_R2.IInventory; import net.minecraft.server.v1_8_R2.InventoryEnderChest; import net.minecraft.server.v1_8_R2.InventorySubcontainer; import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -47,27 +44,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java index 16dd136..1d7e4d2 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java @@ -20,11 +20,8 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import net.minecraft.server.v1_8_R2.ItemStack; import net.minecraft.server.v1_8_R2.PlayerInventory; import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -40,27 +37,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java index 159af2a..ebdf966 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java @@ -23,11 +23,8 @@ import net.minecraft.server.v1_8_R3.IInventory; import net.minecraft.server.v1_8_R3.InventoryEnderChest; import net.minecraft.server.v1_8_R3.InventorySubcontainer; import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -47,27 +44,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java index 960779f..6aa47fc 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java @@ -20,11 +20,8 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory; import net.minecraft.server.v1_8_R3.ItemStack; import net.minecraft.server.v1_8_R3.PlayerInventory; import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -40,27 +37,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.armor = player.inventory.armor; } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java index d1b10ef..958f7c4 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java @@ -23,11 +23,8 @@ import net.minecraft.server.v1_9_R1.IInventory; import net.minecraft.server.v1_9_R1.InventoryEnderChest; import net.minecraft.server.v1_9_R1.InventorySubcontainer; import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -47,27 +44,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java index 9dfc2b9..2d4b3a9 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java @@ -22,11 +22,8 @@ import java.lang.reflect.Modifier; import net.minecraft.server.v1_9_R1.ItemStack; import net.minecraft.server.v1_9_R1.PlayerInventory; import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -78,27 +75,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java index cf21a3e..d01ea4a 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java @@ -23,11 +23,8 @@ import net.minecraft.server.v1_9_R2.IInventory; import net.minecraft.server.v1_9_R2.InventoryEnderChest; import net.minecraft.server.v1_9_R2.InventorySubcontainer; import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { @@ -47,27 +44,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento this.items = enderChest.getContents(); } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.ENDER_CHEST; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java index 22a000c..d520df7 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java @@ -22,11 +22,8 @@ import java.lang.reflect.Modifier; import net.minecraft.server.v1_9_R2.ItemStack; import net.minecraft.server.v1_9_R2.PlayerInventory; import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { @@ -78,27 +75,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } } - @NotNull @Override - public InventoryView getBukkitView(final Player viewer) { - return new InventoryView() { - @Override - public Inventory getTopInventory() { - return inventory; - } - @Override - public Inventory getBottomInventory() { - return viewer.getInventory(); - } - @Override - public HumanEntity getPlayer() { - return viewer; - } - @Override - public InventoryType getType() { - return InventoryType.PLAYER; - } - }; + public @NotNull Inventory getBukkitInventory() { + return inventory; } @Override diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java index 415294c..29355d3 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java @@ -91,7 +91,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { // Check if inventory is stored, and if it is, remove it and eject all viewers if (OpenInv.this.inventories.containsKey(key)) { - Inventory inv = OpenInv.this.inventories.remove(key).getBukkitView(null).getTopInventory(); + Inventory inv = OpenInv.this.inventories.remove(key).getBukkitInventory(); List viewers = inv.getViewers(); for (HumanEntity entity : viewers.toArray(new HumanEntity[0])) { entity.closeInventory(); @@ -100,7 +100,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { // Check if ender chest is stored, and if it is, remove it and eject all viewers if (OpenInv.this.enderChests.containsKey(key)) { - Inventory inv = OpenInv.this.enderChests.remove(key).getBukkitView(null).getTopInventory(); + Inventory inv = OpenInv.this.enderChests.remove(key).getBukkitInventory(); List viewers = inv.getViewers(); for (HumanEntity entity : viewers.toArray(new HumanEntity[0])) { entity.closeInventory(); @@ -131,7 +131,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } if (this.inventories.containsKey(key)) { - Iterator iterator = this.inventories.get(key).getBukkitView(null).getTopInventory().getViewers().iterator(); + Iterator iterator = this.inventories.get(key).getBukkitInventory().getViewers().iterator(); while (iterator.hasNext()) { HumanEntity human = iterator.next(); // If player has permission or is in the same world, allow continued access @@ -145,7 +145,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } if (this.enderChests.containsKey(key)) { - Iterator iterator = this.enderChests.get(key).getBukkitView(null).getTopInventory().getViewers().iterator(); + Iterator iterator = this.enderChests.get(key).getBukkitInventory().getViewers().iterator(); while (iterator.hasNext()) { HumanEntity human = iterator.next(); if (Permissions.CROSSWORLD.hasPermission(human) || human.getWorld() == null diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java index 9bd1f41..fac7dec 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -142,7 +142,7 @@ public class OpenEnderPluginCommand implements CommandExecutor { } // Open the inventory - player.openInventory(chest.getBukkitView(player)); + player.openInventory(chest.getBukkitInventory()); } } diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java index 7a38846..798251a 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -151,7 +151,7 @@ public class OpenInvPluginCommand implements CommandExecutor { } // Open the inventory - player.openInventory(inv.getBukkitView(player)); + player.openInventory(inv.getBukkitInventory()); } } -- 2.49.1 From 0f266c8a640f528723dc881798eecce78ee9dff1 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 5 May 2019 15:15:17 -0400 Subject: [PATCH 150/253] Custom inventory titles for 1.14 --- .../java/com/lishid/openinv/IOpenInv.java | 32 +++---- .../openinv/internal/IInventoryAccess.java | 6 +- .../openinv/internal/ISpecialEnderChest.java | 33 +------- .../openinv/internal/ISpecialInventory.java | 51 ++++++++++++ .../internal/ISpecialPlayerInventory.java | 33 +------- .../openinv/internal/IPlayerDataManager.java | 23 +++-- .../internal/v1_4_5/PlayerDataManager.java | 17 ++-- .../internal/v1_4_6/PlayerDataManager.java | 17 ++-- .../internal/v1_10_R1/PlayerDataManager.java | 17 ++-- .../internal/v1_11_R1/PlayerDataManager.java | 17 ++-- .../internal/v1_12_R1/PlayerDataManager.java | 15 ++-- .../internal/v1_13_R1/PlayerDataManager.java | 17 ++-- .../internal/v1_13_R2/PlayerDataManager.java | 17 ++-- .../internal/v1_14_R1/PlayerDataManager.java | 83 ++++++++++++++++++- .../internal/v1_14_R1/SpecialEnderChest.java | 3 +- .../v1_14_R1/SpecialPlayerInventory.java | 12 +-- .../internal/v1_4_R1/PlayerDataManager.java | 17 ++-- .../internal/v1_5_R2/PlayerDataManager.java | 17 ++-- .../internal/v1_5_R3/PlayerDataManager.java | 17 ++-- .../internal/v1_6_R1/PlayerDataManager.java | 17 ++-- .../internal/v1_6_R2/PlayerDataManager.java | 17 ++-- .../internal/v1_6_R3/PlayerDataManager.java | 17 ++-- .../internal/v1_7_R1/PlayerDataManager.java | 17 ++-- .../internal/v1_7_R2/PlayerDataManager.java | 17 ++-- .../internal/v1_7_R3/PlayerDataManager.java | 17 ++-- .../internal/v1_7_R4/PlayerDataManager.java | 17 ++-- .../internal/v1_8_R1/PlayerDataManager.java | 17 ++-- .../internal/v1_8_R2/PlayerDataManager.java | 17 ++-- .../internal/v1_8_R3/PlayerDataManager.java | 17 ++-- .../internal/v1_9_R1/PlayerDataManager.java | 17 ++-- .../internal/v1_9_R2/PlayerDataManager.java | 17 ++-- .../main/java/com/lishid/openinv/OpenInv.java | 7 ++ .../commands/OpenEnderPluginCommand.java | 2 +- .../commands/OpenInvPluginCommand.java | 2 +- 34 files changed, 420 insertions(+), 239 deletions(-) create mode 100644 api/src/main/java/com/lishid/openinv/internal/ISpecialInventory.java diff --git a/api/src/main/java/com/lishid/openinv/IOpenInv.java b/api/src/main/java/com/lishid/openinv/IOpenInv.java index db8919b..d968b63 100644 --- a/api/src/main/java/com/lishid/openinv/IOpenInv.java +++ b/api/src/main/java/com/lishid/openinv/IOpenInv.java @@ -19,9 +19,11 @@ package com.lishid.openinv; import com.lishid.openinv.internal.IAnySilentContainer; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialInventory; import com.lishid.openinv.internal.ISpecialPlayerInventory; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.bukkit.plugin.Plugin; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -49,8 +51,7 @@ public interface IOpenInv { * @return the ISilentContainer * @throws IllegalStateException if the server version is unsupported */ - @NotNull - IAnySilentContainer getAnySilentContainer(); + @NotNull IAnySilentContainer getAnySilentContainer(); /** * Gets the active IInventoryAccess implementation. @@ -58,8 +59,7 @@ public interface IOpenInv { * @return the IInventoryAccess * @throws IllegalStateException if the server version is unsupported */ - @NotNull - IInventoryAccess getInventoryAccess(); + @NotNull IInventoryAccess getInventoryAccess(); /** * Gets the provided player's AnyChest setting. @@ -78,8 +78,7 @@ public interface IOpenInv { * @return the identifier * @throws IllegalStateException if the server version is unsupported */ - @NotNull - String getPlayerID(@NotNull OfflinePlayer offline); + @NotNull String getPlayerID(@NotNull OfflinePlayer offline); /** * Gets a player's SilentChest setting. @@ -99,8 +98,7 @@ public interface IOpenInv { * @throws IllegalStateException if the server version is unsupported * @throws InstantiationException if the ISpecialEnderChest could not be instantiated */ - @NotNull - ISpecialEnderChest getSpecialEnderChest(@NotNull Player player, boolean online) throws InstantiationException; + @NotNull ISpecialEnderChest getSpecialEnderChest(@NotNull Player player, boolean online) throws InstantiationException; /** * Gets an ISpecialPlayerInventory for the given Player. @@ -111,8 +109,7 @@ public interface IOpenInv { * @throws IllegalStateException if the server version is unsupported * @throws InstantiationException if the ISpecialPlayerInventory could not be instantiated */ - @NotNull - ISpecialPlayerInventory getSpecialInventory(@NotNull Player player, boolean online) throws InstantiationException; + @NotNull ISpecialPlayerInventory getSpecialInventory(@NotNull Player player, boolean online) throws InstantiationException; /** * Checks if the server version is supported by OpenInv. @@ -128,8 +125,7 @@ public interface IOpenInv { * @return the Player, or null * @throws IllegalStateException if the server version is unsupported */ - @Nullable - Player loadPlayer(@NotNull final OfflinePlayer offline); + @Nullable Player loadPlayer(@NotNull final OfflinePlayer offline); /** * Get an OfflinePlayer by name. @@ -141,8 +137,16 @@ public interface IOpenInv { * @param name the name of the Player * @return the OfflinePlayer with the closest matching name or null if no players have ever logged in */ - @Nullable - OfflinePlayer matchPlayer(@NotNull String name); + @Nullable OfflinePlayer matchPlayer(@NotNull String name); + + /** + * Open an ISpecialInventory for a Player. + * + * @param player the Player + * @param inventory the ISpecialInventory + * @return the InventoryView for the opened ISpecialInventory + */ + @Nullable InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory); /** * Check the configuration value for whether or not OpenInv displays a notification to the user diff --git a/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java b/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java index 648cce9..97f1160 100644 --- a/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java +++ b/api/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java @@ -29,8 +29,7 @@ public interface IInventoryAccess { * @param inventory the Inventory * @return the ISpecialEnderChest or null */ - @Nullable - ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory); + @Nullable ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory); /** * Gets an ISpecialPlayerInventory from an Inventory or null if the Inventory is not backed by @@ -39,8 +38,7 @@ public interface IInventoryAccess { * @param inventory the Inventory * @return the ISpecialPlayerInventory or null */ - @Nullable - ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory); + @Nullable ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory); /** * Check if an Inventory is an ISpecialEnderChest implementation. diff --git a/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java b/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java index 5cc04ef..03f1570 100644 --- a/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java +++ b/api/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java @@ -16,37 +16,6 @@ package com.lishid.openinv.internal; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public interface ISpecialEnderChest { - - /** - * Gets the Inventory associated with this ISpecialEnderChest. - * - * @return the Inventory - */ - @NotNull - Inventory getBukkitInventory(); - - /** - * Sets the Player associated with this ISpecialEnderChest online. - * - * @param player the Player coming online - */ - void setPlayerOnline(@NotNull Player player); - - /** - * Sets the Player associated with this ISpecialEnderChest offline. - */ - void setPlayerOffline(); - - /** - * Gets whether or not this ISpecialEnderChest is in use. - * - * @return true if the ISpecialEnderChest is in use - */ - boolean isInUse(); +public interface ISpecialEnderChest extends ISpecialInventory { } diff --git a/api/src/main/java/com/lishid/openinv/internal/ISpecialInventory.java b/api/src/main/java/com/lishid/openinv/internal/ISpecialInventory.java new file mode 100644 index 0000000..22a1be7 --- /dev/null +++ b/api/src/main/java/com/lishid/openinv/internal/ISpecialInventory.java @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2011-2019 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; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; + +public interface ISpecialInventory { + + /** + * Gets the Inventory associated with this ISpecialEnderChest. + * + * @return the Inventory + */ + @NotNull Inventory getBukkitInventory(); + + /** + * Sets the Player associated with this ISpecialEnderChest online. + * + * @param player the Player coming online + */ + void setPlayerOnline(@NotNull Player player); + + /** + * Sets the Player associated with this ISpecialEnderChest offline. + */ + void setPlayerOffline(); + + /** + * Gets whether or not this ISpecialEnderChest is in use. + * + * @return true if the ISpecialEnderChest is in use + */ + boolean isInUse(); + +} diff --git a/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java b/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java index 5420962..51bc06a 100644 --- a/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java +++ b/api/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java @@ -16,37 +16,6 @@ package com.lishid.openinv.internal; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public interface ISpecialPlayerInventory { - - /** - * Gets the Inventory associated with this ISpecialPlayerInventory. - * - * @return the Inventory - */ - @NotNull - Inventory getBukkitInventory(); - - /** - * Sets the Player associated with this ISpecialPlayerInventory online. - * - * @param player the Player coming online - */ - void setPlayerOnline(@NotNull Player player); - - /** - * Sets the Player associated with this ISpecialPlayerInventory offline. - */ - void setPlayerOffline(); - - /** - * Gets whether or not this ISpecialPlayerInventory is in use. - * - * @return true if the ISpecialPlayerInventory is in use - */ - boolean isInUse(); +public interface ISpecialPlayerInventory extends ISpecialInventory { } diff --git a/common/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java b/common/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java index 3dc3d75..4419118 100644 --- a/common/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java +++ b/common/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java @@ -19,6 +19,7 @@ package com.lishid.openinv.internal; import java.util.Collection; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -32,8 +33,7 @@ public interface IPlayerDataManager { * @param offline the OfflinePlayer * @return the Player loaded */ - @Nullable - Player loadPlayer(@NotNull OfflinePlayer offline); + @Nullable Player loadPlayer(@NotNull OfflinePlayer offline); /** * Gets a unique identifying string for an OfflinePlayer. @@ -41,8 +41,7 @@ public interface IPlayerDataManager { * @param offline the OfflinePlayer * @return the unique identifier */ - @NotNull - String getPlayerDataID(@NotNull OfflinePlayer offline); + @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline); /** * Gets an OfflinePlayer by the given unique identifier. @@ -50,15 +49,23 @@ public interface IPlayerDataManager { * @param identifier the unique identifier * @return the OfflinePlayer, or null if no exact match was found */ - @Nullable - OfflinePlayer getPlayerByID(@NotNull String identifier); + @Nullable OfflinePlayer getPlayerByID(@NotNull String identifier); /** * Gets a Collection of all Players currently online. * * @return the Collection of Players */ - @NotNull - Collection getOnlinePlayers(); + @NotNull Collection getOnlinePlayers(); + + /** + * Opens an ISpecialInventory for a Player. + * + * @param player the Player opening the ISpecialInventory + * @param inventory the Inventory + *` + * @return the InventoryView opened + */ + InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory); } diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java index f92cc0e..96270cb 100644 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java +++ b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_4_5; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import java.util.Arrays; import java.util.Collection; import net.minecraft.server.v1_4_5.EntityPlayer; @@ -28,6 +29,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_4_5.CraftServer; import org.bukkit.craftbukkit.v1_4_5.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -55,9 +57,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @@ -71,9 +72,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } @@ -97,4 +97,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java index 5ce88e0..f6805ec 100644 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java +++ b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_4_6; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import java.util.Arrays; import java.util.Collection; import net.minecraft.server.v1_4_6.EntityPlayer; @@ -28,6 +29,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_4_6.CraftServer; import org.bukkit.craftbukkit.v1_4_6.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -55,9 +57,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @@ -71,9 +72,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } @@ -97,4 +97,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java index 6d5d91c..702eb6a 100644 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java +++ b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_10_R1; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; @@ -29,6 +30,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_10_R1.CraftServer; import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -56,9 +58,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getUniqueId().toString(); } @@ -78,9 +79,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } @@ -104,4 +104,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java index 083bc0f..433f40d 100644 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java +++ b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_11_R1; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; @@ -29,6 +30,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_11_R1.CraftServer; import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -56,9 +58,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getUniqueId().toString(); } @@ -78,9 +79,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } @@ -104,4 +104,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java index 6261ae6..266b68a 100644 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java +++ b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_12_R1; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; @@ -29,6 +30,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_12_R1.CraftServer; import org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -54,9 +56,8 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } @@ -76,8 +77,7 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @NotNull - @Override + @NotNull @Override public String getPlayerDataID(@NotNull final OfflinePlayer offline) { return offline.getUniqueId().toString(); } @@ -105,4 +105,9 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java index f36015e..c6f4e3a 100644 --- a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java +++ b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_13_R1; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; @@ -29,6 +30,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_13_R1.CraftServer; import org.bukkit.craftbukkit.v1_13_R1.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -53,9 +55,8 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } @@ -75,9 +76,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @NotNull - @Override - public String getPlayerDataID(@NotNull final OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull final OfflinePlayer offline) { return offline.getUniqueId().toString(); } @@ -104,4 +104,9 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/PlayerDataManager.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/PlayerDataManager.java index 79fd697..b5b5a23 100644 --- a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/PlayerDataManager.java +++ b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_13_R2; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; @@ -30,6 +31,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_13_R2.CraftServer; import org.bukkit.craftbukkit.v1_13_R2.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -54,9 +56,8 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } @@ -76,9 +77,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @NotNull - @Override - public String getPlayerDataID(@NotNull final OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull final OfflinePlayer offline) { return offline.getUniqueId().toString(); } @@ -105,4 +105,9 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java index 35b5202..8144f21 100644 --- a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java +++ b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java @@ -17,19 +17,32 @@ package com.lishid.openinv.internal.v1_14_R1; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; +import net.minecraft.server.v1_14_R1.ChatComponentText; +import net.minecraft.server.v1_14_R1.Container; +import net.minecraft.server.v1_14_R1.Containers; import net.minecraft.server.v1_14_R1.DimensionManager; +import net.minecraft.server.v1_14_R1.EntityHuman; import net.minecraft.server.v1_14_R1.EntityPlayer; import net.minecraft.server.v1_14_R1.MinecraftServer; +import net.minecraft.server.v1_14_R1.PacketPlayOutOpenWindow; import net.minecraft.server.v1_14_R1.PlayerInteractManager; +import net.minecraft.server.v1_14_R1.PlayerInventory; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.Server; import org.bukkit.craftbukkit.v1_14_R1.CraftServer; import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory; +import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftContainer; +import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -54,9 +67,8 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } - @NotNull @Override - public Collection getOnlinePlayers() { + public @NotNull Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } @@ -76,9 +88,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @NotNull @Override - public String getPlayerDataID(@NotNull final OfflinePlayer offline) { + public @NotNull String getPlayerDataID(@NotNull final OfflinePlayer offline) { return offline.getUniqueId().toString(); } @@ -105,4 +116,68 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + + EntityPlayer nmsPlayer = getHandle(player); + + if (nmsPlayer == null || nmsPlayer.playerConnection == null) { + return null; + } + + String title; + if (inventory instanceof SpecialEnderChest) { + HumanEntity owner = (HumanEntity) ((SpecialEnderChest) inventory).getBukkitOwner(); + title = (owner.getName() != null ? owner.getName() : owner.getUniqueId().toString()) + "'s Ender Chest"; + } else if (inventory instanceof SpecialPlayerInventory) { + EntityHuman owner = ((PlayerInventory) inventory).player; + title = (owner.getName() != null ? owner.getName() : owner.getUniqueID().toString()) + "'s Inventory"; + } else { + return player.openInventory(inventory.getBukkitInventory()); + } + + Container container = new CraftContainer(new InventoryView() { + @Override + public @NotNull Inventory getTopInventory() { + return inventory.getBukkitInventory(); + } + @Override + public @NotNull Inventory getBottomInventory() { + return player.getInventory(); + } + @Override + public @NotNull HumanEntity getPlayer() { + return player; + } + @Override + public @NotNull InventoryType getType() { + return inventory.getBukkitInventory().getType(); + } + @Override + public @NotNull String getTitle() { + return title; + } + }, nmsPlayer, nmsPlayer.nextContainerCounter()) { + @Override + public Containers getType() { + return inventory instanceof SpecialEnderChest ? Containers.GENERIC_9X3 : Containers.GENERIC_9X5; + } + }; + + container.setTitle(new ChatComponentText(title)); + container = CraftEventFactory.callInventoryOpenEvent(nmsPlayer, container); + + if (container == null) { + return null; + } + + nmsPlayer.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, container.getType(), + new ChatComponentText(container.getBukkitView().getTitle()))); + nmsPlayer.activeContainer = container; + container.addSlotListener(nmsPlayer); + + return container.getBukkitView(); + + } + } diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialEnderChest.java b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialEnderChest.java index ea18d13..0ffe279 100644 --- a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialEnderChest.java +++ b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialEnderChest.java @@ -31,7 +31,6 @@ import org.bukkit.craftbukkit.v1_14_R1.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; import org.jetbrains.annotations.NotNull; @@ -51,7 +50,7 @@ public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEn } @Override - public @NotNull Inventory getBukkitInventory() { + public @NotNull CraftInventory getBukkitInventory() { return inventory; } diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java index df9f668..944832f 100644 --- a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java +++ b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java @@ -47,8 +47,6 @@ import org.bukkit.craftbukkit.v1_14_R1.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; -import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -63,13 +61,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public SpecialPlayerInventory(final Player bukkitPlayer, final Boolean online) { super(PlayerDataManager.getHandle(bukkitPlayer)); - this.inventory = new CraftInventory(this) { - @NotNull - @Override - public InventoryType getType() { - return InventoryType.CHEST; - } - }; + this.inventory = new CraftInventory(this); this.playerOnline = online; this.player = super.player; this.items = this.player.inventory.items; @@ -98,7 +90,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public @NotNull Inventory getBukkitInventory() { + public @NotNull CraftInventory getBukkitInventory() { return this.inventory; } diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java index 827a3cf..21b283e 100644 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java +++ b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_4_R1; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import java.util.Arrays; import java.util.Collection; import net.minecraft.server.v1_4_R1.EntityPlayer; @@ -28,6 +29,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_4_R1.CraftServer; import org.bukkit.craftbukkit.v1_4_R1.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; @@ -56,9 +58,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @@ -72,9 +73,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } @@ -98,4 +98,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java index e6248c8..676978f 100644 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java +++ b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_5_R2; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import java.util.Arrays; import java.util.Collection; import net.minecraft.server.v1_5_R2.EntityPlayer; @@ -28,6 +29,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_5_R2.CraftServer; import org.bukkit.craftbukkit.v1_5_R2.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -55,9 +57,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @@ -71,9 +72,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } @@ -97,4 +97,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java index 1054c49..d596fcc 100644 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java +++ b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_5_R3; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import java.util.Arrays; import java.util.Collection; import net.minecraft.server.v1_5_R3.EntityPlayer; @@ -28,6 +29,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_5_R3.CraftServer; import org.bukkit.craftbukkit.v1_5_R3.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -55,9 +57,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @@ -71,9 +72,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } @@ -97,4 +97,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java index 75a55f8..63d32d0 100644 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java +++ b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_6_R1; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import java.util.Arrays; import java.util.Collection; import net.minecraft.server.v1_6_R1.EntityPlayer; @@ -28,6 +29,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_6_R1.CraftServer; import org.bukkit.craftbukkit.v1_6_R1.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -55,9 +57,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @@ -71,9 +72,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } @@ -97,4 +97,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java index 2fdf434..8d1066c 100644 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java +++ b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_6_R2; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import java.util.Arrays; import java.util.Collection; import net.minecraft.server.v1_6_R2.EntityPlayer; @@ -28,6 +29,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_6_R2.CraftServer; import org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -55,9 +57,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @@ -71,9 +72,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } @@ -97,4 +97,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java index 5ae8ab7..ca50c18 100644 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java +++ b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_6_R3; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import java.util.Arrays; import java.util.Collection; import net.minecraft.server.v1_6_R3.EntityPlayer; @@ -28,6 +29,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_6_R3.CraftServer; import org.bukkit.craftbukkit.v1_6_R3.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -55,9 +57,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @@ -71,9 +72,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } @@ -97,4 +97,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java index a90e3e8..76c78b5 100644 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java +++ b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_7_R1; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import java.util.Arrays; import java.util.Collection; import net.minecraft.server.v1_7_R1.EntityPlayer; @@ -29,6 +30,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_7_R1.CraftServer; import org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -56,9 +58,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @@ -72,9 +73,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } @@ -98,4 +98,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java index f8100c0..5124854 100644 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java +++ b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_7_R2; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import java.util.Arrays; import java.util.Collection; import net.minecraft.server.v1_7_R2.EntityPlayer; @@ -29,6 +30,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_7_R2.CraftServer; import org.bukkit.craftbukkit.v1_7_R2.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; @SuppressWarnings("deprecation") // Deprecated methods are used properly and will not change. @@ -57,9 +59,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getName(); } @@ -73,9 +74,8 @@ public class PlayerDataManager implements IPlayerDataManager { return player; } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } @@ -99,4 +99,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java index eec7474..a5682ef 100644 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java +++ b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_7_R3; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import java.util.Arrays; import java.util.Collection; import java.util.UUID; @@ -30,6 +31,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_7_R3.CraftServer; import org.bukkit.craftbukkit.v1_7_R3.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -57,9 +59,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getUniqueId().toString(); } @@ -79,9 +80,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Arrays.asList(Bukkit.getOnlinePlayers()); } @@ -105,4 +105,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java index ba130ed..8e93cec 100644 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java +++ b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_7_R4; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import java.util.Collection; import java.util.UUID; import net.minecraft.server.v1_7_R4.EntityPlayer; @@ -29,6 +30,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_7_R4.CraftServer; import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -56,9 +58,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getUniqueId().toString(); } @@ -78,9 +79,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } @@ -104,4 +104,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java index 413eab4..c9036de 100644 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java +++ b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_8_R1; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; @@ -29,6 +30,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_8_R1.CraftServer; import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -56,9 +58,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getUniqueId().toString(); } @@ -78,9 +79,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } @@ -104,4 +104,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java index 3ba11c6..3f11bd8 100644 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java +++ b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_8_R2; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; @@ -29,6 +30,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_8_R2.CraftServer; import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -56,9 +58,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getUniqueId().toString(); } @@ -78,9 +79,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } @@ -104,4 +104,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java index 85852fd..74d5c79 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_8_R3; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; @@ -29,6 +30,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_8_R3.CraftServer; import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -56,9 +58,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getUniqueId().toString(); } @@ -78,9 +79,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } @@ -104,4 +104,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java index b7dd8b2..2399398 100644 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java +++ b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_9_R1; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; @@ -29,6 +30,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_9_R1.CraftServer; import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -56,9 +58,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getUniqueId().toString(); } @@ -78,9 +79,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } @@ -104,4 +104,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java index 8eecdb6..a5e770a 100644 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java +++ b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java @@ -17,6 +17,7 @@ package com.lishid.openinv.internal.v1_9_R2; import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; import com.mojang.authlib.GameProfile; import java.util.Collection; import java.util.UUID; @@ -29,6 +30,7 @@ import org.bukkit.Server; import org.bukkit.craftbukkit.v1_9_R2.CraftServer; import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; public class PlayerDataManager implements IPlayerDataManager { @@ -56,9 +58,8 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @NotNull - @Override - public String getPlayerDataID(@NotNull OfflinePlayer offline) { + @Override + public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { return offline.getUniqueId().toString(); } @@ -78,9 +79,8 @@ public class PlayerDataManager implements IPlayerDataManager { } } - @NotNull - @Override - public Collection getOnlinePlayers() { + @Override + public @NotNull Collection getOnlinePlayers() { return Bukkit.getOnlinePlayers(); } @@ -104,4 +104,9 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return player.openInventory(inventory.getBukkitInventory()); + } + } diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java index 29355d3..c7a02f4 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java @@ -27,6 +27,7 @@ import com.lishid.openinv.commands.SilentChestPluginCommand; import com.lishid.openinv.internal.IAnySilentContainer; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialInventory; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.listeners.InventoryClickListener; import com.lishid.openinv.listeners.InventoryCloseListener; @@ -56,6 +57,7 @@ import org.bukkit.command.PluginCommand; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; @@ -458,6 +460,11 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return player; } + @Override + public @Nullable InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + return this.accessor.getPlayerDataManager().openInventory(player, inventory); + } + @Override public boolean notifyAnyChest() { return this.getConfig().getBoolean("notify.any-chest", true); diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java index fac7dec..581f153 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java @@ -142,7 +142,7 @@ public class OpenEnderPluginCommand implements CommandExecutor { } // Open the inventory - player.openInventory(chest.getBukkitInventory()); + plugin.openInventory(player, chest); } } diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java index 798251a..af46725 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -151,7 +151,7 @@ public class OpenInvPluginCommand implements CommandExecutor { } // Open the inventory - player.openInventory(inv.getBukkitInventory()); + plugin.openInventory(player, inv); } } -- 2.49.1 From 57097e626e52e4d6c588659587e6190f48996427 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 5 May 2019 15:39:54 -0400 Subject: [PATCH 151/253] Reduce duplicate code in core plugin --- .../main/java/com/lishid/openinv/OpenInv.java | 14 +- .../commands/OpenEnderPluginCommand.java | 148 ------------------ .../commands/OpenInvPluginCommand.java | 31 ++-- 3 files changed, 29 insertions(+), 164 deletions(-) delete mode 100644 plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java index c7a02f4..6f33692 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java @@ -19,7 +19,6 @@ package com.lishid.openinv; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.lishid.openinv.commands.AnyChestPluginCommand; -import com.lishid.openinv.commands.OpenEnderPluginCommand; import com.lishid.openinv.commands.OpenInvPluginCommand; import com.lishid.openinv.commands.SearchEnchantPluginCommand; import com.lishid.openinv.commands.SearchInvPluginCommand; @@ -53,6 +52,8 @@ import java.util.concurrent.Future; import javax.annotation.Nullable; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; import org.bukkit.command.PluginCommand; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; @@ -489,6 +490,10 @@ public class OpenInv extends JavaPlugin implements IOpenInv { @Override public void onEnable() { + + // Save default configuration if not present. + this.saveDefaultConfig(); + // Get plugin manager PluginManager pm = this.getServer().getPluginManager(); @@ -502,7 +507,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return; } - this.saveDefaultConfig(); + // Update existing configuration. May require internal access. new ConfigUpdater(this).checkForUpdates(); // Register listeners @@ -514,8 +519,9 @@ public class OpenInv extends JavaPlugin implements IOpenInv { pm.registerEvents(new InventoryDragListener(this), this); // Register commands to their executors - this.getCommand("openinv").setExecutor(new OpenInvPluginCommand(this)); - this.getCommand("openender").setExecutor(new OpenEnderPluginCommand(this)); + OpenInvPluginCommand openInv = new OpenInvPluginCommand(this); + this.getCommand("openinv").setExecutor(openInv); + this.getCommand("openender").setExecutor(openInv); SearchInvPluginCommand searchInv = new SearchInvPluginCommand(this); this.getCommand("searchinv").setExecutor(searchInv); this.getCommand("searchender").setExecutor(searchInv); diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java deleted file mode 100644 index 581f153..0000000 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (C) 2011-2018 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.commands; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.util.Permissions; -import java.util.HashMap; -import org.bukkit.ChatColor; -import org.bukkit.OfflinePlayer; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; - -public class OpenEnderPluginCommand implements CommandExecutor { - - private final OpenInv plugin; - private final HashMap openEnderHistory = new HashMap(); - - public OpenEnderPluginCommand(final OpenInv plugin) { - this.plugin = plugin; - } - - @Override - public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) { - if (!(sender instanceof Player)) { - sender.sendMessage(ChatColor.RED + "You can't use this from the console."); - return true; - } - - if (args.length > 0 && args[0].equalsIgnoreCase("?")) { - this.plugin.showHelp((Player) sender); - return true; - } - - final Player player = (Player) sender; - - // History management - String history = this.openEnderHistory.get(player); - - if (history == null || history.isEmpty()) { - history = player.getName(); - this.openEnderHistory.put(player, history); - } - - final String name; - - // Read from history if target is not named - if (args.length < 1) { - name = history; - } else { - name = args[0]; - } - - new BukkitRunnable() { - @Override - public void run() { - final OfflinePlayer offlinePlayer = OpenEnderPluginCommand.this.plugin.matchPlayer(name); - - if (offlinePlayer == null || !offlinePlayer.hasPlayedBefore() && !offlinePlayer.isOnline()) { - player.sendMessage(ChatColor.RED + "Player not found!"); - return; - } - - new BukkitRunnable() { - @Override - public void run() { - if (!player.isOnline()) { - return; - } - OpenEnderPluginCommand.this.openInventory(player, offlinePlayer); - } - }.runTask(OpenEnderPluginCommand.this.plugin); - - } - }.runTaskAsynchronously(this.plugin); - - return true; - } - - private void openInventory(final Player player, final OfflinePlayer target) { - - Player onlineTarget; - boolean online = target.isOnline(); - - if (!online) { - // Try loading the player's data - onlineTarget = this.plugin.loadPlayer(target); - - if (onlineTarget == null) { - player.sendMessage(ChatColor.RED + "Player not found!"); - return; - } - } else { - onlineTarget = target.getPlayer(); - } - - if (!onlineTarget.equals(player)) { - if (!Permissions.ENDERCHEST_ALL.hasPermission(player)) { - player.sendMessage(ChatColor.RED + "You do not have permission to access other players' enderchests."); - return; - } - if (!Permissions.CROSSWORLD.hasPermission(player) - && !player.getWorld().equals(onlineTarget.getWorld())) { - player.sendMessage(ChatColor.RED + onlineTarget.getDisplayName() + " is not in your world!"); - return; - } - if (!Permissions.OVERRIDE.hasPermission(player) - && Permissions.EXEMPT.hasPermission(onlineTarget)) { - player.sendMessage(ChatColor.RED + onlineTarget.getDisplayName() + "'s inventory is protected!"); - return; - } - } - - // Record the target - this.openEnderHistory.put(player, this.plugin.getPlayerID(target)); - - // Create the inventory - final ISpecialEnderChest chest; - try { - chest = this.plugin.getSpecialEnderChest(onlineTarget, online); - } catch (Exception e) { - player.sendMessage(ChatColor.RED + "An error occurred creating " + onlineTarget.getDisplayName() + "'s inventory!"); - e.printStackTrace(); - return; - } - - // Open the inventory - plugin.openInventory(player, chest); - } - -} diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java index af46725..2423636 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java @@ -17,7 +17,7 @@ package com.lishid.openinv.commands; import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.ISpecialPlayerInventory; +import com.lishid.openinv.internal.ISpecialInventory; import com.lishid.openinv.util.Permissions; import java.util.HashMap; import org.bukkit.ChatColor; @@ -32,6 +32,7 @@ public class OpenInvPluginCommand implements CommandExecutor { private final OpenInv plugin; private final HashMap openInvHistory = new HashMap(); + private final HashMap openEnderHistory = new HashMap(); public OpenInvPluginCommand(final OpenInv plugin) { this.plugin = plugin; @@ -50,13 +51,14 @@ public class OpenInvPluginCommand implements CommandExecutor { } final Player player = (Player) sender; + final boolean openinv = command.getName().equals("openinv"); // History management - String history = this.openInvHistory.get(player); + String history = (openinv ? this.openInvHistory : this.openEnderHistory).get(player); if (history == null || history.isEmpty()) { history = player.getName(); - this.openInvHistory.put(player, history); + (openinv ? this.openInvHistory : this.openEnderHistory).put(player, history); } final String name; @@ -84,7 +86,7 @@ public class OpenInvPluginCommand implements CommandExecutor { if (!player.isOnline()) { return; } - OpenInvPluginCommand.this.openInventory(player, offlinePlayer); + OpenInvPluginCommand.this.openInventory(player, offlinePlayer, openinv); } }.runTask(OpenInvPluginCommand.this.plugin); @@ -94,7 +96,7 @@ public class OpenInvPluginCommand implements CommandExecutor { return true; } - private void openInventory(final Player player, final OfflinePlayer target) { + private void openInventory(final Player player, final OfflinePlayer target, boolean openinv) { Player onlineTarget; @@ -114,12 +116,18 @@ public class OpenInvPluginCommand implements CommandExecutor { // Permissions checks if (onlineTarget.equals(player)) { - // Self-open check - if (!Permissions.OPENSELF.hasPermission(player)) { - player.sendMessage(ChatColor.RED + "You're not allowed to openinv yourself."); + // Inventory: Additional permission required to open own inventory + if (openinv && !Permissions.OPENSELF.hasPermission(player)) { + player.sendMessage(ChatColor.RED + "You're not allowed to open your own inventory!"); return; } } else { + // Enderchest: Additional permission required to open others' ender chests + if (!openinv && !Permissions.ENDERCHEST_ALL.hasPermission(player)) { + player.sendMessage(ChatColor.RED + "You do not have permission to access other players' ender chests."); + return; + } + // Protected check if (!Permissions.OVERRIDE.hasPermission(player) && Permissions.EXEMPT.hasPermission(onlineTarget)) { @@ -129,7 +137,6 @@ public class OpenInvPluginCommand implements CommandExecutor { // Crossworld check if (!Permissions.CROSSWORLD.hasPermission(player) - && !Permissions.OVERRIDE.hasPermission(player) && !onlineTarget.getWorld().equals(player.getWorld())) { player.sendMessage( ChatColor.RED + onlineTarget.getDisplayName() + " is not in your world!"); @@ -138,12 +145,12 @@ public class OpenInvPluginCommand implements CommandExecutor { } // Record the target - this.openInvHistory.put(player, this.plugin.getPlayerID(target)); + (openinv ? this.openInvHistory : this.openEnderHistory).put(player, this.plugin.getPlayerID(target)); // Create the inventory - final ISpecialPlayerInventory inv; + final ISpecialInventory inv; try { - inv = this.plugin.getSpecialInventory(onlineTarget, online); + inv = openinv ? this.plugin.getSpecialInventory(onlineTarget, online) : this.plugin.getSpecialEnderChest(onlineTarget, online); } catch (Exception e) { player.sendMessage(ChatColor.RED + "An error occurred creating " + onlineTarget.getDisplayName() + "'s inventory!"); e.printStackTrace(); -- 2.49.1 From 5c006f8ebd53bd3dc026f87c343bcea4433823e9 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 5 May 2019 15:43:41 -0400 Subject: [PATCH 152/253] QOL: Warn users when plugin is running on an unsupported version --- .../main/java/com/lishid/openinv/OpenInv.java | 58 +++++++++++-------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java index 6f33692..a064932 100644 --- a/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/plugin-core/src/main/java/com/lishid/openinv/OpenInv.java @@ -498,37 +498,47 @@ public class OpenInv extends JavaPlugin implements IOpenInv { PluginManager pm = this.getServer().getPluginManager(); this.accessor = new InternalAccessor(this); + // Version check - if (!this.accessor.isSupported()) { + if (this.accessor.isSupported()) { + // Update existing configuration. May require internal access. + new ConfigUpdater(this).checkForUpdates(); + + // Register listeners + pm.registerEvents(new PlayerListener(this), this); + pm.registerEvents(new PluginListener(this), this); + pm.registerEvents(new InventoryClickListener(this), this); + pm.registerEvents(new InventoryCloseListener(this), this); + // Bukkit will handle missing events for us, attempt to register InventoryDragEvent without a version check + pm.registerEvents(new InventoryDragListener(this), this); + + // Register commands to their executors + OpenInvPluginCommand openInv = new OpenInvPluginCommand(this); + this.getCommand("openinv").setExecutor(openInv); + this.getCommand("openender").setExecutor(openInv); + SearchInvPluginCommand searchInv = new SearchInvPluginCommand(this); + this.getCommand("searchinv").setExecutor(searchInv); + this.getCommand("searchender").setExecutor(searchInv); + this.getCommand("searchenchant").setExecutor(new SearchEnchantPluginCommand(this)); + this.getCommand("silentchest").setExecutor(new SilentChestPluginCommand(this)); + this.getCommand("anychest").setExecutor(new AnyChestPluginCommand(this)); + } else { this.getLogger().info("Your version of CraftBukkit (" + this.accessor.getVersion() + ") is not supported."); this.getLogger().info("If this version is a recent release, check for an update."); this.getLogger().info("If this is an older version, ensure that you've downloaded the legacy support version."); - pm.disablePlugin(this); - return; } - // Update existing configuration. May require internal access. - new ConfigUpdater(this).checkForUpdates(); - - // Register listeners - pm.registerEvents(new PlayerListener(this), this); - pm.registerEvents(new PluginListener(this), this); - pm.registerEvents(new InventoryClickListener(this), this); - pm.registerEvents(new InventoryCloseListener(this), this); - // Bukkit will handle missing events for us, attempt to register InventoryDragEvent without a version check - pm.registerEvents(new InventoryDragListener(this), this); - - // Register commands to their executors - OpenInvPluginCommand openInv = new OpenInvPluginCommand(this); - this.getCommand("openinv").setExecutor(openInv); - this.getCommand("openender").setExecutor(openInv); - SearchInvPluginCommand searchInv = new SearchInvPluginCommand(this); - this.getCommand("searchinv").setExecutor(searchInv); - this.getCommand("searchender").setExecutor(searchInv); - this.getCommand("searchenchant").setExecutor(new SearchEnchantPluginCommand(this)); - this.getCommand("silentchest").setExecutor(new SilentChestPluginCommand(this)); - this.getCommand("anychest").setExecutor(new AnyChestPluginCommand(this)); + } + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (!this.accessor.isSupported()) { + sender.sendMessage("Your version of CraftBukkit (" + this.accessor.getVersion() + ") is not supported."); + sender.sendMessage("If this version is a recent release, check for an update."); + sender.sendMessage("If this is an older version, ensure that you've downloaded the legacy support version."); + return true; + } + return false; } public void releaseAllPlayers(final Plugin plugin) { -- 2.49.1 From f80df9d83b61de59df2ed9a37636bdefe78b5e3c Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 5 May 2019 16:49:41 -0400 Subject: [PATCH 153/253] Copy pasted javadocs are super great --- .../com/lishid/openinv/internal/ISpecialInventory.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/api/src/main/java/com/lishid/openinv/internal/ISpecialInventory.java b/api/src/main/java/com/lishid/openinv/internal/ISpecialInventory.java index 22a1be7..07c4d42 100644 --- a/api/src/main/java/com/lishid/openinv/internal/ISpecialInventory.java +++ b/api/src/main/java/com/lishid/openinv/internal/ISpecialInventory.java @@ -23,28 +23,28 @@ import org.jetbrains.annotations.NotNull; public interface ISpecialInventory { /** - * Gets the Inventory associated with this ISpecialEnderChest. + * Gets the Inventory associated with this ISpecialInventory. * * @return the Inventory */ @NotNull Inventory getBukkitInventory(); /** - * Sets the Player associated with this ISpecialEnderChest online. + * Sets the Player associated with this ISpecialInventory online. * * @param player the Player coming online */ void setPlayerOnline(@NotNull Player player); /** - * Sets the Player associated with this ISpecialEnderChest offline. + * Sets the Player associated with this ISpecialInventory offline. */ void setPlayerOffline(); /** - * Gets whether or not this ISpecialEnderChest is in use. + * Gets whether or not this ISpecialInventory is in use. * - * @return true if the ISpecialEnderChest is in use + * @return true if the ISpecialInventory is in use */ boolean isInUse(); -- 2.49.1 From 393fe1d83720f5c64d888d30f457b8d3563d5c33 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 5 May 2019 16:55:12 -0400 Subject: [PATCH 154/253] Bump version to 4.0.0 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_13_R1/pom.xml | 4 ++-- internal/v1_13_R2/pom.xml | 4 ++-- internal/v1_14_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 31 files changed, 58 insertions(+), 58 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 3ea7a3c..92833b5 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.0-SNAPSHOT + 4.0.0 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 7d102a0..eaee6be 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.0-SNAPSHOT + 4.0.0 openinvassembly diff --git a/common/pom.xml b/common/pom.xml index d8a6e2a..e3551cc 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.0-SNAPSHOT + 4.0.0 openinvcommon @@ -38,7 +38,7 @@ com.lishid openinvapi - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index 08d0b2a..eb1d9ca 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_4_5 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index 4381239..b078104 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_4_6 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/pom.xml b/internal/pom.xml index 2fc01d0..ea5d1d2 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 4.0.0-SNAPSHOT + 4.0.0 openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index b327947..fa64494 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_10_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index b8c6a52..1c332ab 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_11_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index 4538501..c7d56c2 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_12_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_13_R1/pom.xml b/internal/v1_13_R1/pom.xml index 308c68e..85d51f5 100644 --- a/internal/v1_13_R1/pom.xml +++ b/internal/v1_13_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_13_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_13_R2/pom.xml b/internal/v1_13_R2/pom.xml index 229e1c9..1292cc9 100644 --- a/internal/v1_13_R2/pom.xml +++ b/internal/v1_13_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_13_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_14_R1/pom.xml b/internal/v1_14_R1/pom.xml index fde7cdd..b2b5b51 100644 --- a/internal/v1_14_R1/pom.xml +++ b/internal/v1_14_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_14_R1 @@ -38,7 +38,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 98bd6b8..61094dd 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_4_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 0051f26..09022cb 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_5_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 41dcb0c..5a661ff 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_5_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index 72f6d38..c1bb402 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_6_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 9fd049b..577c3a4 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_6_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 791e004..686960b 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_6_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index 70f40a6..e5b5303 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_7_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 75ed361..99f3ef5 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_7_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 5610e64..49a37ee 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_7_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index 807d3bf..eeb539f 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_7_R4 @@ -43,7 +43,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index 166d811..d659295 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_8_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index c076d42..54082cf 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_8_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 61e67f1..d148918 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index f196a99..faa232f 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_9_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index bafa59f..c825fd9 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0-SNAPSHOT + 4.0.0 openinvadapter1_9_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index ac104d3..a4cc322 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 4.0.0-SNAPSHOT + 4.0.0 openinvplugincore @@ -38,12 +38,12 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 com.lishid openinvpluginv1_10_r1 - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index d43228f..94fc5d5 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 4.0.0-SNAPSHOT + 4.0.0 openinvpluginv1_10_r1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0-SNAPSHOT + 4.0.0 diff --git a/plugin/pom.xml b/plugin/pom.xml index f48283e..4ce72b6 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.0-SNAPSHOT + 4.0.0 openinvplugin diff --git a/pom.xml b/pom.xml index 3236a43..1752b3e 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 4.0.0-SNAPSHOT + 4.0.0 pom -- 2.49.1 From fb74fd3ced6568556f8a0c8ac5cc0a84f0be6ed7 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 5 May 2019 16:55:36 -0400 Subject: [PATCH 155/253] Bump version to 4.0.1-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/1_4_5/pom.xml | 4 ++-- internal/1_4_6/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_10_R1/pom.xml | 4 ++-- internal/v1_11_R1/pom.xml | 4 ++-- internal/v1_12_R1/pom.xml | 4 ++-- internal/v1_13_R1/pom.xml | 4 ++-- internal/v1_13_R2/pom.xml | 4 ++-- internal/v1_14_R1/pom.xml | 4 ++-- internal/v1_4_R1/pom.xml | 4 ++-- internal/v1_5_R2/pom.xml | 4 ++-- internal/v1_5_R3/pom.xml | 4 ++-- internal/v1_6_R1/pom.xml | 4 ++-- internal/v1_6_R2/pom.xml | 4 ++-- internal/v1_6_R3/pom.xml | 4 ++-- internal/v1_7_R1/pom.xml | 4 ++-- internal/v1_7_R2/pom.xml | 4 ++-- internal/v1_7_R3/pom.xml | 4 ++-- internal/v1_7_R4/pom.xml | 4 ++-- internal/v1_8_R1/pom.xml | 4 ++-- internal/v1_8_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- internal/v1_9_R1/pom.xml | 4 ++-- internal/v1_9_R2/pom.xml | 4 ++-- plugin/plugin-core/pom.xml | 6 +++--- plugin/plugin-v1_10_R1/pom.xml | 4 ++-- plugin/pom.xml | 2 +- pom.xml | 2 +- 31 files changed, 58 insertions(+), 58 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 92833b5..6197976 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.0 + 4.0.1-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index eaee6be..7c86e09 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.0 + 4.0.1-SNAPSHOT openinvassembly diff --git a/common/pom.xml b/common/pom.xml index e3551cc..42ecea5 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.0 + 4.0.1-SNAPSHOT openinvcommon @@ -38,7 +38,7 @@ com.lishid openinvapi - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml index eb1d9ca..379b886 100644 --- a/internal/1_4_5/pom.xml +++ b/internal/1_4_5/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_4_5 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml index b078104..21b53d1 100644 --- a/internal/1_4_6/pom.xml +++ b/internal/1_4_6/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_4_6 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/pom.xml b/internal/pom.xml index ea5d1d2..f7070c6 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 4.0.0 + 4.0.1-SNAPSHOT openinvinternal diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml index fa64494..0a52a20 100644 --- a/internal/v1_10_R1/pom.xml +++ b/internal/v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_10_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml index 1c332ab..72f1281 100644 --- a/internal/v1_11_R1/pom.xml +++ b/internal/v1_11_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_11_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml index c7d56c2..d01c988 100644 --- a/internal/v1_12_R1/pom.xml +++ b/internal/v1_12_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_12_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_13_R1/pom.xml b/internal/v1_13_R1/pom.xml index 85d51f5..5209653 100644 --- a/internal/v1_13_R1/pom.xml +++ b/internal/v1_13_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_13_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_13_R2/pom.xml b/internal/v1_13_R2/pom.xml index 1292cc9..d0fc421 100644 --- a/internal/v1_13_R2/pom.xml +++ b/internal/v1_13_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_13_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_14_R1/pom.xml b/internal/v1_14_R1/pom.xml index b2b5b51..c8573f8 100644 --- a/internal/v1_14_R1/pom.xml +++ b/internal/v1_14_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_14_R1 @@ -38,7 +38,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml index 61094dd..611f24f 100644 --- a/internal/v1_4_R1/pom.xml +++ b/internal/v1_4_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_4_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml index 09022cb..826c270 100644 --- a/internal/v1_5_R2/pom.xml +++ b/internal/v1_5_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_5_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml index 5a661ff..1c024a9 100644 --- a/internal/v1_5_R3/pom.xml +++ b/internal/v1_5_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_5_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml index c1bb402..b7b1799 100644 --- a/internal/v1_6_R1/pom.xml +++ b/internal/v1_6_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_6_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml index 577c3a4..4e2418e 100644 --- a/internal/v1_6_R2/pom.xml +++ b/internal/v1_6_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_6_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml index 686960b..8ada373 100644 --- a/internal/v1_6_R3/pom.xml +++ b/internal/v1_6_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_6_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml index e5b5303..12ef8cb 100644 --- a/internal/v1_7_R1/pom.xml +++ b/internal/v1_7_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_7_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml index 99f3ef5..7ae5e06 100644 --- a/internal/v1_7_R2/pom.xml +++ b/internal/v1_7_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_7_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml index 49a37ee..fc4bcfb 100644 --- a/internal/v1_7_R3/pom.xml +++ b/internal/v1_7_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_7_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml index eeb539f..32849ff 100644 --- a/internal/v1_7_R4/pom.xml +++ b/internal/v1_7_R4/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_7_R4 @@ -43,7 +43,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml index d659295..7d8a06c 100644 --- a/internal/v1_8_R1/pom.xml +++ b/internal/v1_8_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_8_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml index 54082cf..30482ee 100644 --- a/internal/v1_8_R2/pom.xml +++ b/internal/v1_8_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_8_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index d148918..c81d520 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml index faa232f..8e27579 100644 --- a/internal/v1_9_R1/pom.xml +++ b/internal/v1_9_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_9_R1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml index c825fd9..8f18c09 100644 --- a/internal/v1_9_R2/pom.xml +++ b/internal/v1_9_R2/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.0 + 4.0.1-SNAPSHOT openinvadapter1_9_R2 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/plugin/plugin-core/pom.xml b/plugin/plugin-core/pom.xml index a4cc322..358b9b5 100644 --- a/plugin/plugin-core/pom.xml +++ b/plugin/plugin-core/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 4.0.0 + 4.0.1-SNAPSHOT openinvplugincore @@ -38,12 +38,12 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT com.lishid openinvpluginv1_10_r1 - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml index 94fc5d5..190ce3f 100644 --- a/plugin/plugin-v1_10_R1/pom.xml +++ b/plugin/plugin-v1_10_R1/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvplugin - 4.0.0 + 4.0.1-SNAPSHOT openinvpluginv1_10_r1 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.0 + 4.0.1-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index 4ce72b6..5810c1a 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.0 + 4.0.1-SNAPSHOT openinvplugin diff --git a/pom.xml b/pom.xml index 1752b3e..102035c 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 4.0.0 + 4.0.1-SNAPSHOT pom -- 2.49.1 From 2939551d6553a0cf92a5567a9bfa233ec62cddcb Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 5 May 2019 18:03:22 -0400 Subject: [PATCH 156/253] Delete modules for versions no longer being supported --- internal/1_4_5/pom.xml | 44 --- .../internal/v1_4_5/AnySilentContainer.java | 169 ---------- .../internal/v1_4_5/InventoryAccess.java | 76 ----- .../internal/v1_4_5/PlayerDataManager.java | 105 ------- .../internal/v1_4_5/SilentContainerChest.java | 45 --- .../internal/v1_4_5/SpecialEnderChest.java | 127 -------- .../v1_4_5/SpecialPlayerInventory.java | 233 -------------- internal/1_4_6/pom.xml | 44 --- .../internal/v1_4_6/AnySilentContainer.java | 169 ---------- .../internal/v1_4_6/InventoryAccess.java | 76 ----- .../internal/v1_4_6/PlayerDataManager.java | 105 ------- .../internal/v1_4_6/SilentContainerChest.java | 45 --- .../internal/v1_4_6/SpecialEnderChest.java | 127 -------- .../v1_4_6/SpecialPlayerInventory.java | 225 ------------- internal/pom.xml | 22 -- internal/v1_10_R1/pom.xml | 44 --- .../internal/v1_10_R1/AnySilentContainer.java | 248 --------------- .../internal/v1_10_R1/InventoryAccess.java | 76 ----- .../internal/v1_10_R1/PlayerDataManager.java | 112 ------- .../internal/v1_10_R1/SpecialEnderChest.java | 102 ------ .../v1_10_R1/SpecialPlayerInventory.java | 296 ----------------- internal/v1_11_R1/pom.xml | 44 --- .../internal/v1_11_R1/AnySilentContainer.java | 293 ----------------- .../internal/v1_11_R1/InventoryAccess.java | 76 ----- .../internal/v1_11_R1/PlayerDataManager.java | 112 ------- .../internal/v1_11_R1/SpecialEnderChest.java | 103 ------ .../v1_11_R1/SpecialPlayerInventory.java | 259 --------------- internal/v1_12_R1/pom.xml | 57 ---- .../internal/v1_12_R1/AnySilentContainer.java | 291 ----------------- .../internal/v1_12_R1/InventoryAccess.java | 78 ----- .../internal/v1_12_R1/PlayerDataManager.java | 113 ------- .../internal/v1_12_R1/SpecialEnderChest.java | 100 ------ .../v1_12_R1/SpecialPlayerInventory.java | 256 --------------- internal/v1_13_R1/pom.xml | 57 ---- .../internal/v1_13_R1/AnySilentContainer.java | 297 ------------------ .../internal/v1_13_R1/InventoryAccess.java | 78 ----- .../internal/v1_13_R1/PlayerDataManager.java | 112 ------- .../internal/v1_13_R1/SpecialEnderChest.java | 96 ------ .../v1_13_R1/SpecialPlayerInventory.java | 255 --------------- internal/v1_4_R1/pom.xml | 44 --- .../internal/v1_4_R1/AnySilentContainer.java | 169 ---------- .../internal/v1_4_R1/InventoryAccess.java | 76 ----- .../internal/v1_4_R1/PlayerDataManager.java | 106 ------- .../v1_4_R1/SilentContainerChest.java | 45 --- .../internal/v1_4_R1/SpecialEnderChest.java | 127 -------- .../v1_4_R1/SpecialPlayerInventory.java | 233 -------------- internal/v1_5_R2/pom.xml | 44 --- .../internal/v1_5_R2/AnySilentContainer.java | 169 ---------- .../internal/v1_5_R2/InventoryAccess.java | 76 ----- .../internal/v1_5_R2/PlayerDataManager.java | 105 ------- .../v1_5_R2/SilentContainerChest.java | 45 --- .../internal/v1_5_R2/SpecialEnderChest.java | 128 -------- .../v1_5_R2/SpecialPlayerInventory.java | 225 ------------- internal/v1_5_R3/pom.xml | 44 --- .../internal/v1_5_R3/AnySilentContainer.java | 169 ---------- .../internal/v1_5_R3/InventoryAccess.java | 76 ----- .../internal/v1_5_R3/PlayerDataManager.java | 105 ------- .../v1_5_R3/SilentContainerChest.java | 45 --- .../internal/v1_5_R3/SpecialEnderChest.java | 128 -------- .../v1_5_R3/SpecialPlayerInventory.java | 225 ------------- internal/v1_6_R1/pom.xml | 44 --- .../internal/v1_6_R1/AnySilentContainer.java | 169 ---------- .../internal/v1_6_R1/InventoryAccess.java | 76 ----- .../internal/v1_6_R1/PlayerDataManager.java | 105 ------- .../v1_6_R1/SilentContainerChest.java | 45 --- .../internal/v1_6_R1/SpecialEnderChest.java | 128 -------- .../v1_6_R1/SpecialPlayerInventory.java | 225 ------------- internal/v1_6_R2/pom.xml | 44 --- .../internal/v1_6_R2/AnySilentContainer.java | 169 ---------- .../internal/v1_6_R2/InventoryAccess.java | 76 ----- .../internal/v1_6_R2/PlayerDataManager.java | 105 ------- .../v1_6_R2/SilentContainerChest.java | 45 --- .../internal/v1_6_R2/SpecialEnderChest.java | 128 -------- .../v1_6_R2/SpecialPlayerInventory.java | 225 ------------- internal/v1_6_R3/pom.xml | 44 --- .../internal/v1_6_R3/AnySilentContainer.java | 169 ---------- .../internal/v1_6_R3/InventoryAccess.java | 76 ----- .../internal/v1_6_R3/PlayerDataManager.java | 105 ------- .../v1_6_R3/SilentContainerChest.java | 45 --- .../internal/v1_6_R3/SpecialEnderChest.java | 128 -------- .../v1_6_R3/SpecialPlayerInventory.java | 222 ------------- internal/v1_7_R1/pom.xml | 44 --- .../internal/v1_7_R1/AnySilentContainer.java | 169 ---------- .../internal/v1_7_R1/InventoryAccess.java | 76 ----- .../internal/v1_7_R1/PlayerDataManager.java | 106 ------- .../v1_7_R1/SilentContainerChest.java | 45 --- .../internal/v1_7_R1/SpecialEnderChest.java | 128 -------- .../v1_7_R1/SpecialPlayerInventory.java | 225 ------------- internal/v1_7_R2/pom.xml | 44 --- .../internal/v1_7_R2/AnySilentContainer.java | 169 ---------- .../internal/v1_7_R2/InventoryAccess.java | 76 ----- .../internal/v1_7_R2/PlayerDataManager.java | 107 ------- .../v1_7_R2/SilentContainerChest.java | 45 --- .../internal/v1_7_R2/SpecialEnderChest.java | 128 -------- .../v1_7_R2/SpecialPlayerInventory.java | 225 ------------- internal/v1_7_R3/pom.xml | 44 --- .../internal/v1_7_R3/AnySilentContainer.java | 170 ---------- .../internal/v1_7_R3/InventoryAccess.java | 76 ----- .../internal/v1_7_R3/PlayerDataManager.java | 113 ------- .../v1_7_R3/SilentContainerChest.java | 44 --- .../internal/v1_7_R3/SpecialEnderChest.java | 128 -------- .../v1_7_R3/SpecialPlayerInventory.java | 225 ------------- internal/v1_7_R4/pom.xml | 50 --- .../internal/v1_7_R4/AnySilentContainer.java | 169 ---------- .../internal/v1_7_R4/InventoryAccess.java | 76 ----- .../internal/v1_7_R4/PlayerDataManager.java | 112 ------- .../v1_7_R4/SilentContainerChest.java | 45 --- .../internal/v1_7_R4/SpecialEnderChest.java | 128 -------- .../v1_7_R4/SpecialPlayerInventory.java | 225 ------------- internal/v1_8_R1/pom.xml | 44 --- .../internal/v1_8_R1/AnySilentContainer.java | 247 --------------- .../internal/v1_8_R1/InventoryAccess.java | 76 ----- .../internal/v1_8_R1/PlayerDataManager.java | 112 ------- .../internal/v1_8_R1/SpecialEnderChest.java | 83 ----- .../v1_8_R1/SpecialPlayerInventory.java | 230 -------------- internal/v1_8_R2/pom.xml | 44 --- .../internal/v1_8_R2/AnySilentContainer.java | 249 --------------- .../internal/v1_8_R2/InventoryAccess.java | 76 ----- .../internal/v1_8_R2/PlayerDataManager.java | 112 ------- .../internal/v1_8_R2/SpecialEnderChest.java | 83 ----- .../v1_8_R2/SpecialPlayerInventory.java | 230 -------------- internal/v1_9_R1/pom.xml | 43 --- .../internal/v1_9_R1/AnySilentContainer.java | 248 --------------- .../internal/v1_9_R1/InventoryAccess.java | 76 ----- .../internal/v1_9_R1/PlayerDataManager.java | 112 ------- .../internal/v1_9_R1/SpecialEnderChest.java | 83 ----- .../v1_9_R1/SpecialPlayerInventory.java | 290 ----------------- internal/v1_9_R2/pom.xml | 44 --- .../internal/v1_9_R2/AnySilentContainer.java | 248 --------------- .../internal/v1_9_R2/InventoryAccess.java | 76 ----- .../internal/v1_9_R2/PlayerDataManager.java | 112 ------- .../internal/v1_9_R2/SpecialEnderChest.java | 83 ----- .../v1_9_R2/SpecialPlayerInventory.java | 290 ----------------- lib/bukkit-1.4.5-R1.0.jar | Bin 4835647 -> 0 bytes plugin/plugin-core/pom.xml | 59 ---- plugin/plugin-v1_10_R1/pom.xml | 44 --- plugin/pom.xml | 29 +- .../main/java/com/lishid/openinv/OpenInv.java | 2 +- .../commands/AnyChestPluginCommand.java | 0 .../commands/OpenInvPluginCommand.java | 0 .../commands/SearchEnchantPluginCommand.java | 0 .../commands/SearchInvPluginCommand.java | 0 .../commands/SilentChestPluginCommand.java | 0 .../listeners/InventoryClickListener.java | 0 .../listeners/InventoryCloseListener.java | 0 .../listeners/InventoryDragListener.java | 0 .../openinv/listeners/PlayerListener.java | 0 .../openinv/listeners/PluginListener.java | 0 .../lishid/openinv/util/ConfigUpdater.java | 0 .../src/main/resources/config.yml | 0 .../src/main/resources/plugin.yml | 0 151 files changed, 23 insertions(+), 16518 deletions(-) delete mode 100644 internal/1_4_5/pom.xml delete mode 100644 internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java delete mode 100644 internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java delete mode 100644 internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java delete mode 100644 internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java delete mode 100644 internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java delete mode 100644 internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java delete mode 100644 internal/1_4_6/pom.xml delete mode 100644 internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java delete mode 100644 internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java delete mode 100644 internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java delete mode 100644 internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java delete mode 100644 internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java delete mode 100644 internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java delete mode 100644 internal/v1_10_R1/pom.xml delete mode 100644 internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java delete mode 100644 internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java delete mode 100644 internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java delete mode 100644 internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java delete mode 100644 internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java delete mode 100644 internal/v1_11_R1/pom.xml delete mode 100644 internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java delete mode 100644 internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java delete mode 100644 internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java delete mode 100644 internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java delete mode 100644 internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java delete mode 100644 internal/v1_12_R1/pom.xml delete mode 100644 internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java delete mode 100644 internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/InventoryAccess.java delete mode 100644 internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java delete mode 100644 internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java delete mode 100644 internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java delete mode 100644 internal/v1_13_R1/pom.xml delete mode 100644 internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java delete mode 100644 internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/InventoryAccess.java delete mode 100644 internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java delete mode 100644 internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialEnderChest.java delete mode 100644 internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialPlayerInventory.java delete mode 100644 internal/v1_4_R1/pom.xml delete mode 100644 internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java delete mode 100644 internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java delete mode 100644 internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java delete mode 100644 internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java delete mode 100644 internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java delete mode 100644 internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java delete mode 100644 internal/v1_5_R2/pom.xml delete mode 100644 internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java delete mode 100644 internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java delete mode 100644 internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java delete mode 100644 internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java delete mode 100644 internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java delete mode 100644 internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java delete mode 100644 internal/v1_5_R3/pom.xml delete mode 100644 internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java delete mode 100644 internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java delete mode 100644 internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java delete mode 100644 internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java delete mode 100644 internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java delete mode 100644 internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java delete mode 100644 internal/v1_6_R1/pom.xml delete mode 100644 internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java delete mode 100644 internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java delete mode 100644 internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java delete mode 100644 internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java delete mode 100644 internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java delete mode 100644 internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java delete mode 100644 internal/v1_6_R2/pom.xml delete mode 100644 internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java delete mode 100644 internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java delete mode 100644 internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java delete mode 100644 internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java delete mode 100644 internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java delete mode 100644 internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java delete mode 100644 internal/v1_6_R3/pom.xml delete mode 100644 internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java delete mode 100644 internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java delete mode 100644 internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java delete mode 100644 internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java delete mode 100644 internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java delete mode 100644 internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java delete mode 100644 internal/v1_7_R1/pom.xml delete mode 100644 internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java delete mode 100644 internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java delete mode 100644 internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java delete mode 100644 internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java delete mode 100644 internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java delete mode 100644 internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java delete mode 100644 internal/v1_7_R2/pom.xml delete mode 100644 internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java delete mode 100644 internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java delete mode 100644 internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java delete mode 100644 internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java delete mode 100644 internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java delete mode 100644 internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java delete mode 100644 internal/v1_7_R3/pom.xml delete mode 100644 internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java delete mode 100644 internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java delete mode 100644 internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java delete mode 100644 internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java delete mode 100644 internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java delete mode 100644 internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java delete mode 100644 internal/v1_7_R4/pom.xml delete mode 100644 internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java delete mode 100644 internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java delete mode 100644 internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java delete mode 100644 internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java delete mode 100644 internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java delete mode 100644 internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java delete mode 100644 internal/v1_8_R1/pom.xml delete mode 100644 internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java delete mode 100644 internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java delete mode 100644 internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java delete mode 100644 internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java delete mode 100644 internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java delete mode 100644 internal/v1_8_R2/pom.xml delete mode 100644 internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java delete mode 100644 internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java delete mode 100644 internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java delete mode 100644 internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java delete mode 100644 internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java delete mode 100644 internal/v1_9_R1/pom.xml delete mode 100644 internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java delete mode 100644 internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java delete mode 100644 internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java delete mode 100644 internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java delete mode 100644 internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java delete mode 100644 internal/v1_9_R2/pom.xml delete mode 100644 internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java delete mode 100644 internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java delete mode 100644 internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java delete mode 100644 internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java delete mode 100644 internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java delete mode 100644 lib/bukkit-1.4.5-R1.0.jar delete mode 100644 plugin/plugin-core/pom.xml delete mode 100644 plugin/plugin-v1_10_R1/pom.xml rename plugin/{plugin-core => }/src/main/java/com/lishid/openinv/OpenInv.java (99%) rename plugin/{plugin-core => }/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java (100%) rename plugin/{plugin-core => }/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java (100%) rename plugin/{plugin-core => }/src/main/java/com/lishid/openinv/commands/SearchEnchantPluginCommand.java (100%) rename plugin/{plugin-core => }/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java (100%) rename plugin/{plugin-core => }/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java (100%) rename plugin/{plugin-core => }/src/main/java/com/lishid/openinv/listeners/InventoryClickListener.java (100%) rename plugin/{plugin-core => }/src/main/java/com/lishid/openinv/listeners/InventoryCloseListener.java (100%) rename plugin/{plugin-v1_10_R1 => }/src/main/java/com/lishid/openinv/listeners/InventoryDragListener.java (100%) rename plugin/{plugin-core => }/src/main/java/com/lishid/openinv/listeners/PlayerListener.java (100%) rename plugin/{plugin-core => }/src/main/java/com/lishid/openinv/listeners/PluginListener.java (100%) rename plugin/{plugin-core => }/src/main/java/com/lishid/openinv/util/ConfigUpdater.java (100%) rename plugin/{plugin-core => }/src/main/resources/config.yml (100%) rename plugin/{plugin-core => }/src/main/resources/plugin.yml (100%) diff --git a/internal/1_4_5/pom.xml b/internal/1_4_5/pom.xml deleted file mode 100644 index 379b886..0000000 --- a/internal/1_4_5/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_4_5 - OpenInvAdapter1_4_5 - - - - org.bukkit - craftbukkit - 1.4.5-R1.0 - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java deleted file mode 100644 index fb0f1ce..0000000 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/AnySilentContainer.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_4_5; - -import com.lishid.openinv.internal.IAnySilentContainer; -import net.minecraft.server.v1_4_5.AxisAlignedBB; -import net.minecraft.server.v1_4_5.BlockEnderChest; -import net.minecraft.server.v1_4_5.Container; -import net.minecraft.server.v1_4_5.EntityOcelot; -import net.minecraft.server.v1_4_5.EntityPlayer; -import net.minecraft.server.v1_4_5.IInventory; -import net.minecraft.server.v1_4_5.InventoryEnderChest; -import net.minecraft.server.v1_4_5.InventoryLargeChest; -import net.minecraft.server.v1_4_5.Packet100OpenWindow; -import net.minecraft.server.v1_4_5.TileEntityChest; -import net.minecraft.server.v1_4_5.TileEntityEnderChest; -import net.minecraft.server.v1_4_5.World; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.craftbukkit.v1_4_5.event.CraftEventFactory; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - @Override - public boolean isAnySilentContainer(@NotNull Block bukkitBlock) { - return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull Block bukkitBlock) { - // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - - if (bukkitBlock instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - // If block or ocelot on top - if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { - return true; - } - - int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - // If block next to chest is chest and has a block or ocelot on top - if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); - } else if(world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); - } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - return false; - } - - private boolean isBlockedChest(World world, int x, int y, int z) { - return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); - } - - private boolean hasOcelotOnTop(World world, int x, int y, int z) { - for (Object localEntity : world.a(EntityOcelot.class, - AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - return true; - } - - World world = player.world; - Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - return true; - } - - if (!(tile instanceof IInventory)) { - return false; - } - - IInventory inventory = (IInventory) tile; - int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); - } else if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); - } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); - } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); - } - - // AnyChest only - if (!silent) { - player.openContainer(inventory); - return true; - } - - // SilentChest - try { - // Call InventoryOpenEvent - Container container = new SilentContainerChest(player.inventory, inventory); - container = CraftEventFactory.callInventoryOpenEvent(player, container); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.netServerHandler.sendPacket(new Packet100OpenWindow(windowId, 0, inventory.getName(), inventory.getSize())); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - return true; - } catch (Exception e) { - e.printStackTrace(); - bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); - return false; - } - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) {} - -} diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java deleted file mode 100644 index f2bbb18..0000000 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/InventoryAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_4_5; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_4_5.IInventory; -import org.bukkit.craftbukkit.v1_4_5.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; - } - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - -} diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java deleted file mode 100644 index 96270cb..0000000 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/PlayerDataManager.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_4_5; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import java.util.Arrays; -import java.util.Collection; -import net.minecraft.server.v1_4_5.EntityPlayer; -import net.minecraft.server.v1_4_5.ItemInWorldManager; -import net.minecraft.server.v1_4_5.MinecraftServer; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_4_5.CraftServer; -import org.bukkit.craftbukkit.v1_4_5.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure the player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), offline.getName(), - new ItemInWorldManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { - return offline.getName(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull String identifier) { - OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Arrays.asList(Bukkit.getOnlinePlayers()); - } - - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().f(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java deleted file mode 100644 index 01a0641..0000000 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SilentContainerChest.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_4_5; - -import net.minecraft.server.v1_4_5.ContainerChest; -import net.minecraft.server.v1_4_5.EntityHuman; -import net.minecraft.server.v1_4_5.IInventory; -import net.minecraft.server.v1_4_5.ItemStack; -import net.minecraft.server.v1_4_5.PlayerInventory; - -class SilentContainerChest extends ContainerChest { - - SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - // Send close signal - i2.f(); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != null) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(null); - entityHuman.drop(carried); - } - } - -} diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java deleted file mode 100644 index 51a0932..0000000 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialEnderChest.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_4_5; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; -import net.minecraft.server.v1_4_5.EntityPlayer; -import net.minecraft.server.v1_4_5.IInventory; -import net.minecraft.server.v1_4_5.InventoryEnderChest; -import net.minecraft.server.v1_4_5.InventorySubcontainer; -import net.minecraft.server.v1_4_5.ItemStack; -import org.bukkit.craftbukkit.v1_4_5.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_4_5.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_4_5.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private final List transaction = new ArrayList(); - private boolean playerOnline; - private CraftPlayer owner; - private int maxStack = MAX_STACK; - - public SpecialEnderChest(Player player, Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getName(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.owner = nmsPlayer.getBukkitEntity(); - this.items = enderChest.getContents(); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.owner = nmsPlayer.getBukkitEntity(); - InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - return this.items; - } - - @Override - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - @Override - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - } - - @Override - public List getViewers() { - return transaction; - } - - @Override - public InventoryHolder getOwner() { - return this.owner; - } - - @Override - public void setMaxStackSize(int size) { - maxStack = size; - } - - @Override - public int getMaxStackSize() { - return maxStack; - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java b/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java deleted file mode 100644 index 7480774..0000000 --- a/internal/1_4_5/src/main/java/com/lishid/openinv/internal/v1_4_5/SpecialPlayerInventory.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_4_5; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import net.minecraft.server.v1_4_5.ItemStack; -import net.minecraft.server.v1_4_5.PlayerInventory; -import org.bukkit.craftbukkit.v1_4_5.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final ItemStack[] extra = new ItemStack[5]; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - this.player.inventory.items = this.items; - this.player.inventory.armor = this.armor; - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(items, 0, contents, 0, items.length); - System.arraycopy(armor, 0, contents, items.length, armor.length); - return contents; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - player.drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - player.defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - -} diff --git a/internal/1_4_6/pom.xml b/internal/1_4_6/pom.xml deleted file mode 100644 index 21b53d1..0000000 --- a/internal/1_4_6/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_4_6 - OpenInvAdapter1_4_6 - - - - org.bukkit - craftbukkit - 1.4.6-R0.3 - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java deleted file mode 100644 index 51ac76b..0000000 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/AnySilentContainer.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_4_6; - -import com.lishid.openinv.internal.IAnySilentContainer; -import net.minecraft.server.v1_4_6.AxisAlignedBB; -import net.minecraft.server.v1_4_6.BlockEnderChest; -import net.minecraft.server.v1_4_6.Container; -import net.minecraft.server.v1_4_6.EntityOcelot; -import net.minecraft.server.v1_4_6.EntityPlayer; -import net.minecraft.server.v1_4_6.IInventory; -import net.minecraft.server.v1_4_6.InventoryEnderChest; -import net.minecraft.server.v1_4_6.InventoryLargeChest; -import net.minecraft.server.v1_4_6.Packet100OpenWindow; -import net.minecraft.server.v1_4_6.TileEntityChest; -import net.minecraft.server.v1_4_6.TileEntityEnderChest; -import net.minecraft.server.v1_4_6.World; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.craftbukkit.v1_4_6.event.CraftEventFactory; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - @Override - public boolean isAnySilentContainer(@NotNull Block bukkitBlock) { - return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull Block bukkitBlock) { - // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - - if (bukkitBlock instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - // If block or ocelot on top - if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { - return true; - } - - int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - // If block next to chest is chest and has a block or ocelot on top - if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); - } else if(world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); - } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - return false; - } - - private boolean isBlockedChest(World world, int x, int y, int z) { - return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); - } - - private boolean hasOcelotOnTop(World world, int x, int y, int z) { - for (Object localEntity : world.a(EntityOcelot.class, - AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - return true; - } - - World world = player.world; - Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - return true; - } - - if (!(tile instanceof IInventory)) { - return false; - } - - IInventory inventory = (IInventory) tile; - int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); - } else if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); - } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); - } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); - } - - // AnyChest only - if (!silent) { - player.openContainer(inventory); - return true; - } - - // SilentChest - try { - // Call InventoryOpenEvent - Container container = new SilentContainerChest(player.inventory, inventory); - container = CraftEventFactory.callInventoryOpenEvent(player, container); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, inventory.getName(), inventory.getSize())); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - return true; - } catch (Exception e) { - e.printStackTrace(); - bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); - return false; - } - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) {} - -} diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java deleted file mode 100644 index 89db605..0000000 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/InventoryAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_4_6; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_4_6.IInventory; -import org.bukkit.craftbukkit.v1_4_6.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; - } - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - -} diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java deleted file mode 100644 index f6805ec..0000000 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/PlayerDataManager.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_4_6; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import java.util.Arrays; -import java.util.Collection; -import net.minecraft.server.v1_4_6.EntityPlayer; -import net.minecraft.server.v1_4_6.MinecraftServer; -import net.minecraft.server.v1_4_6.PlayerInteractManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_4_6.CraftServer; -import org.bukkit.craftbukkit.v1_4_6.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure the player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), offline.getName(), - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { - return offline.getName(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull String identifier) { - OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Arrays.asList(Bukkit.getOnlinePlayers()); - } - - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().f(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java deleted file mode 100644 index 7094676..0000000 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SilentContainerChest.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_4_6; - -import net.minecraft.server.v1_4_6.ContainerChest; -import net.minecraft.server.v1_4_6.EntityHuman; -import net.minecraft.server.v1_4_6.IInventory; -import net.minecraft.server.v1_4_6.ItemStack; -import net.minecraft.server.v1_4_6.PlayerInventory; - -class SilentContainerChest extends ContainerChest { - - SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - // Send close signal - i2.f(); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != null) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(null); - entityHuman.drop(carried); - } - } - -} diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java deleted file mode 100644 index 817b4dd..0000000 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialEnderChest.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_4_6; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; -import net.minecraft.server.v1_4_6.EntityPlayer; -import net.minecraft.server.v1_4_6.IInventory; -import net.minecraft.server.v1_4_6.InventoryEnderChest; -import net.minecraft.server.v1_4_6.InventorySubcontainer; -import net.minecraft.server.v1_4_6.ItemStack; -import org.bukkit.craftbukkit.v1_4_6.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_4_6.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_4_6.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private final List transaction = new ArrayList(); - private boolean playerOnline; - private CraftPlayer owner; - private int maxStack = MAX_STACK; - - public SpecialEnderChest(Player player, Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getName(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.owner = nmsPlayer.getBukkitEntity(); - this.items = enderChest.getContents(); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.owner = nmsPlayer.getBukkitEntity(); - InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - return this.items; - } - - @Override - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - @Override - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - } - - @Override - public List getViewers() { - return transaction; - } - - @Override - public InventoryHolder getOwner() { - return this.owner; - } - - @Override - public void setMaxStackSize(int size) { - maxStack = size; - } - - @Override - public int getMaxStackSize() { - return maxStack; - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java b/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java deleted file mode 100644 index c85fd7a..0000000 --- a/internal/1_4_6/src/main/java/com/lishid/openinv/internal/v1_4_6/SpecialPlayerInventory.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_4_6; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import net.minecraft.server.v1_4_6.ItemStack; -import net.minecraft.server.v1_4_6.PlayerInventory; -import org.bukkit.craftbukkit.v1_4_6.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final ItemStack[] extra = new ItemStack[5]; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - this.player.inventory.items = this.items; - this.player.inventory.armor = this.armor; - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(items, 0, contents, 0, items.length); - System.arraycopy(armor, 0, contents, items.length, armor.length); - return contents; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - - return null; - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - - return null; - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - player.drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - player.defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - -} diff --git a/internal/pom.xml b/internal/pom.xml index f7070c6..4b9ef76 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -49,29 +49,7 @@ all - 1_4_5 - 1_4_6 - v1_4_R1 - - v1_5_R2 - v1_5_R3 - - v1_6_R1 - v1_6_R2 - v1_6_R3 - v1_7_R1 - v1_7_R2 - v1_7_R3 - v1_7_R4 - v1_8_R1 - v1_8_R2 v1_8_R3 - v1_9_R1 - v1_9_R2 - v1_10_R1 - v1_11_R1 - v1_12_R1 - v1_13_R1 v1_13_R2 v1_14_R1 diff --git a/internal/v1_10_R1/pom.xml b/internal/v1_10_R1/pom.xml deleted file mode 100644 index 0a52a20..0000000 --- a/internal/v1_10_R1/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_10_R1 - OpenInvAdapter1_10_R1 - - - - org.spigotmc - spigot - 1.10-R0.1-SNAPSHOT - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java deleted file mode 100644 index ed05132..0000000 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/AnySilentContainer.java +++ /dev/null @@ -1,248 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_10_R1; - -import com.lishid.openinv.internal.IAnySilentContainer; -import java.lang.reflect.Field; -import net.minecraft.server.v1_10_R1.AxisAlignedBB; -import net.minecraft.server.v1_10_R1.Block; -import net.minecraft.server.v1_10_R1.BlockChest; -import net.minecraft.server.v1_10_R1.BlockEnderChest; -import net.minecraft.server.v1_10_R1.BlockPosition; -import net.minecraft.server.v1_10_R1.Entity; -import net.minecraft.server.v1_10_R1.EntityOcelot; -import net.minecraft.server.v1_10_R1.EntityPlayer; -import net.minecraft.server.v1_10_R1.EnumDirection; -import net.minecraft.server.v1_10_R1.EnumGamemode; -import net.minecraft.server.v1_10_R1.ITileInventory; -import net.minecraft.server.v1_10_R1.InventoryEnderChest; -import net.minecraft.server.v1_10_R1.InventoryLargeChest; -import net.minecraft.server.v1_10_R1.PlayerInteractManager; -import net.minecraft.server.v1_10_R1.StatisticList; -import net.minecraft.server.v1_10_R1.TileEntity; -import net.minecraft.server.v1_10_R1.TileEntityChest; -import net.minecraft.server.v1_10_R1.TileEntityEnderChest; -import net.minecraft.server.v1_10_R1.World; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - private Field playerInteractManagerGamemode; - - public AnySilentContainer() { - try { - this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); - this.playerInteractManagerGamemode.setAccessible(true); - } catch (Exception e) { - System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); - e.printStackTrace(); - } - } - - @Override - public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { - return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { - - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - Block block = world.getType(blockPosition).getBlock(); - - if (block instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.getType(blockPosition.up()).m(); - } - - // Check if chest is blocked or has an ocelot on top - if (isBlockedChest(world, blockPosition)) { - return true; - } - - // Check for matching adjacent chests that are blocked or have an ocelot on top - for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); - - if (localBlock != block) { - continue; - } - - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } - - if (isBlockedChest(world, localBlockPosition)) { - return true; - } - } - - return false; - } - - private boolean isBlockedChest(World world, BlockPosition blockPosition) { - // For reference, loot at net.minecraft.server.BlockChest - return world.getType(blockPosition.up()).l() || hasOcelotOnTop(world, blockPosition); - } - - private boolean hasOcelotOnTop(World world, BlockPosition blockPosition) { - for (Entity localEntity : world.a(EntityOcelot.class, - new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, - blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, - blockPosition.getZ() + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is pretty much API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - player.b(StatisticList.X); - return true; - } - - World world = player.world; - BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - Object tile = world.getTileEntity(blockPosition); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - player.b(StatisticList.X); - return true; - } - - if (!(tile instanceof ITileInventory)) { - return false; - } - - ITileInventory tileInventory = (ITileInventory) tile; - Block block = world.getType(blockPosition).getBlock(); - - if (block instanceof BlockChest) { - for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); - - if (localBlock != block) { - continue; - } - - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } - - if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { - tileInventory = new InventoryLargeChest("container.chestDouble", - (TileEntityChest) localTileEntity, tileInventory); - } else { - tileInventory = new InventoryLargeChest("container.chestDouble", - tileInventory, (TileEntityChest) localTileEntity); - } - break; - } - - BlockChest blockChest = (BlockChest) block; - if (blockChest.g == BlockChest.Type.BASIC) { - player.b(StatisticList.ac); - } else if (blockChest.g == BlockChest.Type.TRAP) { - player.b(StatisticList.W); - } - } - - // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silent || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { - player.openContainer(tileInventory); - return true; - } - - // SilentChest requires access to setting players' gamemode directly. - if (this.playerInteractManagerGamemode == null) { - return false; - } - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.openContainer(tileInventory); - this.forceGameMode(player, gamemode); - return true; - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) { - if (this.playerInteractManagerGamemode == null) { - return; - } - - InventoryView view = bukkitPlayer.getOpenInventory(); - switch (view.getType()) { - case CHEST: - case ENDER_CHEST: - break; - default: - return; - } - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.activeContainer.b(player); - player.activeContainer = player.defaultContainer; - this.forceGameMode(player, gamemode); - } - - private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { - if (this.playerInteractManagerGamemode == null) { - // No need to warn repeatedly, error on startup and lack of function should be enough. - return; - } - try { - if (!this.playerInteractManagerGamemode.isAccessible()) { - // Just in case, ensure accessible. - this.playerInteractManagerGamemode.setAccessible(true); - } - this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); - } catch (Exception e) { - e.printStackTrace(); - } - } - -} diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java deleted file mode 100644 index f3ecfb6..0000000 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/InventoryAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_10_R1; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_10_R1.IInventory; -import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; - } - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - -} diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java deleted file mode 100644 index 702eb6a..0000000 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/PlayerDataManager.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_10_R1; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import com.mojang.authlib.GameProfile; -import java.util.Collection; -import java.util.UUID; -import net.minecraft.server.v1_10_R1.EntityPlayer; -import net.minecraft.server.v1_10_R1.MinecraftServer; -import net.minecraft.server.v1_10_R1.PlayerInteractManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_10_R1.CraftServer; -import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - // Create a profile and entity to load the player data - GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { - return offline.getUniqueId().toString(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull String identifier) { - try { - UUID uuid = UUID.fromString(identifier); - OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } catch (IllegalArgumentException e) { - // Not a UUID - return null; - } - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Bukkit.getOnlinePlayers(); - } - - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java deleted file mode 100644 index 405c486..0000000 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialEnderChest.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_10_R1; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import net.minecraft.server.v1_10_R1.EntityPlayer; -import net.minecraft.server.v1_10_R1.IInventory; -import net.minecraft.server.v1_10_R1.InventoryEnderChest; -import net.minecraft.server.v1_10_R1.InventorySubcontainer; -import net.minecraft.server.v1_10_R1.ItemStack; -import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialEnderChest(Player player, Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getName(), - PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.bukkitOwner = nmsPlayer.getBukkitEntity(); - setItemArrays(this, enderChest.getContents()); - } - - private void setItemArrays(InventorySubcontainer subcontainer, ItemStack[] items) { - try { - // Prepare to remove final modifier - Field modifiers = Field.class.getDeclaredField("modifiers"); - modifiers.setAccessible(true); - // Access and replace main inventory array - Field field = InventorySubcontainer.class.getField("items"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(subcontainer, items); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.bukkitOwner = nmsPlayer.getBukkitEntity(); - setItemArrays(nmsPlayer.getEnderChest(), this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java b/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java deleted file mode 100644 index 33f82e4..0000000 --- a/internal/v1_10_R1/src/main/java/com/lishid/openinv/internal/v1_10_R1/SpecialPlayerInventory.java +++ /dev/null @@ -1,296 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_10_R1; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import net.minecraft.server.v1_10_R1.EntityHuman; -import net.minecraft.server.v1_10_R1.ItemStack; -import net.minecraft.server.v1_10_R1.PlayerInventory; -import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final ItemStack[] extra = new ItemStack[4]; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - setItemArrays(this, player.inventory.items, player.inventory.armor, player.inventory.extraSlots); - } - - private void setItemArrays(PlayerInventory inventory, ItemStack[] items, ItemStack[] armor, - ItemStack[] extraSlots) { - try { - // Prepare to remove final modifier - Field modifiers = Field.class.getDeclaredField("modifiers"); - modifiers.setAccessible(true); - - // Access and replace main inventory array - Field field = PlayerInventory.class.getField("items"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, items); - - // Access and replace armor inventory array - field = PlayerInventory.class.getField("armor"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, armor); - - // Access and replace offhand inventory array - field = PlayerInventory.class.getField("extraSlots"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, extraSlots); - - // Access and replace array containing all inventory arrays - field = PlayerInventory.class.getDeclaredField("g"); - field.setAccessible(true); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, new ItemStack[][] { items, armor, extraSlots }); - } 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 @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - setItemArrays(this.player.inventory, items, armor, extraSlots); - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(items, 0, contents, 0, items.length); - System.arraycopy(armor, 0, contents, items.length, armor.length); - System.arraycopy(extraSlots, 0, contents, items.length + armor.length, extraSlots.length); - return contents; - } - - @Override - public int getSize() { - return super.getSize() + 4; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extraSlots; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - - // extraSlots is, for now, just an array with length 1. No need for special handling. - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extraSlots; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].cloneAndSubtract(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - - return null; - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extraSlots; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - - return null; - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extraSlots; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - - // Effects - if (is == this.extra) { - player.drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - player.defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean hasCustomName() { - return true; - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } - -} diff --git a/internal/v1_11_R1/pom.xml b/internal/v1_11_R1/pom.xml deleted file mode 100644 index 72f1281..0000000 --- a/internal/v1_11_R1/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_11_R1 - OpenInvAdapter1_11_R1 - - - - org.spigotmc - spigot - 1.11.2-R0.1-SNAPSHOT - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java deleted file mode 100644 index 35eeab0..0000000 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/AnySilentContainer.java +++ /dev/null @@ -1,293 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_11_R1; - -import com.lishid.openinv.internal.IAnySilentContainer; -import java.lang.reflect.Field; -import net.minecraft.server.v1_11_R1.AxisAlignedBB; -import net.minecraft.server.v1_11_R1.Block; -import net.minecraft.server.v1_11_R1.BlockChest; -import net.minecraft.server.v1_11_R1.BlockEnderChest; -import net.minecraft.server.v1_11_R1.BlockPosition; -import net.minecraft.server.v1_11_R1.BlockShulkerBox; -import net.minecraft.server.v1_11_R1.Entity; -import net.minecraft.server.v1_11_R1.EntityOcelot; -import net.minecraft.server.v1_11_R1.EntityPlayer; -import net.minecraft.server.v1_11_R1.EnumDirection; -import net.minecraft.server.v1_11_R1.EnumGamemode; -import net.minecraft.server.v1_11_R1.IBlockData; -import net.minecraft.server.v1_11_R1.ITileInventory; -import net.minecraft.server.v1_11_R1.InventoryEnderChest; -import net.minecraft.server.v1_11_R1.InventoryLargeChest; -import net.minecraft.server.v1_11_R1.PlayerInteractManager; -import net.minecraft.server.v1_11_R1.StatisticList; -import net.minecraft.server.v1_11_R1.TileEntity; -import net.minecraft.server.v1_11_R1.TileEntityChest; -import net.minecraft.server.v1_11_R1.TileEntityEnderChest; -import net.minecraft.server.v1_11_R1.TileEntityShulkerBox; -import net.minecraft.server.v1_11_R1.World; -import org.bukkit.Material; -import org.bukkit.block.BlockState; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - private Field playerInteractManagerGamemode; - - public AnySilentContainer() { - try { - this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); - this.playerInteractManagerGamemode.setAccessible(true); - } catch (Exception e) { - System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); - e.printStackTrace(); - } - } - - @Override - public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { - if (bukkitBlock.getType() == Material.ENDER_CHEST) { - return true; - } - BlockState state = bukkitBlock.getState(); - return state instanceof org.bukkit.block.Chest || state instanceof org.bukkit.block.ShulkerBox; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { - - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - IBlockData blockData = world.getType(blockPosition); - Block block = blockData.getBlock(); - - if (block instanceof BlockShulkerBox) { - return isBlockedShulkerBox(world, blockPosition, blockData); - } - - if (block instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.getType(blockPosition.up()).m(); - } - - // Check if chest is blocked or has an ocelot on top - if (isBlockedChest(world, blockPosition)) { - return true; - } - - // Check for matching adjacent chests that are blocked or have an ocelot on top - for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); - - if (localBlock != block) { - continue; - } - - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } - - if (isBlockedChest(world, localBlockPosition)) { - return true; - } - } - - return false; - } - - private boolean isBlockedShulkerBox(World world, BlockPosition blockPosition, IBlockData blockData) { - // For reference, look at net.minecraft.server.BlockShulkerBox - TileEntity tile = world.getTileEntity(blockPosition); - - if (!(tile instanceof TileEntityShulkerBox)) { - return false; - } - - EnumDirection enumDirection = blockData.get(BlockShulkerBox.a); - if (((TileEntityShulkerBox) tile).p() == TileEntityShulkerBox.AnimationPhase.CLOSED) { - AxisAlignedBB axisAlignedBB = Block.j.b(0.5F * enumDirection.getAdjacentX(), - 0.5F * enumDirection.getAdjacentY(), 0.5F * enumDirection.getAdjacentZ()) - .a(enumDirection.getAdjacentX(), enumDirection.getAdjacentY(), - enumDirection.getAdjacentZ()); - - try { - // 1.11.2 - return world.a(axisAlignedBB.a(blockPosition.shift(enumDirection))); - } catch (NoSuchMethodError e) { - // 1.11 - return world.b(axisAlignedBB.a(blockPosition.shift(enumDirection))); - } - } - - return false; - } - - private boolean isBlockedChest(World world, BlockPosition blockPosition) { - // For reference, loot at net.minecraft.server.BlockChest - return world.getType(blockPosition.up()).m() || hasOcelotOnTop(world, blockPosition); - } - - private boolean hasOcelotOnTop(World world, BlockPosition blockPosition) { - for (Entity localEntity : world.a(EntityOcelot.class, - new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, - blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, - blockPosition.getZ() + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is pretty much API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - player.b(StatisticList.getStatistic("stat.enderchestOpened")); - return true; - } - - final World world = player.world; - final BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - final Object tile = world.getTileEntity(blockPosition); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - player.b(StatisticList.getStatistic("stat.enderchestOpened")); - return true; - } - - if (!(tile instanceof ITileInventory)) { - return false; - } - - ITileInventory tileInventory = (ITileInventory) tile; - Block block = world.getType(blockPosition).getBlock(); - - if (block instanceof BlockChest) { - for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); - - if (localBlock != block) { - continue; - } - - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } - - if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { - tileInventory = new InventoryLargeChest("container.chestDouble", - (TileEntityChest) localTileEntity, tileInventory); - } else { - tileInventory = new InventoryLargeChest("container.chestDouble", - tileInventory, (TileEntityChest) localTileEntity); - } - break; - } - - BlockChest blockChest = (BlockChest) block; - if (blockChest.g == BlockChest.Type.BASIC) { - player.b(StatisticList.getStatistic("stat.chestOpened")); - } else if (blockChest.g == BlockChest.Type.TRAP) { - player.b(StatisticList.getStatistic("stat.trappedChestTriggered")); - } - } - - if (block instanceof BlockShulkerBox) { - player.b(StatisticList.getStatistic("stat.shulkerBoxOpened")); - } - - // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silent || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { - player.openContainer(tileInventory); - return true; - } - - // SilentChest requires access to setting players' gamemode directly. - if (this.playerInteractManagerGamemode == null) { - return false; - } - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.openContainer(tileInventory); - this.forceGameMode(player, gamemode); - return true; - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) { - if (this.playerInteractManagerGamemode == null) { - return; - } - - InventoryView view = bukkitPlayer.getOpenInventory(); - switch (view.getType()) { - case CHEST: - case ENDER_CHEST: - case SHULKER_BOX: - break; - default: - return; - } - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.activeContainer.b(player); - player.activeContainer = player.defaultContainer; - this.forceGameMode(player, gamemode); - } - - private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { - if (this.playerInteractManagerGamemode == null) { - // No need to warn repeatedly, error on startup and lack of function should be enough. - return; - } - try { - if (!this.playerInteractManagerGamemode.isAccessible()) { - // Just in case, ensure accessible. - this.playerInteractManagerGamemode.setAccessible(true); - } - this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); - } catch (Exception e) { - e.printStackTrace(); - } - } - -} diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java deleted file mode 100644 index 6692094..0000000 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/InventoryAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_11_R1; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_11_R1.IInventory; -import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; - } - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - -} diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java deleted file mode 100644 index 433f40d..0000000 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/PlayerDataManager.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_11_R1; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import com.mojang.authlib.GameProfile; -import java.util.Collection; -import java.util.UUID; -import net.minecraft.server.v1_11_R1.EntityPlayer; -import net.minecraft.server.v1_11_R1.MinecraftServer; -import net.minecraft.server.v1_11_R1.PlayerInteractManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_11_R1.CraftServer; -import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - // Create a profile and entity to load the player data - GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { - return offline.getUniqueId().toString(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull String identifier) { - try { - UUID uuid = UUID.fromString(identifier); - OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } catch (IllegalArgumentException e) { - // Not a UUID - return null; - } - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Bukkit.getOnlinePlayers(); - } - - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java deleted file mode 100644 index cff4665..0000000 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialEnderChest.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_11_R1; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.List; -import net.minecraft.server.v1_11_R1.EntityPlayer; -import net.minecraft.server.v1_11_R1.IInventory; -import net.minecraft.server.v1_11_R1.InventoryEnderChest; -import net.minecraft.server.v1_11_R1.InventorySubcontainer; -import net.minecraft.server.v1_11_R1.ItemStack; -import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialEnderChest(Player player, Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getName(), - PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.bukkitOwner = nmsPlayer.getBukkitEntity(); - setItemLists(this, enderChest.getContents()); - } - - private void setItemLists(InventorySubcontainer subcontainer, List list) { - try { - // Prepare to remove final modifier - Field modifiers = Field.class.getDeclaredField("modifiers"); - modifiers.setAccessible(true); - // Access and replace main inventory array - Field field = InventorySubcontainer.class.getField("items"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(subcontainer, list); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.bukkitOwner = nmsPlayer.getBukkitEntity(); - setItemLists(nmsPlayer.getEnderChest(), this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java b/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java deleted file mode 100644 index e7ab28f..0000000 --- a/internal/v1_11_R1/src/main/java/com/lishid/openinv/internal/v1_11_R1/SpecialPlayerInventory.java +++ /dev/null @@ -1,259 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_11_R1; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.Arrays; -import net.minecraft.server.v1_11_R1.ContainerUtil; -import net.minecraft.server.v1_11_R1.EntityHuman; -import net.minecraft.server.v1_11_R1.ItemStack; -import net.minecraft.server.v1_11_R1.NonNullList; -import net.minecraft.server.v1_11_R1.PlayerInventory; -import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - setItemArrays(this, player.inventory.items, player.inventory.armor, player.inventory.extraSlots); - } - - private void setItemArrays(PlayerInventory inventory, NonNullList items, - NonNullList armor, NonNullList extraSlots) { - try { - // Prepare to remove final modifier - Field modifiers = Field.class.getDeclaredField("modifiers"); - modifiers.setAccessible(true); - - // Access and replace main inventory array - Field field = PlayerInventory.class.getField("items"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, items); - - // Access and replace armor inventory array - field = PlayerInventory.class.getField("armor"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, armor); - - // Access and replace offhand inventory array - field = PlayerInventory.class.getField("extraSlots"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, extraSlots); - - // Access and replace array containing all inventory arrays - field = PlayerInventory.class.getDeclaredField("g"); - field.setAccessible(true); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, Arrays.asList(items, armor, extraSlots)); - } 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 @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - setItemArrays(this.player.inventory, items, armor, extraSlots); - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public int getSize() { - return super.getSize() + 4; - } - - @Override - public ItemStack getItem(int i) { - NonNullList list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - return ItemStack.a; - } - - return list.get(i); - } - - @Override - public ItemStack splitStack(int i, int j) { - NonNullList list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - return ItemStack.a; - } - - return list.get(i).isEmpty() ? ItemStack.a : ContainerUtil.a(list, i, j); - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - NonNullList list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - return ItemStack.a; - } - - if (!list.get(i).isEmpty()) { - ItemStack itemstack = list.get(i); - - list.set(i, ItemStack.a); - return itemstack; - } - - return ItemStack.a; - } - - @Override - public void setItem(int i, ItemStack itemstack) { - NonNullList list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - player.drop(itemstack, true); - return; - } - - list.set(i, itemstack); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean hasCustomName() { - return true; - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } - -} diff --git a/internal/v1_12_R1/pom.xml b/internal/v1_12_R1/pom.xml deleted file mode 100644 index d01c988..0000000 --- a/internal/v1_12_R1/pom.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_12_R1 - OpenInvAdapter1_12_R1 - - - - org.spigotmc - spigot - 1.12-R0.1-SNAPSHOT - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - - - - maven-compiler-plugin - 3.6.1 - - 1.8 - 1.8 - - - - - - diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java deleted file mode 100644 index 4bf1a17..0000000 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/AnySilentContainer.java +++ /dev/null @@ -1,291 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_12_R1; - -import com.lishid.openinv.internal.IAnySilentContainer; -import java.lang.reflect.Field; -import net.minecraft.server.v1_12_R1.AxisAlignedBB; -import net.minecraft.server.v1_12_R1.Block; -import net.minecraft.server.v1_12_R1.BlockChest; -import net.minecraft.server.v1_12_R1.BlockEnderChest; -import net.minecraft.server.v1_12_R1.BlockPosition; -import net.minecraft.server.v1_12_R1.BlockShulkerBox; -import net.minecraft.server.v1_12_R1.Entity; -import net.minecraft.server.v1_12_R1.EntityOcelot; -import net.minecraft.server.v1_12_R1.EntityPlayer; -import net.minecraft.server.v1_12_R1.EnumDirection; -import net.minecraft.server.v1_12_R1.EnumGamemode; -import net.minecraft.server.v1_12_R1.IBlockData; -import net.minecraft.server.v1_12_R1.ITileInventory; -import net.minecraft.server.v1_12_R1.InventoryEnderChest; -import net.minecraft.server.v1_12_R1.InventoryLargeChest; -import net.minecraft.server.v1_12_R1.PlayerInteractManager; -import net.minecraft.server.v1_12_R1.TileEntity; -import net.minecraft.server.v1_12_R1.TileEntityChest; -import net.minecraft.server.v1_12_R1.TileEntityEnderChest; -import net.minecraft.server.v1_12_R1.TileEntityShulkerBox; -import net.minecraft.server.v1_12_R1.World; -import org.bukkit.Material; -import org.bukkit.Statistic; -import org.bukkit.block.BlockState; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - private Field playerInteractManagerGamemode; - - public AnySilentContainer() { - try { - this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); - this.playerInteractManagerGamemode.setAccessible(true); - } catch (NoSuchFieldException | SecurityException e) { - System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); - e.printStackTrace(); - } - } - - @Override - public boolean isAnySilentContainer(@NotNull final org.bukkit.block.Block bukkitBlock) { - if (bukkitBlock.getType() == Material.ENDER_CHEST) { - return true; - } - BlockState state = bukkitBlock.getState(); - return state instanceof org.bukkit.block.Chest - || state instanceof org.bukkit.block.ShulkerBox; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull final Player p, @NotNull final org.bukkit.block.Block bukkitBlock) { - - World world = PlayerDataManager.getHandle(p).world; - BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - IBlockData blockData = world.getType(blockPosition); - Block block = blockData.getBlock(); - - if (block instanceof BlockShulkerBox) { - return this.isBlockedShulkerBox(world, blockPosition, blockData); - } - - if (block instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.getType(blockPosition.up()).m(); - } - - // Check if chest is blocked or has an ocelot on top - if (this.isBlockedChest(world, blockPosition)) { - return true; - } - - // Check for matching adjacent chests that are blocked or have an ocelot on top - for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); - - if (localBlock != block) { - continue; - } - - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } - - if (this.isBlockedChest(world, localBlockPosition)) { - return true; - } - } - - return false; - } - - private boolean isBlockedShulkerBox(final World world, final BlockPosition blockPosition, - final IBlockData blockData) { - // For reference, look at net.minecraft.server.BlockShulkerBox - TileEntity tile = world.getTileEntity(blockPosition); - - if (!(tile instanceof TileEntityShulkerBox)) { - return false; - } - - EnumDirection enumDirection = blockData.get(BlockShulkerBox.a); - if (((TileEntityShulkerBox) tile).p() == TileEntityShulkerBox.AnimationPhase.CLOSED) { - AxisAlignedBB axisAlignedBB = Block.j.b(0.5F * enumDirection.getAdjacentX(), - 0.5F * enumDirection.getAdjacentY(), 0.5F * enumDirection.getAdjacentZ()) - .a(enumDirection.getAdjacentX(), enumDirection.getAdjacentY(), - enumDirection.getAdjacentZ()); - - return world.a(axisAlignedBB.a(blockPosition.shift(enumDirection))); - } - - return false; - } - - private boolean isBlockedChest(final World world, final BlockPosition blockPosition) { - // For reference, loot at net.minecraft.server.BlockChest - return world.getType(blockPosition.up()).l() || this.hasOcelotOnTop(world, blockPosition); - } - - private boolean hasOcelotOnTop(final World world, final BlockPosition blockPosition) { - for (Entity localEntity : world.a(EntityOcelot.class, - new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, - blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, - blockPosition.getZ() + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull final Player bukkitPlayer, final boolean silentchest, - @NotNull final org.bukkit.block.Block bukkitBlock) { - - // Silent ender chest is API-only - if (silentchest && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); - return true; - } - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - final World world = player.world; - final BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - final Object tile = world.getTileEntity(blockPosition); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); - return true; - } - - if (!(tile instanceof ITileInventory)) { - return false; - } - - ITileInventory tileInventory = (ITileInventory) tile; - Block block = world.getType(blockPosition).getBlock(); - - if (block instanceof BlockChest) { - for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); - - if (localBlock != block) { - continue; - } - - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } - - if (localEnumDirection == EnumDirection.WEST - || localEnumDirection == EnumDirection.NORTH) { - tileInventory = new InventoryLargeChest("container.chestDouble", - (TileEntityChest) localTileEntity, tileInventory); - } else { - tileInventory = new InventoryLargeChest("container.chestDouble", tileInventory, - (TileEntityChest) localTileEntity); - } - break; - } - - BlockChest blockChest = (BlockChest) block; - if (blockChest.g == BlockChest.Type.BASIC) { - bukkitPlayer.incrementStatistic(Statistic.CHEST_OPENED); - } else if (blockChest.g == BlockChest.Type.TRAP) { - bukkitPlayer.incrementStatistic(Statistic.TRAPPED_CHEST_TRIGGERED); - } - } - - if (block instanceof BlockShulkerBox) { - bukkitPlayer.incrementStatistic(Statistic.SHULKER_BOX_OPENED); - } - - // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { - player.openContainer(tileInventory); - return true; - } - - // SilentChest requires access to setting players' gamemode directly. - if (this.playerInteractManagerGamemode == null) { - return false; - } - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.openContainer(tileInventory); - this.forceGameMode(player, gamemode); - return true; - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) { - if (this.playerInteractManagerGamemode == null) { - return; - } - - InventoryView view = bukkitPlayer.getOpenInventory(); - switch (view.getType()) { - case CHEST: - case ENDER_CHEST: - case SHULKER_BOX: - break; - default: - return; - } - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.activeContainer.b(player); - player.activeContainer = player.defaultContainer; - this.forceGameMode(player, gamemode); - } - - private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { - if (this.playerInteractManagerGamemode == null) { - // No need to warn repeatedly, error on startup and lack of function should be enough. - return; - } - try { - if (!this.playerInteractManagerGamemode.isAccessible()) { - // Just in case, ensure accessible. - this.playerInteractManagerGamemode.setAccessible(true); - } - this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); - } catch (IllegalArgumentException | IllegalAccessException e) { - e.printStackTrace(); - } - } - -} diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/InventoryAccess.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/InventoryAccess.java deleted file mode 100644 index 810a228..0000000 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/InventoryAccess.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_12_R1; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_12_R1.IInventory; -import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull final Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull final Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull final Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, - inventory) instanceof ISpecialEnderChest; - } - - @Override - public boolean isSpecialPlayerInventory(@NotNull final Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, - inventory) instanceof ISpecialPlayerInventory; - } - -} diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java deleted file mode 100644 index 266b68a..0000000 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/PlayerDataManager.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_12_R1; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import com.mojang.authlib.GameProfile; -import java.util.Collection; -import java.util.UUID; -import net.minecraft.server.v1_12_R1.EntityPlayer; -import net.minecraft.server.v1_12_R1.MinecraftServer; -import net.minecraft.server.v1_12_R1.PlayerInteractManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_12_R1.CraftServer; -import org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - public static EntityPlayer getHandle(final Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException( - "Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Bukkit.getOnlinePlayers(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull final String identifier) { - try { - UUID uuid = UUID.fromString(identifier); - OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } catch (IllegalArgumentException e) { - // Not a UUID - return null; - } - } - - @NotNull @Override - public String getPlayerDataID(@NotNull final OfflinePlayer offline) { - return offline.getUniqueId().toString(); - } - - @Override - public Player loadPlayer(@NotNull final OfflinePlayer offline) { - // Ensure player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - // Create a profile and entity to load the player data - GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java deleted file mode 100644 index 4ca22e7..0000000 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialEnderChest.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_12_R1; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.List; -import net.minecraft.server.v1_12_R1.EntityPlayer; -import net.minecraft.server.v1_12_R1.IInventory; -import net.minecraft.server.v1_12_R1.InventoryEnderChest; -import net.minecraft.server.v1_12_R1.InventorySubcontainer; -import net.minecraft.server.v1_12_R1.ItemStack; -import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer - implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialEnderChest(final Player player, final Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getName(), - PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.bukkitOwner = nmsPlayer.getBukkitEntity(); - this.setItemLists(this, this.enderChest.getContents()); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - private void setItemLists(final InventorySubcontainer subcontainer, - final List list) { - try { - // Prepare to remove final modifier - Field modifiers = Field.class.getDeclaredField("modifiers"); - modifiers.setAccessible(true); - // Access and replace main inventory array - Field field = InventorySubcontainer.class.getField("items"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(subcontainer, list); - } catch (NoSuchFieldException | SecurityException | IllegalArgumentException - | IllegalAccessException e) { - e.printStackTrace(); - } - } - - @Override - public void setPlayerOffline() { - this.playerOnline = false; - } - - @Override - public void setPlayerOnline(@NotNull final Player player) { - if (!this.playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.bukkitOwner = nmsPlayer.getBukkitEntity(); - this.setItemLists(nmsPlayer.getEnderChest(), this.items); - } catch (Exception ignored) {} - this.playerOnline = true; - } - } - - @Override - public void update() { - super.update(); - this.enderChest.update(); - } - -} diff --git a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java b/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java deleted file mode 100644 index 328e2a8..0000000 --- a/internal/v1_12_R1/src/main/java/com/lishid/openinv/internal/v1_12_R1/SpecialPlayerInventory.java +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_12_R1; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.Arrays; -import net.minecraft.server.v1_12_R1.ContainerUtil; -import net.minecraft.server.v1_12_R1.EntityHuman; -import net.minecraft.server.v1_12_R1.ItemStack; -import net.minecraft.server.v1_12_R1.NonNullList; -import net.minecraft.server.v1_12_R1.PlayerInventory; -import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(final Player bukkitPlayer, final Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - this.setItemArrays(this, this.player.inventory.items, this.player.inventory.armor, - this.player.inventory.extraSlots); - } - - @Override - public boolean a(final EntityHuman entityhuman) { - return true; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public ItemStack getItem(int i) { - NonNullList list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - return ItemStack.a; - } - - return list.get(i); - } - - @Override - public String getName() { - if (this.player.getName().length() > 16) { - return this.player.getName().substring(0, 16); - } - return this.player.getName(); - } - - @Override - public boolean hasCustomName() { - return true; - } - - private int getReversedArmorSlotNum(final int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - private int getReversedItemSlotNum(final int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - @Override - public int getSize() { - return super.getSize() + 4; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public void setItem(int i, final ItemStack itemstack) { - NonNullList list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - this.player.drop(itemstack, true); - return; - } - - list.set(i, itemstack); - } - - private void setItemArrays(final PlayerInventory inventory, final NonNullList items, - final NonNullList armor, final NonNullList extraSlots) { - try { - // Prepare to remove final modifier - Field modifiers = Field.class.getDeclaredField("modifiers"); - modifiers.setAccessible(true); - - // Access and replace main inventory list - Field field = PlayerInventory.class.getField("items"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, items); - - // Access and replace armor inventory list - field = PlayerInventory.class.getField("armor"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, armor); - - // Access and replace offhand inventory list - field = PlayerInventory.class.getField("extraSlots"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, extraSlots); - - // Access and replace list containing all inventory lists - field = PlayerInventory.class.getDeclaredField("f"); - field.setAccessible(true); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, Arrays.asList(items, armor, extraSlots)); - } catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) { - // Unable to set final fields to item lists, we're screwed. Noisily fail. - e.printStackTrace(); - } - } - - @Override - public void setPlayerOffline() { - this.playerOnline = false; - } - - @Override - public void setPlayerOnline(@NotNull final Player player) { - if (!this.playerOnline) { - this.player = PlayerDataManager.getHandle(player); - this.setItemArrays(this.player.inventory, this.items, this.armor, this.extraSlots); - this.playerOnline = true; - } - } - - @Override - public ItemStack splitStack(int i, final int j) { - NonNullList list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - return ItemStack.a; - } - - return list.get(i).isEmpty() ? ItemStack.a : ContainerUtil.a(list, i, j); - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - NonNullList list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - return ItemStack.a; - } - - if (!list.get(i).isEmpty()) { - ItemStack itemstack = list.get(i); - - list.set(i, ItemStack.a); - return itemstack; - } - - return ItemStack.a; - } - -} diff --git a/internal/v1_13_R1/pom.xml b/internal/v1_13_R1/pom.xml deleted file mode 100644 index 5209653..0000000 --- a/internal/v1_13_R1/pom.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_13_R1 - OpenInvAdapter1_13_R1 - - - - org.spigotmc - spigot - 1.13-R0.1-SNAPSHOT - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - - - - maven-compiler-plugin - 3.6.1 - - 1.8 - 1.8 - - - - - - diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java deleted file mode 100644 index a60097e..0000000 --- a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/AnySilentContainer.java +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_13_R1; - -import com.lishid.openinv.internal.IAnySilentContainer; -import java.lang.reflect.Field; -import net.minecraft.server.v1_13_R1.AxisAlignedBB; -import net.minecraft.server.v1_13_R1.Block; -import net.minecraft.server.v1_13_R1.BlockChest; -import net.minecraft.server.v1_13_R1.BlockChestTrapped; -import net.minecraft.server.v1_13_R1.BlockEnderChest; -import net.minecraft.server.v1_13_R1.BlockPosition; -import net.minecraft.server.v1_13_R1.BlockPropertyChestType; -import net.minecraft.server.v1_13_R1.BlockShulkerBox; -import net.minecraft.server.v1_13_R1.ChatMessage; -import net.minecraft.server.v1_13_R1.Entity; -import net.minecraft.server.v1_13_R1.EntityOcelot; -import net.minecraft.server.v1_13_R1.EntityPlayer; -import net.minecraft.server.v1_13_R1.EnumDirection; -import net.minecraft.server.v1_13_R1.EnumGamemode; -import net.minecraft.server.v1_13_R1.IBlockData; -import net.minecraft.server.v1_13_R1.ITileInventory; -import net.minecraft.server.v1_13_R1.InventoryEnderChest; -import net.minecraft.server.v1_13_R1.InventoryLargeChest; -import net.minecraft.server.v1_13_R1.PlayerInteractManager; -import net.minecraft.server.v1_13_R1.TileEntity; -import net.minecraft.server.v1_13_R1.TileEntityChest; -import net.minecraft.server.v1_13_R1.TileEntityEnderChest; -import net.minecraft.server.v1_13_R1.TileEntityShulkerBox; -import net.minecraft.server.v1_13_R1.VoxelShapes; -import net.minecraft.server.v1_13_R1.World; -import org.bukkit.Material; -import org.bukkit.Statistic; -import org.bukkit.block.BlockState; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - private Field playerInteractManagerGamemode; - - public AnySilentContainer() { - try { - this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); - this.playerInteractManagerGamemode.setAccessible(true); - } catch (NoSuchFieldException | SecurityException e) { - System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); - e.printStackTrace(); - } - } - - @Override - public boolean isAnySilentContainer(@NotNull final org.bukkit.block.Block bukkitBlock) { - if (bukkitBlock.getType() == Material.ENDER_CHEST) { - return true; - } - BlockState state = bukkitBlock.getState(); - return state instanceof org.bukkit.block.Chest - || state instanceof org.bukkit.block.ShulkerBox; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull final Player bukkitPlayer, @NotNull final org.bukkit.block.Block bukkitBlock) { - - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - IBlockData blockData = world.getType(blockPosition); - Block block = blockData.getBlock(); - - if (block instanceof BlockShulkerBox) { - return this.isBlockedShulkerBox(world, blockPosition, blockData); - } - - if (block instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.getType(blockPosition.up()).isOccluding(); - } - - // Check if chest is blocked or has an ocelot on top - if (this.isBlockedChest(world, blockPosition)) { - return true; - } - - // Check for matching adjacent chests that are blocked or have an ocelot on top - BlockPropertyChestType chestType = blockData.get(BlockChest.b); - - if (chestType == BlockPropertyChestType.SINGLE) { - return false; - } - - BlockPosition adjacentBlockPosition = blockPosition.shift(BlockChest.k(blockData)); - IBlockData adjacentBlockData = world.getType(adjacentBlockPosition); - - if (adjacentBlockData.getBlock() == block) { - - BlockPropertyChestType adjacentChestType = adjacentBlockData.get(BlockChest.b); - - if (adjacentChestType != BlockPropertyChestType.SINGLE && chestType != adjacentChestType - && adjacentBlockData.get(BlockChest.FACING) == blockData.get(BlockChest.FACING)) { - - return this.isBlockedChest(world, adjacentBlockPosition); - } - } - - return false; - } - - private boolean isBlockedShulkerBox(final World world, final BlockPosition blockPosition, - final IBlockData blockData) { - // For reference, look at net.minecraft.server.BlockShulkerBox - TileEntity tile = world.getTileEntity(blockPosition); - - if (!(tile instanceof TileEntityShulkerBox)) { - return false; - } - - EnumDirection enumDirection = blockData.get(BlockShulkerBox.a); - if (((TileEntityShulkerBox) tile).r() == TileEntityShulkerBox.AnimationPhase.CLOSED) { - AxisAlignedBB axisAlignedBB = VoxelShapes.b().a() - .b(0.5F * enumDirection.getAdjacentX(), 0.5F * enumDirection.getAdjacentY(), 0.5F * enumDirection.getAdjacentZ()) - .a(enumDirection.getAdjacentX(), enumDirection.getAdjacentY(), enumDirection.getAdjacentZ()); - return !world.getCubes(null, axisAlignedBB.a(blockPosition.shift(enumDirection))); - } - - return false; - } - - private boolean isBlockedChest(final World world, final BlockPosition blockPosition) { - // For reference, loot at net.minecraft.server.BlockChest - return world.getType(blockPosition.up()).isOccluding() || this.hasOcelotOnTop(world, blockPosition); - } - - private boolean hasOcelotOnTop(final World world, final BlockPosition blockPosition) { - for (Entity entity : world.a(EntityOcelot.class, - new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, - blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, - blockPosition.getZ() + 1))) { - EntityOcelot entityOcelot = (EntityOcelot) entity; - if (entityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull final Player bukkitPlayer, final boolean silentsilent, - @NotNull final org.bukkit.block.Block bukkitBlock) { - - // Silent ender chest is API-only - if (silentsilent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); - return true; - } - - EntityPlayer player = com.lishid.openinv.internal.v1_13_R1.PlayerDataManager.getHandle(bukkitPlayer); - - final World world = player.world; - final BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - final Object tile = world.getTileEntity(blockPosition); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); - return true; - } - - if (!(tile instanceof ITileInventory)) { - return false; - } - - ITileInventory tileInventory = (ITileInventory) tile; - IBlockData blockData = world.getType(blockPosition); - Block block = blockData.getBlock(); - - if (block instanceof BlockChest) { - - BlockPropertyChestType chestType = blockData.get(BlockChest.b); - - if (chestType != BlockPropertyChestType.SINGLE) { - - BlockPosition adjacentBlockPosition = blockPosition.shift(BlockChest.k(blockData)); - IBlockData adjacentBlockData = world.getType(adjacentBlockPosition); - - if (adjacentBlockData.getBlock() == block) { - - BlockPropertyChestType adjacentChestType = adjacentBlockData.get(BlockChest.b); - - if (adjacentChestType != BlockPropertyChestType.SINGLE && chestType != adjacentChestType - && adjacentBlockData.get(BlockChest.FACING) == blockData.get(BlockChest.FACING)) { - - TileEntity adjacentTile = world.getTileEntity(adjacentBlockPosition); - - if (adjacentTile instanceof TileEntityChest) { - ITileInventory rightChest = chestType == BlockPropertyChestType.RIGHT ? tileInventory : (ITileInventory) adjacentTile; - ITileInventory leftChest = chestType == BlockPropertyChestType.RIGHT ? (ITileInventory) adjacentTile : tileInventory; - tileInventory = new InventoryLargeChest(new ChatMessage("container.chestDouble"), rightChest, leftChest); - } - } - } - } - - if (block instanceof BlockChestTrapped) { - bukkitPlayer.incrementStatistic(Statistic.TRAPPED_CHEST_TRIGGERED); - } else { - bukkitPlayer.incrementStatistic(Statistic.CHEST_OPENED); - } - } - - if (block instanceof BlockShulkerBox) { - bukkitPlayer.incrementStatistic(Statistic.SHULKER_BOX_OPENED); - } - - // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silentsilent || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { - player.openContainer(tileInventory); - return true; - } - - // SilentChest requires access to setting players' gamemode directly. - if (this.playerInteractManagerGamemode == null) { - return false; - } - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.openContainer(tileInventory); - this.forceGameMode(player, gamemode); - return true; - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) { - if (this.playerInteractManagerGamemode == null) { - return; - } - - InventoryView view = bukkitPlayer.getOpenInventory(); - switch (view.getType()) { - case CHEST: - case ENDER_CHEST: - case SHULKER_BOX: - break; - default: - return; - } - - EntityPlayer player = com.lishid.openinv.internal.v1_13_R1.PlayerDataManager.getHandle(bukkitPlayer); - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.activeContainer.b(player); - player.activeContainer = player.defaultContainer; - this.forceGameMode(player, gamemode); - } - - private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { - if (this.playerInteractManagerGamemode == null) { - // No need to warn repeatedly, error on startup and lack of function should be enough. - return; - } - try { - if (!this.playerInteractManagerGamemode.isAccessible()) { - // Just in case, ensure accessible. - this.playerInteractManagerGamemode.setAccessible(true); - } - this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); - } catch (IllegalArgumentException | IllegalAccessException e) { - e.printStackTrace(); - } - } - -} diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/InventoryAccess.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/InventoryAccess.java deleted file mode 100644 index 404e41d..0000000 --- a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/InventoryAccess.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_13_R1; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_13_R1.IInventory; -import org.bukkit.craftbukkit.v1_13_R1.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull final Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof com.lishid.openinv.internal.v1_13_R1.SpecialEnderChest) { - return (com.lishid.openinv.internal.v1_13_R1.SpecialEnderChest) inv; - } - return null; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull final Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof com.lishid.openinv.internal.v1_13_R1.SpecialPlayerInventory) { - return (com.lishid.openinv.internal.v1_13_R1.SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull final Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, - inventory) instanceof ISpecialEnderChest; - } - - @Override - public boolean isSpecialPlayerInventory(@NotNull final Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, - inventory) instanceof ISpecialPlayerInventory; - } - -} diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java deleted file mode 100644 index c6f4e3a..0000000 --- a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/PlayerDataManager.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_13_R1; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import com.mojang.authlib.GameProfile; -import java.util.Collection; -import java.util.UUID; -import net.minecraft.server.v1_13_R1.EntityPlayer; -import net.minecraft.server.v1_13_R1.MinecraftServer; -import net.minecraft.server.v1_13_R1.PlayerInteractManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_13_R1.CraftServer; -import org.bukkit.craftbukkit.v1_13_R1.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - public static EntityPlayer getHandle(final Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Bukkit.getOnlinePlayers(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull final String identifier) { - try { - UUID uuid = UUID.fromString(identifier); - OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } catch (IllegalArgumentException e) { - // Not a UUID - return null; - } - } - - @Override - public @NotNull String getPlayerDataID(@NotNull final OfflinePlayer offline) { - return offline.getUniqueId().toString(); - } - - @Override - public Player loadPlayer(@NotNull final OfflinePlayer offline) { - // Ensure player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - // Create a profile and entity to load the player data - GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialEnderChest.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialEnderChest.java deleted file mode 100644 index 8697405..0000000 --- a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialEnderChest.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_13_R1; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.List; -import net.minecraft.server.v1_13_R1.EntityPlayer; -import net.minecraft.server.v1_13_R1.IInventory; -import net.minecraft.server.v1_13_R1.InventoryEnderChest; -import net.minecraft.server.v1_13_R1.InventorySubcontainer; -import net.minecraft.server.v1_13_R1.ItemStack; -import org.bukkit.craftbukkit.v1_13_R1.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer - implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialEnderChest(final Player player, final Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getDisplayName(), - PlayerDataManager.getHandle(player).getEnderChest().getSize(), player); - this.playerOnline = online; - this.enderChest = PlayerDataManager.getHandle(player).getEnderChest(); - this.setItemLists(this, this.enderChest.getContents()); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - private void setItemLists(final InventorySubcontainer subcontainer, final List list) { - try { - // Prepare to remove final modifier - Field modifiers = Field.class.getDeclaredField("modifiers"); - modifiers.setAccessible(true); - // Access and replace main inventory array - Field field = InventorySubcontainer.class.getField("items"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(subcontainer, list); - } catch (NoSuchFieldException | SecurityException | IllegalArgumentException - | IllegalAccessException e) { - e.printStackTrace(); - } - } - - @Override - public void setPlayerOffline() { - this.playerOnline = false; - } - - @Override - public void setPlayerOnline(@NotNull final Player player) { - if (!this.playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.bukkitOwner = nmsPlayer.getBukkitEntity(); - this.setItemLists(nmsPlayer.getEnderChest(), this.items); - } catch (Exception ignored) {} - this.playerOnline = true; - } - } - - @Override - public void update() { - super.update(); - this.enderChest.update(); - } - -} diff --git a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialPlayerInventory.java b/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialPlayerInventory.java deleted file mode 100644 index daf5773..0000000 --- a/internal/v1_13_R1/src/main/java/com/lishid/openinv/internal/v1_13_R1/SpecialPlayerInventory.java +++ /dev/null @@ -1,255 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_13_R1; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.Arrays; -import net.minecraft.server.v1_13_R1.ChatMessage; -import net.minecraft.server.v1_13_R1.ContainerUtil; -import net.minecraft.server.v1_13_R1.EntityHuman; -import net.minecraft.server.v1_13_R1.IChatBaseComponent; -import net.minecraft.server.v1_13_R1.ItemStack; -import net.minecraft.server.v1_13_R1.NonNullList; -import net.minecraft.server.v1_13_R1.PlayerInventory; -import org.bukkit.craftbukkit.v1_13_R1.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(final Player bukkitPlayer, final Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - this.setItemArrays(this, this.player.inventory.items, this.player.inventory.armor, - this.player.inventory.extraSlots); - } - - @Override - public boolean a(final EntityHuman entityhuman) { - return true; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public ItemStack getItem(int i) { - NonNullList list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - return ItemStack.a; - } - - return list.get(i); - } - - @Override - public IChatBaseComponent getDisplayName() { - return new ChatMessage(this.player.getName()); - } - - @Override - public boolean hasCustomName() { - return true; - } - - private int getReversedArmorSlotNum(final int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - private int getReversedItemSlotNum(final int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - @Override - public int getSize() { - return super.getSize() + 4; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public void setItem(int i, final ItemStack itemstack) { - NonNullList list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - this.player.drop(itemstack, true); - return; - } - - list.set(i, itemstack); - } - - private void setItemArrays(final PlayerInventory inventory, final NonNullList items, - final NonNullList armor, final NonNullList extraSlots) { - try { - // Prepare to remove final modifier - Field modifiers = Field.class.getDeclaredField("modifiers"); - modifiers.setAccessible(true); - - // Access and replace main inventory list - Field field = PlayerInventory.class.getField("items"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, items); - - // Access and replace armor inventory list - field = PlayerInventory.class.getField("armor"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, armor); - - // Access and replace offhand inventory list - field = PlayerInventory.class.getField("extraSlots"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, extraSlots); - - // Access and replace list containing all inventory lists - field = PlayerInventory.class.getDeclaredField("f"); - field.setAccessible(true); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, Arrays.asList(items, armor, extraSlots)); - } catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) { - // Unable to set final fields to item lists, we're screwed. Noisily fail. - e.printStackTrace(); - } - } - - @Override - public void setPlayerOffline() { - this.playerOnline = false; - } - - @Override - public void setPlayerOnline(@NotNull final Player player) { - if (!this.playerOnline) { - this.player = PlayerDataManager.getHandle(player); - this.setItemArrays(this.player.inventory, this.items, this.armor, this.extraSlots); - this.playerOnline = true; - } - } - - @Override - public ItemStack splitStack(int i, final int j) { - NonNullList list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - return ItemStack.a; - } - - return list.get(i).isEmpty() ? ItemStack.a : ContainerUtil.a(list, i, j); - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - NonNullList list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - return ItemStack.a; - } - - if (!list.get(i).isEmpty()) { - ItemStack itemstack = list.get(i); - - list.set(i, ItemStack.a); - return itemstack; - } - - return ItemStack.a; - } - -} diff --git a/internal/v1_4_R1/pom.xml b/internal/v1_4_R1/pom.xml deleted file mode 100644 index 611f24f..0000000 --- a/internal/v1_4_R1/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_4_R1 - OpenInvAdapter1_4_R1 - - - - org.bukkit - craftbukkit - 1.4.7-R1.0 - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java deleted file mode 100644 index 052d011..0000000 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/AnySilentContainer.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_4_R1; - -import com.lishid.openinv.internal.IAnySilentContainer; -import net.minecraft.server.v1_4_R1.AxisAlignedBB; -import net.minecraft.server.v1_4_R1.BlockEnderChest; -import net.minecraft.server.v1_4_R1.Container; -import net.minecraft.server.v1_4_R1.EntityOcelot; -import net.minecraft.server.v1_4_R1.EntityPlayer; -import net.minecraft.server.v1_4_R1.IInventory; -import net.minecraft.server.v1_4_R1.InventoryEnderChest; -import net.minecraft.server.v1_4_R1.InventoryLargeChest; -import net.minecraft.server.v1_4_R1.Packet100OpenWindow; -import net.minecraft.server.v1_4_R1.TileEntityChest; -import net.minecraft.server.v1_4_R1.TileEntityEnderChest; -import net.minecraft.server.v1_4_R1.World; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.craftbukkit.v1_4_R1.event.CraftEventFactory; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - @Override - public boolean isAnySilentContainer(@NotNull Block bukkitBlock) { - return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull Block bukkitBlock) { - // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - - if (bukkitBlock instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - // If block or ocelot on top - if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { - return true; - } - - int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - // If block next to chest is chest and has a block or ocelot on top - if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); - } else if(world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); - } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - return false; - } - - private boolean isBlockedChest(World world, int x, int y, int z) { - return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); - } - - private boolean hasOcelotOnTop(World world, int x, int y, int z) { - for (Object localEntity : world.a(EntityOcelot.class, - AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - return true; - } - - World world = player.world; - Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - return true; - } - - if (!(tile instanceof IInventory)) { - return false; - } - - IInventory inventory = (IInventory) tile; - int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); - } else if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); - } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); - } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); - } - - // AnyChest only - if (!silent) { - player.openContainer(inventory); - return true; - } - - // SilentChest - try { - // Call InventoryOpenEvent - Container container = new SilentContainerChest(player.inventory, inventory); - container = CraftEventFactory.callInventoryOpenEvent(player, container); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, inventory.getName(), inventory.getSize())); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - return true; - } catch (Exception e) { - e.printStackTrace(); - bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); - return false; - } - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) {} - -} diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java deleted file mode 100644 index ebf7e28..0000000 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/InventoryAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_4_R1; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_4_R1.IInventory; -import org.bukkit.craftbukkit.v1_4_R1.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; - } - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - -} diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java deleted file mode 100644 index 21b283e..0000000 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/PlayerDataManager.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_4_R1; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import java.util.Arrays; -import java.util.Collection; -import net.minecraft.server.v1_4_R1.EntityPlayer; -import net.minecraft.server.v1_4_R1.MinecraftServer; -import net.minecraft.server.v1_4_R1.PlayerInteractManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_4_R1.CraftServer; -import org.bukkit.craftbukkit.v1_4_R1.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - - -public class PlayerDataManager implements IPlayerDataManager { - - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure the player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), offline.getName(), - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { - return offline.getName(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull String identifier) { - OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Arrays.asList(Bukkit.getOnlinePlayers()); - } - - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().f(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java deleted file mode 100644 index f4c436d..0000000 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SilentContainerChest.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_4_R1; - -import net.minecraft.server.v1_4_R1.ContainerChest; -import net.minecraft.server.v1_4_R1.EntityHuman; -import net.minecraft.server.v1_4_R1.IInventory; -import net.minecraft.server.v1_4_R1.ItemStack; -import net.minecraft.server.v1_4_R1.PlayerInventory; - -class SilentContainerChest extends ContainerChest { - - SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - // Send close signal - i2.f(); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != null) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(null); - entityHuman.drop(carried); - } - } - -} diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java deleted file mode 100644 index c62069d..0000000 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialEnderChest.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_4_R1; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; -import net.minecraft.server.v1_4_R1.EntityPlayer; -import net.minecraft.server.v1_4_R1.IInventory; -import net.minecraft.server.v1_4_R1.InventoryEnderChest; -import net.minecraft.server.v1_4_R1.InventorySubcontainer; -import net.minecraft.server.v1_4_R1.ItemStack; -import org.bukkit.craftbukkit.v1_4_R1.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_4_R1.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_4_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private final List transaction = new ArrayList(); - private boolean playerOnline; - private CraftPlayer owner; - private int maxStack = MAX_STACK; - - public SpecialEnderChest(Player player, Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getName(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.owner = nmsPlayer.getBukkitEntity(); - this.items = enderChest.getContents(); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.owner = nmsPlayer.getBukkitEntity(); - InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - return this.items; - } - - @Override - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - @Override - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - } - - @Override - public List getViewers() { - return transaction; - } - - @Override - public InventoryHolder getOwner() { - return this.owner; - } - - @Override - public void setMaxStackSize(int size) { - maxStack = size; - } - - @Override - public int getMaxStackSize() { - return maxStack; - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java b/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java deleted file mode 100644 index 219edff..0000000 --- a/internal/v1_4_R1/src/main/java/com/lishid/openinv/internal/v1_4_R1/SpecialPlayerInventory.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_4_R1; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import net.minecraft.server.v1_4_R1.ItemStack; -import net.minecraft.server.v1_4_R1.PlayerInventory; -import org.bukkit.craftbukkit.v1_4_R1.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final ItemStack[] extra = new ItemStack[5]; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - this.player.inventory.items = this.items; - this.player.inventory.armor = this.armor; - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(items, 0, contents, 0, items.length); - System.arraycopy(armor, 0, contents, items.length, armor.length); - return contents; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } - else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - else { - return null; - } - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - else { - return null; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } - else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - player.drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - player.defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - -} diff --git a/internal/v1_5_R2/pom.xml b/internal/v1_5_R2/pom.xml deleted file mode 100644 index 826c270..0000000 --- a/internal/v1_5_R2/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_5_R2 - OpenInvAdapter1_5_R2 - - - - org.bukkit - craftbukkit - 1.5.1-R0.2 - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java deleted file mode 100644 index 812c890..0000000 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/AnySilentContainer.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_5_R2; - -import com.lishid.openinv.internal.IAnySilentContainer; -import net.minecraft.server.v1_5_R2.AxisAlignedBB; -import net.minecraft.server.v1_5_R2.BlockEnderChest; -import net.minecraft.server.v1_5_R2.Container; -import net.minecraft.server.v1_5_R2.EntityOcelot; -import net.minecraft.server.v1_5_R2.EntityPlayer; -import net.minecraft.server.v1_5_R2.IInventory; -import net.minecraft.server.v1_5_R2.InventoryEnderChest; -import net.minecraft.server.v1_5_R2.InventoryLargeChest; -import net.minecraft.server.v1_5_R2.Packet100OpenWindow; -import net.minecraft.server.v1_5_R2.TileEntityChest; -import net.minecraft.server.v1_5_R2.TileEntityEnderChest; -import net.minecraft.server.v1_5_R2.World; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.craftbukkit.v1_5_R2.event.CraftEventFactory; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - @Override - public boolean isAnySilentContainer(@NotNull Block bukkitBlock) { - return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull Block bukkitBlock) { - // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - - if (bukkitBlock instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - // If block or ocelot on top - if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { - return true; - } - - int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - // If block next to chest is chest and has a block or ocelot on top - if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); - } else if(world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); - } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - return false; - } - - private boolean isBlockedChest(World world, int x, int y, int z) { - return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); - } - - private boolean hasOcelotOnTop(World world, int x, int y, int z) { - for (Object localEntity : world.a(EntityOcelot.class, - AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - return true; - } - - World world = player.world; - Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - return true; - } - - if (!(tile instanceof IInventory)) { - return false; - } - - IInventory inventory = (IInventory) tile; - int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); - } else if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); - } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); - } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); - } - - // AnyChest only - if (!silent) { - player.openContainer(inventory); - return true; - } - - // SilentChest - try { - // Call InventoryOpenEvent - Container container = new SilentContainerChest(player.inventory, inventory); - container = CraftEventFactory.callInventoryOpenEvent(player, container); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, inventory.getName(), inventory.getSize(), true)); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - return true; - } catch (Exception e) { - e.printStackTrace(); - bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); - return false; - } - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) {} - -} diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java deleted file mode 100644 index 4c4a9a8..0000000 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/InventoryAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_5_R2; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_5_R2.IInventory; -import org.bukkit.craftbukkit.v1_5_R2.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; - } - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - -} diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java deleted file mode 100644 index 676978f..0000000 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/PlayerDataManager.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_5_R2; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import java.util.Arrays; -import java.util.Collection; -import net.minecraft.server.v1_5_R2.EntityPlayer; -import net.minecraft.server.v1_5_R2.MinecraftServer; -import net.minecraft.server.v1_5_R2.PlayerInteractManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_5_R2.CraftServer; -import org.bukkit.craftbukkit.v1_5_R2.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure the player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), offline.getName(), - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { - return offline.getName(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull String identifier) { - OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Arrays.asList(Bukkit.getOnlinePlayers()); - } - - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().f(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java deleted file mode 100644 index 0c6f634..0000000 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SilentContainerChest.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_5_R2; - -import net.minecraft.server.v1_5_R2.ContainerChest; -import net.minecraft.server.v1_5_R2.EntityHuman; -import net.minecraft.server.v1_5_R2.IInventory; -import net.minecraft.server.v1_5_R2.ItemStack; -import net.minecraft.server.v1_5_R2.PlayerInventory; - -class SilentContainerChest extends ContainerChest { - - SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - // Send close signal - i2.g(); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != null) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(null); - entityHuman.drop(carried); - } - } - -} diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java deleted file mode 100644 index 611439b..0000000 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialEnderChest.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_5_R2; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; -import net.minecraft.server.v1_5_R2.EntityPlayer; -import net.minecraft.server.v1_5_R2.IInventory; -import net.minecraft.server.v1_5_R2.InventoryEnderChest; -import net.minecraft.server.v1_5_R2.InventorySubcontainer; -import net.minecraft.server.v1_5_R2.ItemStack; -import org.bukkit.craftbukkit.v1_5_R2.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_5_R2.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_5_R2.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private final List transaction = new ArrayList(); - private boolean playerOnline; - private CraftPlayer owner; - private int maxStack = MAX_STACK; - - public SpecialEnderChest(Player player, Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getName(), - PlayerDataManager.getHandle(player).getEnderChest().c(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.owner = nmsPlayer.getBukkitEntity(); - this.items = enderChest.getContents(); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.owner = nmsPlayer.getBukkitEntity(); - InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - return this.items; - } - - @Override - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - @Override - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - } - - @Override - public List getViewers() { - return transaction; - } - - @Override - public InventoryHolder getOwner() { - return this.owner; - } - - @Override - public void setMaxStackSize(int size) { - maxStack = size; - } - - @Override - public int getMaxStackSize() { - return maxStack; - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java b/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java deleted file mode 100644 index 45668b9..0000000 --- a/internal/v1_5_R2/src/main/java/com/lishid/openinv/internal/v1_5_R2/SpecialPlayerInventory.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_5_R2; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import net.minecraft.server.v1_5_R2.ItemStack; -import net.minecraft.server.v1_5_R2.PlayerInventory; -import org.bukkit.craftbukkit.v1_5_R2.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final ItemStack[] extra = new ItemStack[5]; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - this.player.inventory.items = this.items; - this.player.inventory.armor = this.armor; - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(items, 0, contents, 0, items.length); - System.arraycopy(armor, 0, contents, items.length, armor.length); - return contents; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - - return null; - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - - return null; - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - player.drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - player.defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - -} diff --git a/internal/v1_5_R3/pom.xml b/internal/v1_5_R3/pom.xml deleted file mode 100644 index 1c024a9..0000000 --- a/internal/v1_5_R3/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_5_R3 - OpenInvAdapter1_5_R3 - - - - org.bukkit - craftbukkit - 1.5.2-R1.0 - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java deleted file mode 100644 index f138bcd..0000000 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/AnySilentContainer.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_5_R3; - -import com.lishid.openinv.internal.IAnySilentContainer; -import net.minecraft.server.v1_5_R3.AxisAlignedBB; -import net.minecraft.server.v1_5_R3.BlockEnderChest; -import net.minecraft.server.v1_5_R3.Container; -import net.minecraft.server.v1_5_R3.EntityOcelot; -import net.minecraft.server.v1_5_R3.EntityPlayer; -import net.minecraft.server.v1_5_R3.IInventory; -import net.minecraft.server.v1_5_R3.InventoryEnderChest; -import net.minecraft.server.v1_5_R3.InventoryLargeChest; -import net.minecraft.server.v1_5_R3.Packet100OpenWindow; -import net.minecraft.server.v1_5_R3.TileEntityChest; -import net.minecraft.server.v1_5_R3.TileEntityEnderChest; -import net.minecraft.server.v1_5_R3.World; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.craftbukkit.v1_5_R3.event.CraftEventFactory; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - @Override - public boolean isAnySilentContainer(@NotNull Block bukkitBlock) { - return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull Block bukkitBlock) { - // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - - if (bukkitBlock instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - // If block or ocelot on top - if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { - return true; - } - - int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - // If block next to chest is chest and has a block or ocelot on top - if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); - } else if(world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); - } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - return false; - } - - private boolean isBlockedChest(World world, int x, int y, int z) { - return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); - } - - private boolean hasOcelotOnTop(World world, int x, int y, int z) { - for (Object localEntity : world.a(EntityOcelot.class, - AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - return true; - } - - World world = player.world; - Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - return true; - } - - if (!(tile instanceof IInventory)) { - return false; - } - - IInventory inventory = (IInventory) tile; - int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); - } else if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); - } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); - } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); - } - - // AnyChest only - if (!silent) { - player.openContainer(inventory); - return true; - } - - // SilentChest - try { - // Call InventoryOpenEvent - Container container = new SilentContainerChest(player.inventory, inventory); - container = CraftEventFactory.callInventoryOpenEvent(player, container); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, inventory.getName(), inventory.getSize(), true)); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - return true; - } catch (Exception e) { - e.printStackTrace(); - bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); - return false; - } - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) {} - -} diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java deleted file mode 100644 index f7dab0f..0000000 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/InventoryAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_5_R3; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_5_R3.IInventory; -import org.bukkit.craftbukkit.v1_5_R3.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; - } - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - -} diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java deleted file mode 100644 index d596fcc..0000000 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/PlayerDataManager.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_5_R3; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import java.util.Arrays; -import java.util.Collection; -import net.minecraft.server.v1_5_R3.EntityPlayer; -import net.minecraft.server.v1_5_R3.MinecraftServer; -import net.minecraft.server.v1_5_R3.PlayerInteractManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_5_R3.CraftServer; -import org.bukkit.craftbukkit.v1_5_R3.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure the player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), offline.getName(), - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { - return offline.getName(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull String identifier) { - OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Arrays.asList(Bukkit.getOnlinePlayers()); - } - - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java deleted file mode 100644 index a65a051..0000000 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SilentContainerChest.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_5_R3; - -import net.minecraft.server.v1_5_R3.ContainerChest; -import net.minecraft.server.v1_5_R3.EntityHuman; -import net.minecraft.server.v1_5_R3.IInventory; -import net.minecraft.server.v1_5_R3.ItemStack; -import net.minecraft.server.v1_5_R3.PlayerInventory; - -class SilentContainerChest extends ContainerChest { - - SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - // Send close signal - i2.g(); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != null) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(null); - entityHuman.drop(carried); - } - } - -} diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java deleted file mode 100644 index 98f326c..0000000 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialEnderChest.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_5_R3; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; -import net.minecraft.server.v1_5_R3.EntityPlayer; -import net.minecraft.server.v1_5_R3.IInventory; -import net.minecraft.server.v1_5_R3.InventoryEnderChest; -import net.minecraft.server.v1_5_R3.InventorySubcontainer; -import net.minecraft.server.v1_5_R3.ItemStack; -import org.bukkit.craftbukkit.v1_5_R3.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_5_R3.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_5_R3.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private final List transaction = new ArrayList(); - private boolean playerOnline; - private CraftPlayer owner; - private int maxStack = MAX_STACK; - - public SpecialEnderChest(Player player, Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getName(), - PlayerDataManager.getHandle(player).getEnderChest().c(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.owner = nmsPlayer.getBukkitEntity(); - this.items = enderChest.getContents(); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.owner = nmsPlayer.getBukkitEntity(); - InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - return this.items; - } - - @Override - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - @Override - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - } - - @Override - public List getViewers() { - return transaction; - } - - @Override - public InventoryHolder getOwner() { - return this.owner; - } - - @Override - public void setMaxStackSize(int size) { - maxStack = size; - } - - @Override - public int getMaxStackSize() { - return maxStack; - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java b/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java deleted file mode 100644 index 269066c..0000000 --- a/internal/v1_5_R3/src/main/java/com/lishid/openinv/internal/v1_5_R3/SpecialPlayerInventory.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_5_R3; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import net.minecraft.server.v1_5_R3.ItemStack; -import net.minecraft.server.v1_5_R3.PlayerInventory; -import org.bukkit.craftbukkit.v1_5_R3.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final ItemStack[] extra = new ItemStack[5]; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - this.player.inventory.items = this.items; - this.player.inventory.armor = this.armor; - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(items, 0, contents, 0, items.length); - System.arraycopy(armor, 0, contents, items.length, armor.length); - return contents; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - - return null; - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - - return null; - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - player.drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - player.defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - -} diff --git a/internal/v1_6_R1/pom.xml b/internal/v1_6_R1/pom.xml deleted file mode 100644 index b7b1799..0000000 --- a/internal/v1_6_R1/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_6_R1 - OpenInvAdapter1_6_R1 - - - - org.bukkit - craftbukkit - 1.6.1-R0.1-SNAPSHOT - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java deleted file mode 100644 index 8451e89..0000000 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/AnySilentContainer.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_6_R1; - -import com.lishid.openinv.internal.IAnySilentContainer; -import net.minecraft.server.v1_6_R1.AxisAlignedBB; -import net.minecraft.server.v1_6_R1.BlockEnderChest; -import net.minecraft.server.v1_6_R1.Container; -import net.minecraft.server.v1_6_R1.EntityOcelot; -import net.minecraft.server.v1_6_R1.EntityPlayer; -import net.minecraft.server.v1_6_R1.IInventory; -import net.minecraft.server.v1_6_R1.InventoryEnderChest; -import net.minecraft.server.v1_6_R1.InventoryLargeChest; -import net.minecraft.server.v1_6_R1.Packet100OpenWindow; -import net.minecraft.server.v1_6_R1.TileEntityChest; -import net.minecraft.server.v1_6_R1.TileEntityEnderChest; -import net.minecraft.server.v1_6_R1.World; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.craftbukkit.v1_6_R1.event.CraftEventFactory; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - @Override - public boolean isAnySilentContainer(@NotNull Block bukkitBlock) { - return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull Block bukkitBlock) { - // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - - if (bukkitBlock instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - // If block or ocelot on top - if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { - return true; - } - - int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - // If block next to chest is chest and has a block or ocelot on top - if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); - } else if(world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); - } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - return false; - } - - private boolean isBlockedChest(World world, int x, int y, int z) { - return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); - } - - private boolean hasOcelotOnTop(World world, int x, int y, int z) { - for (Object localEntity : world.a(EntityOcelot.class, - AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - return true; - } - - World world = player.world; - Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - return true; - } - - if (!(tile instanceof IInventory)) { - return false; - } - - IInventory inventory = (IInventory) tile; - int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); - } else if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); - } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); - } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); - } - - // AnyChest only - if (!silent) { - player.openContainer(inventory); - return true; - } - - // SilentChest - try { - // Call InventoryOpenEvent - Container container = new SilentContainerChest(player.inventory, inventory); - container = CraftEventFactory.callInventoryOpenEvent(player, container); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, inventory.getName(), inventory.getSize(), true)); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - return true; - } catch (Exception e) { - e.printStackTrace(); - bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); - return false; - } - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) {} - -} diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java deleted file mode 100644 index 768f1b4..0000000 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/InventoryAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_6_R1; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_6_R1.IInventory; -import org.bukkit.craftbukkit.v1_6_R1.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; - } - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - -} diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java deleted file mode 100644 index 63d32d0..0000000 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/PlayerDataManager.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_6_R1; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import java.util.Arrays; -import java.util.Collection; -import net.minecraft.server.v1_6_R1.EntityPlayer; -import net.minecraft.server.v1_6_R1.MinecraftServer; -import net.minecraft.server.v1_6_R1.PlayerInteractManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_6_R1.CraftServer; -import org.bukkit.craftbukkit.v1_6_R1.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure the player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), offline.getName(), - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { - return offline.getName(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull String identifier) { - OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Arrays.asList(Bukkit.getOnlinePlayers()); - } - - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java deleted file mode 100644 index 1f17c6e..0000000 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SilentContainerChest.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_6_R1; - -import net.minecraft.server.v1_6_R1.ContainerChest; -import net.minecraft.server.v1_6_R1.EntityHuman; -import net.minecraft.server.v1_6_R1.IInventory; -import net.minecraft.server.v1_6_R1.ItemStack; -import net.minecraft.server.v1_6_R1.PlayerInventory; - -class SilentContainerChest extends ContainerChest { - - SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - // Send close signal - i2.g(); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != null) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(null); - entityHuman.drop(carried); - } - } - -} diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java deleted file mode 100644 index d3e1a3e..0000000 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialEnderChest.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_6_R1; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; -import net.minecraft.server.v1_6_R1.EntityPlayer; -import net.minecraft.server.v1_6_R1.IInventory; -import net.minecraft.server.v1_6_R1.InventoryEnderChest; -import net.minecraft.server.v1_6_R1.InventorySubcontainer; -import net.minecraft.server.v1_6_R1.ItemStack; -import org.bukkit.craftbukkit.v1_6_R1.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_6_R1.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_6_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private final List transaction = new ArrayList(); - private boolean playerOnline; - private CraftPlayer owner; - private int maxStack = MAX_STACK; - - public SpecialEnderChest(Player player, Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getName(), - PlayerDataManager.getHandle(player).getEnderChest().c(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.owner = nmsPlayer.getBukkitEntity(); - this.items = enderChest.getContents(); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.owner = nmsPlayer.getBukkitEntity(); - InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - return this.items; - } - - @Override - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - @Override - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - } - - @Override - public List getViewers() { - return transaction; - } - - @Override - public InventoryHolder getOwner() { - return this.owner; - } - - @Override - public void setMaxStackSize(int size) { - maxStack = size; - } - - @Override - public int getMaxStackSize() { - return maxStack; - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java b/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java deleted file mode 100644 index 9ddacd6..0000000 --- a/internal/v1_6_R1/src/main/java/com/lishid/openinv/internal/v1_6_R1/SpecialPlayerInventory.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_6_R1; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import net.minecraft.server.v1_6_R1.ItemStack; -import net.minecraft.server.v1_6_R1.PlayerInventory; -import org.bukkit.craftbukkit.v1_6_R1.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final ItemStack[] extra = new ItemStack[5]; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - this.player.inventory.items = this.items; - this.player.inventory.armor = this.armor; - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(items, 0, contents, 0, items.length); - System.arraycopy(armor, 0, contents, items.length, armor.length); - return contents; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - - return null; - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - - return null; - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - player.drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - player.defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - -} diff --git a/internal/v1_6_R2/pom.xml b/internal/v1_6_R2/pom.xml deleted file mode 100644 index 4e2418e..0000000 --- a/internal/v1_6_R2/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_6_R2 - OpenInvAdapter1_6_R2 - - - - org.bukkit - craftbukkit - 1.6.2-R1.0 - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java deleted file mode 100644 index 63ae036..0000000 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/AnySilentContainer.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_6_R2; - -import com.lishid.openinv.internal.IAnySilentContainer; -import net.minecraft.server.v1_6_R2.AxisAlignedBB; -import net.minecraft.server.v1_6_R2.BlockEnderChest; -import net.minecraft.server.v1_6_R2.Container; -import net.minecraft.server.v1_6_R2.EntityOcelot; -import net.minecraft.server.v1_6_R2.EntityPlayer; -import net.minecraft.server.v1_6_R2.IInventory; -import net.minecraft.server.v1_6_R2.InventoryEnderChest; -import net.minecraft.server.v1_6_R2.InventoryLargeChest; -import net.minecraft.server.v1_6_R2.Packet100OpenWindow; -import net.minecraft.server.v1_6_R2.TileEntityChest; -import net.minecraft.server.v1_6_R2.TileEntityEnderChest; -import net.minecraft.server.v1_6_R2.World; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - @Override - public boolean isAnySilentContainer(@NotNull Block bukkitBlock) { - return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull Block bukkitBlock) { - // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - - if (bukkitBlock instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - // If block or ocelot on top - if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { - return true; - } - - int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - // If block next to chest is chest and has a block or ocelot on top - if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); - } else if(world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); - } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - return false; - } - - private boolean isBlockedChest(World world, int x, int y, int z) { - return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); - } - - private boolean hasOcelotOnTop(World world, int x, int y, int z) { - for (Object localEntity : world.a(EntityOcelot.class, - AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - return true; - } - - World world = player.world; - Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - return true; - } - - if (!(tile instanceof IInventory)) { - return false; - } - - IInventory inventory = (IInventory) tile; - int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); - } else if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); - } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); - } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); - } - - // AnyChest only - if (!silent) { - player.openContainer(inventory); - return true; - } - - // SilentChest - try { - // Call InventoryOpenEvent - Container container = new SilentContainerChest(player.inventory, inventory); - container = CraftEventFactory.callInventoryOpenEvent(player, container); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, inventory.getName(), inventory.getSize(), true)); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - return true; - } catch (Exception e) { - e.printStackTrace(); - bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); - return false; - } - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) {} - -} diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java deleted file mode 100644 index e01d6f0..0000000 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/InventoryAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_6_R2; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_6_R2.IInventory; -import org.bukkit.craftbukkit.v1_6_R2.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; - } - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - -} diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java deleted file mode 100644 index 8d1066c..0000000 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/PlayerDataManager.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_6_R2; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import java.util.Arrays; -import java.util.Collection; -import net.minecraft.server.v1_6_R2.EntityPlayer; -import net.minecraft.server.v1_6_R2.MinecraftServer; -import net.minecraft.server.v1_6_R2.PlayerInteractManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_6_R2.CraftServer; -import org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure the player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), offline.getName(), - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { - return offline.getName(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull String identifier) { - OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Arrays.asList(Bukkit.getOnlinePlayers()); - } - - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java deleted file mode 100644 index 426a6b3..0000000 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SilentContainerChest.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_6_R2; - -import net.minecraft.server.v1_6_R2.ContainerChest; -import net.minecraft.server.v1_6_R2.EntityHuman; -import net.minecraft.server.v1_6_R2.IInventory; -import net.minecraft.server.v1_6_R2.ItemStack; -import net.minecraft.server.v1_6_R2.PlayerInventory; - -class SilentContainerChest extends ContainerChest { - - SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - // Send close signal - i2.g(); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != null) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(null); - entityHuman.drop(carried); - } - } - -} diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java deleted file mode 100644 index 431b4e3..0000000 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialEnderChest.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_6_R2; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; -import net.minecraft.server.v1_6_R2.EntityPlayer; -import net.minecraft.server.v1_6_R2.IInventory; -import net.minecraft.server.v1_6_R2.InventoryEnderChest; -import net.minecraft.server.v1_6_R2.InventorySubcontainer; -import net.minecraft.server.v1_6_R2.ItemStack; -import org.bukkit.craftbukkit.v1_6_R2.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_6_R2.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private final List transaction = new ArrayList(); - private boolean playerOnline; - private CraftPlayer owner; - private int maxStack = MAX_STACK; - - public SpecialEnderChest(Player player, Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getName(), - PlayerDataManager.getHandle(player).getEnderChest().c(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.owner = nmsPlayer.getBukkitEntity(); - this.items = enderChest.getContents(); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.owner = nmsPlayer.getBukkitEntity(); - InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - return this.items; - } - - @Override - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - @Override - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - } - - @Override - public List getViewers() { - return transaction; - } - - @Override - public InventoryHolder getOwner() { - return this.owner; - } - - @Override - public void setMaxStackSize(int size) { - maxStack = size; - } - - @Override - public int getMaxStackSize() { - return maxStack; - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java b/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java deleted file mode 100644 index bd52442..0000000 --- a/internal/v1_6_R2/src/main/java/com/lishid/openinv/internal/v1_6_R2/SpecialPlayerInventory.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_6_R2; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import net.minecraft.server.v1_6_R2.ItemStack; -import net.minecraft.server.v1_6_R2.PlayerInventory; -import org.bukkit.craftbukkit.v1_6_R2.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final ItemStack[] extra = new ItemStack[5]; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - this.player.inventory.items = this.items; - this.player.inventory.armor = this.armor; - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(items, 0, contents, 0, items.length); - System.arraycopy(armor, 0, contents, items.length, armor.length); - return contents; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - - return null; - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - - return null; - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - player.drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - player.defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - -} diff --git a/internal/v1_6_R3/pom.xml b/internal/v1_6_R3/pom.xml deleted file mode 100644 index 8ada373..0000000 --- a/internal/v1_6_R3/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_6_R3 - OpenInvAdapter1_6_R3 - - - - org.bukkit - craftbukkit - 1.6.4-R2.0 - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java deleted file mode 100644 index 26f8921..0000000 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/AnySilentContainer.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_6_R3; - -import com.lishid.openinv.internal.IAnySilentContainer; -import net.minecraft.server.v1_6_R3.AxisAlignedBB; -import net.minecraft.server.v1_6_R3.BlockEnderChest; -import net.minecraft.server.v1_6_R3.Container; -import net.minecraft.server.v1_6_R3.EntityOcelot; -import net.minecraft.server.v1_6_R3.EntityPlayer; -import net.minecraft.server.v1_6_R3.IInventory; -import net.minecraft.server.v1_6_R3.InventoryEnderChest; -import net.minecraft.server.v1_6_R3.InventoryLargeChest; -import net.minecraft.server.v1_6_R3.Packet100OpenWindow; -import net.minecraft.server.v1_6_R3.TileEntityChest; -import net.minecraft.server.v1_6_R3.TileEntityEnderChest; -import net.minecraft.server.v1_6_R3.World; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.craftbukkit.v1_6_R3.event.CraftEventFactory; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - @Override - public boolean isAnySilentContainer(@NotNull Block bukkitBlock) { - return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull Block bukkitBlock) { - // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - - if (bukkitBlock instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - // If block or ocelot on top - if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { - return true; - } - - int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - // If block next to chest is chest and has a block or ocelot on top - if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); - } else if(world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); - } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - return false; - } - - private boolean isBlockedChest(World world, int x, int y, int z) { - return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); - } - - private boolean hasOcelotOnTop(World world, int x, int y, int z) { - for (Object localEntity : world.a(EntityOcelot.class, - AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - return true; - } - - World world = player.world; - Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - return true; - } - - if (!(tile instanceof IInventory)) { - return false; - } - - IInventory inventory = (IInventory) tile; - int id = world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); - } else if (world.getTypeId(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); - } else if (world.getTypeId(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); - } else if (world.getTypeId(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); - } - - // AnyChest only - if (!silent) { - player.openContainer(inventory); - return true; - } - - // SilentChest - try { - // Call InventoryOpenEvent - Container container = new SilentContainerChest(player.inventory, inventory); - container = CraftEventFactory.callInventoryOpenEvent(player, container); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new Packet100OpenWindow(windowId, 0, inventory.getName(), inventory.getSize(), true)); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - return true; - } catch (Exception e) { - e.printStackTrace(); - bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); - return false; - } - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) {} - -} diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java deleted file mode 100644 index ae411ec..0000000 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/InventoryAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_6_R3; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_6_R3.IInventory; -import org.bukkit.craftbukkit.v1_6_R3.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; - } - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - -} diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java deleted file mode 100644 index ca50c18..0000000 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/PlayerDataManager.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_6_R3; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import java.util.Arrays; -import java.util.Collection; -import net.minecraft.server.v1_6_R3.EntityPlayer; -import net.minecraft.server.v1_6_R3.MinecraftServer; -import net.minecraft.server.v1_6_R3.PlayerInteractManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_6_R3.CraftServer; -import org.bukkit.craftbukkit.v1_6_R3.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure the player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - - // Create an entity to load the player data - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), offline.getName(), - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { - return offline.getName(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull String identifier) { - OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Arrays.asList(Bukkit.getOnlinePlayers()); - } - - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java deleted file mode 100644 index fc4f245..0000000 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SilentContainerChest.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_6_R3; - -import net.minecraft.server.v1_6_R3.ContainerChest; -import net.minecraft.server.v1_6_R3.EntityHuman; -import net.minecraft.server.v1_6_R3.IInventory; -import net.minecraft.server.v1_6_R3.ItemStack; -import net.minecraft.server.v1_6_R3.PlayerInventory; - -class SilentContainerChest extends ContainerChest { - - SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - // Send close signal - i2.g(); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != null) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(null); - entityHuman.drop(carried); - } - } - -} diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java deleted file mode 100644 index c6770c5..0000000 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialEnderChest.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_6_R3; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; -import net.minecraft.server.v1_6_R3.EntityPlayer; -import net.minecraft.server.v1_6_R3.IInventory; -import net.minecraft.server.v1_6_R3.InventoryEnderChest; -import net.minecraft.server.v1_6_R3.InventorySubcontainer; -import net.minecraft.server.v1_6_R3.ItemStack; -import org.bukkit.craftbukkit.v1_6_R3.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_6_R3.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_6_R3.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private final List transaction = new ArrayList(); - private boolean playerOnline; - private CraftPlayer owner; - private int maxStack = MAX_STACK; - - public SpecialEnderChest(Player player, Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getName(), - PlayerDataManager.getHandle(player).getEnderChest().c(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.owner = nmsPlayer.getBukkitEntity(); - this.items = enderChest.getContents(); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.owner = nmsPlayer.getBukkitEntity(); - InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - return this.items; - } - - @Override - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - @Override - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - } - - @Override - public List getViewers() { - return transaction; - } - - @Override - public InventoryHolder getOwner() { - return this.owner; - } - - @Override - public void setMaxStackSize(int size) { - maxStack = size; - } - - @Override - public int getMaxStackSize() { - return maxStack; - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java b/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java deleted file mode 100644 index 176d3b0..0000000 --- a/internal/v1_6_R3/src/main/java/com/lishid/openinv/internal/v1_6_R3/SpecialPlayerInventory.java +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_6_R3; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import net.minecraft.server.v1_6_R3.ItemStack; -import net.minecraft.server.v1_6_R3.PlayerInventory; -import org.bukkit.craftbukkit.v1_6_R3.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final ItemStack[] extra = new ItemStack[5]; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - this.player.inventory.items = this.items; - this.player.inventory.armor = this.armor; - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(items, 0, contents, 0, items.length); - System.arraycopy(armor, 0, contents, items.length, armor.length); - return contents; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - - return null; - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - - return null; - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - player.drop(itemstack); - itemstack = null; - } - - is[i] = itemstack; - - player.defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) - return i - 27; - else - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) - return 3; - if (i == 1) - return 2; - if (i == 2) - return 1; - if (i == 3) - return 0; - else - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - -} diff --git a/internal/v1_7_R1/pom.xml b/internal/v1_7_R1/pom.xml deleted file mode 100644 index 12ef8cb..0000000 --- a/internal/v1_7_R1/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_7_R1 - OpenInvAdapter1_7_R1 - - - - org.bukkit - craftbukkit - 1.7.2-R0.4 - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java deleted file mode 100644 index 0908f23..0000000 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/AnySilentContainer.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R1; - -import com.lishid.openinv.internal.IAnySilentContainer; -import net.minecraft.server.v1_7_R1.AxisAlignedBB; -import net.minecraft.server.v1_7_R1.Block; -import net.minecraft.server.v1_7_R1.BlockEnderChest; -import net.minecraft.server.v1_7_R1.Container; -import net.minecraft.server.v1_7_R1.EntityOcelot; -import net.minecraft.server.v1_7_R1.EntityPlayer; -import net.minecraft.server.v1_7_R1.IInventory; -import net.minecraft.server.v1_7_R1.InventoryEnderChest; -import net.minecraft.server.v1_7_R1.InventoryLargeChest; -import net.minecraft.server.v1_7_R1.PacketPlayOutOpenWindow; -import net.minecraft.server.v1_7_R1.TileEntityChest; -import net.minecraft.server.v1_7_R1.TileEntityEnderChest; -import net.minecraft.server.v1_7_R1.World; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - @Override - public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { - return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { - // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - - if (bukkitBlock instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - // If block or ocelot on top - if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { - return true; - } - - int id = Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ())); - - // If block next to chest is chest and has a block or ocelot on top - if (Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); - } else if(Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1)) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); - } else if (Block.b(world.getType(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { - return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } else if (Block.b(world.getType(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { - return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - return false; - } - - private boolean isBlockedChest(World world, int x, int y, int z) { - return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); - } - - private boolean hasOcelotOnTop(World world, int x, int y, int z) { - for (Object localEntity : world.a(EntityOcelot.class, - AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - return true; - } - - World world = player.world; - Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - return true; - } - - if (!(tile instanceof IInventory)) { - return false; - } - - IInventory inventory = (IInventory) tile; - int id = Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ())); - - if (Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); - } else if(Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1)) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); - } else if (Block.b(world.getType(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); - } else if (Block.b(world.getType(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); - } - - // AnyChest only - if (!silent) { - player.openContainer(inventory); - return true; - } - - // SilentChest - try { - // Call InventoryOpenEvent - Container container = new SilentContainerChest(player.inventory, inventory); - container = CraftEventFactory.callInventoryOpenEvent(player, container); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, inventory.getInventoryName(), inventory.getSize(), true)); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - return true; - } catch (Exception e) { - e.printStackTrace(); - bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); - return false; - } - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) {} - -} diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java deleted file mode 100644 index b814c1a..0000000 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/InventoryAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R1; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_7_R1.IInventory; -import org.bukkit.craftbukkit.v1_7_R1.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; - } - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - -} diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java deleted file mode 100644 index 76c78b5..0000000 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/PlayerDataManager.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R1; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import java.util.Arrays; -import java.util.Collection; -import net.minecraft.server.v1_7_R1.EntityPlayer; -import net.minecraft.server.v1_7_R1.MinecraftServer; -import net.minecraft.server.v1_7_R1.PlayerInteractManager; -import net.minecraft.util.com.mojang.authlib.GameProfile; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_7_R1.CraftServer; -import org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure the player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - // Create a profile and entity to load the player data - GameProfile profile = new GameProfile(null, offline.getName()); - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { - return offline.getName(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull String identifier) { - OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Arrays.asList(Bukkit.getOnlinePlayers()); - } - - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java deleted file mode 100644 index bb8c4f1..0000000 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SilentContainerChest.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R1; - -import net.minecraft.server.v1_7_R1.ContainerChest; -import net.minecraft.server.v1_7_R1.EntityHuman; -import net.minecraft.server.v1_7_R1.IInventory; -import net.minecraft.server.v1_7_R1.ItemStack; -import net.minecraft.server.v1_7_R1.PlayerInventory; - -class SilentContainerChest extends ContainerChest { - - SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - // Send close signal - i2.l_(); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != null) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(null); - entityHuman.drop(carried, false); - } - } - -} diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java deleted file mode 100644 index 223cb91..0000000 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialEnderChest.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R1; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; -import net.minecraft.server.v1_7_R1.EntityPlayer; -import net.minecraft.server.v1_7_R1.IInventory; -import net.minecraft.server.v1_7_R1.InventoryEnderChest; -import net.minecraft.server.v1_7_R1.InventorySubcontainer; -import net.minecraft.server.v1_7_R1.ItemStack; -import org.bukkit.craftbukkit.v1_7_R1.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_7_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private final List transaction = new ArrayList(); - private boolean playerOnline; - private CraftPlayer owner; - private int maxStack = MAX_STACK; - - public SpecialEnderChest(Player player, Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getInventoryName(), - PlayerDataManager.getHandle(player).getEnderChest().k_(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.owner = nmsPlayer.getBukkitEntity(); - this.items = enderChest.getContents(); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.owner = nmsPlayer.getBukkitEntity(); - InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - return this.items; - } - - @Override - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - @Override - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - } - - @Override - public List getViewers() { - return transaction; - } - - @Override - public InventoryHolder getOwner() { - return this.owner; - } - - @Override - public void setMaxStackSize(int size) { - maxStack = size; - } - - @Override - public int getMaxStackSize() { - return maxStack; - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java b/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java deleted file mode 100644 index 9a5a742..0000000 --- a/internal/v1_7_R1/src/main/java/com/lishid/openinv/internal/v1_7_R1/SpecialPlayerInventory.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R1; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import net.minecraft.server.v1_7_R1.ItemStack; -import net.minecraft.server.v1_7_R1.PlayerInventory; -import org.bukkit.craftbukkit.v1_7_R1.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final ItemStack[] extra = new ItemStack[5]; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - this.player.inventory.items = this.items; - this.player.inventory.armor = this.armor; - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(items, 0, contents, 0, items.length); - System.arraycopy(armor, 0, contents, items.length, armor.length); - return contents; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - - return null; - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - - return null; - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - player.drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - player.defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - @Override - public String getInventoryName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - -} diff --git a/internal/v1_7_R2/pom.xml b/internal/v1_7_R2/pom.xml deleted file mode 100644 index 7ae5e06..0000000 --- a/internal/v1_7_R2/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_7_R2 - OpenInvAdapter1_7_R2 - - - - org.bukkit - craftbukkit - 1.7.5-R0.1 - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java deleted file mode 100644 index 18897db..0000000 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/AnySilentContainer.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R2; - -import com.lishid.openinv.internal.IAnySilentContainer; -import net.minecraft.server.v1_7_R2.AxisAlignedBB; -import net.minecraft.server.v1_7_R2.Block; -import net.minecraft.server.v1_7_R2.BlockEnderChest; -import net.minecraft.server.v1_7_R2.Container; -import net.minecraft.server.v1_7_R2.EntityOcelot; -import net.minecraft.server.v1_7_R2.EntityPlayer; -import net.minecraft.server.v1_7_R2.IInventory; -import net.minecraft.server.v1_7_R2.InventoryEnderChest; -import net.minecraft.server.v1_7_R2.InventoryLargeChest; -import net.minecraft.server.v1_7_R2.PacketPlayOutOpenWindow; -import net.minecraft.server.v1_7_R2.TileEntityChest; -import net.minecraft.server.v1_7_R2.TileEntityEnderChest; -import net.minecraft.server.v1_7_R2.World; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.craftbukkit.v1_7_R2.event.CraftEventFactory; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - @Override - public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { - return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { - // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - - if (bukkitBlock instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - // If block or ocelot on top - if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { - return true; - } - - int id = Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ())); - - // If block next to chest is chest and has a block or ocelot on top - if (Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); - } else if(Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1)) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); - } else if (Block.b(world.getType(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { - return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } else if (Block.b(world.getType(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { - return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - return false; - } - - private boolean isBlockedChest(World world, int x, int y, int z) { - return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); - } - - private boolean hasOcelotOnTop(World world, int x, int y, int z) { - for (Object localEntity : world.a(EntityOcelot.class, - AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - return true; - } - - World world = player.world; - Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - return true; - } - - if (!(tile instanceof IInventory)) { - return false; - } - - IInventory inventory = (IInventory) tile; - int id = Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ())); - - if (Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); - } else if(Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1)) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); - } else if (Block.b(world.getType(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); - } else if (Block.b(world.getType(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); - } - - // AnyChest only - if (!silent) { - player.openContainer(inventory); - return true; - } - - // SilentChest - try { - // Call InventoryOpenEvent - Container container = new SilentContainerChest(player.inventory, inventory); - container = CraftEventFactory.callInventoryOpenEvent(player, container); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, inventory.getInventoryName(), inventory.getSize(), true)); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - return true; - } catch (Exception e) { - e.printStackTrace(); - bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); - return false; - } - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) {} - -} diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java deleted file mode 100644 index 906fad9..0000000 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/InventoryAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R2; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_7_R2.IInventory; -import org.bukkit.craftbukkit.v1_7_R2.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; - } - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - -} diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java deleted file mode 100644 index 5124854..0000000 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/PlayerDataManager.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R2; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import java.util.Arrays; -import java.util.Collection; -import net.minecraft.server.v1_7_R2.EntityPlayer; -import net.minecraft.server.v1_7_R2.MinecraftServer; -import net.minecraft.server.v1_7_R2.PlayerInteractManager; -import net.minecraft.util.com.mojang.authlib.GameProfile; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_7_R2.CraftServer; -import org.bukkit.craftbukkit.v1_7_R2.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -@SuppressWarnings("deprecation") // Deprecated methods are used properly and will not change. -public class PlayerDataManager implements IPlayerDataManager { - - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure the player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - // Create a profile and entity to load the player data - GameProfile profile = new GameProfile(null, offline.getName()); - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { - return offline.getName(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull String identifier) { - OfflinePlayer player = Bukkit.getOfflinePlayer(identifier); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Arrays.asList(Bukkit.getOnlinePlayers()); - } - - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java deleted file mode 100644 index fd28ed9..0000000 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SilentContainerChest.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R2; - -import net.minecraft.server.v1_7_R2.ContainerChest; -import net.minecraft.server.v1_7_R2.EntityHuman; -import net.minecraft.server.v1_7_R2.IInventory; -import net.minecraft.server.v1_7_R2.ItemStack; -import net.minecraft.server.v1_7_R2.PlayerInventory; - -class SilentContainerChest extends ContainerChest { - - SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - // Send close signal - i2.l_(); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != null) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(null); - entityHuman.drop(carried, false); - } - } - -} diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java deleted file mode 100644 index f7ac8d5..0000000 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialEnderChest.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R2; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; -import net.minecraft.server.v1_7_R2.EntityPlayer; -import net.minecraft.server.v1_7_R2.IInventory; -import net.minecraft.server.v1_7_R2.InventoryEnderChest; -import net.minecraft.server.v1_7_R2.InventorySubcontainer; -import net.minecraft.server.v1_7_R2.ItemStack; -import org.bukkit.craftbukkit.v1_7_R2.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_7_R2.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_7_R2.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private final List transaction = new ArrayList(); - private boolean playerOnline; - private CraftPlayer owner; - private int maxStack = MAX_STACK; - - public SpecialEnderChest(Player player, Boolean online) { - super(((CraftPlayer) player).getHandle().getEnderChest().getInventoryName(), - ((CraftPlayer) player).getHandle().getEnderChest().k_(), - ((CraftPlayer) player).getHandle().getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.owner = nmsPlayer.getBukkitEntity(); - this.items = enderChest.getContents(); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.owner = nmsPlayer.getBukkitEntity(); - InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - return this.items; - } - - @Override - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - @Override - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - } - - @Override - public List getViewers() { - return transaction; - } - - @Override - public InventoryHolder getOwner() { - return this.owner; - } - - @Override - public void setMaxStackSize(int size) { - maxStack = size; - } - - @Override - public int getMaxStackSize() { - return maxStack; - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java b/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java deleted file mode 100644 index 3cf7da7..0000000 --- a/internal/v1_7_R2/src/main/java/com/lishid/openinv/internal/v1_7_R2/SpecialPlayerInventory.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R2; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import net.minecraft.server.v1_7_R2.ItemStack; -import net.minecraft.server.v1_7_R2.PlayerInventory; -import org.bukkit.craftbukkit.v1_7_R2.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final ItemStack[] extra = new ItemStack[5]; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - this.player.inventory.items = this.items; - this.player.inventory.armor = this.armor; - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(items, 0, contents, 0, items.length); - System.arraycopy(armor, 0, contents, items.length, armor.length); - return contents; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - - return null; - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - - return null; - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - player.drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - player.defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - @Override - public String getInventoryName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - -} diff --git a/internal/v1_7_R3/pom.xml b/internal/v1_7_R3/pom.xml deleted file mode 100644 index fc4bcfb..0000000 --- a/internal/v1_7_R3/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_7_R3 - OpenInvAdapter1_7_R3 - - - - org.bukkit - craftbukkit - 1.7.9-R0.2-SNAPSHOT - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java deleted file mode 100644 index 219e93a..0000000 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/AnySilentContainer.java +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R3; - -import com.lishid.openinv.internal.IAnySilentContainer; -import net.minecraft.server.v1_7_R3.AxisAlignedBB; -import net.minecraft.server.v1_7_R3.Block; -import net.minecraft.server.v1_7_R3.BlockEnderChest; -import net.minecraft.server.v1_7_R3.Container; -import net.minecraft.server.v1_7_R3.EntityOcelot; -import net.minecraft.server.v1_7_R3.EntityPlayer; -import net.minecraft.server.v1_7_R3.IInventory; -import net.minecraft.server.v1_7_R3.InventoryEnderChest; -import net.minecraft.server.v1_7_R3.InventoryLargeChest; -import net.minecraft.server.v1_7_R3.PacketPlayOutOpenWindow; -import net.minecraft.server.v1_7_R3.TileEntityChest; -import net.minecraft.server.v1_7_R3.TileEntityEnderChest; -import net.minecraft.server.v1_7_R3.World; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.craftbukkit.v1_7_R3.event.CraftEventFactory; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - @Override - public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { - return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { - // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - World world = player.world; - - if (bukkitBlock instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - // If block or ocelot on top - if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { - return true; - } - - int id = Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ())); - - // If block next to chest is chest and has a block or ocelot on top - if (Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); - } else if(Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1)) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); - } else if (Block.b(world.getType(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { - return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } else if (Block.b(world.getType(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { - return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - return false; - } - - private boolean isBlockedChest(World world, int x, int y, int z) { - return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); - } - - private boolean hasOcelotOnTop(World world, int x, int y, int z) { - for (Object localEntity : world.a(EntityOcelot.class, - AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - return true; - } - - World world = player.world; - Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - return true; - } - - if (!(tile instanceof IInventory)) { - return false; - } - - IInventory inventory = (IInventory) tile; - int id = Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ())); - - if (Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); - } else if(Block.b(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1)) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); - } else if (Block.b(world.getType(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); - } else if (Block.b(world.getType(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); - } - - // AnyChest only - if (!silent) { - player.openContainer(inventory); - return true; - } - - // SilentChest - try { - // Call InventoryOpenEvent - Container container = new SilentContainerChest(player.inventory, inventory); - container = CraftEventFactory.callInventoryOpenEvent(player, container); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, inventory.getInventoryName(), inventory.getSize(), true)); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - return true; - } catch (Exception e) { - e.printStackTrace(); - bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); - return false; - } - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) {} - -} diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java deleted file mode 100644 index aa0cacb..0000000 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/InventoryAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R3; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_7_R3.IInventory; -import org.bukkit.craftbukkit.v1_7_R3.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; - } - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - -} diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java deleted file mode 100644 index a5682ef..0000000 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/PlayerDataManager.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R3; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import java.util.Arrays; -import java.util.Collection; -import java.util.UUID; -import net.minecraft.server.v1_7_R3.EntityPlayer; -import net.minecraft.server.v1_7_R3.MinecraftServer; -import net.minecraft.server.v1_7_R3.PlayerInteractManager; -import net.minecraft.util.com.mojang.authlib.GameProfile; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_7_R3.CraftServer; -import org.bukkit.craftbukkit.v1_7_R3.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure the player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - // Create a profile and entity to load the player data - GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { - return offline.getUniqueId().toString(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull String identifier) { - try { - UUID uuid = UUID.fromString(identifier); - OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } catch (IllegalArgumentException e) { - // Not a UUID - return null; - } - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Arrays.asList(Bukkit.getOnlinePlayers()); - } - - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java deleted file mode 100644 index 57d88c9..0000000 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SilentContainerChest.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R3; - -import net.minecraft.server.v1_7_R3.ContainerChest; -import net.minecraft.server.v1_7_R3.EntityHuman; -import net.minecraft.server.v1_7_R3.IInventory; -import net.minecraft.server.v1_7_R3.ItemStack; -import net.minecraft.server.v1_7_R3.PlayerInventory; - -class SilentContainerChest extends ContainerChest { - - SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - i2.l_(); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != null) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(null); - entityHuman.drop(carried, false); - } - } - -} diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java deleted file mode 100644 index 65aa764..0000000 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialEnderChest.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R3; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; -import net.minecraft.server.v1_7_R3.EntityPlayer; -import net.minecraft.server.v1_7_R3.IInventory; -import net.minecraft.server.v1_7_R3.InventoryEnderChest; -import net.minecraft.server.v1_7_R3.InventorySubcontainer; -import net.minecraft.server.v1_7_R3.ItemStack; -import org.bukkit.craftbukkit.v1_7_R3.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_7_R3.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_7_R3.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private final List transaction = new ArrayList(); - private boolean playerOnline; - private CraftPlayer owner; - private int maxStack = MAX_STACK; - - public SpecialEnderChest(Player player, Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getInventoryName(), - PlayerDataManager.getHandle(player).getEnderChest().k_(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.owner = nmsPlayer.getBukkitEntity(); - this.items = enderChest.getContents(); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.owner = nmsPlayer.getBukkitEntity(); - InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - return this.items; - } - - @Override - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - @Override - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - } - - @Override - public List getViewers() { - return transaction; - } - - @Override - public InventoryHolder getOwner() { - return this.owner; - } - - @Override - public void setMaxStackSize(int size) { - maxStack = size; - } - - @Override - public int getMaxStackSize() { - return maxStack; - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java b/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java deleted file mode 100644 index 87870f8..0000000 --- a/internal/v1_7_R3/src/main/java/com/lishid/openinv/internal/v1_7_R3/SpecialPlayerInventory.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R3; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import net.minecraft.server.v1_7_R3.ItemStack; -import net.minecraft.server.v1_7_R3.PlayerInventory; -import org.bukkit.craftbukkit.v1_7_R3.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final ItemStack[] extra = new ItemStack[5]; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - this.player.inventory.items = this.items; - this.player.inventory.armor = this.armor; - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(items, 0, contents, 0, items.length); - System.arraycopy(armor, 0, contents, items.length, armor.length); - return contents; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - - return null; - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - - return null; - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - player.drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - player.defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - @Override - public String getInventoryName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - -} diff --git a/internal/v1_7_R4/pom.xml b/internal/v1_7_R4/pom.xml deleted file mode 100644 index 32849ff..0000000 --- a/internal/v1_7_R4/pom.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_7_R4 - OpenInvAdapter1_7_R4 - - - - org.spigotmc - spigot-api - 1.7.10-R0.1-snapshot - provided - - - org.bukkit - craftbukkit - 1.7.10-R0.1 - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java deleted file mode 100644 index 17d8e11..0000000 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/AnySilentContainer.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R4; - -import com.lishid.openinv.internal.IAnySilentContainer; -import net.minecraft.server.v1_7_R4.AxisAlignedBB; -import net.minecraft.server.v1_7_R4.Block; -import net.minecraft.server.v1_7_R4.BlockEnderChest; -import net.minecraft.server.v1_7_R4.Container; -import net.minecraft.server.v1_7_R4.EntityOcelot; -import net.minecraft.server.v1_7_R4.EntityPlayer; -import net.minecraft.server.v1_7_R4.IInventory; -import net.minecraft.server.v1_7_R4.InventoryEnderChest; -import net.minecraft.server.v1_7_R4.InventoryLargeChest; -import net.minecraft.server.v1_7_R4.PacketPlayOutOpenWindow; -import net.minecraft.server.v1_7_R4.TileEntityChest; -import net.minecraft.server.v1_7_R4.TileEntityEnderChest; -import net.minecraft.server.v1_7_R4.World; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - @Override - public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { - return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { - // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - - if (bukkitBlock instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.t(bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - // If block or ocelot on top - if (isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ())) { - return true; - } - - int id = Block.getId(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ())); - - // If block next to chest is chest and has a block or ocelot on top - if (Block.getId(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() + 1); - } else if(Block.getId(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1)) == id) { - return isBlockedChest(world, bukkitBlock.getX(), bukkitBlock.getY() + 1, bukkitBlock.getZ() - 1); - } else if (Block.getId(world.getType(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { - return isBlockedChest(world, bukkitBlock.getX() + 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } else if (Block.getId(world.getType(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { - return isBlockedChest(world, bukkitBlock.getX() - 1, bukkitBlock.getY() + 1, bukkitBlock.getZ()); - } - - return false; - } - - private boolean isBlockedChest(World world, int x, int y, int z) { - return world.t(x, y + 1, z) || hasOcelotOnTop(world, x, y, z); - } - - private boolean hasOcelotOnTop(World world, int x, int y, int z) { - for (Object localEntity : world.a(EntityOcelot.class, - AxisAlignedBB.a(x, y + 1, z, x + 1, y + 2, z + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - return true; - } - - World world = player.world; - Object tile = world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - return true; - } - - if (!(tile instanceof IInventory)) { - return false; - } - - IInventory inventory = (IInventory) tile; - int id = Block.getId(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ())); - - if (Block.getId(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() + 1)); - } else if(Block.getId(world.getType(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1)) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ() - 1), inventory); - } else if (Block.getId(world.getType(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { - inventory = new InventoryLargeChest("container.chestDouble", inventory, (TileEntityChest) world.getTileEntity(bukkitBlock.getX() + 1, bukkitBlock.getY(), bukkitBlock.getZ())); - } else if (Block.getId(world.getType(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ())) == id) { - inventory = new InventoryLargeChest("container.chestDouble", (TileEntityChest) world.getTileEntity(bukkitBlock.getX() - 1, bukkitBlock.getY(), bukkitBlock.getZ()), inventory); - } - - // AnyChest only - if (!silent) { - player.openContainer(inventory); - return true; - } - - // SilentChest - try { - // Call InventoryOpenEvent - Container container = new SilentContainerChest(player.inventory, inventory); - container = CraftEventFactory.callInventoryOpenEvent(player, container); - if (container == null) { - return false; - } - - // Open window - int windowId = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(windowId, 0, inventory.getInventoryName(), inventory.getSize(), true)); - player.activeContainer = container; - player.activeContainer.windowId = windowId; - player.activeContainer.addSlotListener(player); - - return true; - } catch (Exception e) { - e.printStackTrace(); - bukkitPlayer.sendMessage(ChatColor.RED + "Error while sending silent container."); - return false; - } - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) {} - -} diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java deleted file mode 100644 index 9027674..0000000 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/InventoryAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R4; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_7_R4.IInventory; -import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; - } - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - -} diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java deleted file mode 100644 index 8e93cec..0000000 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/PlayerDataManager.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R4; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import java.util.Collection; -import java.util.UUID; -import net.minecraft.server.v1_7_R4.EntityPlayer; -import net.minecraft.server.v1_7_R4.MinecraftServer; -import net.minecraft.server.v1_7_R4.PlayerInteractManager; -import net.minecraft.util.com.mojang.authlib.GameProfile; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_7_R4.CraftServer; -import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure the player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - // Create a profile and entity to load the player data - GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { - return offline.getUniqueId().toString(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull String identifier) { - try { - UUID uuid = UUID.fromString(identifier); - OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } catch (IllegalArgumentException e) { - // Not a UUID - return null; - } - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Bukkit.getOnlinePlayers(); - } - - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java deleted file mode 100644 index 47e27c3..0000000 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SilentContainerChest.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R4; - -import net.minecraft.server.v1_7_R4.ContainerChest; -import net.minecraft.server.v1_7_R4.EntityHuman; -import net.minecraft.server.v1_7_R4.IInventory; -import net.minecraft.server.v1_7_R4.ItemStack; -import net.minecraft.server.v1_7_R4.PlayerInventory; - -class SilentContainerChest extends ContainerChest { - - SilentContainerChest(IInventory i1, IInventory i2) { - super(i1, i2); - // Send close signal - i2.closeContainer(); - } - - @Override - public void b(EntityHuman entityHuman) { - // Don't send close signal twice, might screw up - PlayerInventory playerinventory = entityHuman.inventory; - - if (playerinventory.getCarried() != null) { - ItemStack carried = playerinventory.getCarried(); - playerinventory.setCarried(null); - entityHuman.drop(carried, false); - } - } - -} diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java deleted file mode 100644 index 1217552..0000000 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialEnderChest.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R4; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; -import net.minecraft.server.v1_7_R4.EntityPlayer; -import net.minecraft.server.v1_7_R4.IInventory; -import net.minecraft.server.v1_7_R4.InventoryEnderChest; -import net.minecraft.server.v1_7_R4.InventorySubcontainer; -import net.minecraft.server.v1_7_R4.ItemStack; -import org.bukkit.craftbukkit.v1_7_R4.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private final List transaction = new ArrayList(); - private boolean playerOnline; - private CraftPlayer owner; - private int maxStack = MAX_STACK; - - public SpecialEnderChest(Player player, Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getInventoryName(), - PlayerDataManager.getHandle(player).getEnderChest().k_(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.owner = nmsPlayer.getBukkitEntity(); - this.items = enderChest.getContents(); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.owner = nmsPlayer.getBukkitEntity(); - InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - return this.items; - } - - @Override - public void onOpen(CraftHumanEntity who) { - transaction.add(who); - } - - @Override - public void onClose(CraftHumanEntity who) { - transaction.remove(who); - } - - @Override - public List getViewers() { - return transaction; - } - - @Override - public InventoryHolder getOwner() { - return this.owner; - } - - @Override - public void setMaxStackSize(int size) { - maxStack = size; - } - - @Override - public int getMaxStackSize() { - return maxStack; - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java b/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java deleted file mode 100644 index 51e9196..0000000 --- a/internal/v1_7_R4/src/main/java/com/lishid/openinv/internal/v1_7_R4/SpecialPlayerInventory.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_7_R4; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import net.minecraft.server.v1_7_R4.ItemStack; -import net.minecraft.server.v1_7_R4.PlayerInventory; -import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final ItemStack[] extra = new ItemStack[5]; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - this.player.inventory.items = this.items; - this.player.inventory.armor = this.armor; - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(items, 0, contents, 0, items.length); - System.arraycopy(armor, 0, contents, items.length, armor.length); - return contents; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - - return null; - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - - return null; - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - player.drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - player.defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - @Override - public String getInventoryName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - -} diff --git a/internal/v1_8_R1/pom.xml b/internal/v1_8_R1/pom.xml deleted file mode 100644 index 7d8a06c..0000000 --- a/internal/v1_8_R1/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_8_R1 - OpenInvAdapter1_8_R1 - - - - org.spigotmc - spigot - 1.8-R0.1-SNAPSHOT - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java deleted file mode 100644 index 05e1b99..0000000 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/AnySilentContainer.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_8_R1; - -import com.lishid.openinv.internal.IAnySilentContainer; -import java.lang.reflect.Field; -import net.minecraft.server.v1_8_R1.AxisAlignedBB; -import net.minecraft.server.v1_8_R1.Block; -import net.minecraft.server.v1_8_R1.BlockChest; -import net.minecraft.server.v1_8_R1.BlockEnderChest; -import net.minecraft.server.v1_8_R1.BlockPosition; -import net.minecraft.server.v1_8_R1.EntityOcelot; -import net.minecraft.server.v1_8_R1.EntityPlayer; -import net.minecraft.server.v1_8_R1.EnumDirection; -import net.minecraft.server.v1_8_R1.EnumGamemode; -import net.minecraft.server.v1_8_R1.ITileInventory; -import net.minecraft.server.v1_8_R1.InventoryEnderChest; -import net.minecraft.server.v1_8_R1.InventoryLargeChest; -import net.minecraft.server.v1_8_R1.PlayerInteractManager; -import net.minecraft.server.v1_8_R1.TileEntity; -import net.minecraft.server.v1_8_R1.TileEntityChest; -import net.minecraft.server.v1_8_R1.TileEntityEnderChest; -import net.minecraft.server.v1_8_R1.World; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - private Field playerInteractManagerGamemode; - - public AnySilentContainer() { - try { - this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); - this.playerInteractManagerGamemode.setAccessible(true); - } catch (Exception e) { - System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); - e.printStackTrace(); - } - } - - @Override - public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { - return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { - - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - Block block = world.getType(blockPosition).getBlock(); - - if (block instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.getType(blockPosition.up()).getBlock().c(); - } - - // Check if chest is blocked or has an ocelot on top - if (isBlockedChest(world, blockPosition)) { - return true; - } - - // Check for matching adjacent chests that are blocked or have an ocelot on top - for (EnumDirection localEnumDirection : EnumDirection.values()) { - if (!localEnumDirection.k().c()) { - // Not horizontal - continue; - } - - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); - - if (localBlock != block) { - continue; - } - - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } - - if (isBlockedChest(world, localBlockPosition)) { - return true; - } - } - - return false; - } - - private boolean isBlockedChest(World world, BlockPosition blockPosition) { - // For reference, loot at net.minecraft.server.BlockChest - return world.getType(blockPosition.up()).getBlock().c() || hasOcelotOnTop(world, blockPosition); - } - - private boolean hasOcelotOnTop(World world, BlockPosition blockPosition) { - for (Object localEntity : world.a(EntityOcelot.class, - new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, - blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, - blockPosition.getZ() + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silentchest, @NotNull org.bukkit.block.Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is API-only - if (silentchest && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - return true; - } - - World world = player.world; - BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - Object tile = world.getTileEntity(blockPosition); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - return true; - } - - if (!(tile instanceof ITileInventory)) { - return false; - } - - ITileInventory tileInventory = (ITileInventory) tile; - Block block = world.getType(blockPosition).getBlock(); - - if (block instanceof BlockChest) { - for (EnumDirection localEnumDirection : EnumDirection.values()) { - if (!localEnumDirection.k().c()) { - // Not horizontal - continue; - } - - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); - - if (localBlock != block) { - continue; - } - - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } - - if (localEnumDirection == EnumDirection.WEST || localEnumDirection == EnumDirection.NORTH) { - tileInventory = new InventoryLargeChest("container.chestDouble", - (TileEntityChest) localTileEntity, tileInventory); - } else { - tileInventory = new InventoryLargeChest("container.chestDouble", - tileInventory, (TileEntityChest) localTileEntity); - } - break; - } - } - - // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { - player.openContainer(tileInventory); - return true; - } - - // SilentChest requires access to setting players' gamemode directly. - if (this.playerInteractManagerGamemode == null) { - return false; - } - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.openContainer(tileInventory); - this.forceGameMode(player, gamemode); - return true; - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) { - if (this.playerInteractManagerGamemode == null) { - return; - } - - InventoryView view = bukkitPlayer.getOpenInventory(); - switch (view.getType()) { - case CHEST: - case ENDER_CHEST: - break; - default: - return; - } - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.activeContainer.b(player); - player.activeContainer = player.defaultContainer; - this.forceGameMode(player, gamemode); - } - - private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { - if (this.playerInteractManagerGamemode == null) { - // No need to warn repeatedly, error on startup and lack of function should be enough. - return; - } - try { - if (!this.playerInteractManagerGamemode.isAccessible()) { - // Just in case, ensure accessible. - this.playerInteractManagerGamemode.setAccessible(true); - } - this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); - } catch (Exception e) { - e.printStackTrace(); - } - } - -} diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java deleted file mode 100644 index 7cdf976..0000000 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/InventoryAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_8_R1; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_8_R1.IInventory; -import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; - } - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - -} diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java deleted file mode 100644 index c9036de..0000000 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/PlayerDataManager.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_8_R1; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import com.mojang.authlib.GameProfile; -import java.util.Collection; -import java.util.UUID; -import net.minecraft.server.v1_8_R1.EntityPlayer; -import net.minecraft.server.v1_8_R1.MinecraftServer; -import net.minecraft.server.v1_8_R1.PlayerInteractManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_8_R1.CraftServer; -import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure the player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - // Create a profile and entity to load the player data - GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { - return offline.getUniqueId().toString(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull String identifier) { - try { - UUID uuid = UUID.fromString(identifier); - OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } catch (IllegalArgumentException e) { - // Not a UUID - return null; - } - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Bukkit.getOnlinePlayers(); - } - - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java deleted file mode 100644 index e6fd896..0000000 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialEnderChest.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_8_R1; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import net.minecraft.server.v1_8_R1.EntityPlayer; -import net.minecraft.server.v1_8_R1.IInventory; -import net.minecraft.server.v1_8_R1.InventoryEnderChest; -import net.minecraft.server.v1_8_R1.InventorySubcontainer; -import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialEnderChest(Player player, Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getName(), - PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.bukkitOwner = nmsPlayer.getBukkitEntity(); - this.items = enderChest.getContents(); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.bukkitOwner = nmsPlayer.getBukkitEntity(); - InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java b/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java deleted file mode 100644 index f5b8693..0000000 --- a/internal/v1_8_R1/src/main/java/com/lishid/openinv/internal/v1_8_R1/SpecialPlayerInventory.java +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_8_R1; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import net.minecraft.server.v1_8_R1.ItemStack; -import net.minecraft.server.v1_8_R1.PlayerInventory; -import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final ItemStack[] extra = new ItemStack[5]; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - this.player.inventory.items = this.items; - this.player.inventory.armor = this.armor; - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(items, 0, contents, 0, items.length); - System.arraycopy(armor, 0, contents, items.length, armor.length); - return contents; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - - return null; - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - - return null; - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - player.drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - player.defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean hasCustomName() { - return true; - } - -} diff --git a/internal/v1_8_R2/pom.xml b/internal/v1_8_R2/pom.xml deleted file mode 100644 index 30482ee..0000000 --- a/internal/v1_8_R2/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_8_R2 - OpenInvAdapter1_8_R2 - - - - org.spigotmc - spigot - 1.8.3-R0.1-SNAPSHOT - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java deleted file mode 100644 index 2169fbf..0000000 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/AnySilentContainer.java +++ /dev/null @@ -1,249 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_8_R2; - -import com.lishid.openinv.internal.IAnySilentContainer; -import java.lang.reflect.Field; -import net.minecraft.server.v1_8_R2.AxisAlignedBB; -import net.minecraft.server.v1_8_R2.Block; -import net.minecraft.server.v1_8_R2.BlockChest; -import net.minecraft.server.v1_8_R2.BlockEnderChest; -import net.minecraft.server.v1_8_R2.BlockPosition; -import net.minecraft.server.v1_8_R2.Entity; -import net.minecraft.server.v1_8_R2.EntityOcelot; -import net.minecraft.server.v1_8_R2.EntityPlayer; -import net.minecraft.server.v1_8_R2.EnumDirection; -import net.minecraft.server.v1_8_R2.ITileInventory; -import net.minecraft.server.v1_8_R2.InventoryEnderChest; -import net.minecraft.server.v1_8_R2.InventoryLargeChest; -import net.minecraft.server.v1_8_R2.PlayerInteractManager; -import net.minecraft.server.v1_8_R2.StatisticList; -import net.minecraft.server.v1_8_R2.TileEntity; -import net.minecraft.server.v1_8_R2.TileEntityChest; -import net.minecraft.server.v1_8_R2.TileEntityEnderChest; -import net.minecraft.server.v1_8_R2.World; -import net.minecraft.server.v1_8_R2.WorldSettings; -import net.minecraft.server.v1_8_R2.WorldSettings.EnumGamemode; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - private Field playerInteractManagerGamemode; - - public AnySilentContainer() { - try { - this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); - this.playerInteractManagerGamemode.setAccessible(true); - } catch (Exception e) { - System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); - e.printStackTrace(); - } - } - - @Override - public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { - return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { - - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - Block block = world.getType(blockPosition).getBlock(); - - if (block instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.getType(blockPosition.up()).getBlock().c(); - } - - // Check if chest is blocked or has an ocelot on top - if (isBlockedChest(world, blockPosition)) { - return true; - } - - // Check for matching adjacent chests that are blocked or have an ocelot on top - for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); - - if (localBlock != block) { - continue; - } - - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } - - if (isBlockedChest(world, localBlockPosition)) { - return true; - } - } - - return false; - } - - private boolean isBlockedChest(World world, BlockPosition blockPosition) { - // For reference, loot at net.minecraft.server.BlockChest - return world.getType(blockPosition.up()).getBlock().c() || hasOcelotOnTop(world, blockPosition); - } - - private boolean hasOcelotOnTop(World world, BlockPosition blockPosition) { - for (Entity localEntity : world.a(EntityOcelot.class, - new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, - blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, - blockPosition.getZ() + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is pretty much API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - player.b(StatisticList.V); - return true; - } - - World world = player.world; - BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - Object tile = world.getTileEntity(blockPosition); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - player.b(StatisticList.V); - return true; - } - - if (!(tile instanceof ITileInventory)) { - return false; - } - - ITileInventory tileInventory = (ITileInventory) tile; - Block block = world.getType(blockPosition).getBlock(); - - if (block instanceof BlockChest) { - for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); - - if (localBlock != block) { - continue; - } - - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } - - if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { - tileInventory = new InventoryLargeChest("container.chestDouble", - (TileEntityChest) localTileEntity, tileInventory); - } else { - tileInventory = new InventoryLargeChest("container.chestDouble", - tileInventory, (TileEntityChest) localTileEntity); - } - break; - } - - BlockChest blockChest = (BlockChest) block; - if (blockChest.b == 0) { - player.b(StatisticList.aa); - } else if (blockChest.b == 1) { - player.b(StatisticList.U); - } - } - - // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silent || player.playerInteractManager.getGameMode() == WorldSettings.EnumGamemode.SPECTATOR) { - player.openContainer(tileInventory); - return true; - } - - // SilentChest requires access to setting players' gamemode directly. - if (this.playerInteractManagerGamemode == null) { - return false; - } - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.openContainer(tileInventory); - this.forceGameMode(player, gamemode); - return true; - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) { - if (this.playerInteractManagerGamemode == null) { - return; - } - - InventoryView view = bukkitPlayer.getOpenInventory(); - switch (view.getType()) { - case CHEST: - case ENDER_CHEST: - break; - default: - return; - } - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.activeContainer.b(player); - player.activeContainer = player.defaultContainer; - this.forceGameMode(player, gamemode); - } - - private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { - if (this.playerInteractManagerGamemode == null) { - // No need to warn repeatedly, error on startup and lack of function should be enough. - return; - } - try { - if (!this.playerInteractManagerGamemode.isAccessible()) { - // Just in case, ensure accessible. - this.playerInteractManagerGamemode.setAccessible(true); - } - this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); - } catch (Exception e) { - e.printStackTrace(); - } - } - -} diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java deleted file mode 100644 index ff9736e..0000000 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/InventoryAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_8_R2; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_8_R2.IInventory; -import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; - } - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - -} diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java deleted file mode 100644 index 3f11bd8..0000000 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/PlayerDataManager.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_8_R2; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import com.mojang.authlib.GameProfile; -import java.util.Collection; -import java.util.UUID; -import net.minecraft.server.v1_8_R2.EntityPlayer; -import net.minecraft.server.v1_8_R2.MinecraftServer; -import net.minecraft.server.v1_8_R2.PlayerInteractManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_8_R2.CraftServer; -import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure the player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - // Create a profile and entity to load the player data - GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { - return offline.getUniqueId().toString(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull String identifier) { - try { - UUID uuid = UUID.fromString(identifier); - OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } catch (IllegalArgumentException e) { - // Not a UUID - return null; - } - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Bukkit.getOnlinePlayers(); - } - - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java deleted file mode 100644 index e9662e3..0000000 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialEnderChest.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_8_R2; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import net.minecraft.server.v1_8_R2.EntityPlayer; -import net.minecraft.server.v1_8_R2.IInventory; -import net.minecraft.server.v1_8_R2.InventoryEnderChest; -import net.minecraft.server.v1_8_R2.InventorySubcontainer; -import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialEnderChest(Player player, Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getName(), - PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.bukkitOwner = nmsPlayer.getBukkitEntity(); - this.items = enderChest.getContents(); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.bukkitOwner = nmsPlayer.getBukkitEntity(); - InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java b/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java deleted file mode 100644 index 1d7e4d2..0000000 --- a/internal/v1_8_R2/src/main/java/com/lishid/openinv/internal/v1_8_R2/SpecialPlayerInventory.java +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_8_R2; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import net.minecraft.server.v1_8_R2.ItemStack; -import net.minecraft.server.v1_8_R2.PlayerInventory; -import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final ItemStack[] extra = new ItemStack[5]; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - this.player.inventory.items = this.items; - this.player.inventory.armor = this.armor; - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(items, 0, contents, 0, items.length); - System.arraycopy(armor, 0, contents, items.length, armor.length); - return contents; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].a(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - - return null; - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - - return null; - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - player.drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - player.defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean hasCustomName() { - return true; - } - -} diff --git a/internal/v1_9_R1/pom.xml b/internal/v1_9_R1/pom.xml deleted file mode 100644 index 8e27579..0000000 --- a/internal/v1_9_R1/pom.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_9_R1 - OpenInvAdapter1_9_R1 - - - - org.spigotmc - spigot - 1.9-R0.1-SNAPSHOT - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java deleted file mode 100644 index fe27588..0000000 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentContainer.java +++ /dev/null @@ -1,248 +0,0 @@ -/* - * Copyright (C) 2011-2018 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 com.lishid.openinv.internal.IAnySilentContainer; -import java.lang.reflect.Field; -import net.minecraft.server.v1_9_R1.AxisAlignedBB; -import net.minecraft.server.v1_9_R1.Block; -import net.minecraft.server.v1_9_R1.BlockChest; -import net.minecraft.server.v1_9_R1.BlockEnderChest; -import net.minecraft.server.v1_9_R1.BlockPosition; -import net.minecraft.server.v1_9_R1.Entity; -import net.minecraft.server.v1_9_R1.EntityOcelot; -import net.minecraft.server.v1_9_R1.EntityPlayer; -import net.minecraft.server.v1_9_R1.EnumDirection; -import net.minecraft.server.v1_9_R1.ITileInventory; -import net.minecraft.server.v1_9_R1.InventoryEnderChest; -import net.minecraft.server.v1_9_R1.InventoryLargeChest; -import net.minecraft.server.v1_9_R1.PlayerInteractManager; -import net.minecraft.server.v1_9_R1.StatisticList; -import net.minecraft.server.v1_9_R1.TileEntity; -import net.minecraft.server.v1_9_R1.TileEntityChest; -import net.minecraft.server.v1_9_R1.TileEntityEnderChest; -import net.minecraft.server.v1_9_R1.World; -import net.minecraft.server.v1_9_R1.WorldSettings.EnumGamemode; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - private Field playerInteractManagerGamemode; - - public AnySilentContainer() { - try { - this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); - this.playerInteractManagerGamemode.setAccessible(true); - } catch (Exception e) { - System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); - e.printStackTrace(); - } - } - - @Override - public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { - return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { - - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - Block block = world.getType(blockPosition).getBlock(); - - if (block instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.getType(blockPosition.up()).m(); - } - - // Check if chest is blocked or has an ocelot on top - if (isBlockedChest(world, blockPosition)) { - return true; - } - - // Check for matching adjacent chests that are blocked or have an ocelot on top - for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); - - if (localBlock != block) { - continue; - } - - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } - - if (isBlockedChest(world, localBlockPosition)) { - return true; - } - } - - return false; - } - - private boolean isBlockedChest(World world, BlockPosition blockPosition) { - // For reference, loot at net.minecraft.server.BlockChest - return world.getType(blockPosition.up()).l() || hasOcelotOnTop(world, blockPosition); - } - - private boolean hasOcelotOnTop(World world, BlockPosition blockPosition) { - for (Entity localEntity : world.a(EntityOcelot.class, - new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, - blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, - blockPosition.getZ() + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is pretty much API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - player.b(StatisticList.X); - return true; - } - - World world = player.world; - BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - Object tile = world.getTileEntity(blockPosition); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - player.b(StatisticList.X); - return true; - } - - if (!(tile instanceof ITileInventory)) { - return false; - } - - ITileInventory tileInventory = (ITileInventory) tile; - Block block = world.getType(blockPosition).getBlock(); - - if (block instanceof BlockChest) { - for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); - - if (localBlock != block) { - continue; - } - - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } - - if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { - tileInventory = new InventoryLargeChest("container.chestDouble", - (TileEntityChest) localTileEntity, tileInventory); - } else { - tileInventory = new InventoryLargeChest("container.chestDouble", - tileInventory, (TileEntityChest) localTileEntity); - } - break; - } - - BlockChest blockChest = (BlockChest) block; - if (blockChest.g == BlockChest.Type.BASIC) { - player.b(StatisticList.ac); - } else if (blockChest.g == BlockChest.Type.TRAP) { - player.b(StatisticList.W); - } - } - - // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silent || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { - player.openContainer(tileInventory); - return true; - } - - // SilentChest requires access to setting players' gamemode directly. - if (this.playerInteractManagerGamemode == null) { - return false; - } - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.openContainer(tileInventory); - this.forceGameMode(player, gamemode); - return true; - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) { - if (this.playerInteractManagerGamemode == null) { - return; - } - - InventoryView view = bukkitPlayer.getOpenInventory(); - switch (view.getType()) { - case CHEST: - case ENDER_CHEST: - break; - default: - return; - } - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.activeContainer.b(player); - player.activeContainer = player.defaultContainer; - this.forceGameMode(player, gamemode); - } - - private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { - if (this.playerInteractManagerGamemode == null) { - // No need to warn repeatedly, error on startup and lack of function should be enough. - return; - } - try { - if (!this.playerInteractManagerGamemode.isAccessible()) { - // Just in case, ensure accessible. - this.playerInteractManagerGamemode.setAccessible(true); - } - this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); - } catch (Exception e) { - e.printStackTrace(); - } - } - -} diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java deleted file mode 100644 index 0849e07..0000000 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011-2018 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 com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_9_R1.IInventory; -import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; - } - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - -} diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java deleted file mode 100644 index 2399398..0000000 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (C) 2011-2018 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 com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import com.mojang.authlib.GameProfile; -import java.util.Collection; -import java.util.UUID; -import net.minecraft.server.v1_9_R1.EntityPlayer; -import net.minecraft.server.v1_9_R1.MinecraftServer; -import net.minecraft.server.v1_9_R1.PlayerInteractManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_9_R1.CraftServer; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure the player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - // Create a profile and entity to load the player data - GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { - return offline.getUniqueId().toString(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull String identifier) { - try { - UUID uuid = UUID.fromString(identifier); - OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } catch (IllegalArgumentException e) { - // Not a UUID - return null; - } - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Bukkit.getOnlinePlayers(); - } - - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java deleted file mode 100644 index 958f7c4..0000000 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2011-2018 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 com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import net.minecraft.server.v1_9_R1.EntityPlayer; -import net.minecraft.server.v1_9_R1.IInventory; -import net.minecraft.server.v1_9_R1.InventoryEnderChest; -import net.minecraft.server.v1_9_R1.InventorySubcontainer; -import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialEnderChest(Player player, Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getName(), - PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.bukkitOwner = nmsPlayer.getBukkitEntity(); - this.items = enderChest.getContents(); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.bukkitOwner = nmsPlayer.getBukkitEntity(); - InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java b/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java deleted file mode 100644 index 2d4b3a9..0000000 --- a/internal/v1_9_R1/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java +++ /dev/null @@ -1,290 +0,0 @@ -/* - * Copyright (C) 2011-2018 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 com.lishid.openinv.internal.ISpecialPlayerInventory; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import net.minecraft.server.v1_9_R1.ItemStack; -import net.minecraft.server.v1_9_R1.PlayerInventory; -import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final ItemStack[] extra = new ItemStack[4]; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - setItemArrays(this, player.inventory.items, player.inventory.armor, player.inventory.extraSlots); - } - - private void setItemArrays(PlayerInventory inventory, ItemStack[] items, ItemStack[] armor, - ItemStack[] extraSlots) { - try { - // Prepare to remove final modifier - Field modifiers = Field.class.getDeclaredField("modifiers"); - modifiers.setAccessible(true); - - // Access and replace main inventory array - Field field = PlayerInventory.class.getField("items"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, items); - - // Access and replace armor inventory array - field = PlayerInventory.class.getField("armor"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, armor); - - // Access and replace offhand inventory array - field = PlayerInventory.class.getField("extraSlots"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, extraSlots); - - // Access and replace array containing all inventory arrays - field = PlayerInventory.class.getDeclaredField("g"); - field.setAccessible(true); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, new ItemStack[][] { items, armor, extraSlots }); - } 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 @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - setItemArrays(this.player.inventory, items, armor, extraSlots); - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(items, 0, contents, 0, items.length); - System.arraycopy(armor, 0, contents, items.length, armor.length); - System.arraycopy(extraSlots, 0, contents, items.length + armor.length, extraSlots.length); - return contents; - } - - @Override - public int getSize() { - return super.getSize() + 4; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extraSlots; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - - // extraSlots is, for now, just an array with length 1. No need for special handling. - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extraSlots; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].cloneAndSubtract(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - - return null; - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extraSlots; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - - return null; - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extraSlots; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - - // Effects - if (is == this.extra) { - player.drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - player.defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean hasCustomName() { - return true; - } - -} diff --git a/internal/v1_9_R2/pom.xml b/internal/v1_9_R2/pom.xml deleted file mode 100644 index 8f18c09..0000000 --- a/internal/v1_9_R2/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.1-SNAPSHOT - - - openinvadapter1_9_R2 - OpenInvAdapter1_9_R2 - - - - org.spigotmc - spigot - 1.9.4-R0.1-SNAPSHOT - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java deleted file mode 100644 index 4ca5e61..0000000 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/AnySilentContainer.java +++ /dev/null @@ -1,248 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_R2; - -import com.lishid.openinv.internal.IAnySilentContainer; -import java.lang.reflect.Field; -import net.minecraft.server.v1_9_R2.AxisAlignedBB; -import net.minecraft.server.v1_9_R2.Block; -import net.minecraft.server.v1_9_R2.BlockChest; -import net.minecraft.server.v1_9_R2.BlockEnderChest; -import net.minecraft.server.v1_9_R2.BlockPosition; -import net.minecraft.server.v1_9_R2.Entity; -import net.minecraft.server.v1_9_R2.EntityOcelot; -import net.minecraft.server.v1_9_R2.EntityPlayer; -import net.minecraft.server.v1_9_R2.EnumDirection; -import net.minecraft.server.v1_9_R2.ITileInventory; -import net.minecraft.server.v1_9_R2.InventoryEnderChest; -import net.minecraft.server.v1_9_R2.InventoryLargeChest; -import net.minecraft.server.v1_9_R2.PlayerInteractManager; -import net.minecraft.server.v1_9_R2.StatisticList; -import net.minecraft.server.v1_9_R2.TileEntity; -import net.minecraft.server.v1_9_R2.TileEntityChest; -import net.minecraft.server.v1_9_R2.TileEntityEnderChest; -import net.minecraft.server.v1_9_R2.World; -import net.minecraft.server.v1_9_R2.WorldSettings.EnumGamemode; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - private Field playerInteractManagerGamemode; - - public AnySilentContainer() { - try { - this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); - this.playerInteractManagerGamemode.setAccessible(true); - } catch (Exception e) { - System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); - e.printStackTrace(); - } - } - - @Override - public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { - return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { - - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - Block block = world.getType(blockPosition).getBlock(); - - if (block instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.getType(blockPosition.up()).m(); - } - - // Check if chest is blocked or has an ocelot on top - if (isBlockedChest(world, blockPosition)) { - return true; - } - - // Check for matching adjacent chests that are blocked or have an ocelot on top - for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); - - if (localBlock != block) { - continue; - } - - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } - - if (isBlockedChest(world, localBlockPosition)) { - return true; - } - } - - return false; - } - - private boolean isBlockedChest(World world, BlockPosition blockPosition) { - // For reference, loot at net.minecraft.server.BlockChest - return world.getType(blockPosition.up()).l() || hasOcelotOnTop(world, blockPosition); - } - - private boolean hasOcelotOnTop(World world, BlockPosition blockPosition) { - for (Entity localEntity : world.a(EntityOcelot.class, - new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, - blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, - blockPosition.getZ() + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is pretty much API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - player.b(StatisticList.X); - return true; - } - - World world = player.world; - BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - Object tile = world.getTileEntity(blockPosition); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - player.b(StatisticList.X); - return true; - } - - if (!(tile instanceof ITileInventory)) { - return false; - } - - ITileInventory tileInventory = (ITileInventory) tile; - Block block = world.getType(blockPosition).getBlock(); - - if (block instanceof BlockChest) { - for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); - - if (localBlock != block) { - continue; - } - - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } - - if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { - tileInventory = new InventoryLargeChest("container.chestDouble", - (TileEntityChest) localTileEntity, tileInventory); - } else { - tileInventory = new InventoryLargeChest("container.chestDouble", - tileInventory, (TileEntityChest) localTileEntity); - } - break; - } - - BlockChest blockChest = (BlockChest) block; - if (blockChest.g == BlockChest.Type.BASIC) { - player.b(StatisticList.ac); - } else if (blockChest.g == BlockChest.Type.TRAP) { - player.b(StatisticList.W); - } - } - - // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silent || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { - player.openContainer(tileInventory); - return true; - } - - // SilentChest requires access to setting players' gamemode directly. - if (this.playerInteractManagerGamemode == null) { - return false; - } - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.openContainer(tileInventory); - this.forceGameMode(player, gamemode); - return true; - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) { - if (this.playerInteractManagerGamemode == null) { - return; - } - - InventoryView view = bukkitPlayer.getOpenInventory(); - switch (view.getType()) { - case CHEST: - case ENDER_CHEST: - break; - default: - return; - } - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.activeContainer.b(player); - player.activeContainer = player.defaultContainer; - this.forceGameMode(player, gamemode); - } - - private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { - if (this.playerInteractManagerGamemode == null) { - // No need to warn repeatedly, error on startup and lack of function should be enough. - return; - } - try { - if (!this.playerInteractManagerGamemode.isAccessible()) { - // Just in case, ensure accessible. - this.playerInteractManagerGamemode.setAccessible(true); - } - this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); - } catch (Exception e) { - e.printStackTrace(); - } - } - -} diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java deleted file mode 100644 index 386258f..0000000 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/InventoryAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_R2; - -import com.lishid.openinv.internal.IInventoryAccess; -import com.lishid.openinv.internal.ISpecialEnderChest; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.util.InternalAccessor; -import net.minecraft.server.v1_9_R2.IInventory; -import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class InventoryAccess implements IInventoryAccess { - - @Override - public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialPlayerInventory; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialPlayerInventory; - } - - @Override - public ISpecialPlayerInventory getSpecialPlayerInventory(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialPlayerInventory) { - return (SpecialPlayerInventory) inv; - } - return null; - } - - @Override - public boolean isSpecialEnderChest(@NotNull Inventory inventory) { - if (inventory instanceof CraftInventory) { - return ((CraftInventory) inventory).getInventory() instanceof ISpecialEnderChest; - } - return InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory) instanceof ISpecialEnderChest; - } - - @Override - public ISpecialEnderChest getSpecialEnderChest(@NotNull Inventory inventory) { - IInventory inv; - if (inventory instanceof CraftInventory) { - inv = ((CraftInventory) inventory).getInventory(); - } else { - inv = InternalAccessor.grabFieldOfTypeFromObject(IInventory.class, inventory); - } - - if (inv instanceof SpecialEnderChest) { - return (SpecialEnderChest) inv; - } - return null; - } - -} diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java deleted file mode 100644 index a5e770a..0000000 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/PlayerDataManager.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_R2; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import com.mojang.authlib.GameProfile; -import java.util.Collection; -import java.util.UUID; -import net.minecraft.server.v1_9_R2.EntityPlayer; -import net.minecraft.server.v1_9_R2.MinecraftServer; -import net.minecraft.server.v1_9_R2.PlayerInteractManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_9_R2.CraftServer; -import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - // Create a profile and entity to load the player data - GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, - new PlayerInteractManager(server.getWorldServer(0))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public @NotNull String getPlayerDataID(@NotNull OfflinePlayer offline) { - return offline.getUniqueId().toString(); - } - - @Override - public OfflinePlayer getPlayerByID(@NotNull String identifier) { - try { - UUID uuid = UUID.fromString(identifier); - OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); - // Ensure player is a real player, otherwise return null - if (player == null || !player.hasPlayedBefore() && !player.isOnline()) { - return null; - } - return player; - } catch (IllegalArgumentException e) { - // Not a UUID - return null; - } - } - - @Override - public @NotNull Collection getOnlinePlayers() { - return Bukkit.getOnlinePlayers(); - } - - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java deleted file mode 100644 index d01ea4a..0000000 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialEnderChest.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_R2; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import net.minecraft.server.v1_9_R2.EntityPlayer; -import net.minecraft.server.v1_9_R2.IInventory; -import net.minecraft.server.v1_9_R2.InventoryEnderChest; -import net.minecraft.server.v1_9_R2.InventorySubcontainer; -import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialEnderChest(Player player, Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getName(), - PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.bukkitOwner = nmsPlayer.getBukkitEntity(); - this.items = enderChest.getContents(); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.bukkitOwner = nmsPlayer.getBukkitEntity(); - InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java b/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java deleted file mode 100644 index d520df7..0000000 --- a/internal/v1_9_R2/src/main/java/com/lishid/openinv/internal/v1_9_R2/SpecialPlayerInventory.java +++ /dev/null @@ -1,290 +0,0 @@ -/* - * Copyright (C) 2011-2018 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_R2; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import net.minecraft.server.v1_9_R2.ItemStack; -import net.minecraft.server.v1_9_R2.PlayerInventory; -import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final ItemStack[] extra = new ItemStack[4]; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - setItemArrays(this, player.inventory.items, player.inventory.armor, player.inventory.extraSlots); - } - - private void setItemArrays(PlayerInventory inventory, ItemStack[] items, ItemStack[] armor, - ItemStack[] extraSlots) { - try { - // Prepare to remove final modifier - Field modifiers = Field.class.getDeclaredField("modifiers"); - modifiers.setAccessible(true); - - // Access and replace main inventory array - Field field = PlayerInventory.class.getField("items"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, items); - - // Access and replace armor inventory array - field = PlayerInventory.class.getField("armor"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, armor); - - // Access and replace offhand inventory array - field = PlayerInventory.class.getField("extraSlots"); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, extraSlots); - - // Access and replace array containing all inventory arrays - field = PlayerInventory.class.getDeclaredField("g"); - field.setAccessible(true); - modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(inventory, new ItemStack[][] { items, armor, extraSlots }); - } 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 @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - setItemArrays(this.player.inventory, items, armor, extraSlots); - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(items, 0, contents, 0, items.length); - System.arraycopy(armor, 0, contents, items.length, armor.length); - System.arraycopy(extraSlots, 0, contents, items.length + armor.length, extraSlots.length); - return contents; - } - - @Override - public int getSize() { - return super.getSize() + 4; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extraSlots; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - - // extraSlots is, for now, just an array with length 1. No need for special handling. - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extraSlots; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].cloneAndSubtract(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - - return null; - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extraSlots; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - - return null; - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extraSlots; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } - - // Effects - if (is == this.extra) { - player.drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - player.defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean hasCustomName() { - return true; - } - -} diff --git a/lib/bukkit-1.4.5-R1.0.jar b/lib/bukkit-1.4.5-R1.0.jar deleted file mode 100644 index 2d26d29bd5263de922d196f08ae3e21df623ca25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4835647 zcmbrl1#Dc)wk>LAW@cu`%*@Qp%*+%sGc!Y*DQ0G7cH)?sVu;!P&OYb9fA9PIZ0YJR zsibaoRjX>$m^H^7rKKnX3Wf#*1qB6EsdXv|^xqz6ATS^~F;yXYDS2_m_X!{%P#{Ga zNT@$OK>poL@jnhm`|R<52FnS_ONooAs4~cj-^xu*%F56)%)`sj)67iGHYqbLv1}hW z(@D>a(aF#YLqYDBsHb4i_K|tE=SZ`-NW13J)Sz{JX}Z1jYR`#QMwL-k=@X6vj~vGa z!1P3#0lZ*Fyv4o4kl?91^r_d0c(waw>LfXXJ+rpU}9_J;u4#-9)P-vJ{mwez9LDm zxq8!Mn8vw;5&bnO#aJY9ADMt`8f$t@+*Y^+oiu^mc(TN5qYPHA)m7%Wr@Z+jsl}A2 zpA3FlB>(yQN5LEF^Y`C5Rn!^AHvobe5C4Zeu7@0-tHit2fNmGWKL1y)5TM%7U*KJ6 zqT~^bVTl9jYrgC8R$t3|2M()@x?<|SZJ#}cMeP~kJW(J9$b|O$iVZ^_R?#d>ozZ-m za;O^n(px-W>aP(x{F)bKb@-r`WBM*A7WX8A&VDOFgLfFOHpLWBWSsV-g6=Yv58xbr zZI9x;WkWB|>{WCM^AZ`>I%HJKF?p9B_BuSHftfO>YU_KAjUu^ir8&&(h24XH&6|7y zU40%UvZt|ZDsyWx%xLO3(QNMu>XEfGqh{}Qe{yaoh-TEKORr5!lUaUl3sPKRx*y0f zlcTXzn8M1GLTPsu=15k7(Z(fR6#s%RQ2KKfkeP$6khHQpp3EXH&xpk}Sz;J_LLFT; zu{G8e(QL8DT6G(i-^W}!DsMRbpq9n?Rc$7}p&A6>QR%8r zb=k$v%Zu8SCobnvMU!jtAVC$V!F2ATq*v|7NQp_G{79qNTQ!-iL)C z6hBn{WzF28&ZuF$zKhOJ)7hm;zp|=6X0yAarJx?QT$-U&lb$9`yBE)MTZ}fLpI7PeG1(*_mS{J|LsKK+TOwrEGL4aS=tv1CW<`+_5SE1T{>QJ6(N+K>+Kt2>eh zYxN$3faEsQNgJ#}N|s4CKxr6*>@^-9G+5x+#V%S|Ty*xy#w_( }_tA-j>N?A9bv8 z7v(==(B8`I`Br8hK!|V%6g*{praY&-S^2aH%K7r{GHxw>TzO|abM85hex;0djV=<* zdh(wA${D>SfF)q`r1Q?PC?bT_3<*NvdqElk@_;yrR!&FWaR(j(YQ>IaTkM7GNZMB- z{T4iyUk`g=_qY}QK|u|!Q9?NzI{u+m?fDK#U4|D6R&-|RO&FN%oE!UIWy*Hd9>>O| z5G$2NTC!8l0=!Y&8FpE~g#&HhevPrjaTRVw3Tem~8a;o@k6jync#Q6=n>MAOoAQ(P z#!LGg)w5rQS$uyuyQsCW=a;}b{#JrsGA2Wa!mi5JWO(;;Nc3DE_khRz?jVI)8T$}& zEPhy&!rrhr-Uo7&yxOzAA7-Gh=|X26!$x#hfnM;UT&&fQkxxNLbPdp}~0{RCYioMo#k1UfLAX3@P0rzDF$*YnJ3A zxla~G&069qeNV7NuThSd=A+mU&0bOhctpC-Gu+z)9-y8jyERTTj*;+{uadocBO)S} zAWPoskI{0K2~(b_=gB)t{IyTxBkbqt?}-5dG~S}|OW~yinB7Ghr_g}-2>yA>dnJGX z#j{xN(r8IsG%z!fn=o9D1gU@eyV?OL!&~S$M|;HDlR2iIJO6Rf=u8#E^LbZ6AuvcR zJhG)@29k3_tRP==@Z7F(NJ0CWl%*T9w51C&d2{EQT*2nI^tl~lLgL+Bpu)vrA>s7s za_Aon2*}>LcocUX8ANyOoYKc0PBBc|Bt}1j8sqlqLspnGM|39)f};RojnK`Hch z_?AFiqaVJ9UXFfe%fET<{dg}})E{tfq+c?_37dpA$;w7KZ;GX>&Z_ z=DG)Qzhif|%XmEa^Emp5@XqX30geV3j#_W6D8^8eE23tCtc4n(g*JMvaOqcwGd$^p z8!zCy;9Bcfy`C@fkNSce4_|(vKX=?~M~-k`V_QoJ9IPIn&+fV;<$oal5g{c=^reK5 zKtQ$;d{ogrS$obz1)-NqOKvm*1!Fmw3dvI`!?@OV8$WhOk!h$8VG?Zk> zX(o|p|ETv!uJ0O{HeaW+bzhu@h^i}Esr=Scx#F>`ZMUp`QW_#jUvxij{H^EbZ-;9} z#o0_aq@=fcU;ZPWBMz3MnVd|nos9rS1K@g4hnMaC^4CXJ{^H`2Jt={(Us~+>dwH`> zUQyGSYrgaGj60M5zTgII*K7iLBdc2PVT3=2SRi`Lwzcg2HwBjzo;})bxj;#$j^ObO z{Z|EZp7=m9ZeJi!rZC}Rz8J7Fjl2d1IvpayTf?`aUh{X?BfQl)0TVz_pT5HZv=oLL@K z_?KdiH{@=A|2C5t9s9!82p3ilQ1 zxC{DIa~BFiPbMuIRZ6X%`&_xRGZ~bYdiF(GIb{n^NhvQD-B*37v(IpvkIKR?v?fw# zC(Li$t$H$696wHx`DB!5W-L0Ym6@|=&-F8}_;Q?{VXm5Aej^V&DRUZVTcdov{Wlv`G;PSX+u&SpPp>psx38^f3xqXkW^^|A84C5mCO{rb7m@-v`wy5HczE!V8 z5jTyVAtgWmgxUkbzlzB~w)DZwYY_sl>6sMC#h^@%+BntA*zK*gH%1X8Ow-y&a@D_6npp@p1DiNv=aO1nruDS z%!oP5IK{Aelw8&{G&?r?V#LW~c4Y4!A;qE7#*n}-M%0hPRP~=(y4>xmwF%{9?5?g1 zGQPGqrrg7j?pHUR3;9h)hwkZ}xvk=*UUCPQScJ|Ol@cStgSln|Kkxe|38{aebO__H zdsOS&t;09plGj^YEV*{js%2zS?;oX!$E>%Xr|9jLOF-h44lX--WLB89$ZR6fs==q0 z3YR!i=$*G7sUO^qkltY~HgWN!BHSExOp=}aUhhV>;JYZLRiQFjG@(z zf*w{HW*&AL4vvx<7KsW+kEbF~<1OPX^wgbK&ry}7mZvU5SD-RSE6;Rv`j)_3nvraK zfCB^%4wz2*nETR8rQMFBv?=j%jIKP3eZ!9QbmUP$-{*#YdAo1rnPD4x&SLed)uj{r zQ>;Pre$@*k`dUBqs4J$|_tmE)wfI`UOX0T)HpwKi`A%7)pv!h%i%bPnbte?x+;KY; z>D+NQ)K3|XUABH1ci7miC}~>}`i^>tO|w^^T*l!(u1r*WC-v`*!(Lja2UDJE5d4C) z&qVwszvspF(Y-+#2R)63F*?%i`m6X0cjg|9#^gHFdA31&O?HO!-9G*Z1&6Uf>e+^u;DAG>clb=rzv^yP zU6ra=?)l7B@9C^GAl!(mSMS*)3dYHA1Oo7#+_lgrJtbCooea*1%B)HC5`%w7MLJxS zJJjGY6(wPUuSi*y#w=R31x6)FoBh2y42)2$30 zMKNEJ!VkEMW;2de{w+;TmL=AtPn_zfjEzKJBt{)vbg#DX9U-f_WK^gr^^V)}TM|0L zMs>-hVRtGkUbBvr&;kUA6)rTHJ;fuQD^f)Z7*r}k3z974CX^aN3+nOB1=$kknivwo zCFv6PF~t&>=U2t6g7CR*L&U;)A;!XSAwr|r;O-D}$QLMj1c(~gISk~UuQ*n3(Q5)| zZ3}z;^>!C5YuJ{X*rnx7sd)t5c{Q+DIOUrPG2eZGl>L@U`5t;(?N^FM0m>k1NOuJr zN+N2K1?e;kP^ZUsOT`foG)S?YQI#vVs-+An_g<*p81+;%K0Hb2@# zHsjqdpe~ng)(Ub5^)`~%D)^%1RD(He>IPkNMas{Z!E_b2L(Z&Bbs3E}?s2~TEEuiU zCqBu(cA`PH*WOc(^#RFGc-{X1{v#BQezSxeeF}vyi2o!MkpHJpFt&9tvHAZ~(*NrZ zgsmLx%>Gr<`=y*IYipp5en=p!QcQO%xfHTL2*yN62q7jo&xMrKfD6M#&5@Lx zym9*l@eAb>ab;R@U$7?6=JE>(+?(VV5c25RG{{Y}M$Wtjy#Chm$?rDGz1n6l|77{!JpT(Z)}n#(dMqVP8*Qj&Z$Nx8TjFb-}}x-n>rx&gy)Hwx_`- z)Viw6#L(FJ6x}S(^UXc;(q6;*z}2Qx(|#Xjm?rko)c-IpFgf|R`HnuZF8vbwfP9k@ zz)rMGzsGp2HXUa9n{e>}?8!3kw*mLex;F>%4XbA5Dpm`4xZZ8?aR6J^k1n0{9esf9 z63n!Eu=;7vJ}ixP<>~mM&!P6W756(co}5yh=Une9B^pL`PX~W&f$2riv1?R!`mc4@ zY<9=PGGO&l4j^rjI>5Sp!$1s9x`z>tqFl9(Q_i{v8G8{x+E z;rNP=PQY2YIY!FCBGOqIZNyoNvou&O*y^ljtVURm*!Hquv(gTW4wKA=qdMpTRXY)5)F?S&vF#iZ|^*ZyEu-*zC;4ZZ- zA(epK$$fu<<$X%1yJcP?b&Y=HBjFhz~})Ja>COA=jV~*FeFZLBy|dMz4X$uVQDfvCM-!*r8~rl)a}Lha``!6{`kbDh{_TG@LjNyk^54hUpVRPP$5?Kvoywvh z(kO=_6*zSS?|5)U1zFUPgrMM(B26asgyLv;kIZJaGpn4nbIoGiA*{ex!U-n_7kZ|W z;a_4elRw@aJRCe0-`{UH(U@va(EM*qbpOq0@OzL&F^3vMI`FK z@-SE{OPi#hXtzKVwIo?JSwjEpC7_)8+ zD?+RK#$MA46Vn*aFd8BIT`A|;ffDF1o526r|B~IE9H!Bo0)H{F8**V!;X3(P-T&1d zovf6&a-*6+hm~47)WS^WxJ4=9=pty}bM$V8RstEqZIdMXJi=Bd-szYdX6f?S+$*r% zvcAM)F-b6z{&H237n3%P9RSPI@zgdXNpY2XNDR(-6HxzEj3xLXOKr17;}Dn@x^)>@ zmMU4cx2b*U#Y`|B_9$-HGgZVpZ7dbRsXCeWd)+d4+!Yd{%d1atadvZ#zj{?uA9C#1 zdABd~iUh3IT~nq0Fd7oPXgwas9P7+3()0DTLuz-8NR!zN5K{pE1ZKQdvGhsIg#-O$ zuK`5uGI~vTAIkCqBsWIX$9u)NqC_6IthjZg?`#jgt7djb0Ny%JnztH;#@wobi=yJ` zs^rr&ksX2fcNP6XuU_O7&9qL>L8H^tEZ4GrSKrxR_$7w5dumhh!zwYMsLt{_CIi%a z*;WLV;YE`WY;y&O0&kCl4rJHg!hnJHiOA5y(NujuGog)PX@ z$WzM?#_ZDlqL@NHG7@r1^n^`|Xx)k1)!Y5@opdW4atM7c5`veEKS*uYM3XctO5yrS z?k02B#j_CW;9mJ;1)ak%`BB;lwk48hq6f4tvhy0E>Jg)A4f4v;&TYl#F{QBlt@lri z(6n*;Y0g}3)Yq6+2i6x3%hcg4+(g#l z6u#^=7Qt|;n}c=jMb#dBBl&T3exZZnC>Dzc4}q$!FPCO-s>VWU;dW{zixpMPI9@i= zvw5O`ORl1{ha>a0wf}~D(;}NZbQ5Kd*8IAWqpi!~OrQ(5jY0upIouCKfedd5!yKqy z8-MKVPoKoPKyJoY3-D$z&kDm9%$a0hDZ^%op^ecJ4`Lpb{GuG=HKH~GLOMOhgn=y+ zV2e{Ip);4umA&$%qJ0W9#)BF^<$Y5sbW3t9_8oS z)@Ex`g+3R>wtN}Jm&N9Sk903MmhuC$?k1`?fKkWkv~OWcc2(icBkGKR zQFTJVs=5F`RY`ABUx~o5uAd*-+JZ|_Z!bD_=bHS*1e z29C9!{Onk){-96a=4&$Hb{;eF;8Oq;gpk4s49j zX_NDU^l*y5;V0N8J|N}ocbUNSjP^*m`h}cNC9ntEqwGJ3_*(KxPL$&ao1P#V(J18_ zAwN-%g*3=|Dad2z4)4Iw4b2^a(2>KbY>!{M48q_I337CDqoM~(PIg83CupSZ8Vn9T zgC-vQpMr+yAA{y!AycZM8`H z#_jhyzW>KdxdAZi&L&=lCpjkdlqb?1QEs$d20AA>OF8%qRL(Sc7tM86Uprn`#H!g{ z*i;^78_{)HpIBfk7z1<{{dHVlCrCQ@7OJPgHfSI%2qBCw*>yvoTA%`*ZThIMb>Z*; z0&ES2yS8Q19K+5movY??bN!@ndZ;}tABH#moz|M2QGDpvP=CZ)uj_VT2LlphIk%BP z7M6Kz(96L79lvgfN|5m-)4j*@@#F^AJx^Y2uJtwIHT*cyZ1@bli+(>{d_26w<->Od zrzY_*&MmgKfIh)mY1bvKa(oN5+KoHU5vQC?-@;=26pP27I||X%=j`hpLCuo8^b;m%=CHpAP&I!HbLInVQ@*xbW3?e8scs zGGw*5qg}r8gFy_gnyWNbC{xS{vL1q5%@q?Swp9Dv$ z$wUV;kJT-k&ElCq&zI^U)ttNVW@cptTw!z}aqn&Cgqxk63Bz^T;UQE$(CV0$Mpo4dKHN?b=x*o*%-k~nU zNrT;<_#B?wC+QuE6-PJvn|c^E9GJ#(SXq>KP%-i6V>&U0uwHVzab)9(2K7-%?r;hBXzO_-%!|lQgPISf?j# zghNOv+4~a#Vq)tQ{*@i=v8Gnpn*oSgJ-m73jMOBUGJ!)UN@JvUG+i*@xb6($>udBa-70;gRSR>=f;k z?G)~m?iBBo?-Y88b9X^_YCSSsgs}{5CedcD2~n4(Elypeu}p17Z>G^^vm>twQx zwe49^NyMRppcn9aQBM4u!0^MnWej9AHA1SKJ{(&np<9rpYNAz^361&E}k( znBBpcU9;2Go$K`J@W60U;Od?{4VTb1dwpV=QrxjlpG>_+vbh{k_s_NJ(4AmZeb;WC zG@}tPcsgrry7LXZS@qE^+ry;&Y0=(@*DLvS@6PTs+QJv|!7!m_8+@VE0D?}d(r{!O z?dRWBt2)fS!9{aeO{>%Zk^LYJtW#^eOtWHn1n`x&Ese5k?50t#HD;q(F=gBXB^b3< zvu*0u9hO$B79P%Py935+YqzEHCTOJte0uOD9&(f zUnPi`!v##_TvCW>hyV>zq`HF&D~TdC8H<*bSyS5ho}3IrSI#(=R*J4FY)IN#3e7;M zs9qX{yp~8w89h?124*YN$>QA`|F8zQ$3GjgC@uY*LOp09)cceZB(t!(6n;$W4 zI#~7VPtVkk{`eC{v|H9xtYIoPUn&-DMSHly0jOISw-X=oz>;07u98}#;18#r*_QXe z{2qp|P8T5vARw@Ryci<>kLgIo)yVbVo=s?ymcoD_TIej5azDJrcPEj}p|!_zTpU!C zh)5jFEr=Y!LS@k4k>0~#fj&aBE*BorNG!sQIzE@ni_FcZM_(UEN4VMko?uYO+CERc z6Je}nZIG&3jVNxn-VK{?AQu|3r?(rCUqyOY0Hu9f1s6)z%h0CB=@-FH>p^F$l;jEc zbjL4a$&Got!F?5H=-_3N)Zq7F3;+xCM(qfZE%Dq0TiD=f%~E-2=kLR9@k+=UOw&bK zOF~QU=*7K)!{L{6p}pr6(^kc+_HWXImFqsO0@YnFAJtviZ6tXsjXbWJBPpl;@w7V_ zd>h7%4|jqX1ggUo=)tVyT`7!CA+8UjG6VD(@+Vals{p_)QON@K`>00NGalOkOZ!R~ zA!rMfY0NmHS?8sJYIbEAxU&EUpt(eLfpIh3x*`b#gw!>50XRoN5g`V6hz#$LQ+bM& zA|pA&Sl%Qov*Ee=Am@M=gAOxOX6#FP!+`EEjtf5Sl-xdDYsThp9-g&QQ`fc={-9UP zKN^FG!BhCNN&un-{U?n<`nQ|vZ02EQZ}GXU_NM=m8D}s_6qCMpp z^t>hk{EIr&3XVds3lyqjlZk| zhz+1~OE({dXXU1?27AxV6o2n|)wD!0^}tNnXsF)ckig-{u1uue&>NhQAc?o8l{FDx zCyvK*yRcK4d=oIT11TIvCq7&iW!^!s`&!=jX2oAH2(y#u1N(#Y4@|XHZ>TGuAc%cJ z^`GmPzpe2_EX`d0eL2c=@36`b0RbTbq3;eM?+(G>4q@*OK_Cv%f478Ep7XkIJKNQ` z)RpvFBrOg>4lkGgTIBjxvT%Mrh4Lnw5yP(=%SH;S;plIrDxNmy@WiTa=!v znKm{?6js6kZQ9JQnU*L7L{^udoRMC8m7kKD1&5Y2q6q6Q>nLRmJ*VjpmC$@Y(+J!vB^Z zA`W(TpVauPe)~5+;=5r!`4M8l=8f|qMBAW%gJ{D8PCHLx7!WBjCNQ)Z-gFJ@OXWlw z6*PP?P4{!A@nQ5H!Z0vUP@{lyj&iM#{fuN%)t@W|-vhTQItef#a+3LFV(?R85}NP6 zl3oT9aaxvtnLfQ!YSGA<6m%#`nLfsEkd7wG)W8nWQVLrTpp-H#F}Ocq6vgt_xOmfq z3}br3^=imd66b&p!Rh7xX{7}Q3y%>(F?8n8?bmrTwXSP(%=_2rSE`CS*Y*hl&Ob7M z{Ikb@yB7bK%Om1o?`mXaZ|3~ppiqmQwgwSG3aMH?e@+f2g39aibRSz+k%fW@D%kdO zw=?}NrGRA-+NF))1w<&FgDz@UQ5Jn#_u~5g0(l*_idKVmfrc;ab0M97o8BOM?8gbc z0rdiK^J3mQD~_Yhf8FC+4QvhRuS_xQ@iIZ6XnJMX4MG?h51cbl{o1JQemWxyC356J zLmNE+ma3M%d`l|)AkWamcNECv{WS(pE9kb@+CSTT#(td=OqjkhuJY7!NPiGEsY;YO3&ai>7Ml1)`*4>Th z?^h8mfJVrjW9I8Z9!S^a?t#K?hA?>_aEpi4$zMeh$qb354nXJ3I?1bD>XsR7wdR^y z%CY)LcMaQTn&R%#RJ$KFRMwc3EmM%kUE2E|PYf!twxq#AIv-2;7!s1T@rApv)}q4V zSi6l*lf)E}kAP*&CYPUl;HRk28Kr6EjznPSL!1O&EMd@kM$n{azIo^N>YeZ8G7Bff zvR8ThAr}33LAUC%oO`f80|qwJ*!;v|vNG%vyzN{&)Oh(E&4M2ES9^9LxjhWqawo_M zn*{WV+IB#{J}Rid0_sT1OFYK8dZ-*|Zbf05Y@w71COlgMwM)#ZPVYNEf} zI#DYZM>Bhu|JpROxL%k6Caj^Wrf-0I#2N0kQ{!uNRbBj!_ENT#X7WVV`yD*rPX^11 z=}z=J`9AFJ>0gba_93W*A&U$!nP(vFR$1FCb0i^Eb6^T5Wvv|ElvoF3;Rn?GNZVzA zf;EB7`=(ZkH*1}&@v4Ayh(Bmk2 z(w1}Ul?u$Njfs{Pn}e(oufV<_{lyxwK-n9CU1eO5cXSgO)Z_6pwhN~>IVF~S^f8qJ zMu!xb<=7xV(uXE zGoj=k*p23@t*kCRiRS?QEq4+-gty>QT(-cbaIR@Yv=uS`S@@<7awM*EQ=Rca1p-De z?j(S%$hvKpKFrve_zya(DsGRXm@4SZ+yQ-|exys<2qVRTtRUzZnK5e5uOUHFF|c<& zDJ4Xq%|X<<%1qNFgT_#Z*a=7x1ZUm338XhMa*mpLgEt_97YI=_hcwI9h3e}0XdcZd znH2JicAeO)d;k?hTzEMjrdWY*&5`ls@r0u6*#|i(T;a?eqDpfO3pY-|C+^@@0wFGB z;Zi!}o$*`F-h?E4_t-u0B~MJkjkx$^=#M8L5K_40^c&aWct;nVG%9gI#`8OatQ z+vM00YJYrFq=I4~xui6LS{%a0q69aX79;EnPugm>qE89*;X3ktpgVlHvVh&jegNSB zQ3=!u~d1L*Ko&aTaYiDTEVAe2WN+fLE zBux-jO>il8mO47NIQuM|qriP}5Aj0Ml7!XLGpTLu3;cWk+LV9x^ zW76l;yFc6ik_yspHfF{Sp8ukPT|D0(H7DLXZ~3|^-w#U`8~rUeG?WSk7`9VRb0BM2 z@Oy;*^Z=+Ql~WN(5C+T7K3)Qr)|Ueq!hC*c8PWGGX2j;@7r)bt_u?)({ z7Gvs~iDp*R5d?#^z89G%Twy&ze$DmU){v+Tz*r-(g^pkdgFG$+}pf9pd)leL% z-Ob}$QwTuT{)|GyN&`)%+?SJb$oJiF%b!Lh(^7rIz>LC2{ANtP^FUPjh0dFL+9%^$ z6icdxkMaG9L+vcyKE5bxX)9` zs#bfsm^zKO)3u8DBa~$(4mt$5j`$-z;_)5}c#2tc8^ImaUM^OoPN zb%myw5nO%|)^Ln8&x7Yn6P3AEtyrR|mhyFb6xhmo@zfC6fLRy4va{It^GdkrfqSC6b)OR&wtgIsp#% zSlijAbKBvy!U)Z2Yo4&xvkZ{Z;+5AzYg~CA9cSJqJ9lT&g9g#I317d`*9uM4w!7ts zaS3<$P78N%S3W-L7+uHwtf@)osn{*|#dBWPEcOd3e$9KEz|Ci%_^j229Crpj65pcp z7PwA(S2}U{0<+OI_H}o-G|qkc(VH|d^ROIkn$k10OTMOvlIj=jHaqX{*is5A*=P&u zZ}KOm1kB@>J!X*QC@@CiJb_Bvhk_Vl<*m7d?Sa+p|^` zyFGoO$bD?OBcSja4S*duWt^GaoFE(r0o7|s5&Zb|t^y;7a<-|Pq#>)o$IcU7mX29V z;dKY4LGUS?M-ceH$YNVS7yYJNM4uENpJJr-ZTtF7#Qv^fI!w#_#bFryq>^e>Ho=M> zgWu~~s?m|M_m~=rReWLn4zTEYF zkPhtXu@PG!Ao+tng~kgU=a;GR+zCTy`0`9c)Wp<7L~tor)D4#Aav)k>3p{;Gc-{?sr+8O|ag^7JbJFpXG(fv|1d7Kj+U z%>&#H;4c~n9nu$uH-Z|j0_9W@YA;sJ8U{K-6t;-^*%kC%GDd2FznL%QWg~>{Wuv4{ zE_AR5BmPysa%t4FhWLS5%O>O{V)ZwXKJon8Xe6H~qN6k4EjQy2x!fm$qb~ql+>}F* z`4U-7{oRz1(VwA1hz=j#8q+eO@tsUUA83AnFQNrsRVwDrd5NES$Ufbh_tIN1CtukY zlwm^k2MYVAo8JO|0{qD`upsKw5fb{x>ss8u3vd-Hi+_i--5)oI>GPh}(qf702&~)l z`>;M7&lLp~S_lD5r>C_ITmyL`JN|nM{%_FV#Y1%kXMOlRzB|*mzR*ux0e+yKgBd1c zzowXtk7-WWH^!2TzC5&Mi@ah-^Ri2e*3OA{vs}|EqXvEu&Ku+^d%138CGCaA+?dNA z^>=RvB%rKUN*-t*iQbdcOcfm-Bj`{is%n+xN;+qo7x9~7v6&3)6RC_cb&90lP08mCOoYCa)=bsD`q_sE7K$yG#asEn5fA{K;yX%rrg$&;q}=^_j^FY zs|b#YsTbP$#6ja9kHWt-hE#0aY;FHt`X&m=4E{0Bn!o8}SEy}PLV3$EK+JCO-jSij zcwV$7Wno`Us?AVd%|dAb zL(INNRKp7S#|C#Yz_@7j^_v02NBf{e(ClNIW;)JAu>{&{q&)=)>A8u45?r>Ic){Ce*Y^Q3q6p!L6ra}es! zT%l$G@qFbkoQ~WB#JyyAP8ZvcxPM4T2u^VY{0ZayKSD|NKS}pj1{Se2vbQi3HM2Fd z_&*l2U7VcqA1~4X)Euga#8$H*ES5U1;H#OsDlx6Q$T5yENTK1}t~CSi*YKj_nAf&? z%-b@90Ee;w1cRSI9hOwQG)vIS^qYzAcvq`7K6B1js)_1k`hLPO zUxj_+W>Gj`46(-6BgZ1zf`&rSo-TRJa75wQo2HS zeAJ?jYVOvKeo_b|7iE5iZRC3$DLjsr(n|QZ->c@zl`yIizlL z*zKPE=fSfYPi&~ssK}b-lFNQ1H5X>L+yT2b@{G&#@H9-J&-_fD5578|nf8ZEk^JvY96)r2FO`Mi z(-k1GVl-aRAv$@^_kT@LDQ9CFzm%i_+lT$%aYa=rcEawInwOu@3U2=wtIJn=Omoz+q^-y(C!-burzC-a1;2`my5O#CY$t~94on-J$fD{(EMu=`Pr^2 z9+)gtvFz0riYvyYtPtNWIsi2@W*uyuG8gQQCAB}KD@VMSS5AHq(zz^lsE~PKe}pGh zd9!isoDmS(C0N%vhjF47p}?%G1_r5DVJ~qY4BM)_EM*jCbvK0AoS8F91H=csr`=sA zO_^{EcyU2QY-B<8PFa_7IVTLgn~huwxu;#-JS?VO;z%TRQxM!F^5W+sebQXDTcUwU zQae_DR`S$ZQ_Qy@bE3?8v+(WlW!v0b{Xzo;|H-b|l6bn2IUK+D%PrL0y5-dRSf1hJ z&~{p-HL{=Tb;A}*{lj`%P9-9x`P5eOtk%3h`>txUWl2@p?K{G>(~>?47CPt<{Vd#< zQ&VIzj}Z^3D*w zk573PyHnf&!}leJ`>883sTlLGl{?TuT8fydLl$XFSP?+^lYDhj8#oM9goaFvH1*oY zoo0~f3)%6|CT4nc1kJ|I$D&J#Eby{I2BTo(&UQtj3@%Ijy7Dc6wh2DF9G0S=sLGU0 zWzI}A`ya$fPL4B%J-;|>bTA!K7o}aerSbKqhG)iffYk4nEJ>JHip@e3#^$A49+iR4tx|bbVy}d?cVdQI2a#8DrBQRxC%4Zm~qG}Iez^Z-GAGU5RoZJxreZPFk+&x%H;EA zbPrm&#CVr9TZ_xVs@y0WZnl?WGa;D#$;3l>nJ0~8O0u*9iA>CX=1D_vb zF61CY83R3@Ei$rQ3vZV}`R7dK+o3jF>5<|)Rk>vW9ZvZa&U`rz*Qte*gHv~t7^DE# z!NWPb$d%llx7yi^^s@Y?D>Fxv>pCN+_2x+hm~hyFi%UYQ^(CyEv33{tfSFznGn zZ2sh|eWjH(z?UV9vJ&<_%mTSqs~;Ia*AbaA&qXVsP1L<&(-mq#lV?$8f~`H^pyyJw zKylg><%5-ryJFg1@^HJd$x6SdHm{Dx={-mJBkJ2p*x_uENRIi<)=wfndQS_^4e*;K z@vE=nEcRUAP8-B1xstA);vq7$li2TTo9)^eV)wXQ(1Rl%zsV@rdvLRLt}n4v_BRpK zO%0QlH!{R^C^vRjY4P&s9Z53I#w2%o&X*&QXe$ z+WHHPJB~aeIhjPs2s^JZG6ZTn?8PCnlS8;`g5vvXkDF{_ae6OMVyDYL_v54_R2bIN z&uz@&9b{^onx7Sa%MPc#LCU2jqwy>#mo4SllAa!Wrflq+ zVvQSpjpsDOTUHioY&paJaZgiB)cK|~aSh-0-0~Q?&uY=()?Dh?rtZOQw{I-Fn88VX zrM+gkGvle56Xv*HE>K@`FORiZ`%IQHeR{WBL&hr? z9@g(Et|aZAhJPW5e$$z>C2hgGzMceO!_u_I0wk@YbpdQ!}N)99!_zdNmoFj05sAD3C4-^AM8`xab zJKVnw^GbHd@{Dli4gDXpop!}GLUZz9_#h+sFC`QX}Xqn|rNuplTQ3uy%l z(56{WY#J;E~h&__q{mL zDtM3OL719QFLnyja6ebEqoMX3D5lNgca7o~AD{{B@6hPDh=OK%%l;KT_|`~gXz!d! z1QNeSwY~9T>j_8B!#jw5C=2|6Vk6?|zYVV+4gr*Pgkmnd^CU?R(ci^0zD(5Yxhk6Et9KYF@ z?9C8sc$z{VVbXj@ReZEEAhzcjOOni>mR_SxbOb;0MIhhVB4_K?XZ0goa7s^Ju!y{) zO^ACbOz}^V>_s_gb9uH0KT%5bPrVw{aKgF#cH_w&G2h0G6k9jQ;mPY%{F|JvUtKHc z!$xvo2{=QKX8+SL7y^qwgiOin0bkwqKylZLsOKuGKLZ`84R^qV9t;lt-r8Q|z#-`Z zu7K|heJcvh0YT=A*fUGMohU|PGyyb)N&X!z;acPoIsNMqemgv~(tsT>w7zKNas9qb z1!Bp_Je>VZxi}l*-i0DGC?~i=*1|q5X4477=bOQ@_In`nBR-{xTZG1Y%tf&eg|QEN zXuNmh&So<}c(jKT!GXHiUwK}2+fnaTYPWahFLSUN@#d_aO=nH?*T(2_AwgO^YBF^UBA-WK~YA?Jf;X-ta4uL zB!p^`F$}S^A5T zV|vZ8#`xwZTJd%xNr7})AV+U^AID0%&Ggi>lm8N-TM#YcZG55_Fe zk{23T{=ElQyzpnYAjqegza6zgqCTAcDbjN8h_hRM zE_e5FfUl)cus`@-Z5Eaaf8we^K6k^C+|t_;i1O&xLKT>W zU@%Z=Bw**nF`vxRBBaKAU71UdxvNG=HfVQRiN^Bshvm1wq_CwSWN1u6!PD%%K-Yqt zua$6x%*>Z19H4KF^kbE%&<1`9%O?B2Jt4unO?2uOhoU$efA;24tlLTK#3anI!)vx$ zU;b4&whQuPkH0Fd3@vq|!(r@XgTM=Rmb8Xk-d(=nO6XOQMM_*I^xjL>KNIWD4||a0 zPG8rOpglxNo#VyluiY^wX{A=#xAQ8Q>_4gY82@v-_q{Q86tJf$*EWL9Pp zV{&Qoc-(CM{8$2bg{Tb~)SVhRnt>?pzch00#Z8o_Lh0>!?!D4{T%4b_Qdd@1o`%0J zIYD&0OsRaKgSF5G;7Ms*^v46KTb6`I-&&j!g0D<&euNuHd#(lYa}8%+)jZRLU$tI) zz30He?&tyYI_`+L2AFV{ZPQR9wW#6zHdusQx45A_(N6=Cn8+eNGCEPqgyrSzU>(X`Q z>2mJjB0zq=_Eg{#?$tQoU4!@>`Rv~7>%O+Zd53Mk(LwzT{+?9;is1ksnfa=1GJ6_y z8JMT%S?e53sOI)D=NY>Uxl+~fWv5S}E7#gcmd{XaM;=#Wwzk-Lwzam-kYx=y_id2L z5+*J;WnE&FmlvIZHPHDtho9p#*OKxZ(k+{?VwLPmdV5wMvk-}*LU_^6S4HDln?T)N z<$_(TdWNv#I?2`%Au8^k8iL#0mzw5SIx{OjW$C6zEPirt;!QOMzw7zHzHFaCI0rVp zu6E)B@ck6(G9<{HK}>~q_w28c&%%KtGZ?+BY;E1x%);>riKu|OoOU^rB1~27AUA?S z^GIuZkQ@{xCX=32_19mtfiv@^3Lh;(kZ2}W5O5D_NH0kj3u62>F8}Ju%nv&Y^()G- z2F4XOwD85ENUf0x<{2-Bi-IP)9~TW1P44z+FalJ-i^Z>(r@X~Iq+p3}8h+ViV1}j^ zJDC|T4L!8Ho&^sAF0#p@aKUP4FEE49)cQz>w`?s*1Tp~6cQ7oO5`8%KvYTZ)IIX$> z%xZfQF88M3aiK$B*u%V6j4+d=(cs4=ux_cp}V2|?E3Wql9q-Z5j*nOrrFH! zH7><W1)k(k=5P@&Ms;_(ngdGV#laU_u>NY7zL z&FyzAZMuHw4*Y1xsie3}!Jhlz^&q=iDSj#2<^J(H$JQGW5`9~mJC}*_Fy0NRm`pZM0!dzJ zCuT|bL69J|^n%eGk?^KPp`?rqVSwTiff%sSeso%tLxHp8ipBgv(rP`2Y>@=9Ax^&v zLMoxGk9t(`d>~L-t||p3nTWfQW-(+TpU^Fi~uvecm9027vl|Geo&GHDrq<)Byzfjx&UAPvNJk{*7 zcyj&ax+=HG1C;o{#6;v+N2JvmMmxWTBE3k)36e>vepQLWjh$xRE`;U@l6{j1@}1z% z!oGIK5JU!Pzf4cP_E%?FZ+RT*tQ3c?mMrONwg)XeWp!3+otbT{rX{OK`lJK$Ce1|8 z2e&c0jUpFhi#7zuc9I3axzmoQdHbZZKkkmxreP$(LB}Iw6FDNZi?p;=@o{zW2yv8s z9^|(zoqXDo?&nywjxy%`y3MQy*+<*s55~{$fSS0)GB;6i$oHyou}BetPVxNkEY6W= zp(XT}I{^pStwNNybS@Eht@4Amn$hy`M5vIAVnz2w@~_%WWm%L-3X25Zw#(zb8OV~_ zx&@x@Xdf#`u|lG8Ir+GxG3`-e$*ThF_}a5@64;gGSYyW&5hYGMc<7!>em=PIaFG%3 zr`O-llQTJ$Rb|QGmTDXmS{|N?(@_4{VL^04e3OhwTeiv5+jT|+mBeDAH{OLobV);F zwHxja2o*yNmRdK`AMI}lMHg1o2WrQ+1!$yR{!LLeHSc`)2R~LDKJ-3FwBX3UCafH} za*cFJOZ;PuE^f4g+7w4Sbl7I32S@97nprrZt-Cplz>VTEOn#4o z9xqh#5g7#GANZzwDn-!>Tz4T$5HK0oCh*HlMD9Mt2yu?^u zfjQJ_Cs`w&43C!;V6^ce&s~JcJ_-b9^u%4uh5^}KMBY2e9FfZaS`mEb5J%X_x78@g z#2M7ei8S-77hGc^zmg_N!wdLrqVm0H#3(CR4;8dNg|A(ytz6h{)o}EU3^)qmq82>C z=($YHjnOSJzaw&Yd}Nlz25A9%QHdFP$nt~Lz*}Gv8FS6u-5 zh|;3K8H&;4No~MyFWP~JRTd_@Vb`$@uqVI&6HWY@?Qk1he3jG==0Rn*6jAKFA7Pyz ze2k@eM;TqqdP6vA)&-=4&9@rS1fYu^2V|#UWxQ)l3whtRx}xc!x(xrPlMFPlduU~! zu=AxzO;MWHjmNO+;u__-L5bF7i6d9QVSWlSyZ=gJlw1aV82kQbhFk{v{-@fKfqUU^ zc?%?m>fd`mARg7CaoM_jHpQNjWK#jMNCdL{{Ev>kd7{x>0UT}!HrkViCz5CURp188 z6$f?l<36wwcUTM7E(|>xlXlYgD>98~dYZ}Du^YU(tw}SX-xu71(G#=|bJa>Sw!V=Q zaBEsj=DCY}>zR;Yjj^gHc+@I5fz-QI_2v_bE2pr%gl~72tDfoSti#^V)R4RsB6tXMHmT@pOvlO&C zlu4JK&W<(&C?_d6Ni4WmYD$P&+M0KPp1kM+~6QZ=sE0lKIb4~miEW;=R%lJJgSvY za5>$ww}UZ?CCPtOevJeW^r=Q>Gu6e} z_~`BE4zh=OQiIKEC!#kE>|wCxAYxto8Oo}!oT@HG?>J(xF6FvLa!$|=v9lcODK$bq zNMguogIS>jalK%K1Mlol!?*%1>|uDRA{6Rbbd^!*?&yuzmySsCrsud)9zyLjV#KD( z2ER$tI$F~HW&9iQNWad&gYdv;e-=c-G_NFz0eU|HOM7miD!Q2eo`q4eTVXm=1&kw? z8cM8d9uLuY4{QB4VGgjRcK|=fpL)FP>myqd0wYE`rW~26yr`NV`t?PTNqU%TLD-HK zmuQ!HCd)%Twy2bxJLUd=TcZR_ zzpGopTF=(O)aGACf2EjzSeb)NV&lO=d|h_|Mk6Daw8?{21(-?|<-ayDm{!SEc8r-J#WGy(UUx^VEl8yd*?9VzUWv|v=!`{)hqy=o8(#SRn<|u@ztirCTLT&|f4Hdh37z)yR zfnWuceyUsssT4D2yy?~Nz&z|$3Eav(Ph_HF0tEemITD6Lw9SD<@&s{opB~&8G=~v8 zw`19^uo;61A&uEz*9+r=T~ptq5Fn6!jx=?2K0d53 z6&gxzfm)E)MA(j>-a-wC(}aMjDGr}Pz0q=z!30dkHjyTLH#^%K@Lw&2{S#JG`MZU% z{$mTF|7}3n=vgYd+5XGI7^$e`fT)D#E$uQV)wBjX%R+5c0wEf&8;XY)C!1bS7#W}} zM(&sqyAs6w&8Oo$0V#g^1o-l2jAGT+EthvRYVh0hRu|ci`Oj5bSn7e(>{kH$Ho_NZU<;kTo<5xq2a?6~w9Bx_{IbIl` zy4_o^yak%PRInb9B_nV*P;E*64#}n<(7H zxpJ<(OCd$fa|djFZ*kFF-6K$u!ihJ#`G|+9SX`4uWitk+vcufE-SLe7ZX_-6Y$=Sq zQny+AgJv77X28ltm-mhZT4kEh5Ha`VFQ6S7vdd!_M2o7q@x zP_zK5VXL3Q?aTyv3ouXM4GtX0nH_HXjxUSh!%MtpgNBd5i2FygK zP;FKMBg_-;d@N=2&(%MLJX*BrX?ICLlZBi6%khtz6BdSNSt>3SRL#&+g?3mV#8|ii zm+Cr|sUFdQ*CTr?zrAzQ$wsZirK%rHU%O4IwD!AoGrE(9XT{vee^~LW_a9)-P7YfH z^iVzh6pfk~4(|ED)4!cXa|Yq*_*#q;j%p(LAfMYtc6M4wCb0WtaWKGqM>VaMzc zFicr81^7Ps?$U~}^NDr%n@tB+B~&(u|FXyS(DRlZgt55m1${O8%Rhn+Dg#e718)yN z)t?>(4-tyYMS*Rq<+{$nPU zuwVNZ?yqR{BTm~v{?7dO1sw>xF2c5qn_e5)<~@P1TdYC+px<*LWgx{f!&h7splDUr z<)CPlIQ&?8=WsKG87+x!sVde)Cfx&?ByMJzjwoy}=+qs*Ga z^4vk<61cQ0I?QZYdT%eDf(QtSDVmTW7UDK>r%eI8ZcOwzXh#E6>wL@1>{c~V+IZFzWrVzLv(aLy|^4cA^^3#_?Up+fM5Ln0D{_m2Di2h zh$g+?TuC9T#>&QUt6Zg1b!z2Gj65=btHy=PMh^>(wbhMF59F!VD=a(cvazSbOFszdioeDO2o6`49^zWSx2!23@+@q-4Y?yWZd=>A8P z8)@n*_g%p>FWocYZ{AwN)>o4xDwQw(j`sbPZjKvP(odRga~PYB0>*iVTwgFqq~?Bu zkpvWp2eX+5X?;8S9NW3H>p^9JM#8L+dDsHl&Uw*==KlPfeh2^&nU?(OMvb1$P3+U+ zi3#jnlsMxvYb~kr%-qYWDks7FW@kr7tGtJ*C|g|cdY1rBaO5VJ=BC*;?uJ}eK~n>Z zlHalpBD7a(sHcRnlTDjR%-nkF&J|Y|+FN{-QB{}IZO#Oi;9j7qo04$^;9Ai$xd3$; zFc*^j!R>2ixm;*4!4|hG);6J6IhBkY5h-0X+*~=NEapGuwA?vLgx(qgdbd#K<~TS? zq6?tHVu-t1Gv6P9?;x9r34Q{B5`Z(f6v8vgO9_f%YKy(wD zd9{UXS-)yr+x`&5pxMAHsGV1O6n+sEL68=LY6U;JLwXMOIosi(Q~)BJee0Z zi*C}8F@@K{fwKY(8>opwR?9x@4c)jkJ*iEk=2C!nWJl%9T_U4KYa<8YS;Cqz-B*RntqBVWxmIY~twmy7S_4{n67 z`qccE`INtq2@$cUuSp^yLAU06-xu0-|V}t4*Mh)Q9Yu^s`VGl}3rK4=)fDh@uqur!d2>B4CjF`Ga|HKOqxpYg1Jm z*&0N6U;!v75D&VtZE=v~-yAb0QQ(@md;p^0OrMt9QH{% ztH#36Zt*Ao$&(WrN8l+YQxIgoEY7v34}N3-#+)h7iS8u!N2wf$1KVSYXC-+q*u zurRjwaB#cTrFBa+or&X^%x!+)cy;Ox7Oxlr$!kAB*7C(swADe>>aC={A%WB}-0_CA zX}U&%v}wE^K-o0jk)Z0>=t~O(rQ$N(!A4mmR(2zi;4;(`*kyQ~@+IM1!6>YzgXq2b z%FBoQNK{%7k-g4wH2j9ctOGg|3e)LY6Xs(65Q7$LPGtz8_?2PGX(vqxO!$JVsG@Wz zcilt|5y1uFEUobC=e&H4(yebjWoP{pmhYT5>^aMVvfBmQd7}1JmVCy##)(tvGRX`Z z1gX_E9LQ#5YKz!vZpv&-jI*TEsn6`m@PeDKBThyhV`_fA@0D4e>XF^JX<+T zUO`y@CVlRj(m-2zs1|pi)`TT*?T5m$xABtl#yi=1;{p(Oqqn~htPxcPBxp=yzcWr`ePLOIS7E(T z*=ByelyPvUlJk*Bu()zW$K~9)1oFe_bHIS?V#NmWDZ{hSc?WHN zwLXgW@9b+Xdjss#A^JHJ(rH!I=5@Ipw#DNH<~C27>^tX*D%)qx@Z|P#%5_J}Hws<@Bais0 zNx_>(;r41-8Zn-c7|XsjOvtD9;gS3Wr=jz;{3U9KXX?I_dX0oJ6;ruOdy!TLtol(c zpd`1^jf1S^Is$!^i?-Tz^4##9gg!M1RB%ChEPar$090+cFos-x8g5UO5H(YH9!;{* zV{-KwPD%6D*wP!oo@!n1XU(f+f^sNs?Yswm+tDKTHcJ0(>9)X+As64fR z{1(0_1lmE{{BZ$voPN&Gy1AS-#4Ccbm@p^k$eVPs_@zD1j$krUYvG?C)_Ho)a89nY za@Ok-FYdTO8(075Z&qOm;<>r_#T$e&t@+ZrD+fUiJmva{}?gf)Q{B z=iHtX%z6!DRK_Qk+Y5yO+lJw-=b;ei(VS&j47aTK!tM$bv;je0>+RZY;SMv2|7Hda zE3xz}LlanGW}m=EF=7^xD_VltC0sOGuwkCTQewGcGcHFy^h~Q%UK|BX^_e(sl7oOvopV^2zp9%XEnm$k{~>{Ddb-H0?Qu*O;_@Ye$tD37sJQ&)~n zA_<#%Nx`S_72k?iA3dII&Ai4|U~@6P-xMM*@ByOkl!@1lI&W%Q9onY-b<}4<|3oHz z#v8`|Ap(adBcpPJP=fiVgFeF!$b_fy8t4$W$3H`Ba~ln1Iw7SP!S1zxaW928DD4mW z+rc(mrEMrnm^|mHAX@l<`h93r1((gAq0((U^2Z>Y{Ck>?Xa?<=gC&-e;nX*M0p$c0^;XB3#5do!Us#vy)s>EmhMuFYQU_-fjP%E;;#O*wn(BwQWOcQzTMfs=sxh({$0k`>2 zDN_;1PUXevv-WuH=?%vr>%1{LN^X26jCm|2Mhe&+g*rPRoT4o+F|J#Vzn=R^zG$@? zzGbZfwEv{DApXx?yum+t0{>6&SjzwNE&k~m|L6S_jI0g+kAc1amDY>;FFJ!T2>Jhn zG7!a-@Tg9v#rjdQbvKZ)FHkd*CdTq%QJrRFr>CbRBV?o{$Eg?mlh2S7X84OiP#af) z{;xP+>;H`N0islrwf&36kb-^;`4@`;1w{Fq#Q^=yVyOA&={dW;+VN@M1={|;{=GVd z_xxQi-QYtPD6s=9X(U;*|HD_2b*D&j`Vgnt|4t>@pjqR|`~DHJvcp zUFPm3F`vGC7%?uYgc)>rj^3s{Y_{IEp04|%c|E{;CYZ4LOqeoY^8x4ZHDf;Vs2DML zFoS|l=pMIM=z{39CW^OW4_u5|iN=l$TdBs7)v^#Hw&LfG1fDy!IJib)VdG`Rc?m-pGg;al=m>7DPvEo z1)hthpOsViy0QCQ48N?wdLK!oJ1=R0fi^C}a$35VC1v9ZMb$i%^&OC|OTl^)HX~pLN z2J@1LWwVo2=qCw!sVKRVeB{fejzhmj>wxu$n6sGA`LoEYs6940vIS7{=h4JCoo3Io z3NfS)8PEwio7Pf@G9igGw9L#}NBcvKE^0K<%WphCe#Iy}H>%xQ z5X+;xuW-B83AKz!uB>-JAYVWH!P8OoX*{`3pkq*qR!nLl#Qyq9cjJ^sw>Yj~T&K%e zoGBGv!l`dOG~NN5{fFnVD}KWaGe3eOl_l^#svPe^#ME0Cgc?{%^==huC0f`!j1l355~?SZ;&f3aEoyQ~c$!&#+MS1e&vbAC`kRqp1LV z^`++~+XaK=W4lg|`c9XEm;y4O1Yu^(iy68;z~^d<8Elz;TSe&#t-U##Zb=Ejf@)#6 zh1DEIYs(D&*i| z8dYU|z3TC$TPGX4Y&gnu7mom?{?1M_?O3gjBpb@_&X^L8SlT$+-##*h9X_XO{9;bS z~CvuvbI>hLs5%T z=MXiGB>;1GL4MNFR&LN9L+nefU3J*RPciX&){<_nx(kzOZWbCUf^o$Wv5i?(D( z3UkKhuZQhngdS^@O(kNq68)3EMtTUp1|Aa&b0|K@G4iX4!n{rD^+2{RaM_&K8+s3$sGua>ur)swHyia%T1X zIp_xEd`u^Gku#@t;<#?qt3^AgKN!p>^OE57B9J>fpAV@miDO4H&4VJ4&hL&@aJXXw zLPg(05k1>MdVO-Fdau=!goaRc9lH7PS$1`Q{BTPx{YcWAX%7pYbcJS6HOPc_Y!cI% z#%4fa2-&MDh&Mjp5}trt-c0Faz`-{yJK4*i+O`svBn8YRX9xn;JQK$ zDP)syy3;9H_Y9ZT%Y@v;-q?OgBn4DFsGwC;)6wlLa|l_C-k)SC3bbDe896sB4j3r zS+uYK0*;3pkQ!Q+$CT#i1vq( zW0GHG3-M;%zbWTw9q?Cvu ztP_>y<~$wCzG(Zi4Ekw+Ep#anAOk$k5DoI4ytsu2Hys8VpbC$IU#>~vZm`AfsV6A! zlklgBgUhNb=X+`D+GnG7Y!2>iBCk;ouu=EWQTJD8ywfh0Q?@o+HLMZs)>D!gWo0!* z(B3;eC=j+<2FXlQ>8$VIq4~+kEB?V0mz(Q7s-Zhw+7H;rcWs4K{w9qYME-=cQb%3U zZnjv>q>9@24xWcnpFd(~)-)uOUJgXYn~}yXXV>edJFf&ajiibcn!2abyt=#0NubJI z1(U?27X)FFW`AHOY82NnXy<>03;1@+%^FNDYXcQo6Zec=Wu$EN=6~AaTiL&&NT$kF z7b$|VH-ROe?Z!}7&92QK*4Rp%hrC^^&NlSGv30|>yRj$GL=@MxM^bsjgRjeq>&kaJ zC;Xt_eW(WLOQJ!q7lFv%JU0iAAL!1>c%iH@XnBJJRsHI^^!vnlv;hCnPCT#$hVXXY z7I)IU)oFq;^U{o!kA?U9kX+-_M8c{N*T5Qr&HHKxR`F$$)=xGWs;1yPtfsEiWM>|{ zVh{%k0F0304n3Q~P*CBG$K?n;@~HRs>AUeKr{ZHeDHji@;jqG+9O@N~3vbb*#mj*; zS_J!O_oZNrjxTd)5*c@Rm;kCQI<#bdS>RU@yeA5VP9ROrE4dJ1si7j8Y9uDzV6pI1 zbLgHgM<__abHrWxwOf{t(oGk$9l#DyrU()Ifs#x^hDan;V;z-P!>HDp+dQ$p-(86e z*q7=yVBS%!B2kGVLIYvnS)}Bhx}pJbk}h_V9=E<}pOdL^D}txFUW>9NUwYgvN^m#n zfwGD?d*}egyqKkOskHvZ50dAKcG6&sGr|r?lILkF%oIx~~~TK>G!W4W~$Vkuka?Vkw~xo0QrZrv?lKE`%2k=`_god}6q$!ILpI_wdKV;JGyS1$ zSiUafojc~{r2T~ZQtJzQ*Na;sdw`Cu*EI~!-BL(8HFgJNc3HoPtit6kqPQ-pYMJH^ z*wY(9HMvNWXYAI=ff=emxHg|yJo7>8Gs~cxha3$E_ZpDWBjldT&IU~-ZM~L%hY4cF zKC5Id#WhfP!(+JW#;&q&vE3fiqRo$dRpzVzs1N2l4tR_q0qSm^`)WkVjw|D)GL<`l>LCybGhe zDk_9V0l*A^#12~I5f5x8ZQe(}kFLHlpTxNj3!(ip?%RhlX7HC_ z?%VhXN?9qImj!8s7{CGHQWuJ@09C72eaeLJ?h(!J7dhP%2Vb13;aB#mUezHU@k5;> z2io}AvouecRrZnnSOn1w2Ak?QzfstNf5FoZ5mqD3Slu79xU1i|v`IX%1i?qBCs*-y z;v%`VEZ$v%Uh_4pp#%@j-d;b)%DA#Mo~pcDE_oVQTA{;3JP$4>(AH^3Y3_x4E~2(p zVYSYnzIj!;ulJAEX^=<@9ED2m3XD%iW0BDbAQ5H-L+p3tl$uE{AuT-Z*c^_Hr~&H zisw8|{0Q!&?{pXPz);%-9KxL!qO=#US#KPwG>Nbm)s_IuQ`aNAMMsZ z$=-i#7ZjWKS-18JfzkD+-@1g=*hA~1uPbo8ZBg@ z1z&wX^z&^#60|+#M-uQm9QGU16QlEllOqUcsa)nFt--2ES*reFg_6j?)%8Kt$UuZ> z{^-Exw+?<0Aa?g3e{3H`|!UJ#CHf#4e`?B04uq^TMD zj$bZ&XNKFDOkv5x{ZA(?b@y~j4M(nAaY69AJhqHHkvb|9M@CbxwC#(@b9>LwO>Y#Q z;4&q(4|q#UTm3fQClHNAeOWDp85?Z6dB{Vv%D9zs>@Su()qAH8_AoiuQ=g?3(UTcO zWu(814^mGZ?1q|TCXdNbmY97017&?Kj16H0^W#S#{(suK{*4&&x2>y?tAUa2elJq}WNWvhK?_5Xk>+Ag;NWwu((ElBFX&6$&qsYO=OiSE2j1diC zk^L7N=_8}R!|`J~E^oZU@yt{be}e39ASL(`=cTau{n@y80`8b^0fl%SrB{)G0SqtV zNoG`Bibn4rNF@Cq0Dq|~-&~|`bp`n^bp_xbSR|{NZTrmc0)2g7|6X1B8|m_IT~tcX z_MZYvrQBb>E2Ipe0$IW9x3@fczwpF(P_R(^xD;J3rkfrs@^p38RpWN%PnLfW9qcq9 z1OwyHo^BsISs6Lg|ADxb9V!hHfEED~>a`?|kzBWzwpF`;Ie}zmbF%uA&}VlsXow&l zjHwl9IiCdvQDo4r7~~J%pyH6GC9^Edixr7wrn>1Wx#2gHH7`u5JTBu^0PdY$AiC%d z^dLk*$@b!h_^hZt1;o05R5P*;fCwomMDV&%KHz!cYMrx_l4EEmEYt@Dwpcdfl0FN<*3lJKr5P z4P-K=qm1W2s(D|_YnVjTqAHyV%xB9(y6G@!IcgJ#9hFLHl7j`n2Qo8LM?qq!)LqpE zWnZ=w1G=joQXZAJYE$ABKv_CMGI~?wU)f@9AYxY>vLR?8v+=aI*82~7?W@%Wtig9T zjr#Tw{QEZh8-nt0ZT8>wKdYE2X+S=x!S3DBAD@IE+?X=9cDt#Bp`^0$QXQ^oT4^Ia zmldgMu57S8KVXH9{X@~X8+7JAUkgu+-(G;X;k^PO10@0}`_v41v+W`V8Fq}>v{D*p z0&kRyooqLwL~H`qcHX{zR~>L1)ErJzMHea6aA;5`S1krVrsM>;u@o-D20R-G92YK7 z?7#0r=v9#_sbTQS9MHhPLQA)B-cG&bTHLE>9729P#m z%PGwyP3(}DW>ZGCwK|dqEkPVwvIgJG)?;XRhqnbh3;fK;D38&cxI`kzO))vR@_%Js zTUF(h@4I?3lqI^^CMIgdp%HKCUqV4*wc3Cw(O(5X1c`ggQYYmH0*fF~cPkrYX*IY7 z3RQuH?~SL68WKVAP7C6RJ*X50MnA@oXMX6x7cBwhKMyUqe z004t#TPgZk3-R@E+pRjOl9gK3iOs9Z5^q$Yz>H{Z7)i`(ZK=B$&cI6yl&Xr9ROlMn zYq_-UbG~KYND0Q;uIrD01G|}4n6ThC;3mB6`#_>1Mhb~`n=$7K%wWS zFwA))slI0rLKdEh!6Ol+jaH6xVT0;Yvhg5a3yEu+hPhb>Ia#wK2d^2&8P+2_Gc!Vr zRFRKOK)KZn|HQ^}Yx5;op%+0sPI2Sjrn={@mnB=DmWvJ946w`XZTa=g54a>3SZRP0 z<==_P9w8ECAu$esHE*jh1gMG4?5g-@iC_7ERI2sCY5t}b1Td(E84Md9h1oN24<*Ub zGi(a!9Pbeao`N=Yyoz0$@6QoOSIl}dt0Ht2M%TO@rVG-!bX9+Y=oMuBxD>6u7PQXE zGsYI#F*~+mzIsOE103*%ot6#U8C#eEM%Tg(c9)8+sRgYv-(|Khou2|cE{oWi_&9Sdw_k6F&WD9H-~>_LI9#_#|VthqGW;OT{b@EOog4KkY* z^0uWMlEc)LYprY?`?bV+6QpzU#@SKOsZ%E!^ur|(pH|O!4gCi`OPZ`$=;sI65@H_e zcR|5e7%LEjK2H>>(Sq}!iTMjn2VJhL5`uC~%_>FB(_4i|Wo1+JleGG?Yb4RBImdaI zaSX^Z;bhUKacA7$<4NhI#FNo3k33k3K+ zUPfn1F}IWuL8bCduKEG5E8eeQF+NtZhA#OxLaS1QLXTeu?&IU7*9EwgV@JC(#LeiKB(@~kpOY0q3~FJcoX+lzJH)WefT4%799SJ9e0E~ zKWKm6XhFez1&yBz82SWtMOY0!8aW<#^MOi@E#H7~Dwwt>+iwu=QPyAy$UL8d^9Iw<$kt15lCBvmd5KeJYIu|Es-zDIYc=)N8?*i=Q zW`G+h5^=QuTKh^^*SbUa672f<38CGx6;U6}0C_vj$KzOM6LWx5XBD^Mmm*?WkFMgw zSmhnY9$MZFzeL%PMBf>PSo^VL`r+Qe@xuDodIX=m`}FdCbXp|Df0~|Y{_j(&nC;&t z)e{v&6{Ig{Ad&#PaI)P+csV@$P{=Uk(;)TQka@C7z$V&w5wy(l{?yQgB<1!MuUh9h z>&2#Go%ft3Vaur-i>VXbg}FCl{$JpuC#5=@-=S8otIek;UZ3@!H8|ZsH;!NywX`8w z7!|#rcvwi=|Xbhg6uSh zJK_4mbsI(bAn~Db`oI`=Et$Z$0}$EJ1K{~ljNz2w*ms6Y;VjwsTKJW;2hGrF#lTKl z0gR8$Hn=HsbDw}XClK6JSP@vJt{FqU58KvRIEfWqPKqwA<7HQ7Iq>kOtqNNM+&bGv z-fmZrnqlh`_(*rOB@70C)H~JE;()BnZN$QzG@eTmB=Wk+yC9||PB1WLir&E|v1*dm zhNp73T7M-#jlM%I-O`9%*^rZ}>`U4+PFzTDIs8sd6`XB!Vw_`V`zU!p8;E6GRd*-^-VhkZtI&iVw>Sn#2O=Wf}tlsAm+^P#vU}kEy4Q<}U$Wd?1Pd&^y=_&)!d6 zZlj0il1?J}b9pEv`Q;T~5gZ>FnSQzJsU4c<^Xu;^vXa|!j>sIemfpNkB+z>Ipq^6Y zzw`ujgPp{Di*$W^et!}swbBp3Pq8109NultM%}+Fpc^Qou1(==>#tHW#4H99uI$yGEaj@@j->8 zkahb&>8l-u2BxCQxnwvLHbw0GE!3?~TRB+kYLSC~y>zZ9gaPOxN1N+Q49o;Z?RQo< z%_94whv7AlcF40L=R>?9AAUnMl84{cw+8bY$3?t98QU)ep%AbkoeP~4|IA8&=T8NQ zr+l&eeHtHl`V60Qzd2+U5gUb|0L^Z8o)_`NSpJ^ss&WKjM}%hd>t(dTiy_3Jd&h;L z1*6;A&P&egE%Dgcj1ba@1~{&ucj**Da*a!tVPLV;%ypPuMMPkBPAzps*h6QJ(!6k< zRV}BglL1yFtGIKr{45`jO1$+<(Bg@&eSwOGpU~ZGij8sO(?o>vP z&-b(Dw;#^iq{!TSOuIQ@$w~NO0bv6AII{F;1#Y5Hw3M#IA$W0oP#Km2}t#l{Cs_@wf4;*Lqk&j?!$&AUac`h z^85Om`+(UqUr^bBjq(HkA8GFtU0I{8i&kvg72B+^VzXk~sMx63wr$(CZO+)475ilU z2d$lb?q2KRK8?5WGDd5?_mANy#~+M%F;rYlJT}Qv45^K9a_QHcBJ@ksH3_PDm3bJ6 zODCay^5>Im_nk2b6=><0Gbj7eSqq{FXAG`#_TmE?PSWZajCoZtIPQ;LlBcP`j)tzz z%!|uPrB!4bG=c1$L9Dpb`!@0JA{0Tw_7KUB2tCUuSiJ;sKDp-Df_4`o)HsFXlow%Z1ZFlx)DKyMnEl!Y7@`!rn=0tH zaQ|yIub2u{%cBy_J|tWU`>1wk5VbE0Rl>*`bk zTa88sd;`rV(O82Jd~BZb6*^Z4_LOF=)jc}<_O66R8>rQRCtS1>g&yx=n!l4hC3~=g zT%!)5FxGT#?@dkAVs&eB{u&-4htn1us?m%MRaIq=d@tnNkVn^vH-FB;m&w|-sHw0= zA#|2Vo^b@xn=riLtB#0E0HYJfUKYg~kLztW|J=V*nPI3WJCPSkji@ zynI_DK5~O(MPiQG%u_~S1U1Gf+1ZbNGIB{eY?$GYb%=nq)jg&&`h|^d&TF-y;mBc{ z{`T(X%b<2MmRu`7d7Ijxh@=cU8uPsd#!~Bm7 z8@n8C4uxF28|qY?x_Wy=xO(ef!~^x#Gepq3S{8`==9=b!VU^N+=E!fBd3n*L9+kwl zc=k;I;?*#n?m4qrUAFH-iZDTL33bKPbREGo&qsXV;@2dL)bhd^g6!mPu8WiU?hu6f zqGl>4p1J(UW$mA=?Pp*Kv+qHfZPDqW__{xWZsPEuQ8Z{rL-EVXks7CR<^0w4pd~mz zJ_^c=Nwnp8=d=6EZ!AelYE2>IVA(_uG?co3VCnOeTUh6c13X~u!S+giab?s(Wz31o z4}e$~w3sGtM{&#a-?12YBq3vb!_WPm0pxWl2>6!&TUr6y5{cW}jbbjyww}DytS-f` zY)F(>T$5#Oya1{TyiTN9_d9i5*4I&Cab*t6DPv?K?M4tawRi8|&8RmroIKvFSGz~Z z5k1carqi!uoj!a7wd!Dnt7SJew7l!NB(^Unwag%;%R_F*sp#qTX(Yx<1$>?}T9ur^v zoHt);#{V8*V*F2o;-6U7|7%WEDe=gE6$E7mfgNyV!@^n`7!v2|%3OR$k55g_Z@4p*NE2q*V zevdS|Q7zJ>p}>WJ2u<(DaPoRJwjvWHMgS=9}-=$(g_eLyb+O5YO!fvZ9n$m1R*jk%sQe zllNeIEJAfEL~>(~%u?b_QO9y7?Fd!SazrI@Yx<2>!WKj-N&16mEXHd7n3SygW-s)> zkzQh^Vgt)uhV@yHB3hL>-;t^Eadzs+7xp*Q5EcV@2!lolW@cT?da@$CHb6#0R$I_k zEw9V&U)QRj$`Dt~7ji27Z_(!ebgc?on;1C!U!S^3&B6_B1%uD1Dmg?}|EDzydM(}8 zGHMuVV;*TA-n$Bp_6zWhK-$Rt=R6lHX@G^re6sCna&aEQq9ja_GuGD%F^srKt|KAc z(st`J_hicRam)4E`*_oJXJN{>hYePr{$nrbY(UJ(GmdTu z^3E+U?3$Pn@%2eIjN(!lvK^{Rm-k2*1D;4mozU1jHKJ32xNHX#t425_Jm2v0lV)b4Ou-ofe$*XQrao0d z9rHeA2F^DcmIW6V%D^;eAyRuwu~}J^nMasv-e=mb#N!N&?g)cifzyf zPmrB+I)-%!PM9y7!bB^Wgn*kRWbXnr=rzS`riwe1jbi4L@&|YFN0O97gpTo#gXAj2 zjmY*ewO+vMRN1Oa7NjUpWJ|ZCI84&!iWAGRWq(i;cq|rJ@><#7KPc2WyHB~W zCn!X{lnJ`ZVW{wv^zj5o2L1(_x*iSPY3GxZNiYXzDbR`f(^i|YViGgi=%K1^{vd>L z;I+cG9JZ9P2&ev?hKfi)B^K}K7%?d2+C^QY*Q&*~O+as{>g$xkCtk%OeVTv1ok)|r z{wNS&X*th@T?wwodn~iS8o9F=Jy%hPLPp*)^NjXCM(Cw0^zw;u z#s+g?6I$|@nl9$hPXWvQ_r%Wv1FH9D1U1YAd84hBYO|=;mt2ZwZZj{M6=?4`5g`gA zG)Qu`4Or9JGsS=($+VNX$)}`k?Q?o))=Dgb4Qf$VTknEXN(+MPFyY4VE>_gR(@E{R zr2BB@3AJpN8HgMQbT)`C;pDFYS%!T+IC|((w+>t@2lmxt;IG8Xkj_4BUFPRcu$)kG9lxVU)IY zct8PzZLx8CM8djbXP>%0i}|qoD{085H$dVyEgh(&gkvZ~8faUfkxW{oEkwtnK1GI< z`;9P;Kz~e_R6*Qi@##!vp^)(<7{4T)5fWjty}%joQ&?n6_iovPR-sii_agu zdKUTMnE<`9Cw8BKcm=Y1<2O~mPad3}5hCL^6yJEDnRWsY>rG{N=f)K#uYxesJel3F0Ah?+i@uFi)m0YWb(fQlkFtKj2P+{{am?1Q^ zmUP4A@BN<=5;l+rysjdYts%Sw&nm5`3Ir(G@l|*K#Lz`I6CntWq z9NfmBwB9j29Wc2XcFN`)Aa^A9=hy6M^m*62jnfXcCAFCJ`xaEt;Tumw+~*gWIP^YZ z$0ts1?w8=*4Y%5z7Vk1n<^yKX;{-u&(6i5yY0z`dvT4v`2E85eP!F{_9TIV=)LIA6 za`lHukgl*mOzJQb#ab}o(up?R5wS4C>7?jFZ*LS?N`BywmvQMwg?P@$q~%Dv!P8l0 zKq`Sdj!B6EZd-Icw^^?{Sin-jwBxGkrS@@32-7|rM;%XOn)8+4D@J9s_E4p_8q+K4 z5q#fu4o{$arWsG*UzAD4Kl@(2e1Q;6)q<_kmO4uXS6EE6_+>6tj_?M1-!sXZuKXOq zL5_+lHu?NT5f?p%Ctt7@5>s_afR}7DJ&CeE=G2dRD36V>`vfa9(T5yRf{eV-r*9$d zxD}>dFiuN*;R8c;$?M>a$VsfNkPmYXplT5}Y6*Gl89$+SLUfhf0`CY&|BOhkFBD$l zH|dfe)u5dFqMH2i;jFSP2!aBB>65_`qYaJExxP~N2gffj+SB4nM zxzu3TL~7i*>=Cc0|5>TaNEQLy@QH@)-s41jFXDzislo5dE`20fSG-k-_%6Cbn(Rra z++$RBEAX9h2hgpRIqC|DW=WF-Rigxw0SJCWP*viKwJvL25&X1}Y~v(uKg@1u71*VD zjQ+0Ve_mQni;xJJIZ(5VbBjUHORcpunK^cf=*g8L8PVy9l*FWH-Z$tkl zakGvaC=9RU^DnNz1g=Q4u_bIcK6OFNbp@#ii*-vX_;i@q@soi7ScvyFBH&ppVb@3^qsfE+a}?)%_gPviNV! zJMklMCTV;~!P&-96(U4A@JR-T0!7G*s6f~Q74kY+^%xxD89KBFFZI#>C)y$ev77P^ z{p}kA>c3l}x&FfvE%HCGQ#Qjm*lD#mu{jqx)=<)- z0HdxM1IC8BukpJ@L2D0LjFUdgFEa`gdqG7Jdo}IS*Klc-Qibr$0bs`Qlel}Q9YtVu zIAIpjbywT#_4e!4o8YGa{R2h2 zfZf^MI$L}(4-3TP29gc}cm{R(6?k=pSFHr7n1y$pW1IO?~Nm)nptC({n(V2z;w>JE_61 z`TE;B8DKBSmxr!O=ucXkdi1rC=zz1~)<<3nh8q#i_21_M&7%;v=9BoWtSCnfD#_y3 zw0)P6iyNX$+4Y-m#16a=Fjk-2rQl7267}$$;FB60Fcb~9;0+##A%Xcna{(^8LcarX zM1@GnC5mr5@7)mVQ@sW40^kPSd$-8_Dn-I%qA#Nu!l?81Gf#JImmolfEwO~aN{ z=4TylIM1=r9@~as8U(&nFS5G>!r{wT1JO{=ls2PUg?W_>#jAmOgQ_r1bvPbza&@+f zzCAyKN1fIs%_I)wpDrWHq+YPffHO+hUi2J*TyPd zp}Otkbe#RNpES}kL*geYKxPjUuYABSFN%Ff482`xnES0?@uLFMr_>QlS!;vGg)8x1|M9dlCERsK6UqB<0DD*su zAM9A*dj|{fJgF>%d@Mveb&LNgYu_=oA(3b(ZSN`atE1_~oBx)hUWEs`(a=|~Uma(~y#H|tcBkk%5jv}i_Ql{rTl zFB{|b{`c*wZgBG+=2-XWRU2i)q02-Y??mutonBS-(i)>M)x=MdskDan#?Q%dNf-=o`u zHny-^SW(n9YjlJyN3C<)ccVU`S5SBDo3}>Zds=h^W{_)(?2~c4g`ccRvSrb)ctL1D z=D{jz(})(weR7AJp*>>(#k~a%pEkyUEsE7||9ZkzJpL4{-}FHc!I}}OQmt6#kjsDm zayH&-O0*)m7bnlIA5%Ym!u$(0&~foc_*d(u-@m02{u|BJ|B(%enArWl6gS@2L_>g) zNv19`pgzT|O+toMY>e=ug0L*3UKGlkZRd>_$4;FLOp~O)lGZs>b+y^D)Ojf)Dj!j* zJ-$1koB_rtU1z|c3$^3N91VCfK5kt;c3f|9`hMJ>JAZow{coCMq^D2eBTCt(}18(SaBHrZEX_&=1=yCN~U&BQH&LuHd|M zmAD(mfhc|Bf=A6@U?a5T?#sYBJw?n>9Y>bP6fc8kT1@kC9Hi^1)I`Qc0nbW6G$Sit z;lgWS%pxN{^vlctkZmLU@i*zlCF}4Q;)Xp|B7fCD_);?8y%IC&bYZ1sjt`Z(Pmnu~hnx2I+}u;?=F%qqf^-!Lkg zq|+igOig6X8X}yxRP`6?xWnX7njVeg&9b;yQ-?Qrj1ftzpZu!9F*_O3|`toc82a`-fm3N4Z{RGh#3RbzFRlJ;RsmW{t47&tl}=t63apV zQEG~P42T*)qW{Vbw@y4Mru1!d=+kSkKc~Isuomq0aAl+`dS}F=ai-!8KYy%3N2KZ3 zA;*X3ij?b*WG^LjUm6#|lpyXznvdg=o)K6Z9lkV>5oMhmJMkpZH}VwdwAC*XFSCNc z!y+g4LpA|e=09`uW9W=!p$%TN4px~=`G>1TQtMwaV7pAhR5&aRSA-*McdrG69)K1{ zkM;@j*u<-17qmM8*yT@jQxF);V@-={*fNiA+WrMAOSXN8k-xA-m83O8Tb=TvVa$<; z$Ke_?4OJDE9W^CpQY{MFhDrA0Mr?$%rYX`-tTD8-H3`+eBiaU;n_&dil^vRE%Wove z6ar#zo#8@sgR;Vj1RhIo2rM(7x;-O-C-VBxbdhHx_R4<$SRWVO6SHsJ2mwkPvn z_&3yLI%(Q9K(o#rroSH4SVqQ)U~$tGixSF4I6&d$MQNhPUn zy2kCU@6%aUR7x8F+ZBv?@tFQ2^Zh!lIr4<4*J(Eu=~&@oduwv?X=m2~{5*035X+)s zo2b$UV?9kyne8b$-B@$}D!`2A^EjuUf4y?~ZahP_p_1MAXn@6lgjIyooQN8q#mFm5 zS|+{jj}`eaX5zdsxf24-#)4@6?R;bbB(k{<3+sH}0IEC;Dqu{+{AhHFcxLOJft>cNy|FIDKZspN^`+XQ<%qDs3NqVG(jtMJZM(w z0iXC%T`B1`o-@K04~^5rzY!5+SCH|$U=PhI(}dm4FY##%dvYU-e^hGyECtV&F650F z=dfEn*Z8Rd)4#o==#6=AaBWwrTVI3naE^swC0%>MjZTq=reHl~6!18YT8RzHW?N{F z2C^FIV%--osK$6^kGyd*;mqUhE_V8C>6E*D-9ILbQK7nd+$$jL$um}=e%Wtp*p3BN z3x$LXfx150Fp^i8Zi?bqOxiI}x8;U+RseM1%*i1Xj8y4I5(YlS@u#jCev(<%D+;)`9S@ixLtP&k`CTP!|{ zeO^ql0>8y^eKZP~M|0Y3cRqUWxHouQ3tVf1{TBGB+Wn3G%3QE(3`RI?1j|qUB2W7y zllU?sdb>u2ZE9kiZ!Xddg70XU_$wBxiy{426c>W9IaWTCfvDnO8YJ$T;Q<>!u$84# ztPxNdn~64s2746rP)3zKc#Q6)i+=|Jp{IP4=+8*~RPSFy^;GU(5_D*W&WktX=%(AZ zg6^gB^o)SBgWlYOA&R;a4d8jIj>O7$L)k%_l4kjW6ir}cp?(zzb2%(Q4SslkDzb-HB&+j&6M6=OA!Rq(9EX;l%=^-LE>&f-EWHfwDMm98(1R}`$O zdA*a?EEC76X0396bNM+-%*?q2Q0eB%SbY7>cvEC}aci2~H5}tJG;AO3?%wL6@}m>b zBlqoMf6qYSCFPp(ZX6Z!7@tg{pxD+*qOkCYTWwh4QxT_E1yUG@-^YCg-LePd91e#b zrd5MelN)$OcU0gOBonA7)_x}Uo_tR*NWg%e5=)ti_n6xS-AMbyX~rwVGyt&-`dq=u zxKY6w#h!?alGDu2+AC2 zeq%E#W$?qwbkIf1-$%0#zk8NfWscC&eA#!#pW?!a_Spdg9*-e>Ti@9N#fg%D?cq7Q z2pC^|5GUL+Kj=nY4Gmu$F?xC#P2Qx2YJ%npQe%O57(GMzkvnBieA~+QAQl){_L4(d zZW&U7DzI{2Wp*m|IOG^=fwnkysBJKQ<*A0%7zuTS00M1tnTSl2r%bcbC$MeuXv{E$ z%pZf6VYyYD^c}tM>8WHhtUS^Ko#9rk40+_E_H+X>3l2sNyrv$(#QVYF0s#5Ix7e&( zSf`0hXByP>_lOp`%6u%Slm4oBgVE--PW`}efqiz69X;bWm7#wj!&=MnV#5N;Z)n$H zM|!C30?In^v2FtI|6FA>_4boLtv`5Lr_Tqc9U)k`sN1L5`<7H%QYHK)StgeGBbTmd_m-=gW=4`icNTq4RGwZ@{(I#D-P4NvFeh8Hb z=#pO1NRA&iKWU%U0HC%w0`T+kdXBa#P=9?xH)Ju>_+dn@dG>a1T&{4VZSd#{A)<`uKsU7 zCs2cR5N&y<K!y z?hdDmHJP-swRzHlvkxm%-3}P+tZ1ik2jNVT2y6*ynbk@3P3mZ=zU7%x5B#| zMWBe^tK+D6A^nQu)U1K=hya4G`gWwyRkJyknXlrN=!tU|SEloBYz`YZ> zH{wZ~UAMn5TpHvmM}@h_P?Ji4sCVKC0>@jBqpcDU?yq+6y7VP#!zy|v$Iwe0(o2q6 zLGNUEPXT?x@X`?ZEDzU9@J@YL0pij4{8IIi9?CeSXtq(R1r&iLB=<7P}Z?AyVtvtz9PSG<~o`-Z_Px({JH$)>LiccMiPg1|n zL0_29U$EU(yL|nC?LXOkTVNqCo=}KeoU>ayJQC`QkA6Ny{Dckj+#`VJqR#)Zk@nryLR@V&mO~WBm6aUjNl^C zHSzfV^7O^1uF9ARPtj|3>WDG?kuhc^HKif07;Ii@!-l+TB#3dB)6Y;!j&oTKU_eAn zq(dgLy;Vy4)tNknv9aIDWqul#5Rc@(aT$oPf`ovlq-q8y5hClEhH zuFm?|T83p3l5{xTtfX4^?$n4md>pRIB$-=AV?q z;i1u=&OZ7rvAz%uFsw{4wqWYHu5**#=!$KCh-r_ zEIt#FyGX4!6-1u>plE|18LT9mh0Y7I6R3YL@&gG3qIkK4S2_0cBvJ}irX^A$Ow0~a zyFPIsYgsw7L-8A2f8;49F)=!3ZmPn1X@x10GRBGV|3yolL6~8%Z-_H;CC-b@kCR%$ zg`gUpb>pgu!L1ARvcz3ds1kC0`W=}3#cM;DJ)IFEqDFSarW?zsG?&s zs7a}Tmb>bWv!+p+Wl?i0hqZOq(T9z{GK4rS8-v!_)}=U^4~QCn5r4heI(TE4mlJlY za*pHdyLHnwE>FPbp4pibv7McOwK@_GWCO(-1RZ7BoJ)I<-OArL&(F<$&&&m(0xjxd zMM`JtM&W`irwp-{UoAo%Y-f2q=x0mjEi&7Zo=+#r-;|?jBy`tX{fsK+bl1gCT=E&^ z=+;Awqth-Dm5fP|iYn`1$#Cx#1xA`W(4kDjAF^21&}11>!Ueuk>d6tvjQ$3R^fSea zIow*qPq?pXi4Mc^(4G;%I}P#uVv-GduyXRdBB?x?j>5!Gq@pCIyTlyLVy)Wy8qc^_ zL*6FY7t@D#`Mt$rP(LKG!yqxZ3+D^~YN|Fr>S>&m3py+$(mmO@gGbo7cWM_rYq3bl(3Bz|XOe4BD1 z0FZi6n54hZ0fXH&XIdAF+`Nml{B_V|aGymORPyIxK?UB$bh(9Ow`&ox+ni`}T2id& z#pEAF20$4E+-Vt{74IWYtxMAmu_TxJws|f}#Di4a@$6l23=Jx@+@Z8gt0$go*MEd` zzj;(i)M#p$g|kOZQyPbl-cK6Kk4xJwJ4YPB?osde`P&}tKWr@)97kD+1id${Hf=F< zI5PMgw=H{W%HN1=+%tas<=hUps4Cuy zFIdz5%QOhQ4SYXaQA1{<~wCSu^XRabCXi&?lZnBL7qv-%9}6srd6^EAhTUpw)h zq2o8fN06_EZmc{GpWKsBq+!JVoI$sZTB$p*WTt%X6LL^33*0|TvTFZ6^DvX_9C6Gn z6_i*PePa3tL-#^E*Tinc+({5gWzFiaN&b7u%5R1WN;D52NFlSCy@%@)cZSi@Ow_K& z7^a`1`$=5@SGl`PM_x36GSUg6bD1`-b!FX;P{#?1!usjQ;*qNSOVi~1^`+}vgDI2a zG6$CovGVy$TbN!3TGE)5qclo3-{ePvgp9 zx|`qQQMr@}A*}A+g}lV+m=weeAnk`du$O%OxNXaQ$J(;w&Sm5nK92CKGqJ<4eN~w( z+q?zfu8LX$uEX4Ob<_}QT;IYj+<@PRsKnUBI8*}@_Ge#((+H>;#(8v@4?E`BE*y$0 z{hVYQK&%a4%{h21r`0F2y0!`BOW=}66J1eO0yN|v2{7z7AjWquHS<5w&Mf7Mbwr^S z&^__xr6`85GzVTT9n-P0i;dt8$^aMpzqH2m++j$u2)tNDk3ZmMoxsoS@hQJCys3@j zCBD8sPk<5l5IPEu*uOOZPkG!YN6HW zr7>5JLSEK~ST+naV;6@OV>Y!*?+2TP+>Q|%BEbY&I!=(4Q|{jCT6bM|qDIj(k}^5L z^kL=7=2Iy1gtZ^d^v!IMVagiSL8)L>aCgdh5l(1nF}}_S1NHn?TG-Lk2T^s)*13a< znDtg4xtC`o;FcP`>Dq_2?XD3#$Oh2Pr3y^`P3iH&kS}N^M`xhtTyIEF$I-;l;jqq>``;#!Q=Ph~8cs_jaw^xbQPYCcxMGebTnP8p#*WT*pkU+IR`@zq)W_^0qwZOv_gIBXG@>9SOBG zg*e++&zh*M4T@iIPt6*wU~HOR;{&6Ao=|9wWXuSa)to|yx^Ecv(abr6#smf|?AE)0 zisIN%$^=*~smr#S;8CC@SpndtX2|6UgG84*zVbz%XtwO8}g zon2}>B6C&cLC_6vqixIY8;66XUB4>ZuBnK7GYrpcWXEhcaU-zJY6Qo+FC-11xEVN7 zhk!Nr2g@F=dRNs8h1m;1$1SC;J80txd`qsPE@C+^1ot;oQ(j850q0g2-(m5;UoFpOZQ3GU#sN*Pe}HFb zakS_Pz5U=%Ij)VKd4*ejWqClb=bZW&A-|J1*u}UogZ)G+we70RY_K0sar$Nnx|BDI zj>yXy)RCP5F~_kCW*w4qxw85fS*z3ECbCwRvsR^JH5{ZFz;(_a8M9Gm?!uM@go%;j z-j>X)pPFTex-+YKaKf>^;3cZr}hE=lD|KeKhd3Iieqv1qs><-qa&AFn6 zf3WK=uhi#D-3pO+nDv2oenL;)U5NaQnW0e~G4+a1D3ltUE^iGko4G0G=aB0^H~5gB z(&dg}YAT(x;kk|N6`h*k;zj3nfDx~e*}L+dO6e$fsnoqEQ{|}H=I%AF+$y$+W{vh4 z6~@|rg_M`w%dSXS(3~dUg?YI8vA9po2H?#ZD|rgk>AiF_eTcUdiK&Y(_2D78b#HJm0tlUSa#AZjTeB5tumTzcK728F$)yCY zG+c#_v+KdC>_)8GSEx}Of4tCqV55Zv>Uwf*&M14jeRY$9xYz4}A|@k`%+K z`A?VL{M{B+r>(35gpI2$=MS=s+}?BfXhEfugD{ju`?Bjq=V0Ni?JK@}joGZg zR+zc7CZ|@w?qJ#q!mB4Z2e@02p~oE2oobNxH{h#0_ttOygw?%h$!<1D+tpSCD2?H{ zbwiidQJc;;8h4T77K2fA!*Ppq@Tl1Uv`YGWv+JYro08!iWW&O)sT-UP@}Y3U2o*-& z`KQy|aB38gxVe4w0U=K)b3f1ohASw1{Bz>BlvqY|sHOTjfvj)ZBUTi;BaGM_TV?yQ znIjOvQM46xHKshGj)^O4G=>0gPwOrk-?zjP3Sp(6E5b(XKLY zussy4Dr75$>P>|*Wy`?ou$|o&*i+O2Cobg)DPxRQEB9(vyTc%rJ8gr*V?3BEHI|hG zgRcGy2x$n-V8wfDH6`)S=|NALpz8|9YK>~aJf;imecPHwQ)|~c-_i@-+QgOe>#227 z#Z9yl&po%^FJV7jdw;hce4vn%6=Kp67+MO@bNpVnN4Y{FIRJwOKI{Ig-C|=fg{gWU ziQ*%a7M|z&lEy@0OV&QTqj~?P_;0fb0e~x!!HjwQ=x$*wo*pt~J1{yQ8n%0Dmc@z& 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
      _TuR`44RHFYV&Nt?^~ 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 z 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Í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

      >~7h50ID!ky*?nK}O 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%0D0njVWi$IQdS?uQ^V$7@JHj+Z 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

        is9pb;ukK;?EFFr&svZLB7Tz%V?^ zS^y+Ak7MeI+6`!wp*c(6tawE;;O1~|QWAquP(hyiW_L)mt?9K~#dv8ZEbo!Ql9YY{ z<++|L{iV6ptm+g;Si#2w!B_aVMW?hWr+70usUj)I+5+Zv3-cUgVRLP%;tl>O zF)uR#AEDic{q?zvOm2N3CnMC?20CmH6`%9NVDq5SNwKD0Y1`rtms{Ue*+$iEKdO;3 zG1L8(psD4RF7Jz>SJF>Xa8%I79YSs3UKVvLD*GFbGP-wAHjF317R+^G(T=FQ3RYzi zsA7wP1og&g{39&k1^Y#K46E9T+Z*Bs!=3vLs;-y68^pMnKMB~r*%&MTIG&E~-*rZI z4z}NlWKQPB--0!=6OuF%)Z)_eV&zKL($ta@dj|@zGSu?dloRswwMz8Nb&M>vjJ0xh z&JgnSjP%TV2j6sb%E|Gm29|lI8Kwmo#(Adg0|~k@I+|;#x(PaoB}vMO$w}&+0|{!% zQ7K6&S^&uYz`uPo$lN)X`S&^6ejoqZNB_ks`5%0=yS}y6|7zFxt33U$>^R!!TN?kb zE&ero`~TnKU*7(|FEGw{CuBc9{EzL867~@_cxmxmfnZt~oVEuL+8cu+k%Rmq_qWf= zt!ow{VFPL-{Z)dxgj9QVAHb0+qL!z$&6#$xqUx74#`Au z>;-nNIvEp)1Hk7>@Pjp;p>&k9lpfMaLz{Ca_rj|r7nL%^N z1ImI`p(c~}K(U>0k@*mKLiL&0WhjWeJ45U@fbq=&YwP$K2{~i*c__6m5ltKH_(0?U zM4oVb0Hk_Oc5|E!SPCe)!IaSI^hyERG8)bt_gcT7X~Jer#R4B~^M)yl;xHEcm;aSo>NHp=QY*uuxMW2wt_U5`^t3rUL%K$gmsIMp*M zNjfAI2H{tl?%@Q*)*ob=3zgsw6MI!Z6qu|S?78%4h4OztGAd*sY@Lh*49$kBqe_{S zP`hNe-)TqDAr$V=Ae5}t<4 zQ~Lg=XdKRFn(?o&1oqqer7;;+mZ>4-j6Fx}CSVGF*@WYqUPVO}`~pV!3||Lztt;3qazm)6p!6 zVb9B0E^r(bK;P3RaT({vH9|#^NK-qeE==zQrXc0WXNb;Q4AUNB9@QBt5k!%8PW6KC z=kEjDcARU~WMO&8)G*C5S^T+vsxmIikyLdd66Z0;uiRbV08aV!db|Un!&>P|HgOLBm!8#Eeyea>$(g`5C^bR? z&+&vek62A#OqrCz3joh@62lhPl7#sko=)Y8B)^A z7-wq@=M2R98g6%TU12X=rpVFX1E%WVlki}}^Oe9U{&kjdeL zsfd}YG!fpwe(o%q0`9=L8}48N#T`B1z5p(+!WpEdB6lrWYAraaGK;J)Um%e&=h#7O zN`hHWXs)K7s+-d%It_bFYXB6yXpMqLAUe`YPTp|(x<`3`_I(Z>E*s;9+@~*^nNsxG z;AKIHKR|@dTXMd|lw`7mh-6`0wQ4yWz&;Cq8Au)kQ8_faa}jo-VXo*Z3In48#f(U6 zen|d-?t=P^lS+%L`p>9_$%a|$9XBMe-z(0EQ`u^^$`da>I_;pR0ItBU5Mn8*vWlgX z>8o!aag4E(kWqebfiK4+vG#DSYT670O3L}`suCKWe5Y^NUP;NO0f~X0c!vvC3x1z< zaCa8#vGrnf?hZ9d9`sQ%AYQ*vq=8yT{6t=8U<9$N&EgXmxe8qqdx=e}y=r7-i%pXl z<&MWL*{;+k#~MF>>`d;vz-1n#HLN*8x+G<}g8-~ahua)3dU_B%8v7EGFc_U;U>=pj zUuwW89mzBg8!}tfNgB`|<=mt2B2R%*J}tGlVCCA_@S$&bfkx(GcL>`w3peU>N8cyi z$(H;X)Itjz&h?aC&~C_33mKzu-^o#;{9*-Td0Nf?aI^)ybh+hjcXd|p#BLcdx_}B4 z&tNb6Q4w;BU5*g7-ZSkqy`(Va%Pclx{Bg8V0`*Z{(_yG0YuBaH)zIqQBtBD? z^OP*C(~&jVwOZo~{GhcXNE_L54JW6DBeXD$9z#B$62;S!)>+a8|%V*n3@84A{zrNXv^ zc3UvyRZx#l#&E_I_^!a6_WGxI!?7tOAUU(<1=t@T;Ti;Ee@vA>tcM=*Pv~ukjJXU& zF_VM>VaMx{;%|O2jV<*T49aM2i$qO4ceKAKdBGPyV+DW`arQ#TyaDgPUCL6S%5qj* z*XF2ia!}lotL)zS@Jd|kRI~Ai1=LGi_$3bp3-+TKg%(+2m zljhlEv0}m@imz_(a1!I3FYK?*vpg1UP44Td-!|lNTJppj%{iEYP1gl7X{FJBBfJp> zz00!JYuIHi=l2oN=z}tCJ9Ek`J*8i6m7O@@qed+F~2u_WI0I7 zP5TUei?C;Vf7*a1t!lYGZ>?b?y=qyUtlWEH5#zk7kUPbNvyR_IdPDK`JoLKzJ0Ajh z?vaQ2O_^qA|0lrp{f56;Q~zrO`kjgW?+^apfmpo%*@Td@^>;|{A2r*gcy-ynpU6Q| zi55k_$Xg=9Tl5)Nc`cW1UaqHY z-eoaObae4_{#fp-hd^p&-%U+0-t6&*z~M+>bq9(dh2DoohNfm9_L{jB)@<>+#$X-G z_O;%+GwHW!e^)8JTnqGmT(D(A*P*iGZk~`kCgDD2*6ibhFg5eC8@A8VOWA3B#>?57 zIYR;U-fBmLKB?ae-;-&ee23Dpo)#}YUvMkv^A^1<5aemGCx5i^Wj)Y7!MH1F`lvY* z6Rsq$aKChZPiJ>9$`=~hsJ!En$$>4*9|E#Z62epzCytdO4AKWZyE0MW>Wlrlz=WRj z7DX2^B5m*8uzV}jKx_JitDd=uo~thfT3{n(QlJc$kgX(Y?kbMNpfRU{HcrVS(7=j| z;3+o?y#NjI3wwd%MG2zr7j@RYAcp=hz=AkdF{gPUMMl`jVQevrhTiL%Q zy9#@DiW(5q`WwrcQj=(}{>p&d{e^j{*k)-S0wWnZSU_J@W1b)|F{Wc?VSFS z+b0&WvUOE-a<}@gE+i%E?=B={ADg@S3@0dSayg5h&}C9{bD=?t0QB6jX&Wqk0_J=s zT79f$8<(_+Vwo>xNfc}@&X4mL2ks-6DDm{~>84NXj#rM^cOFku-9B$XJ%C-3_~8bK zlFtIYmHu=IErE!1R9+3`dNdFy&B}@DDsC?lgPeb0P!u87dpC#)oP)O%879b{)XU0K z^-QO+R|fNZ3HZ+;onov5F%s!lq!7RDmD|z-TKes#n+CbUT3>GGW!dx7#E3&ZNEG)Z*@D)(Uoy90L1=6|RKc z6GHKh_St7?DB{@B*`!$fJ>t@-KuaUHd!FPKXGlU(OXkuvyCn$$T zlPdkbz4WGHzqxU^vkNNh#)6_Fec{ez?CB1pH(^daT2(D)JQmjl34{G z3?iT$-B&wOA(@oCgA=iLzqoIjKLKYvESMbv@5oxNu_?-8gk$XFPxlmZLLthehkVJB zdMFBHV(klXx%vukuy@s)`Mz7JX>MCrXogImwZ=5vL0TKy7mO&ah32R6DygW4gYQNZl zC?InjvCMl?EPdem^AScS<_jsjSEALWuKT1|&{U)JQAb}$Kc?@8!GV#07;N7?eyzpRJ2YKyT0>}% z^(_;!izrsxu&ymsM1(}ca98#pU6J}2y0;gqj3P!}G&@+JJ2DENZBQ2L zwcrM;lZA45RRONlBahRmjL%jAnwvkmv`Ya3cxrqHvBlXhUs z&cFpmuGj4BTBr8Zk+x`av{4Pr4Yl#g8Y2wSt7bH^mJ&^tNjik6rV~oq6gHS(T%X?> zR0l9ezq6ZLDWexobQsICmHM&uihfo!Z!<0J&UAqZ*G#evhN{yrha$fwyY)C}Cj zS9M)0bP`l=FgvrEAV`g<==lRNgUe)@sH-(@eg!Ny<{_N0$;_lWOT7 zLz3LE7ZFzrmi8|?SuUJt9jgG?5Ar`q;SY6K9R;gN6$+obtDRxf`531Q(@?ei?c%JW8$PPV7}hs9lnC z8TunDWN&5_x?rwel667rh2;xQ!L~wB@F$&a@XAo$?I++})n?yH5Aep4MWVZAfJc$R za>o6DCU5yyDIviltJa08cEIe}e#2>ESWWvB{iDV&X|d0FuqZH=jdE5V!fv@b&oc8@ zS=iYaj#$XMHXz~H*90Orj0ji81hONjM`?p}WpY7-ii03#8*@Be&v6`PpHWtM|_ zwu_W)yXrVLUHXD{xI`zA<`6J_2d4}pa$@PfVCi{yvm@{djPY*C8Rh)xAacgbKNW>^ zZ!(mliy9x-tBZgUGd>=sAE&19%ds0D9Tm<8aoP6k-5LDCxDX&5#7p!{&|>{*egLo3 z9j>gJ&try8K9Jty8bTN?Pfq)=bOKtN8T3vKKM}Vh>Q5sQxFMi;4IU$}@R+IkH9O!^ zHvhQ!5y(X!11+yePRV1$Dpoe;lG$3M3hVx#y)D7b3OoPN;s@X4L5KLARM!74p8f0O;C~G%`$wptXsBkw}fd7Khg_ zrN+IUOb^t8XT%+I8@Mw>O^6t>?vFV7U@_O;(}PiR-7vBd|g z1u_(HU%G%GmzgK%KIy2O8yyYN5FVv-Fgr3gXK!!CO(gUiH;}q=i9wE!HsD{zc-!v> zFTHl@i4vU4qeNR%W|YaYld};x#eAp=4yhFo)7+PnNSE05N90p215v>D8{3on3HR5s zhM@O)vrFU???~K%?0rQ`*Vxl3J?+FFlbh&(^NCljkFMY`O*|jhL%x1jEFECc36DU{ zVwBQM>%~MJvPER0@J~B=_#=e891hUFUazKNbg~T9)3l-WIbu)n#zUC-JR+HnfV&GJ zjc2_bj^8+iW|t^M&)?+nJmL%Zgu5w?)q)pI=9B;Cr_J0T0n9S)t%P?m*1+Qved!OmITDJf>C#IE;u+K7;5U zNYq+Li-%n(e3TC+5EvOcb>lM(10SJiN3{J#jG{%sJs!aKJWc;N3R%Z}i#WZ6`-~yT z1^f+>HM?7gdM*C3q7Nb#$S*HfKwAQ*4M+bSfvsZ(8|=L()s|DUZzHU;v%%OG8N8xz z`9&A5jkYg17YdSG+h$wIfp-g3Um`iUkjhkU6lzu51$IsTIe?3hnXDHm1Apcgtz1Ug zZ?bw=i#isd%#AYLQLgM16PnQQ44FCJ|5m9;4+L)4|8`(T-|_Unc3`ysPOPJ1{P&Ep z|AI@}igR-CJWGYd1EFe-;Lm>Hv#5Ey&A(OP9za5uNsFdazn0re`29Kx9)yl-j=iZ#^kA#*r7?cv|%pnXIPnJTMf!Lh` zY|nbkNvvsxBE$3x5FHaIEhDaq0^NQRpw1R6_-9DbeJAL;&Tr=IFOAF&U!k8=5;ZnU zS^!K(ZL=Bnl^)uQAn`Bhs^UC#!nv)eR!%y9i^`BmsMB7X ziXXyJIO3#8AxA9unkEHlgK`;cdJh&o|G44vdkDWT;hFLvgf|@JWD$I_wB#t$z7Z-B zc#v9wkW}84$}kt0Xp6Eq{Bj;c%#kl;>8S58Y7m$~T?am&+|thVv6!DQm6Qo@sp%tv^oy?Em77=?Oc`1NRwrDgm&T&OGFGMJKhVjsImDBn`a*+8)*qD+y}#MaO8UwN3Y*=R7~Nv z9XyLn8fh#fl+m9wqS2@6RY}hUB@N<2BVT@#AE> zl3N=Po{RgMjAKzj4;)c@>OxoZ;i-!$ImwwSiG3&!$?#W%HAoU={f6*ku6vNn3yTO% zZP%;ZD+_UT5j=05q3AxY(B?B~Ccvs}0!i=ZqG@{zthI!B50Po%kcMRrmTRQH5)iz) zfsY*DQ4GXCMlq!S#-jX>#h9gPX@{kX^0}B?6{4EFC#o=PUQj4qK2nX+OhI99u{$7R zZ*Rrs(+G>KHi~7Oupn_>JsbK|QABga)+mi!yf2_{I*|^F|CA?3#S4YkZ$d zs%vcDQmSimA4`5c()RXTQ>trXpG&Ii&%UQr7hXTywO}?6>d+nnH-aD^ZODxgurT%aJ7ONrTO8U5w22eingHxQuR! zc}a`NtPA^}x$=5e+v6mV1~CIG=_X<)i=lLj214WBbCCBh8M8{_X8iNx{ zLx%!MMuFe)WQIr$M@bP9#a5OchlvUX-82^Nf^~mLIZhsjYD6m}wHa>HgxBUH-=7b& zAV9^gt=ju`VyBO|96QwJm4hB!aTlN`vSX*SIco*%WZ31!Yv&Hff+{U&Db%AquB_q& zTJlpdYc?igy=925J!{PADNYwFM}tQa1SCQNi&mrF^5!u_7-Lm0DA?RTFuduV^(w@< z^}>Xsihh%Z=?jZ5MrNeu%||vQ)!4?#Csr|V?xS4OeDik>fFdFeyvK>E)HJ6^(~xsY zmo!sMUR3N~Tec;^)f?XbfP1@8QO7?OGfJDDJ+Q7q;`$CgEO=j?5u~AdDcBO8Cv|m* z$w=D0Z;$@m}7O2tL4Cfy=+>K?^BVsv8BXM?zOeG zVoFk|T3C;J?MAL2_lZxXI-CFg#xI0C(*=K%weqww+$?6~P6PABXH={~6)q(qdlYf> zO+ZQr9F>Js{^s^@+S#loRH|2WP3q){Ob-RebT6PG`NxvT_G=#uzQNK+&D0M607gcs zA-jsmwNz{a2d+(`J^F;4oleF}J%>QPNG6VOF5?ckVI!$sH}snCE~=V8sYBvzW@mmG zRA;XO@=PPkCz2cs00IZUt;)o6hU3fSX(JgM{R2M;ebY>4#w%sA(;vh!Dp^mA@~l=y zE7O(EiM9Qi@sNC|kYA8iUL402zx2U%$jSg?YtMX>8lZ7VAOzRpNv8=O!&q zF~yHHolujA`7Gkqs|{AAb*OwxOV4C7rm|HXmFCM-Y#}`g8aI_RIL>`>ZAcy{{LoCu zOb?G~v$S*w*+P#px5Q#TY#QxP zXDg$SmM|z>vu;>jx%ZO%CCAhLCRK3P= zaPI&w?bFDPov?Cb;Nr@hM;J_>zEwm|#g=t=4kWfQL?cjghVp-iy;T6<+d}zK#|bMR zk~DHrzJ~aQJuBbWJi=P(y>XrBLyF_5(7nJvqs+KcB>6<~z7K)bYy~V`5o7eL_jXnX z`&a01$sI#he2ZRtZh(SrVVs8X996sCrt=_FRjiAH{^%x|?k=GJ#07c=GM>S+NBZ1X z?40_3j%uoS?-ID;`Mz1;`8*ve@KJx z_wQ<*Km)#T-Mkk-#4@m{@)Am|PUeb!QUKq|!;KU|5vSuqCTpPl>4xv^_EyWsO(uWv zqeLC-cc_RU5m0;G9FY3~`?0Vi#LccwSBLqI2&ETiceqvA|aDXQHLLko2R>& z3z>TG)2YaZ;7)x%19iJv1Hc6sQmze_z#M*K7XGzRTN*O9ovWV%O!`L+5x8wL{HD8B zt|I@TP^^3RuT~E{F{djuErhwiEcu~1Rr`k31^qYOVZ5tSv&31#9q)QbMO~sCvgEDGV$5%VpGs3t?gmB zU2-cG$+gsbz4u%s&~Y@Ea5uSzS9zT58-=jZEi7uNfG4nk>ZpLNQ^y!S?7Q4u3MAh)4b7RNS`T^oB#!0*m)sGQK;g3qSHFF}hzkJ)kbKC_Z9j zPk_<2pfoh^zECa<949y2%o_N;6ZDL8JK9?`%&rNhA~S9-gY+JK6wxr~*WYqC5}%_m ze=&Wf{&DsX+5ZeJB=lYM1&sA={$GVIRZT@CQ*FSgI>jO$ZSD&;3{D#6=7JF zs9)HP{FWQU87(bFa~m)c))h=TjjA62A3&S;eVl+y#>JgZ#eC&+Pamu{i0jY?{62n&e$ z%a&K2`^U?N{52BsX~aX3q3=#Q8cfU>r8H!`)#4wb6vP{bU>1I}XbSkQHinn6I1h@g zkUWHunjj@5)tgKt;%rc_knvoX0+C(8pgQCc^VywV$dU&k_e^{w>)Vb7O`fjM&A7*n~~R^>iCD=BR9M+FkZgll_aKimDO>Fm)!us}|# zOxfV~A@e1b@I;wqYOm1MrH4=**7fJ84d@ZN=+Q)Y(p<4quq!L-48Er*DN^Qf=Be4Y zPIgP~HhMJG@$fHy#z}H^KPJX5MZKFzdafEx|kOTo5dIDD&a+y04yP2_`fN`P-E=oNfFznGaXRpv_qL#O8XcKOn4$i+P>& zhn@O`%4DBAaOb%;?zwQl^Ml?(O=#AC?n)+6cPWkEUu>fmT;YnXD>K8+P|6-v-Sfn* z2PU3th)UM`;#7?`gI5wghxFteIJN-fyl_WSeuI({yGi8DeL?($D47vUe z#p0{kWEWYaxsM`l-z02=Xmt@+!p;;;jhupLp}!9$QvSwI)w9}Vv!kPnym<8y;POZF zBStY&sH3Tz%=uxC=hYlzyv;(pPWOlpt8H9hxe$)J1#mG zq1-hg!p$TM`yUN_4-Tzsh4A(vCzWwtq0P_iZNcg$NS-C;t9MxWK(@DIpq!v)7#sY@ zmJvX!x90DjPS*N(7}t0ZgFslybl0=({(&_Vu}<8GEB$%W-1N2KFXHsL7w6l(B`mQa zbE1YJ`7Oe}bX#P$xI5su3H@S8f!O9V`%-4&1z{W~PW93iWc>pi-xh)PQ3-5SMkoU$ zcl5owZn|h@U-dWb{2c9)EwFLRv<5Ms;1r74ALCGSg|^R6F+om54F%7#ekDFpdM%pGea!W9cd57ob}5JCr!?%OjU zJy;%-mzh$(GY}myr<12jH~!>AJ0_faf}rleMsEA7y7jJrc{>1|y1lipWdj@Q3F{#K))p^^X}}Cr&iS& z?!?(G%&B-B;RjxjYPC>1F5LjbG>lSXhS@+(rYYHcOQZipSVD3EPUBFugr6~9^8jr_KLV<|lt+zIXKx~JK_jbv_mEtF4N79QSa*EH zlv`?jRfv$3%xeQxR~g3+LQO<6>}S8Uw-}p&oYY~2Or|tV1crx`P=6Xc-L58@2<(Ki zqhl&Z6BRLdb3s`3ePIDZmN=bDxjLe`ilXSy;!5%Kxo2Zj$}vYa{&}SpqfC>AtY}{> z;ngccFuKm72FHv&-pwvAUMbL~Sw^i21#&i467J;2i-O@Js&m7kSE+j4g?vizc(Hxq zvARw6Il~9}J{UyH+L{EJrr^N`i)i|6QB&kn8aFlSKCJu;Ry{lQd9p#(z^XUookpi`1bh?ybK6_&G7hMxl$+V5~8B9-5@t53s=}$#&7$c?d5^ z6v)T)=p4jGo~}Xt^LhBv^y+W<%>~Hz=Rc(~|@OK`W^Mr@7xLc(Tl(G$x(}=tyranrPW4^I1=)wyI%1Kb+aJ zgNYv#rAcJ=nZ1inV%6ZLfZ|W+;>u56(|JAYQ$>eX)AE22f+R3q{TmShuqh%m6q&^8 zb4*-qw+ITh6v;;W#oqk*3q!V~8zHx?P*T@4j_Ae7IHX2J*wg`?QE9!!zsNngy#V00 z|8Q>e83o541&X71&+##+2WDZM))?%>o-iaO22Xh9f%=BfsWP;R9Dy)8&S8cyssLM} z7n>J`C}dPCGdy7p6ZIH)J)x^*Hp?NQjZ)&RF3F)r?HEe$0R+4IfB1&sP!k5W?yC(p zmG3SC@Des2h*$q)xO)KLCD@dKgX6}fg%9ymzY%r{5OZ=+wX>B%o;##P@D7vXB0Sr= zk`UHeB+T0*e#YNbzbUopn`ka<`z_loxvPGjz)bt9J+b9wSR>IUJkN-`Oz}Ks9s_%) zRl3Xh{N82Q`K1)tHe+wTK7eUe3tA`0>aN71ZtC3j8@t+>VHsxHS*iCiA8HwtRc`lf za@Rxgc&&I9hQwY3gxDjM-e#w)_DMUzv~VDqS8P7Lrx%s)1@Etcn*UHw|HSu{I|JrF z#m9f3b^Wh#FDzN#aDnArDr!ZIWCg_H`}R#FRdF!sxj%lusE2~%$Y!IWD5M}1N8l{rWGBl}2x)a+5rb09i6v{~Cfu$Jul)wZ8aY1a z@*_&xQx7*(0U5}MV85dzBqtuF8m^m;v$tBegt;C}x8sVjKgMVts;yX;mBYI8FKa{X zL79J7ah}Z0LQmOULeD=OM-i&DaRm{QWTUqC;WL9O8CoYbPI2lOn4-Eu_rWGM+=||1 zw35RtTJNOFD$d%U&;4`9%+D)SP1YGHL3No-wLp{X_$4n-cj;L|geh7(kG`j$!)Ld4 z_yquM-lNLYwzQCO*?r!AhV%~Lcb zX*4okuHPsT`PVqQxXN~KHB(p=JPyH=a2fc~Sb4oS2$Xseltsd!)4XB|KTsK{%3G6# zb5QzOA5;=vGKlclk-54*euN^$vkngVYc|~I2{i$dnFS;0DUXml^dWLObu_?K5dSKC zDe4c39=&e0wY=<226z%+1;IGu)x`I|jWT@%`zw;Z-~DIjQq>d=Cqq2v;ksVU(}8%?#WvuK%-ql#aDE?Q33 zmj$MaG;ckiB2$#XQLaLM)S<$3t*^yIHCmBiT~{_sB}mas-!l*8ynO*FgH~!+>I9!yp zyWS}F+C`?W_Z)47OU>a5LoCqc=tug%frzxfoCY!MB0_^Av|faV9Z^Is%E|Mj3AOJ? zvRq4ewAdoFJeD$TKQ!7f)fD>RDC^TqBJ&U20(22uYARmP*+_t^$y6$LvV$y3_~1w$ zS|jDSe!(x12I)0^nUNDU+LasP}6VHC(l}E#92xKy@02U5X4sop105QgH#e*6NFQyWlD(I=rmC@|{ewr1_ zRLNaG$m}a&4Ku-80rwA@FR+D&*sJqo%Z8s-8iBAodQ2aUq`4wHhR}n1P8NCRcr{@# zU6@`giiTWc3j@7D-LyeikI`h8`!!^~JDu3%$HjU@m-G`%2Mk=zhb;8M&SR2>hO+QO zeC#s_Y6VG|!qPs_BA3ASN2DOGmXr}l@T|{z19_0z*R7GJEqSgcK>iu z*G)79xKEJ3QlrE<_1ormIn(ifQ_g67i$IAP{{2g@q$7tUfXoBbw7yBJ2oa(F!B5pF zvKnwh7$l5slIWt(wQwN|@kxfqEFi%==lT^5NBU;a*}y!H{I+A`ay0$R zac0Bw=<1m-rw35Iw>}#BilbJcmLd8b)`Z?NBtJMIkQown9QBBrTTlGl1RjkNI#C6M zrL(0I#iQ;3jIi#>Or2oX0w1Vrm|g`tjPjDP@VAN%eUvH?MKfnrMwsrcrg(N;`JH>~ zL_u$5$8-`$1_1O`aT1{>oI5tu-2oVmqI#}TC24HSV7v)BZORsWv^47ekfL)Ao&()M z{jT-$Q*e#US-e@9P`n?7kSCd$cr_P-J8sTMjt3_vc$W+fVYN!52X2#S=XA`OaJL(7 znxs|YMrWVGE!I4o3ijwQR9{Owy}TxI&6`L6$+E~GBn zoMcTm1llGcMf_uOl=I>((%HC(>vG^t_MLiVPF1+x=NF;4O%KIKps9A^hN_U6;Vvvo zmrU1z-=Tx3DYTk? z`~CN-IOqxH%r2`}^b7QXoH&nVvD<=B!uQxcPEs&MZI5lS+k3$XtWj4AR0!)Q#-DLp zT>g($bf2zrUd32B{mKFD;aX!}nGcLx<{Lw9iZn!4cOQR)vB18fm;bv)6aNO}Ki6sh zP+R{EM#g^^Xi8dtf$`JCQ$tg&EKGo3p;1sP4y02|Fu+f;k_3UIuSK8B9IcsY>MCW& z_f7!GUl_^zSqx*wN{zTnn01xObUN!=yPMUG3V? zP!VnPhlRb6yY+hoSlHtBW9QlGS*e`DG|j`)l5fbOq3D)2OH2?Vd*Hr$~Vwkt6y; z1yjm-Q*jj+EdgqeW?2LbkYdYnQ3o?jYJpbyJPFh?(;(<=Sx4Zx z$>0TIDfxV%6Hc7MYf9+ivz+P~9Dr0)xP9cm@Na{qL964W6N#dh(MdPwIYHVYEN25b zBI?*D39G(0dq1EIGbH42-dLL60F}7yb+hq4wgG*WlYN4c%HE2;UvSNHk`ZLF zY(O6NVC-MA`<6RJ`A;91X37nXB@Wg-Wei@Lbp?7EbwyG{#TBp4;J4Y3A-(RVD#JsT-&#zFj(Fv+F5D+2)+BIzS!C$0q=V!Bk7c> zzx!m|%`**MPj4I-T$fZNU^0#QD@ur@KK|L>R0J1vok|HU`n-x%#FUGpTr1s6woJU$ zQklJHXh+H$Y#_rDHV}Fg3`KB8*8nb8e{3VF5~ zDW~9Dc3W{2X9ZP;tQc_9;tf3t&J8S^H7(ZB?=AmQ3T2CR3-PNK9YC8b5GNw*?fSp= zux_|++y#58g{f`3tl7v^YMs4MIOn^Ih(uJ4Wn8+YSaG9#b}KE{8tGwBfzlFL_x6$i zVMJNBn(pupLv#0{4@`bd>q^#aT5wd;ooUf5B^-`66=axEjP#ZU9D|mR$DQ&KZ?3K? zF-Ae}=!Jpp_tNW}j2m(sIrg1fFnS}AeG@URs~6Wq*6@Zl*R7q zzyTp5RCu5}PGlLG<1KP1-|8!{BxM2J!lT1Tocr-!lCjaz(!VgPbIsj2-k1 z{!5$m>)*8i(|Y|yeIrVp*DHW}qw>HWQXir&II#?-cW>Ow&OoE|*-pKsOAGM_l?-t% z!{-m*q}%C>1aPawVJpVx>2%L)j_2u%Yd$_70JmUMSV^~o{HT#NPXoiD;qvGb=tRoo zI`M)u{bo~Qr{Z`hPZ>=1LJ*+quhWe6dRYY;*SVjMoaqI`Rz*ra9Kge>1~Qjg7#nfTM} zv#G~Du2ouY^lxT>h6#SZ|5vjs;k)@e-a&iGtwmet9R1Yr_pir#}bNAsAG(X5y z%1hq3rcqTbI@(^%)SaqSwAyY&qdZYd5xjdT_76yuPn>7)3MIrMJy5tG`{tCg>|p_i zVN&9vykcq5uUYdYzhWp_y8GS?0Ga24KwssA;!r4#fi>bm5EI-Z)ft}%Ovc)gweqL0 z1Hb-G(O|Xt9LwJ=_WOTqu_^xpUSw^JjQ@AIC`fJa!+*Lsno4JE=~QJmRW1Fl$SOg9 z$A={A29K~?0eckg3+-}jtB#hCa0vJs7Zkb4j*?;K@YFoAF{~5Tma=#E5JU&luG*Jyc}(UU#>#32n`&{$73@*@`C_ zvXm7UtqT9NL1n+&7EjkbF?b)ygwf{N$jVkWEdC)Q(u5LH*12P-=`QLi57r*O&;uaLu6i|J$MyTwO;}1d;+Bf%>zzA`6@zxF9!i^x3 zAbSiJUdkg&w7FD*tj33H_WS&cg?3Y}sXNXW%d!n@V53hq;~1jn*yl29!e+xOi2H#_ zn#7auBvhxZ$|*4gcdVZFUO#R{T9*p`vYG<7j&_0;}C}m^H0|Q^s z&^q}oQ72)gq(o8xgY=K^k}~#Pe8?06RsxDwVtvvrqa@l(C+WIds9|Ts+;CCmQ8~nb zMsWrr@kr_TxJA#%@Af0szMgdmwe)^@=lQSv=)qQ#v+xa-oBs%v{}fu3%&op-i-@(k z(|36JugdPb&G??0Dy`AdfJh?13y1)mhSuW~S|AwKlFDGZ_v+nPo7c6H1gWSzy6|m0}vX4JmqPA$Z+>X~$B8!v&rsCZ4RL=3WtV_#P2!%DKtz zOer^5T9LarPnkINOU3e5`o;iL1Z7(wjkD!d$qa#@m?#MAO9UyQsH@xqZ3SkTt=4D< z03fJnn$i{7P@LWIf4F7thOA_ z%o^I%!HEJSk2nT-ac$HHs2g)J-GemuP{w@SMtfUxQ&oB8;(@zhu$$6dzdeLy9hQmv zr7#QbdWC)8e!9QYn$A)GJCh~}7n@IH1&ge6UaX*-Z8q{J>&6u52^ z+C2i#gTy^d=n86%`mzQTuHz=%E-4$Y->K?M|0W5_A=F6jKrO#7^_7Ts3DjTYL95|^nsL$WqIFOr10|LIYrsDTU=|7i#|0xRol{)|5Q7~Fj zM{1uRnTJUtddy_K8qZlrXVbZ2ksQmrX)m%CAKBZE;vx`k;c6BqI=rxKr$bRmbabv^5$S zAaUIp8XAYT3^Fur&m7iqmpXrC?LC!~al8kljfSV-s;@uaPbuV`wM(zOeKw2dZX4QX zc7ia8!aT(0QA#q41W*#oEpM}6d1P0va!EUdp+T)wIeQh9FHpB?}De zh=h5dN*TvOaR{i9=+2m6{IfQ0SY%S(Da>+ys-!RHZ{4WPyy)}bci8Lvk74h>oZ8+0 z^3nRAlJCD@@vlHPqygcEtrlO68C_hZdY*DIni9)i&x0v}J7G#q)l8xhV|;E$jVB(n zA63-MJ#8kMjj^hVPk;si@8Cep4k3nU2M%zd7i&NY4=Cl5ctIN!tfR-_s*hF=MeX^c z152+$_xa%=N;g*YH3jZnsfX>)*&mgfa^0@-<(iLA$Dcp^P(LaI$|1vsAT217?X>a* z30jIM$v0BUL*OR)+OPok*nAAAF6YMrP_CB522hK>H_h3NiUS@B|^fiXh%`a z&BUruD?ss`c@rc+}?nyi&cv z1bHs4#R5}48R@Fb_WoF@*#SU#+RY6RqQveEgw(C*$GP@b5caiI{G3r6Oy5oDn6#Uu#OcECqbf{X$uuaXS?_dDru%*k9=NH>)y z;eh|_CqMIO&s6HwOC3H#c`}26Bf=-+^`s)bA&1TpV)`^)k>fn^j5^V;_z5@e^P5W3 zDb;FAlct1^M#pnJm9q~c_II)rf}YKpgzk?oLi1v}ud?5JM_~eWGnP;$f5c+W2X19x z>R*m)8EozqY9;C<&!x5!|DD;@PisuScCPdMr99!UlF+J@Zd3?7>gC^ z!&(LLVmxE^_x-kgoXlgZsZC$nLBPdTq8H?C;z8zMfzLUhVWqtf&oW~gPW6D&y$TT# zTev8~h(f|VG>o4O<7gOFm$&uXQ;IKA3_>-3Y0_xd_xPdspxocmPjOm0GYV}!y|sF0 zo;Y`&RXO}YXo~W_Id!V4I>^GZOuwlpJVTGH*l9ikv#?b};h`tZJA@Kt8Y|Bby#`ry>T2!z4C&m|a%r7x6^B7W zf5bM6q#r1}{3@}Lp6E%-&Gn_)c6o=CM~{x0=kYEbF$!XxTAVc1%7cl)#2h+%9;a|u zy8R<7IXzi@QFt0FjrG&c$ch`$k$UhO+p-ObygAkr4|Nk4J`3l&uXiL6%f}D;?$eiv zl+5le^8Jhm5e#b%=r-80+x!lxb;2&-j4 zi*ZayotDATNDGopC1YwB?b%4C8Xzs>gijBHJzozb1Ul@rBgy=Q_yHdKq59i#-|$k=u_CR|UvRh_`H zQDwk&=NIHw(Jt4m&d2^H<_FhDC}^S`5yZl~J7dz_Ik zG;d)a(GB?!ng+%+u$=kJ58lzPl2fnA7R7=c!u8*x`a5h;z$qtPA8t7z*P&dg7tPXUw?T@o5WQ3A}8KFljy>xKx7p9Pq_pvTM~@Y?e`fYJ)dIcgvS zj(nB7VmAd2E(u;?I=jnBZ>D(tm|j5L5=DtjU@!-B8;LHy9tvupt!~ zy9*qx#y;t#6V7WEH=G}oU^Oh0=S&=41p7qcptil&2WFzc`V-qzaUdTz{o|`TX^7i;mFJD|#FsIm;LN;jv4n!sUUuk&ctslombpVzQy@&T!%-C4 zhr`8vmD#UO)55!k1rdX*#dt9C{kA`wvw(SkVhAxg8?dGvg4eh<7bV0<-LP7Quxd7`7hmUJ8SC^dFE}d*$ zY3xq%F ze0xYVvZ?&5;RwS;1$JPx8`D^Po-CmEu+1gSon(%I>wQ9{*4+g^ofUCzxsE^Y4}!!J zvP?txnH@)#->)A#{ub3BrN?`f*_v!<$oWMU0*%V_VJQ~S7T$i^Y;*TG50-r7i$FJT z34Vb}JCcF`ELX(I@Jc%p0fJLm#K~q#xv~Pc?tQ1S9_5RGjRTM;K^=Zd{Qf}KL9PlD z+*{Un=!Ce^9n3=o3_l+(8>evqy{rB8@*QK<0t03?Npo;DiIh}ImI+swW&Km4yUwGYeR9Hm{Jf%1Eva#s zHA1MSOdP1nZdtJsF(W0S%b>36@?l7yGo@h>k=UAy8-q+tU*0A9!GJqw@LP5!Dp``! zEq8F4DB+`U=`o@a3j{5w)c^GFXJ%M#BBFU=kMBbCSyVCf8K~&jmDj4Pq*b<#tk2V= z@tV;OA!6Rnt`yorj$=?#h8 z6r;7IHv-zl155KWNXPr~fI;mdQU?;BKDgfu9PdiL0A60B<)Y~pcHNPL z(seKeVV2jkv}*Z6G3lS9@a4RYSx$XJ3HU`XFhhXl4a{qy70B?!{+JDKz)R8i%HT-T zf&^>np)Z-~Jw;*73T0i-eoUi4336LwPSZo+{F$Qsyxlz2G>d4O*QR>qjXjOHPPlel zxdE8zP!a3^6(pL?$l?$br13h|0nt}nUDW=j%FLa0i-)wv&lwvW`MJ-I5l z>1wSXxbfGYf!MT*@&@_enrT5afla|mwU5E~gYF18LtTwHQB9S^h5)F2go`_nYxgqh zlIq5@{)e-{D78oxd1zF5coll^mV+Lyvj}bBpS%z=v%@E3-d>QrG<#EVMS%oTU_!;P ztkd1|^6lO3(6@+>xx`mBvc{#j-fnboJ z8n$YY-I`Hzt8wCn%867Rr4Di=(uKCG%<@^=jYbIWOAnkpoaylCXvp&0%#B4G?9Z7Fn*>Axe;FxHpze zpJiB|Mz+_4+Zad6QYLiwa?Lz^Q^J5xXob?MQ2Y~6pRUL&VzaQ{P zMOhYXG)6$uzP&>482Mscb>5qmBw1@?{M4ycf&5g2lL&fHhdHq92x5@gthY+J3rBXq)Tm= zt|5P+;zsRZSpMZFRQ6Bjy;Yk1*Lom1p-raykBptyj4`E_B6|$d_`1&+A;@QEefTTm zhUziBKWq=rFfYYpZ?t#HPqW4nCuGwd>Gv$1Ka2I?!1CJ~`9NEXWa`+?a|f@5SU!K8 z-GnwLnx~V@GrnlOa1rz}DivCAj&*}{8$^H|PZ)_=;~* zFXl9Xf0b*H_gKImhDRSkvgkU)fx@3IM7FqZMLm`a*uj5vXli?#FstpV>e>pI_b!?m zH4H3}c5`Ufc}><_gmjyEm`@72>~JuiYw52ZHHMw7Nfg#3l3>kT9@nEf`VdV6No0Rf z$lf#WW7_&yU_6^XTsePlHaiFmGD8-W0I#hS%P@0=HdP_3W*~PC#(~W9W!V?P_`vqj zM-}WTbOpJw4G38MGfsI0?UDsZZEmDWv|4Ecxa8artx`8so~Hf_sWO5_b%>Pe04|0U zsRz96NATca=A}Z*DlGzJl~mBzr0pHg{MeTWMHPd4L;AXBYw?{)%>@Cu6OWanS!@$y zY^##~a8F&1*BLBC^+F$lvllKhni;!(%+`h&WyeFa-raaO>x zEd_{c--o%bVdpE}gym=IRu@1I(=vx%wIi-4lS+J&6L2(iO+d$KFxFlt_)s-npZ0Pp z&h+N?0A3Uo=A;?6WdPrHf>t}&nLJ1$(MwrL6tP`k z;qW*5CVLAwc`gBKv?j8$F7aEsx+c^o|J&=h)icpRTObhIHO+V5zsB>}8CGXHh(CV3 zu>GeQ=6`Lg|KH|RhPKvrwvNUQ|3?<^|1b~zf6fy6_o4q9fK{nOxoN8)e3GqBZEkK9 zTT5y-%eQ-%NG!-h29q|;7E{P%HqHhOt17f)t{dq$d}~LFM1+yO2=K{y%l*P6MI!n0 zu!JCA`~tXvm9r!KBJy7<$$9&Huev%`ty?7CynX&SJbg2bCO__HvN#;yZ!%rCzZIoU zptFHIK2H0pINioO%|E!OGuL4@5d3zzFCO=0H&kN0M^ET;W4B@L^k;iFd7(k*vEIE~ z$^1O)`222L<>Fx0S%G~6aaT#v{e-!J-em8#CM4a5^6YtKi z3_yH~(Xkb8WQ#Y6pgzd_EVvK5BfKAjp(PLIJ(ND0G`s~3rp`}UurpXM=075DnecSM zcaGiWVpDJGyI+H0d!TpJ+(`U>?z4gF!suc6SnjyC*Z&M%c6#ytF>wnfaxVtt3#o_V zQ!M#e+0cW|j^2xT!EmGIy;U=C4p2F?jXbgq4)7rMM`tkGeRfdnDtEgA^Aiyt{kTc0nMH1!~7#_j4EvYPA)&gw+J}0-5E=yWN zqHprIaD9i5X)Bv*PDJQT%SC#Fx^K##1@aq`DrLfEox@|)#2MOUTPLy&!=U~6Y+*(c z^lcAaH_z5?KAh;Kmf-i+BimS)k%80CLK1b2*7iyFsNnt0$IDYA=B;nHI0NoEYy3_>#0ZVgt@D&vX#TQiR~J)OrB>gedy*G%ASQcU@< zxz?uc9@mQG3vk=$TNz_ZLc|zrNV0;ri|&U)&-^l?8(fKpClX|#L@oszA|BO)kH_Zl z`LkCo^l%%hOYWJ{Y`%!~0Q)2xvP*`E)%~Vsty|`2)OGWkqO;6LvHLPu|0br4(TE#pgaWLE`yYsF;s@!{`^l_4*iKixH(Wo&-eVf0t z6PL3h9)t~bjMU_lU4zt!6L)`A%_T)3i(I~>#0DkI3kIupPJl4A-Sl2wOyIVY3{giH z87a3z*CsqN2*U!1GFv}ZH@Mu{omnZd|DI`aCZgZ9p~E*2#3fz6%{RZm9|xLMKbb+- zK0UdPptocEj&ptEw8pdE9YF!CY;t|#>Ot%+GQ~Q?T zMwbu*ER8{i5)#E`93ahHq)3|X5T%^f3XPVSSC`azgo98)ha)p9+tgGLOEz@|87xH6 z5foexLV+9|I?tm@o-C`mtE*IQRIhjT`_suxE1z%r8>Fd;9PUEJrM@E>FW|fu;BMO)As#~NF}Jj!JeUwARdGu9g3#KAW?IbYlA(wQ zx-}j#X(1F;3At`p$rMePbrtr}6i`mhkxX77%e6bvWf^ITWXz;Y&>CivUD8Yk!b+%P z62;W2Gjb_P&>9BgWv!!e3(^{tFai5wl%|;N!+Td9#sq2_G8&|bGVYnw%Q7XI4k4BB z)a)6A#^aJh9^ae6K&TbjBJSh=RiyIltp!+742{5ALhhQ=rNgHJ(!0w#c;dN2GD%Kdnsu5Zv>j~`Pm_A=zWR=D-ha#KdGdMOONenmYim-csP@o2{B$OE> zw}|x!6t&Y9keaC`M{MXH3wZ7XM!&X0)2S+_o$rt5tI-jWfGShpZPp)&3nh$3*BW-? z#Evex&}xoawWbJn7Rf9oQr5p@nTI$=$#bUaZ5zr(vAkS?cp`0X;FgupIE{fS9X^v{ zA=&G+eIuH_JSf}B-*|barplBumc=1t08t5sYP4ywMuG*IV2KDZEZe)qXC%xZo(bA~5LTSG`>qdI73xm;C(N=YUH6Doi5I{W1Msm zW;!n*`k}0)74xYV^SS}MFMm+RnmC0mzIeb8n=C*Ok`gp-b<_l(hC03>7pkq(cj4x|E@?&yO zO+cT9+2dD7isz=*ax)(0snW(6udUYoFjJ-mgIU9rq|3Qlit9qeZ^xJF#xBExY}*#; zN%UZSka~kfxYPJl6)_S0Tza6*6M!9oA|G%&)v|5CCps-(aKxwjV_wV3TDSev6A&LK0H}-sDvn0jBpqI^X4o%lgV}@jhHvC~0@tQH-(Wie48= z?I zMg-CVWKH$6x^6(wvo~*&uEz4pYO7cbxmA%wBBOhqnA^dDuSbTen^>xw#)2iijdJ%~ z+Wx>-;VgQ<#t4{Z{~qJ0!W%Wm!6%~ZaYt`#M6I(M?ZDu;Z6=7?*5=4#4Gd3ChGI-( z_A|V~QdQ-GwxXo~YZmy5RObVVC2ArN?aH?QInLg~F#apbo)umS;tSC$t^;Bw*hcY8 zs5NOv>LHPi4okV5H`YBKz~>7sDBlYHBW!<=FN~tII3$n5y)JQfD>VGzgS|XkCgluV zFLWxaY72w`fox}h7To8O17DJRQGmuF0kafmu#RN)1#ENhWGe3!wz#@xVy6`}wja_1 z)V{NxQ>+acqo3L23L<%d2^@q6n=wt`G@Z7g`J)n%GJSJL#ZcfH|ELsTnw*#Iq-(Q| zS&l}fCKVK}Wybafm5%LLv174}S#1(Ld<-n8 zx5t>X#H>^0Z7G^u6`v0)!Mhs&K!`3?Fificn69oRs%oGzZwq4Wne56r*!m{ScRZ_9 zHZk>2IQuMfVh|+X^yMZ%-S2g`Mw=cSJQhiDJA>){R>@B2OV9yV$akWXJzO*Y(8>@H z0*!{zok2{AvKLZsPA}}K>f;JJ%naP3jHPnr{F>g`jsU2%BCp`_gTSm?!$;~WOPWl9 zVd{v>0#pvEX=vOEp!7mwstXOhP|b>2SNFc!nd?jxyQ3X9wJK&s{8Bu6C>gC+`!l*U z1ZCZ`8j{dtIpz)F{1o>!F(!#Z?FE}dMn$83aJ4yHQ2CK0fJ8U}Cj}*k9XGabntZn) z?bG@CA?^I4L8HyBlz!`$;&z{Y3#||1*jkil1#Za(#-p;Ohhe;Y8uA;Ukp+F=0v(pC zNXkn#yV})qZBb7{X14Us8w*RFlaamRo-yab=R6p@9n^Og{Edm7D==C>sEwwnO-Jh5 zzhi6|-t;-n-*fEJTV2{WWzW;B|Bu-a&`E!w(J6th0bJs?SlW7QLdi&)NGubfT-+Zr z>#cY6iXqx-+(WVvPtuWh8sHC+%;%c+PPRHPPOkE_JWK$(s_f8nJ053eh77!7l0eiH zro(x ze^LnT9ReO;*~Bw32&*n&x^w9QU9X1PFgh*KCUg7xAFnpS+iSKBduZX_o(Qx0RIec4 zoHF^uC*r3Be$MjwRST$B@^@^v>$4B@CN~;(((nz-8hb=U@yJZ)kc`YQ49_sh@)<|{ z#DAxY?@ArJr^DF)$uQhw68r{}{@de0OZ3!rC2~29#8;2?17T)IZsU)sYGsd|%WTYh za8#e&MvalKce3fQ*sH_~rm2TF?&M*ApEj-8Qpf6aaH>O_ofa*c?&x9vRMe#n7h1Ie zt=F%%n}|$+?oMd=GOY{fmk=GEZVFOgAngvMXUSKLzOTPY1V_pXDX-rO{L62iz&{gA znErd3-T$Yd5^*y${$E6G$q90D{rvDl+mi9}{0Jx@22pHZe$nAjv~blyaoFofDyqvQW4Ab8ZVb1T_e0CH2^_ES7m*X~@ zs_m9M4%-cYW1fVnf|f;9q|04zJ!q_J(4s=lzyp<+lJ>kew!z&8Ew~&YS{%UB5II{& z3*grqetmBgD+)e8=h{>a31dQIPC}hrei0m!V?^kqANmX!jY_W}pbnhjZ6Gf%NBDWI zWtH9*uPOpvh9R*9(D(qY#_;|U!6X&B{7FWy>}!np>wKX24@(S-^qlPv`XqgP3Fi!5 zCGmJh!XM=r4mPE!g%&n8DwZVsAQv3j6QZ~(vp$$82jZ78WDJ2C_^R%c3bKWeX|W|T z)N!d{ON8#AkCFC!^JIUu+3+daA?Dw7ko<4D&_BQAKWG{Zzm5N$9GnfEZ2!+XZPtGR z#{WD{z~K92eM2Xq|GMH|U3aqbrsB8R<|iyo;V`)P>n$8aSX=-+|3?A1ftYDp*<=1F z^wzK95lrdC=`o5uqVLi=gw0sg0tR9j}L&_P-?_k z`m{CF9Ojv2@+tMC&Ou^RAME)bSm7Yd60ozw7_-`ol)-T#BLcM1|MijoCy*;Th} z+qP}nw(YuQ+qP}nwr$(4sqTLBVm_vOVqV1gIKOAd+WYL4nJW{)c;QJJNcMKIm$A}( z6hm#q5ePF*>{oYu?0+4Y$h6f}#rozb%y{EvuU1eEt_)d1BlyCXI>mCXkctavE&`+; z0oARi_P(=GFmaKI7vKyr-gbHSPX{S#2ga2LY)&Tds)x!b00NXBVGjRp?9|oIw%5@BW z3I7kiT51$|>J$St z&7hKX;obb<>`O>ccRe+7DyPw{k2Cz0-pysYUJ4YXZ6y)rv@h6SPn|a(+ikhKEW4zN zRC`?B5j2(Yue9|B|7r?_6Rp(9lI#R`zr#>a)H1UJbtD5)ba=Dr&mRS#9<7*_+y%fh z#~BhFE_%EGIP@_~AX38ICFM)h%)LX*ws`!P+Z}F)Z>w zRum%puH@Kzqtzt!oG@qh-w}|{wnN3uGNfJFXL;8zLWUo$V z+@Pj2GQp&i$sO{ zM#(KXrP!ewdOF!e1~$n-95%^5EO$D|LvoQ2>S^98!K8zUbyW55X50X0n?$Uw(&|l-^(C^uPFjOxI;=TI(OhR|MhnH} zQ4#EQG6~-B=D}Xqy>VGTw+>|O%0SmWv;<;&u`E-)tP(m(9sy2tc%K2}izhk7c5RON zBuNz^N;L3$Q?r_G%y1zKXn=;Ba||!S9Dx)f+`FgeW6M&W9uY>gvyh;EWQ_It!Oe^6 zaK2ymxXC|VY(*E#T*}j!;r>5s*{@CA{LkOnHW( zdPTyWHtb?i3uzL&CEV8G*5B2VL?suw?8}HSMDtcM#brIuuL0UgRdaTDZe>nf*m>LC zazapyQ_ec(Uc(Fp0nF|wnal1|)!Z7QNRd_TL{BSguPk`b#32XS`g`k9+vURa=KA}i zW{JS89V-`erR_vr%I-`UjPc6{4Y{Hl$de}8i!n7I9muvSf)kh2~n7ocSK=sF5CFIGE- zai1=@1c8erBQS0dfAga$u&h9x^GqTUq~w@mHR4P?n1E^u7ePx%uQ*Hr=K{R(=y;4- z77B&B^s~!4AjT3dy!X+H$ccvX8mj5Q8R#WP~3KV8rFkJ-H^lK#|V z;l6_%Py76nh5oAG(fI?g1yel$mc{_+NR@O7u!OeM?=zsfNy2=^8qb-!{f0dqA@$Xh zRTz?K08bAZ2W<5l3v_0CP1ev(^lw$g7H#W}7J#RMw(<%VOAH#K0klqXK792#z+(!0 zF^YWvOjle(l6Z39J~OISUBiG8w(J$c4;n?9x-E*4 z&-&L_b+FIR04iI<78$RjulZz26Iuo^TCjNCyNSe0;0DZ^t_l$0WgqQ|ACF4he=N{+b1Hs_DS6PF@ z;6?(>&jl9S;ll>wn%m&PVKQzGl9^U?vWbF^leXE0kyFh5Fll03)?Y!!_Eo?*hdf1P z>|Dmh1tgisQaAH+XzQOimQGC#kh(FMuYHdrwK4`H_N>s?4Ujq{6&U_u{3SSyo11^M-8MCv! zEJwAOR|RuA(pOmT=_gh)Z+fP0RE*z;>0hVA{W67i1o~I<%~t~KOs@a^>069-xx$GN zTj5N_{Ms%R@T=S@@H(&w`&wG*9m!jx$g{95=34a(|2?L~zh{%of;^Is%+bkPV85=?8^||;*Kl1i zZbIrT(s%th?L9=2?tY5$cevQCKN|i{UhXi@8D0tstYH3g(vxVd0y6g1>h^wh15Xo(f=ixtd7TkL0> zK*O{EQB^9{Katx~Cy$wSLn%R9{5`H&?ETe*s5Sjlv);M3w`h z$~0B=s^>-E-K-R#F_jZ=O8BYKtQTsA9uV>NQ4g9kQI=gM(i-NuDo%i#zM^JxbbE5s zE}YB{-C~lL?-oW;K@AT8%kkPN`%?FPT*2}NbhH&V^ZwA^9JqAZ*7 zzZwN4)D%LeY07BNdxaRqaqS?&pbJWc_y9rZsclS3(iYgnDP5ZZtVo@gkP9UWA{N$@ z6wB^X2iWv~Of|n~-uhHreX)ENaEb8Bj$2!P(rwEdYu>o-VHY($`LJ&Pj{fgR(vY`4 z@id!%g{@=Gl%)nV0ItvMT_GLQXLEW740byv&SlG{1srk++H@K>!NofSa|v!;=2fF^ zVL2@^CPrMNIgMoJ*$Zyn@$d+`cTX}V{*y4>g>Qt)MaZwUWO+@ zZ;%2$3yYVJpF26TN378JM=JIKDgB!sNULF{{{9M!NsAMaLV7Ch=-qo*G^o|HStpkQ>j)>%6i54hK0b@I3=d>C-9Tm=FX0Kni`{|;{dVQ6)W3K70ssADqH<+Y*ZJV@rMbdHGv2~f9xzGe{<<~n4sOq9pO?m zOGn;CuJ3_LB~Qm9n)#&#vk7Uq(_)SWk1l! znS2!F2wI@Zj!B zEj}Q0Dt%X&yRXuAtJHQK-gcdYfA4hM`sKNi>gj9=x}xDz_7yf$T zMwQf@8*-Xuvx6e1Qh07F<@?=*2ib!@L?r>8wjCB)r{9R?l1W^m7V!6nL;s1Q*F`a! z6|ci@Ph!aa7md=)c%t05xD?QM+W980gmDWl;pp4#xpmZ{1^ z4U{2hBM+lWc$*2eMj}{^Am#${ssj+c;=hC9kyKsMP`IbGDR@FAp}WF-%-GtZRlMVr z)+8ofW5DCaZ-HGnN)YV^rB==^gV4yLKvM)8&u>#9Ft9V`u z-VZB$^^QOC4-&+q^}5VXG2R!*uZwv5WJKSa$R&Vo0IZf0+*TN_k-?OSqRFVS`5}rT zA&p1YbjJM3E_s8{VUnN}8v8xA=DLF>olURStiIha%ffOJ9z{dFaYrhLSVer^b`!s` zrrg>i%sUWe)+aumy_)Q=TsGD+9=|6A^bi*SLG&M@LrGfRu)u1tdCmMfR3q#^LGpz^ zJ~PSw!y3JYQ;lR@EqwjiC`TJPYC=5_`8)nY(D^%b35tR|RbX4g0PXK=NoZX#G4o0V zD^7mPtU0-5)F-7yT?Vn$?6mrgcU0OFw;$3|JY)1#c8Ex`qx;0Gnpf)IBWPdf??2JB zydhBDd`XY^O0PMM=|1K`A+5_BcKGm>eF&8R&!3FD)A?(UCwA5NeUWiJgQ57VuD*Aw zk1NG`K*f3!SVrWSI>{^@R62zvV`24tIXcsYVUb!hG!#axQwDISdz&C8B`Ng z>d9&KQj6?83nUTr_pHfO|DYmWPdiM|tbA1?aP>J+bug_zZE$j_#j8gStg2P@;A!c? zIu5tTl;#cf`Z}4wmt#J&61hV;rx#Cdl{E(l8 z#bR#=GPP&-uoy4-hYgD7jYK?t_S$ zQEnuuwo_(#GdjKu-cfy?9p}%b|7*e+fNvBSZwW6W;Lnb&sres>Z53tEGwS2i8Tdf1FUyF0V^+=NZQA( zfV5saBKh(^A6{YS;-t-T^6_H>8H?&a;{{EBKqB{zqL3*eF&24DaETIM9nB+o7^&cX zgPQF?U?|c6-AUMK=T04bDAxhv%bc;}|Fe<4?;jq>a^9T;wEcO3EW#?3ENs5b=$!KQi{({_r zuJ9J3X=`GsY6jyH%d?+cvv6fon_@~)C=G2(Y;EIeZ|f&NR*0WGf_F?aNv9I7*Dn?z zw!udJazpl(vuZ%%T!oxqX}UGoztGEYxpm{VYKSU#=cGQuCL45_gWMLccol(kAbon! zX%F!{(}$gtzh1De$G)#-u-^BReokd6E7oo&MmqhMQ}ok8{e|1`_-}Ilhn|sbi_MGl z;wKfoc$ii4ClYHQ?ULc)lH0n_v7>D4-rH_4PkOV^PRrN2RE_4_B#hJ zmFOsGd5N3UcHqP`EZ>cYlZnqyh>nXcK1hv=NK(`o8Nhp`>Bc1?XvC@YjOg%<{uZ;R z>qkOs^}Q7dkCoY^v6n?cdri|BKJkU4qchc_L9}r6i0z>7!2>uQtf8T!p{Jtp`Gy6> z`K9><`2mPEFw_DFqoJ?z??Yq#el{5R?l$RN#V<66^9$hp_sj6#L?iycF2gS*{J(t5 zq7=+u}V_}E-{8mE=s_gdw`!8l}wo=wOY9htkc{^umK?m zfIorV2CxyBP@A#)mKx1WV$MuHbg$X+c5D4v9nlFzu3U!CRWCWs4zL8c=B&lp<@c2i z?s9wOm>PNvoiQ{dz0>4Tv@d>>R2Nx~G)93NeIAD1Hjl}BRw`90d1DNg=y2@cbv#MjUz~LQmDlFAgbFIsmea^6vi& zE3F^IC8aG`VCj^+A#ga%<6DJ*SVRI~aG*+fMcf(d*|G`}2gj5&(n?R1XiWam!zsf zczb|4U5@(1YlL78d7OESwN}XGg`r$8tukbT3Ef8&wV2`B9`#u_3j9D5PT?I$Fm|cBJXGd;S*e{7w+$ zBhEuh&f=@puauTNm{-0chvGhmdH3WsXnKSedA!D{Gg5W&d}R<3SlC|yF;N3sl9-RO zDB41-iv~kyk*HKWAa|Q5b=tKWY4F2w*=|P7foLINh6FBcnj&f9*t#ON-ce=dIP8gI z{;9aZ+%q7T)Pp=w+Y{JtstsRpb~9%>9VjU7tGJ1>jaN`i@*hpo!h)$gA-F0HVT^eTBW)5G|_{50@?*Ff6TOnO=D?ZBxURTN-5RT^b7QDTXn_H^I_Il zwiE;BW`pC;mB}~>nD^p%RC;oj%6Vf48VG0BSz8@6smhg@gA!ebfhV2m+VNjz`40Dm z=M8M8q(Hu9`>lQRM#ROa*3=0d?1hF+LbII9kGi?|pOrWAbdV-jn}i_ubU7oZl_w6RJ&dwBVz>iek9 zLM1s87ODrnU`}ObLKF6S*yZI8h2zq!Y2!B6wV^Uk!*M~!2^@+u?PsMQ=%p9?)Es^c zbZ9nor?-j+Y@=Z!YFa;}APLOAO2}Xt=W?&fjyJa<;np-)q)Dss$JaB$;sp$>WCKn> ztCxzsX`^C2kBdTPEj0QD7Rl-(6WlTW8nO{!dfvUWO6#Nhg5m{&P62GfEh^P-6vmwT zd6`7uEFb7Z9Aq^jW-BnGgc5e4qn9}!(WChDYE#QGJ%@1E_2i9+^UMBH3LafQ#Iqhr zefTbtEpoF8vL>F5#(0}~kQYX2E?x3*?rMTP$jfghogpvvrWcQt4^)c{Bq35xQ(5~S zC|ynBa#s=&^8R7{h3-16uB{6`_(A(1n4uLhagC zRwm)*9$TFPfp@)Xy`o8LbL0;@;kOz&FPP0pP3TRED5=OaBu>I3)&M4YXbABH{3!$$ zqvS@jc?+?ONfX%DTW0DAi|eh{f}TtKzIX^9Y{H<8p!vqE ztz}cM+IEuM4ypwwy*voC9+)&jN0_itE?k@d3o(^Dyvf+NdcF9i3`g`OiL!cpDC0Q% zh@ydBG@pUqoBbD(F()?`)u6RlVuv&mNtm<53G{^XRLpv*YBF-Rwld0(f?y}{$=D-= zmBNi!gm8iRZ5~%f49Vdyc+&^hf=^%yZ~XB{9=rDaqNoEvyHFA+{sz zbgz+b|1Enw)lpbt4rp~s)v}SLU@bxj!DaHgJ&WMr$8irq7QNNp0XLz96-QvdhK_1GZQ9s=rw$x;7cWn&CAi{QmXQn6VLbYtHAB5 z(z*3g4ruC5vtavb*py=n%f<;)-{6I}sJG7ZATBtY28YIaYYWQj{a8!c6Ibl%vInv5 zN^@~|n-P<1%wPiLqpW-JlXFRqv&8i+JXS>eZeDKS~PBd$&BB|nhPuj?9MHN<)sR3^x$$H*fH+J#IA=p+&N=5w@eo9xh zqLzcvVxY7_>x?yr*bb9(LIkigO4DCaIu$8#s~& zpkwW3j$XE!=F*?4L=0=%tm70RZ#bfa>*yz@vB~@0^($2xMZRrcb=9DogHMak+$=}_ zrS_DWK9R8uor>`kjU-*L{FjW0v95&fcPe zCM%4X!~mq8z_vPxKQ0T?eFNs4&awN8`n8I2PRU`MS)nczEl>3E%&aeWe3D5LzC{a1 z{5yY}G`L_O3F8}r=huve&+ZcEB+w~pBz2q%oZpzjlrWg1+*8(z=Gok+D91(v$DAE) zjF?i6glD#(;e{4jQfRWKu3xglGW2I9lf9BY$yGzb9?M*1g{cyLhx(p+qR2a9C&|b$ zNvrcFjdvoIF@ubFIgZ7^ZEB(j7gw-1(Zyy^{bQ=@L~(O%?^JW zqR)*u)$+#l&ru)7%2ch-_QEp`ZBWRu>&ADUy1V-D<_+ftja5sO7i(LX+;GC$!Z13yUPv5x^y)k7rMSs!dh5!5s)`q<&zlZw! z9Cc(W-%)_*XPRV@P{2TPCv67Z}T1y z+U}PTD^6YuuUNZ%Ife)Y8|A;Y0og~9HSXjT0vy@0bDKtXE&d=t3!$wtv+ z3b}PPFv#Ya@gUHrO6NPp7q{k{2nd@Giax3ToeI_MmJS~;V=w(lf=-7yLEiBk@a_Wm z9u~|S^!_W=ln2Vnfn#(ScJ*#OymvOdg)^FKoFv~?Cb#g;75Tb2Gs?0LLPWS)Cm{}5 zKH+o?v9OklRft5xD})ozkzJTvK#>mk#u>)0q|_y?Axieiv?|(S4Tr}d*$5w^Pl8`L zej`9n)Qx+qlKt<3`b`CE^s#*Rl{B0#8V@m?P1pKr^yEHoPh3%RyH( z!-)M?fm@2ff@oQuW9tae&Mp6BM4*MLB8X^_34^>uq@kF;6>s!6feTjOJVfC-!aQFg zyBz{&M5{fPB{s6Aax!CG0gekZVW z%weO1N^jVpdNGIw>xfaJNnt#EVF7!FW_*!tvq(N!1zoaHb4l3PxHCQclo8*@e$0v< zF`~R4%4y)oNs_i&_y-_3z3}l*94_RLI9hrM-l_1YvVu|M2I=dlG^On>khBV zf%{f(4G7NuX#JNhYl2Iv@(x{YXX(yiX-B}Jl6>`L?8ZHgEq87|uhLP4X;Zu_K9X8u zm6qZ;k;1d2Sa&YnL=eo>cjdgoA9Q!kVReLtyC(~RG{x&6*umXLQldT_`207i?hP#H z)neC_qDUuP`QSx}^LPJzsY`UjS02 zA2M72?8w{UU&r5RgP>R`(!sk?=d%!&Mh#j@K4 zgCyA_*Z(jFNw|xQ4Cvp7!**L9qX-GSz%|~Z%TBoSLNVC~Aa4y!FM;jc>&;;BAvvHXorVuaf#?RYr9=zn7C0&G zZ_J^b^cEfNVAxK$>yCuWRHGT}+Lt#Lv6JG@8?|j4ouR~0-meqjQo2KnhQodh0>TYz z{6~JU0=c};x_{^I_POl0GxpjQ$@}-RPUT;t9*Vw*GuymEvp5v!cs{;$mrW(cK%N;D zf^B3Fp>Y!F@=;~WEbjftG)W?|56VzJGq9y`t2n8V>W83*HCL-l43pUfpww6yEUSed zv&JB8cY;s_cx;iP%DK8o#9t*_vO-Y`APuJShTi^}zasp&hM6&p#1g5TdJ_2292zPU zGxz!D5sfe!>U>a5iAz--Vz!ZC;X;pQTz?VGp?ix&`Ujarglu8yN@SI*G>8=V>~eS; zjric|h}-a&c{He9A3glSeoiyM;qm$wv3ifCuQ{7j98^`I_aPyW=yWg z1ruiyF_uW@I zV!LRtV2w&mS(`25pu-ne)7KK8f)(fLi`7*u<_$c8$MSvyHAjN8BlTv&K@{-ERd0;b&kz|*> zLVb@Xaq#O-ZWLPLS1XxtL$sN14RV$+4?EG!kp*BZ8dMoad{J-9N!gys>g2P&2WaH3 zl)A6B9Ws0u@87&C4e{Q}BLDRFxc|t$RxP4&w$>?oA+MCP$;5^!#g7W4vhXoKiUmsE zRFsy<;6vz3?J!V9e*j4n4Ck-ca*hZ3USAIpxvt~1XP}#vbQ@c7E zm{fl~q@Bs6aZ46i$pnkcip9yxi2O?>)h*J(7-Cgx)0ABpFPNi<>MLQ$DvpmBMu3!M zrbGq+R>laSrZ{>SUT{n2vvU{3Z1n9Jqkdn@I;V;8PLcs~lo*&^Fi&lnBbl5bigkPXdQyWZ-bQ zBe92`r&?+WCajBGNI3stYC5+o6)sZHcfptjQpnWd*;5?>m-a zby>h;3AaH|Pl*#G!SPQ1)|C@AV$m#OXG)=L=0J*SX|l)hP^{tgKk3Pl18)eHt5zG4 z+}=qf=u;pYrfw6CVMb%Mw$Y#a<7%DE+s?2L_ip$N)1KFm>^g^A6)N&YEh3&G+|M7J z{r!?1JIPD##bO2>^*pq_9<_s^#un*c~!TzQ#Q_naCexD=g9@hP>*1c>|`km>Pz3UNmR)iTAgW z)M!rw7vE=S)48WltVNxDXft3^JgRHKHY*N>!Pu0%7P?f%+%0=g2DHH>j0!3%4Z!Hp zvpf()9!XpHM>&x#0`h{u7qD0rN7%Cq+Yt-bB^k8l?4RbttWNK6nlU0ckw?!OyJgXg zh&sV&_9S2Jh_SRsi{4(WO;BH+xRmEYK&GtI*; z3dMs2s}{sJ2ptH+q(jDZE80b~v@(JL8%vFltc8#%ztFa?gtao!#uT+0D5}&yX(iSg zPB#7?ac(H1Os8KfHE?FH-c@OuOL}FfK71$3oKvj@K`9q-XXvg_Yh*(<zuCqazWD;2Y3d=$d~(WITc ziEw~KMny-d?eWYvKVOG%5DI?Ao)rpX^6}>qCu1VHce6^XXPrg~19#avHE#RxLFk3f z&}#Z@Y-tntm{hYHOr0lXD!vzei!EV`^+BDQUSBp~}q)t85;kWMa75Qev{8 z4iV?TY*qW&D59a~eoKuEBkQQxB4sI_+&l0IDOYw`oF`k3yHPGM`-t`%vh<0DbP-M5)E zZaAK%K>&GBlhj(?QX9xrh@tkDokr9)K>oUScXajog~^McCyLQs;g;Wp=C{~(Mw$F* zGf9zpMp+p3o+Zb$WiZH%XZL$<8q9G>#6JoH=JSxuyhA~}0$cctJLsdY`2n^f7S4Fw z&U`BKVZVPC!=e_0Ts;1;&IYsw;TZhgh%PyU2dx^hOLU>ryBf6j$h>Tf=yFozxiZn^ zW{P>9^;(y-JQZ(`d|ps?^2NU-KQAmfllKTN13Po~NY=?0oVW9kNtc?DB!2X7^wmjB zUXYx}@KB#W3q>kYEu?-dcVg@!u`XCCx_S(5%-BwRp3|J?_Yma}vXu-uD}AKzqQowF zp`z%r9V>#PqTw(ZD}kdnofQS7GpD+zkLJJT(3;^>iVc*3>XiCO=hsZi-%8c69@Gey z?Xwnz>7K^IjDB<&OVc^nilteTN{>+HR_P>=a-C^DbF46&z;MH8Xh;aUV*)beHgbAxCQ$Ne^+w1 z7C8LQk&rewTE!d1TOT-{-2gD$$2}D5*4^Oen9+GVagSid{sW z#Jz;hFLGRy-G#{?be~JbTXh{<)!LkunYTOl&Au3X5ZC&t4z(dvwR0N~U84nEgy+mD{-4XuguUym!JF!01uF{hyeA?t&kJSiJ z9o*;qxD`Sjs*@*6oyy&(3!TdSCrlhK#lDu+JlltZQm`1Z*JyuH5XdSWLV5eV-p}LK zHN_6ii-=_sgLT-gVuCxheue~iN}J_soRX9{tpa$)$|Jz0JxBP;%fEJ2(XMBJis@0Q z+wqqh#Ti%Y&16@JOe2IEje?9YKC;&BtNecZjma!u?S(iIvvKQ45ogEerO9HagY}rorc7w{2GuZ)urljC~yPuFC3 zQlt5jj8l+)v&)Q*B2Q@c;Uoa&N_HA9FN%=ijKEhye=Ew$afXA_j z#V10SS=8Ih*hxSjz!)BDwvgvOs0nc<8t1Ht$TW*IAB+WsfHy@dC3l3|u2!U~WJ#~I zPP`_AeM1_X6}6NmnXEeu zT%tE2OtW6r+b}K?l%|VKUMSGTpDr#JQtIn0-rR;q0vwxx*!ej>kP!i`CZ+Kjs5xLZ zEL-~x6hWn`ddfPMnBJi$R>kR+0v+RZ(@Lh+!zJz0!cDkH z?E2K7e0vM;tXj^J!+*_zD5Cd1D13Ym039Dn=cE(tN*#}ak00qE5)+)r@`nuUDI2BX z(maUFNlIa%R&#JEUgN?MU+I~rTDz9+$W#*sl|O-bmG2lowT2Gd1cnk`gTi(9Tf=qt z$dP-7ZOynwh*i^zn=>*3l6b53TVAumcMjkvzC(G-UKu@gnCSB;zWsY3C%LRS%iKW! zDc-sw&(uHt+sz@eUmq`XgPo~x1Hh)x8SEMUoCL*uejv7(hkz;E-^skbun!1Nu~*Pr zXA{gY#;D6y7AIUEvSVx@#*rX`i8x_Q1enbO7&wP1a|8L2zby|}3?u;$9FC=iub&If zCSioggCvJk+RHx;#9Tpmjn1$NSNDL!oVaz=W~x?KU(-UAT}O+7MAImdABJG|>U zcB>?%M6d9Km?BsP{<7|}Ul>QwYT7WE>}DvwIWIXs)z15_%Y%)gFP`H^4ibBc1$Bt5f_) zp6COL^nG9FE!H(PQN^!lylopeW*(!EKQTR*W#vo*nNiLXG@s%1m3Rb^S$&K@u#rbJr1Z?(Z)z&>pIkF%p_jWAK6b8izV zC$Ez&=et3s z4IMYAb8o@h?L*QeSzs@#*#R9T2j)@Bo~x#uE*uVL%pNQOVHz}EZhVK)tw19Wx&gnA{idZ||< zKBb8=gE}hIC%p<9`%n?bX`BViceMA<) zJ|C?}8LPa$c0}jZ@QU5xt{BOvJvK16dn1fH8(;gH=#chr%sqibwR;Q{xtIr z2%t_*1H?!i7x+^)dxTY8%_!-T96K`gtcEfY&%phw{3Sl);RQpq(eP?QbE3=9h>?ST zLu9dpGpc3?VQ13_F$cJfs&Xn}e#IJbfts7X-qFnISs(iI<^Vv#kV2^vu`iD)N;;5G z;{I7#jou(!Wm?d&I;88`Mmu2!zK|zlb-by~JsA$iYTk(I)O$Zzg*ksB z9CqvRZ#>Rh+Pmyj;Z%1bBCdTE!iA-1n#VjyXq(4~rD&SQKuJ>8j0h7_Ru3IWbZrwT zQ?<+!DuNj^e3}+^&#pzvGc@HS($v6&t3y;-@FUn-R4Bbi2rxt1Zr>lVuI~yWOTUPb{ z5z5;RZ78Vr%im8*UwD8%CM#5m6Fx1ziPjeP4dE#btTwugg4%**L|j^@UpQw3E2Q>h z6LQDGIUj5VvyNWpa7=QkqyaWm*I0-E@+zTQmNOXdmJ$yNQ&_sfay zpX~tTUUsTcwisb_^UXMWR7rqj27&SDeH;gbWaH&`BP1U$3Vhl&?RwuCjc_E`RVwm~|F1aj5&pdtaep z`(%<|S(#m}N}z8TH&!J4xnG$~O(tY2%SSg)rMfPF@KYp+$jg{2{D4TXV-LE;)#Md((!h3Qtl#eQ`| zM21iX!N~qgFe2UIZy8F)wfnF+0EEz&#_contd_;yOTn3Jv&bObrL)vZY*JrtKLz26 z-*2II8oXf+&P!ia>yOclbh?T%ub5q+q_#1lqa-&H4Ji1TY8IO5RkI7^HA;Ls(#))* zJiwANI&}RaBG$8}=Fk+alDr!gx-SwFGszmAYCX3-QLOB6V)sp?-NoyNs$(e-Yc&Nw zFyx4Q#)w*25*XHTnP(b-Ik#lP;lZu0glPbnR`+L06+)E&$Tl5l=8Zx#65D^5i5_sz z!l>5@8lwZgX>Jz!Ir+57%ykt%LQt9%dTl0MgD_B6G=W(`v=*$EJ)D}+MZUqh>G-%& zH_7=kdM&vvO}*=~G+9xJ`ub`j0Kz zAH1(Wzdgj=hi?oos(qO2KxaD$+`m8U7#~1LTR|rvHC$E@k^dKM?-Zr!wk?ZRrES}` zZQHhOt19)UZQC|0jY`|LU1{B%YpuO+yQj51?>TL@^YT4?kA1`#J$jFbS~!X*%w$wT z;UQEV*Qw{j6N0xsYJ7h40(!wZw9Y||PS6~UUjvkz7%PGMz5LfHNK=|qXGS4Gu(X5% zn2~e5;|i1a$hO9=ZxEKzkFDCA(HOhu)_`tE9rH|+5cSt{u&abt817ELkbR?rQjDkz zB80WTbHN+-b-G^x^@4w(jIlc~;AI;TOwto*gM>;n%*+ul?JCz z=(~S=zir$CspPR_3$<%g*rw9;Z_6K?a{4HtFLwgxFWmZ{XORs5N0{|*e9F>*^hRDn zE|2kEs5TH$axS{4jy9ImlteKh3PIx0S5g~l zW6gzLG7!eG!KLWphgEm>t5~wBW)o;mxBX^k#p`6-TE|t?=lhoXCa}Y|&+#kQ7*+aB03yB5Jxbj|BnTYMVaQPO{S+#_e8nSD#4% zWHgbZJFYH+T+9@cTTxG+GBo`mbr+un0qE-A`_^1tcDWN-KElK7u;+cKh9Aj1UADQ{ zHP}yZUDPpGC#_}#KT~|4x*YV_9e|exgYb`^@(?~H)ZR6Q_P zdvizU5@N!>f?QTbN_7L3VETtfquGsSVV$P?nXbK1rp$F7q1}&GrCFg9WR)_Dgu}`e zKQ6E(xf=2!K;Vmz7d^Fqk;W@>;}U7rRN%BAH4vJ5>YK+6u$Hvs{4hcNT7FB@AW9CK z;enM;VNwlJoy?X5&5GuzOEjSFO6M~?T~a_j=J;|YlgJo+)ab(-o0MOhEM&zkDRd+m z(a3JjOdY=yvNxj>gYFoO6HPYGa1jcmzA9YDqHxVqFTEen^rcEO(ZgDNtIqRe?H-M< z-`N@6&C4@}we^&(D`I0Z7oY4{Y)oNniS##4>QlG6+7uw=M6q6@R-CV`TJ8&r><>^M z!(Iw!#TZ5-a--4@SfIj*bma_ks$iwFYRsQOB4)`f9WNWjVagBo?R%NfSnswyyAoD= zsLWC{@ ze_A9dQ?s%}1t6r5^+`4P?QX?oh~M^AS?*Sd#!9>cbU%`ZuQ*SXQc9k_+2+vCXl*hl zjrnP3ezbP+ny|HiX>WdrXW^9rT>s+^dg5DmAmpjt1hVWQX0lB|rQ!H6{vBQ9s~z9w zCZ_4;Jp>jW1}>${hxqiH;aR^B6h`r)JK#6XVSSl5)E|3n)GO#@A9O*GB&<*DRybIA z6dRT?=EgUr7r&##lXL@IS&1XO-pD@uJIFr5+*v`W;S&Itu!-cAnBEHk)!q_)-|fT| zDdKNbAU3q=x6Rf&%W-RGO6qx%@L?-?S(l`^7Q;Pe41g0wZnZEdmJY2_6{)l7I2lq9 zr;vJfiq)z-Gn^C_s~((=+Os@4q~cvZtlF*L>G*I^BaWaS=UjG@E2d~3uU=-g;xf{Z zGg2zlR`%M+?8wcSolj@k$IC!O)^ET^vpWZm%+J~vk>WH+(Sz@u4C(O2s>xaZ%*iqE zyi&DW?mvputgj_hhvE~7KMw-?EwV^a@1ghaS+V_oR+xFifaz+Gyn6;A6{pw(2lMGA z^FUL)FP_CZROX8lP|0c~e==+Ldg2iK7R)FG+siRlgFRCPPuGim*%@^zI!_~nURh35 z`Q0WDHDKZV^r&v%7G`gNM{^r-BmuNS9?}0uCEGr}REpdKJtJisnthS3&x7Bip+|if zasJ*(O*|R7!eN**nTc@fPvY%)BQ|c7yMXCQ)HV^DD_uic_=T;_VzL7Ip}h8GZWokt zq=7jcEGLVeFtPCrO7aO&^JX8LTtZ83@!uEYP83i2VcHWA60Bz#afzXD=**dsL0%$(zx=C-&?ZbCUOnJktSWs^s% z$_8!p*6Y!m5_R#&9*#W{mGRQ+OFW8qD$N0N%LQdKJ9eY?Vi>DcL%c&Q_Q`~sehcU@ zOzz=yVw?VT_qI^*kbx3ZK@aKt!#keI{b)jY$Qp=|lm!3KiZaJaZ8bY7bxA^wS3Tmi zqFq3%N`|VM9-Tw=s^7U1lKqiTb#6X+Jo%e*K_!YD>nzlAV5FDXOvSF6>{@ia?UTyX z1+gmh@G!@sJv= zKEW>-$Wln!-Uo#SBr||0Pk=ObtjM+yujP`8)wOfR3pSXW{Np?SPwo;aoTu+^Fn$sX zn!`*;A_V>ez1b}d_J{|3dilw`hHqI3mzw8??wE;)H=z_!DW4?{Ua}) zee4`|XnpV{^HR$-LGS}Kn^;aZ43hx}9ZhNA-XP`kIkZFX9kF~!A)@xar7)+Son%z=; z>jvSPCQ)}!H*r|_j0k`FQ$eJANb|g%Ao85a;ka+6_vQG-$J_k@_D|V;)k-Uc*cpbO ztf=h(n#DbnwrZmSd`?&@JCGq+RCY`wIQH`7VFpz$hUmyldf`4sU=t_))PU;;UPrVaLEPt;^+7 z?lypRXB`Ps+ZsZ)J=EpFSD56rmv~iQTS8%(Ss5ii_H1&uNF~)n)lnuiU`7E;IJ1*> zbA*2Z|0^0!<3w(K)J-E>4UR^6-yNt~x8o42?~&p}QNr}9Qo0a+iH6Wt^fD=mD~`@R z{t{}+&HA|s&z7y$zGi4UB&D+lE6Nbe5J7oaJd3a3nzf5_sk3 znmPLwAoyb=J^lg@v4$?aAy$ND7Tx4$7XwV(wi~1i@p@0O`r*6 zyz_rxc9EKtMAGpByiP0|Hp%ERHfo!peGttBgdp<#zTpR_HsvNEK*XM>dG2L-W_!Ng zuN^^u^InFm4Ojs4X~aU=aCDd$)&*bmUB9avsYQ;`D{4!{yY)0VC-Lexry6DXK{zIn zA!0TYYr}7NE%yR*PcBr%HIc)l!nI)xu!`Yhrh!wU4H>kdxp3xFOVq@|=v`oJDeLEt z&-R(9<>S~p;!)F)-_65BHS&s;N;=oJJ~sv!m_SkQ3!XwHi@&KnL{2(shpsQ{s!O@N zYEdK%4LDW$CcOA!kBx2P%p|9`>$ujTUJps8wSVrph- zXKL~vI#5O19!U`81B^m?X@P3dO7&b#F|Wy{Ne|CThN>T-rZTz{5ll|%AY)t(d{LT1~rwPq^eXRj;v!J3N%U;M%E#wlE+YNs+dyU%F_6Ky{=Z(1BZ}dOM!ue!+L{#ti~7xhwNxm=y)mnX z3rTTq6++MpxvRRDczG_?e-^y^7CJAvG=_koso|imBkNA5g?OB50mEedHYySaU375fiTe}9u|c{cNn+4^Y&pifxtHd0xbTQe!JCJ!VC*TMj}(+fzWW!w zM41n6QsTbo6TI$Bu|zmtzbe~i?OVAFG;neP6~fz%gdm89SPX!U$G_bH(`DLDH&Vg9 zyQa#+jMK1Wp^w~3FvTlN>();FI+J!Gi%NJGNOvj0|2dXQEJ+<@4Sek#9uYT=N7OvF zOt{;jOERmBOOnD}%O&B;Ae+81*k(_>&hNeM?ECg}&El?A?vZi*cyMa~HJ;5AXP+VB zdF!uYRf^Mg=lH@l=)c7_iGNV6f05ThmUf0tp8u&<<+Z=ijyEHS!x0wtm%^p3D*4es#+!Am*lWLH zsY_7JgN1m$1u5m;4103X$EuQZi|YT!d37PfOI^{y#zJMatTLJw-o?X>~g` zq#``T1$E}eVTLGVWn`fE=3}3Xm~@BRTgOv3Xoqr4{s#njiXXwS9iv-J$;^T^}I~sbI4i*Gg@0gk7Q?KkKkD24cU}=#ho44u%qD^F$pu z023}K%CCNmwhz&xdA2qr(I4Rm^YY6ls+rIaKUB~sJ^v*DHsT8~b=Pq)O(2|8p$F+V zp^h~wXxTuVQQm|+F)c6h!Lz%inD+W)EC4p8fYr#3`%2yu0z0ZpB(ehVM1!VPMq$c4 zBaj{>V}Fa5l2`gu*CKdiRn#=--ujilcc1Oj9F&6~ESCPqET)&K(A}dn0ne#1fg)D- zrGBj({dre0mzu$s;IbWz<9ENKfvc99VUo}0vp-x3Zw+wIPx00zoy7U7$C|&b$A5Ca{{@+1Hui@9HSSa0uwPR_`P>+&(;appv=#$S z{7$VqTP(XmP-%H`9FGcR$$d=W0t`rKEz@4Qv?(#}JpW$ECzH++mcpxeQB*@9$mX9K z>mjiF{lXII?K{K`=fKj_D#y}^mIZThm;@i+qtDhB=kW9XsWLcI{#`}>q~P??dV7<*Takl+K>DLbD7$Q6+RW<0cem^TASX90*Z zzd3$yO*vhVkWV?@b_P*GhG2-;4>_!PV|qb1D@)=p9Zob_TROK-CE1MKXIhOkWc>+Z zt2$bodf(?Z&;YRiuH|;Dm>iJ=BQ#HO1<-=_&kmR0iEeO~qRPgLK)XpYld}$QAF1Z` zK$C80B~p$u+N`Dz=SFKJU+&9HxVqMlY#6a#WEjt0q%ZQ=xd=v_y3ZMlye0%|+A2zC zq^nBCpqt+##q_{SHFib1x=f>^*xiZVDC57qE0NsCT&$wUtoV&{WZViaUMEii1S`)1P=CT9Fw87*t3V zNuBF2tsuxgUEX%IoVI=G&Cxi*TR+A(xZ0yi=<5~5cpuJRAQZHbN5ldVS11ZB9sYnS zQ=bTv`FD}mtynh{8d}t`6mSZw1jk}X&i1gjsYYk!5R2uD@fl7%m@}2Mv4rRQHI}E* zv2Xe8>=WW~PWh+6R8)2|@#)HoLSs0g%LFoA*(mtd@9+W8S%w$R?wSd=T=`d(Mz$EU zOAF#e3*KQ_P#3 zpnK$KE~AxBeLuoT$;6Nlr>DL=+BEf6C|z}%iT}WJIU25mf^OZ~VLOsiou@29JyTN) ztB?E$oA*kacZZAgl>OmHZw&9(L*OTZ$8QM3Ul6Hpu%nJMjM@pWT+%B8RWMpu^`^Hvdbi7i1KY}fY*L%1cZllu0U(D-FB7VMi?m(k@>QitAA zi_JtwDD=xWwQ)Xeq1uryP`uQB%^~jetRSOtSJ`BQUE=;nq#ukx?pFYg;w(Ud|9H!t zek0sHXNKjV7Ww>NO)es>IfdaDqM1Yd9W5yO4{upXyZ^>CZ5tF-jE~99!&!egXzi-- zQk50kkV~NU}Li^jPXCT8i=h#?WAY#(L-c__WCghY8?bGTY( zekr3EGQQ940{d=5%IEkZ+M4L>6NCB3XU5grqx0cV4n7UgGN^dp#&PUS?DkI{ASFCa=02ddw~ygd3C}_$Uq%Lts3#L}T}Sh#}A1;3hD;m~^~juzchO z5TXgaDfg7rC#x@oJJP}R7hZBj+eumbv3zDGYJccf*KAjdm-=hT zyEZ4n5CICsIxHAi&c(JcD#f<|=E@^lq5L){!4@%>;r$mRj9q`G(lIr$5%I+bjKoS? zY`LLX-6aCCD=uS8P1`u8gyiQI>B-{djs0&`x?$@Qc?YdHMhvbn!Ej=<`^?zg( zvckE@3KAA~D2z@>Ko>n`@?6qn>YRQLO7ZV3NZk!ZR2;JBO z49PlCcRF>&U;j#X@QC~DOt9jOo-!dj1FSliV)eW@L70=(@XOc~ec;Nft z^|z{U`Z1H5VD0{Xk3uuTX^Bp-fWpNw1KTBpN+K0e4y-UJ)zJ4myeI@p-04F*awjXFzgtq7e3ofd1AqB8nsH2<|>UD-J95GSOT8(v3_c&Nh4CKLcJDQzEqU_JP zTEMDF1vQp40MbS?`TgU+V-|^+N?MQEr{Yl11+m)n&N|0l!PrY9p(ZvJ0rBs&J0OlkQ(X;W}gRbO!x=Li?W}`ZWrruZ`R9t9u8?9j+vB$+O*gsE3cJ<%OQr#UuyQyji=OCou4r)W(SxsjBu$Ufmx)}!R=*cq|k1SHPb zFAEE!jE2OxGs!~4I({?$ofHMpw! zMgojVIz?0}n21ONrLJ+>3AGSH=({L19}45WttGe)O~=F~+Rez;4*fMMGHn>iXu{2H zA>#+mUYaeXk{#0A{&?DobC>h0*~|UoEBv>Y+HEo3b`uZ8L`0#MNW36Yk%3j}Jo(CZ zBrp<~(OAUFp;!%jC`OurP#AVQNsJ_fB!(dcQ~rg@Xg$DYt6{a6Ug=p{Xi>#fYe5mr zM*W1&DBHM%knT?1yKkb;FpF-(FeVs~x$C8tk;7mli+O2;HJASHDtc#UMcv8iFm}7b z`SExwDUsgD zRaAXt_IU}h1$AQhlqHW*GLV!@6!!xZeX3HFa(#Jn8#z$eY_uB(fte|){u$BFXbA~9 z3{K`jbJm%0Ks{bia9{u!3)S^bbC4q_ax1Z+QZI@T4DK+Q2<({EOZjiP&1T0ivafCAHVLsMPFiFWvVd#iEPJyutn7yj zo+M^k+rZZ)=$rRoB_}fYS5dkGKhQ@8@&R8^cm(v|31*o$a!w0_g9%fJOdzZ^b7fP3 z$nyJvXQn3>>zg*hWrHN2tjpL}v?(el<6TOvzD|qW5?z2P3i1oU0XF?XTNG~qZm1Synxbq5 zISyeiqQ`&CT5_Y*yrj43iFoLU8iQ_2eS*`swQG5Fw2fddc6IPnwMl>9q2Qe}lRSXB zo@W4GP`9Gz1usTdfJ{2T;tmqf?;vGkP=Q#k17B?hCyL)&H(vB)t@~%Li$$rA6ePn; z9VxcJP7S|@cY**vWc7UtFu#TgK8#8B>VKmzVo;G0v{;%sQSs;(gv?zy0d`FO*rW@5 z|JSahLq@bB@)tJ>|22gCp9hftw4axAwfV1pK7LCYTM%Km8~H1Dc?zS-wyG|w8;>Qx zypBFUl$8L2&{rbtsg+Zmm-lh|Qt9}I(w`g)LE1lpJ`XWeli52!A5gt1D`^{PQRulfl-C` zCu4)>DWike&xS3vx@{=ybqZ>vT{U^+2{KUic9FoS^O9Ou%@xCRM-)$S7cBIk`UwYR zN3Uf7>=GH`l^&j=wZ{AE838~-qLovew;H^X|RC{Z5DO>czZ@-I2r?oagIsxJb) z=Whx0e_9~&w*QUOYTC}qswf|B&YUAB{z5c^6w4@3g-a+1y^TbTPGKyfv}n*OypnDi z%JI&9Z34Z}n}{{`?#6jGKhi37<(2;%p}N>E2v@jHQu0$rc`}^ ziHbPXnF+|F3DKBiD|Cs0E*Tn$PO259FDMdC{>cl%9wLifSOJuoHWd?66SL}fSnyct zfC};LG>MFK>o`K=UHZc2@HD$ks&d$wRb6bY%RQ5OS!JGf^NERVzf5F#f{%scmV7&K zdi9DpCfpEv`8wm!Ha?S6W}cm--jj8@>b=z-U*f4V^?b zh&B!67P@3*2!k%va|nX5AAga9lHs&Esv5LBS)DCN#ElQ`F!B}Z3nGFGB}nGXb3E1w z!2*izdutu-PFl1{EWV>ny##SK1FDv~M?6kfy>P@--|XfL1^G>?Oh+mo>4>2H1!-Cikjn>q@fphRIGh+ zH=n&G6`3evu%gor$XN{wJv9lvgTn)UEte2P1NA=)3YU)1-K|?LjFyNxc;it5QN43j zHSYgGX4cfJXB9TL=tw39H&!KB;3z(2>>qbbI5JAq0~I}nhHDp$UM1@V!>tk^u=>uY zoSzF>HB=ccy-^owJWK{FJ~fDfK|rl;05z&)(2uC7uj&BHj8skC>fb`rS+$MZS+PyF zX}sKKrp?&MFIB?iLU&Vj3~4lEQrUA)$&J6Je|Gr#l&jWH#6fBkc&AAR4Eaf-$6P;WoO>URtiQPpe;^zhG86qrvjGr_yN!27Tv_vCBsl6c&Sj z31am!$GxUud4gP$sC@8z8ZzIJci#}-rfWY$#EFs6H4QpMB=g6yq!G@0FJ@v(nIR!* zSiaR>;sp`&8eQfJfe@a>zn|J+1lV7fHeA5-jGu(@GsXCYHLG`gGw(_tbJ>*UUYlXO(O7IL@siGB6q?{wts?2V*NX^xI)lrlX)=8#&3VSp)9 zOT#g?W1T#VTfD=~7S){^4L;r@tY&2B7R<_=(8LsRVbrXhfpqW*XSYY7${Y&bh}Xv) zdmUT;BefI(dT#FzM7C%uD>9p8VkG2Sv|l`!1Jn=WZ&SVWe1KnxON^UBuUo!^7OHP`FQt!0RQ!fUX-)Or23i`r9%JR_5Dxj zPX$9uC+Gh>qt(`&kySB1vvk@|+=7vyNTmn`{Qroxh8Kq>Yq7+Fu{5Rb+9qT+L!XeH z+vSQ1ww385W=vAh^StawPFip!Def%X*gFh?e|`@!zvu3-OfO{T>N@v3>iFmy^Yiw5 zJu1=vcHWcaWh1CEq=pmkpdmCK;)hv*nBpJ;2onCxpNgH9WWLEfZI!8B<>8= zfpvxzMjl`w&EJ4^2Dc3E;X+l634uAtj*`u32jc{yWD=KN6A2cay4T0r(Va{PEhys#o5AlT< z;;It_#YhXTc7M!N=k{IBb&1j!SNJG9Ug`&ZAWws~V1`dtHqf~9veo)ERq-M5C9}3I zBX~T9UAX&c@30>$o;!JxUgA{JB@{ln_iapaZMKswad-1@~sP zFw=210*Xxg6(g|A=M-ZKc3HC?7oQbLp2~oh<~oChGTgalG1-Wnc@52a`rP0&k!ZCdJEVEl0Gbd{g z$0>Rtl2Oat1-V^8OANlO3ru2bVdC*9ELLF1N4)s5OCmkUO2Hg0$cIhLlWl9dvEtp;(kIA`JZJ{yQC~;P+ zr&%kcm$4dtqYy1f$yOTg<&N=&!lky=_EFeioQPCL8%kBJ*@nkZgI2?pR^L@+vo%mr zq*W-SnlldJSd@n>iaW@JPLy>h0;WbeXSI{ zqLNjeEe_IFHSOFEOxiZSWDSI)bm`ie$X{NP(IpNn$=E8u;O&@{y={!D)z&3qh zPOTfHVO+30DbglD{SEiedEuNLSI04Ji~AeIA|K?^W3wDO@0kR+4bWPs8VD?=;W^4? zZ3K-ie6`uEHNoO$w7A2T@YiZ+yq~=|qANTBDf!Ob5<1~rTOLGFXi1O>(wN_c2ZZ}4 z@K=~5+6+f9Don!la8|z*Ae4MNO$fPv=}B0j0t3&;bpZRCPw0-9UA-Kl^*ikVVsvQRq#H@$C1s^MVxj>eHjxso zwei5x2e5_!m63AcCYf(QVn-)`0qY6eJb8Tf&&i74gu~vqL*b-n1-?G6;z+W>RrALfc=W=+lbvRW5*zgTgLMW?qc6%ebza2bBM2H z3$;9LTTI7tpm`Z@OdY=W4UT7W>CF`Kfw5nEgxGYH*J6O`vUp;o;afDi#Oa{onUzisu;avwfq~T!ob49NtyB#B!V=yuGtqX&H zYdyYG{yGu(0`1Jd1?_*z?kbx){ulGHqJ*r7z$*&`+)wcxQJsa#N@JWL0NV~jXZoi! zL%4naet5y2Oy=Ol;MFy>kE(Q_bdvP*p}6J)?hpZCKw?sPm$Y0C-$o1f^Ud9!`8ROK z3Q%kZ0a5b$uPw$vj#483ugt3L*l@#031^L7#5O!t2bo?+RIK_5jHEM2OF1cLDN$-U zYK{T}nO;pHWrw9(Z!pL}&!vpH94vU74fn`bqSdtOJ#ak>u<8=@NN%DQ4?NQ?;|?imwny2+6aL8h_g>xq7Y;m)fmh$MQ8|! zZJ%RMN(1Z`dL)K+L2|a1*kol<_@}lLob}^9Wplx=XYV0m;TBkPxo#$J`PA>sBv}+~ zSrt!6DEd5^;kB=y(Wa_-4l; z&!RKP+SkRk-*@-KXg)-Cca)u)kE2m7yxf>7PIygYeraQ|Lb`+a2RqtB>2O?x@&c0i zkIz}0#A{viA0fRw@_Ng%I}fdXSCqoEMF-%oQ~=q&lh1Qnzm8QYWTuMPL$nOWxVW0d zU%Sf4?KD4L>Zq~%YhJ_-3?J8m4mlCO zI%slX4g?7`7j>lF-=tUV8o@rjZ`FF(!7uwzr*zCXV-c~>C@GB4KP6oPy1|N+oEVVK+}kiAk%bP1SmX-^A)M&VD3lnQvF>a%p0*Siyph}h3aT;(c)Zv5d3Pt-GrARgJk z`{Ph47TuO258JsFBZKqK*&y-uTWC9qDH?_88kH8cl)i2cS<9SHFe7caJ^CKCk&!`F z@Rf(FtFs#M4in0^7wrXL`0^2w8dshgrxCe+pHEMv_hW$RXO^OWYh7C@w?Ow7Ujhyx z%rB&?`PCX%{4Ia-&(HGzJE{5CIs_OM^cYZ)5F#Q?xQ3QR8;W2!0g6K7wlHF#y)^f> z(Tc5GOQ`$@T>g!uuus2;G*Q^?c??tbN;1#^8KdlEW?J@L)*5?5_vhOaWG?)jYN>b% z3_K81z;W_SU~EvWhBxV-uqOS!pFyE8nEp~Q;rH1H!a^`(rG37T#7Ox_VwhCt>gfwJ zW7F8|;|tf?uDrO-F88eNjfG!*ZJO*V08_4%n#Zj*CjP3l*!lsZ|L14@q;3REb!yx$ zjH{#U(cQ|usU2PEm?hWEKvZG6o{FsOIdlkJ97SM9XuSv{(z=;~nQK-?U89v|CJh-~ znzT42k*b<%BYy=)mQzdL9Z7-i4Xdj#Y>BEb>zj>d6gg;sw0n4mr$0Ta3d}-H2@=~B zg9u%?2UG5`dGOA0{*Mw867tB(w0-7u3o~I!c%eQ)L0~LYj~ju$)Bs1GM20*ABt}3q zGjh5zGp4LQswZV?AB%7lGOxAu34^P0FAN@|OEyrCY{F0-3nO~Yrp#?*6(*PPoZ%(p z8p-}hWwM-O0^zmJQ3hr?pu~qv-b_|{ZJRG*t;+{fGaCzgZFrZQ`R{j9;bSLJh=4Smre_p= z#RkhY%7RV(?epH)P<$!G0Y*%&kU()UJYGnbdkTfPx&F^kb)ci`^p8WY@VsGsdeY&# zG51LN8Kl?12&ZV@BHR6#XwuD@_u{GeTaqGYy z9Z5sNvxrP+gTcMw!+ZsBUylX6?=C?t@|yP0{F&Fq#0h_Mw+4}e-3emB_jEiG9w@X$ zHS?;_UI^-~iZ+Rl(HUUw|#^|8)kJm~M3tzs?}=|J^g_@?YEW@zT=7Ulisis<9b!bo#=R zUkx6Mkl0K_Yo(L`LI567!0_a9MS(H=9~qGDgwO!^YXa|0cv7_(LjUc+?V^tIj#Ksf zn#)gm`KfQoj2WWj09z9VBg6S2j3HVXjZ_koU1a`rZ6cZ^Vc&DT@VlO{8gJ7y~ z*NF(>3$+1#O{%}P~A#=$KmsS727A{o7G)sWJrMnpZvw#$!H()##&q0u$#e7NFYryL<9aV6%SJ$?0jEi zAm$s9jgK?Z8+8|fjp_=Do{rUIh4ChjUEQzQH(0C|dnpL(9GI@MhhH}hFLEE}-wvG2 zJZy@3YM?Tf=pNKoeLu-S8*=T#@QJ8kj!YWpGyqSSGEZ>n3G*vg{jZWBc)DcG{bDU!{+6|r z{)Yo}6-!%FXBR`;|BRTb)XwBl)KNZh-Q3LGF$^{FxU@t;UB4SD(ok9W(pc5~gvXXDWXrzhyM{l#k49t`6jiOXLWijfRqS+8E;cU|-k>p*SDiRb zjQ34Y0QpT~z%LIin)U!b5s(FXG+_$Z-x!IEg}E3VouT2rIT{bt5Cn&!I{sln0fsmT z5eF+CPQ(K_=#um{^h!){qZ}gFVt-N%AI{M73T<=z6yS@_Eoe|CGue=N9u!zKHRVg~ zr8NTc6nXKWNo9SzcNF4+(i*E&2IMsI zo7gGerlh!SsjcAZRiepdyd^?6-d{?WNi!6kq6eGF4Y68|TB)6>VBkrWq7B`7tir!M z?IN3VDCK#uBEnikpc3V_s4aKgx6_#2pB~0Qsms&jLl-AGl}bQ z2V8k2MwH2A5Jn=Rq{#?Wm*2y}6>*YpBE!ucMTQhnr*={!k5oH?b%ugCany5M3 z%BVRz&S)%%x2K*!t<6pDh|O>GzWsOmbZ%_-j3cDzlg&}o6hi?iue1qQ@dm2ZYNZ|g zp*qN3Bt|3&Nz}m^cXnsnF3;!lwrjQHhhYNp=wVcLAg)q!aD@&Zv z&glmaklvVMlH@?%t>fTTBH_XsST++UKMcH5N`_UEp}|V1)ef@Z{7?31Y^#!pOB>XK zP7UZ5Fv0S;k(h(R@@amm&6&kKk8@XQOMdkQI&eWeHae1lMVAKF6%=5cd#L@Lw6?VE zw6*di&4MJ01@Q395JDH@lk!)&W{iT!Ck2=ajBr058cE}v{9q|22 zvvn{1HH791QEU*M*h{nw(9YdxcCSL9J_x7we&EUe+@c4d=Ct-milWvmj8{3?eUoyX zFjcrm-S<7QShzmj;m%c}G1o$6L7C6bcHfOjO2ULD+zcMqeP`7{zfxE%rsyC~!hX^e zUvW+5x0iZ4zDmC$Y@){x>@dd3US<3(8&4M1>y72j8V0GKpq;R8^k@+;e(vNdfGPgL zF+b)I)-uc>Z4-ZpC*F$z1-iG$GcNItxmYoxxq|VAKCH-cP{*v{fayjAYR}E zV^l+n4X~olaMY3JU=dH_Rzv1FcsWPXO{|dWK=Q2h;cB>2S59fen0u3dP-1&0>Sl7O zWu?YZZ%En?h@)6}^AWB_@1<^CkZc7XB7yn`$fci0_`R&~sEDAz-a&K5DtHr0=- zv8=*Fs6`^;SBFw^fYVys<4GY0kpZ-zMSwl*4VTNWeyp^55IyI{C2H#uy?R3AI?cK&$Ui67F4=L6cHvh3Oh10Oc-j|ev7cToh^@wa zuv2c=i&boL+6z=^TApfS*Fwf}xAXwI8avZEusn;UPMNr9us&8BO-WxsKkQZPb1saD zXC!4PZ)OOr{7kYVZ!Vi@S19Vw0 z0}f?{jdzIWGKX(5=r$QD)V+te=)icIajwkmZidH|X>+knhCU(BqtdPj{_-#BD2c+G zq!rlL{=}Ep+ntYBFSGu0b_0FiiNo0!B3 z_5qPVH)_X=UkecT!enDMa_FIOyX|t+WqC;Mb2z3KDz1@4k(Nk|7KSabS!TFw&9PY` zaoTFR+o!YHp6>Hs!S;_cK#;r;Uba21H*7dh@jhmUbbUOacf;f=>fP^Pe28USrP_2= z{JKixh#p(@o(s9!vxj}lf~5CT2r#Peq{2m4qNN#lM(2mZ9m@56n| z@c+TixP|)`;*X!Mu?_bz*ApW{;{yI^y4@{H;|R{rcFj+g+!pxBdX0>%db#}x(`jo| z#Qju8$bdNA%ZO+T<)cJ_XB*x~$u>g=Ak;&)c345k33F{7Ck-!SCSBDaWfGT?E|eK< zYMYFOLOwICX1kMFC%!9_s%BqV&jo?@;UM(OYMm(z4+hXMnbd{JQc4177){F5sZ^hs zgp)IlhfHhMMJQBPE2j_5l4{2X&@@kytXRtc*-1Y~HHu`b!rqliS{DHGXSsqiQBv&y zZ({2v&7&l3mrFHaJLUtow*J`MFhNTulV4%AR9$oA6ZO5+?vyq+QWffKUI%tHjh;mt ziL&)8)VP3kJE+J$m?z{Gx}Ggg26Ah2xi{WJjB3( zEC@Fuc71)$)jhq|!v8k*0xnjeFiY=PuN7>=Nj!`8jybKBSh3lrk6u>dYC)H$h3>$c{k2+yl=?O zX5r2)(_vm}Za=AJ3d7xhBcd!zC#1k~zG^xk4&U~xNcl`EO%0*i2*m97={8xg4n8W3 z`0~I?Wu_J!{C+9!NrUn&&#;j2dfe^EB5J&Biz87`Gai@G<4K~t=zVnbak853ib+T~ z4Vbx3$V;gs%Ylx3>LT-T|BWr9x559z+FQWJxh+|vF*7qWGjq(2nVFfH*)g@59W%tt z%*+ro#LUd>nBny~b4UM3|IB&sj$TVGwbZSazOAa-1*_KTjkS_b=prY5&S0J%f|1A? zKvpQ*C<8nEetyl%!%Aoz!$YSf7$ftCAN=kKsP*TeH|86vlIE-l35WoM(Q!sNL8i!C zz702p?#nWCa5gya`3zUIk@#J!G}lDjKa$%P->q4+PGu#PP;FupPNTKx#-J%0KuHkc;j)X7cUY>=}kT4)- z`HK-_o)wQ}if=w~gSOO7{meP1F6CTF%B~?H*`G$I(-^oG?iZ<3@383ay!o86&UNNz z!dY+nc|JsLoPz%pPgE*xP-w+%6xJ@H-xipVezaM|EH8%}uFqgvsHld1^ZsvMK&x^EEwf1zcT<&^*{$Z+114uI(6UmQ4(7pz z4k?B*-0(!x>et>aqg_tzzLZxBW&a~|#vL^ACvr;_D{!YfQi0)~#;b-x;S94=A@gyZ zMkXi0g27AvD>ET!I+K9RS4mXe#3Ke@>=FiF6e&1^KD>r;PU6a+M@%}NFdXiPiMNnX7%D&UtVR7wT zlOCPl_VNqh%-imR6Mm7cqXQkK!`H6Ud}TD7@v$f}R;9-PF21JC+x!?`P*SC_ws|4{ zsoy;H<~w5Yvca%sCsUL5$m=N`xkn!<%Hk)eAS%<*b)%|o#)W@1r$G2VWs%)ArAw-2 zHC>f+PZO+vk5~*tTYl%eMm;%P8mVeDxhfDvvIizHWJ)j7HjwAp;zyd7>x9o-!+XV< z)@V8Y^bKHEn0~1e$8ZcNY@(l5jBWc#mBK zRqh=dhUVwZb!MkoL|QS|UxB})wzsBP8}}zV?jf4YKEs}83V=JSDM%D0Iz{Q;3U@9Q zVoYCY@~z}Pf*|UqkQzoD{Vt=9?6;@gm%I#P7Z-|~Qrl~K_3}AC zrmV@Q8k;3~Y7rX1=0Vkqg3SGP*Z}5$Tx3VmH_D%j4*t(0-@!@nOW^c#P?MXGs9?n= z-siE%i!j5cL(XuNmD#4F>DyD)1Z`E#plbF=fl8VRZ{T_KDP>h!tj4bl*TCmvcXI(D z<=p&}oXrb9&&b2WXW6Rs#-fH2ySGV>wuvI0*Zcu8c^aQk%Sja?6P(x`?k`BbFRkWR z5>+lFov_?%lEj1(Dk$Tf5t~kwHh3zhaF&ju@#gj# zVjBz$eUNDH72?<9Ij&6@)J+IDcQMb0tFVXdJmFjRL|egf#gS8ILIelAJ45-}peB_g z5$eG`epxq4vT5ItQfOU1Y*RR&aNhZy*%Mp_3ug-*l(Vqs4EL)As^yR`p7X>tNmY`y z9`M@}4A`MH|HzNG<9p^bqG3>bUg}^~zHNGB{VIY0p>0@KR2)Q6h0U2Ypl4#q6VsAht>%b`_ukF2 zE&ym=$aVU?i-k}3C(f-mU$tlU$_MO1m~ER2?(B__(P9b5S2`gxh~guW#THT9|BTdA z82sqzsCC$|zEhAHpe>^DW7nSwag#g%k^X7`GAogMt+iwpr-b6noHj;^D+ zJ-QF&1ue|$)FQW!`+197spT?MUo=!-8W@Wiycx4A*bF!SJ5qP7nG(7;!X76SAK2O` z$(|!p&l2w!Cc|7jVT)Q<6t3ATC(TQ`pU7|chx)6)Icjp`fiq%2|Ov8U#nRrd$h z?wQ9I)TQ*#-4nTm+^H{4ZvS-Bi`R!Qu7#nJKa|HS7EgzW`*!Lz&ag?9tIFlb&XD#> z$aLM2Xu8<-c(O)i0vBQKdD~4{*YqAo4BEpK>j4IDm&@;+9VLI{8enzK6mLb4SMjOg znWNigLepm9^mWpUWYQ}T-yXC}5`SFkk^Em5AAU^8+cLvgdwSQoSLE&L)@q#Z*PfEcv zs=q+hGuP9rnlHl-i;p08?2t(~gW2SZVSgf%o|K;G*Xq?FtQn&FtiF81ga@cb144Rv zV@HLH-8*jld&_f7Ly(3kX9+V5brz=8vPyJA@-JJ3DLv#vEs}SXW!-Y+SMisuG(Ay} zzHx20uT$-u^BIuUw_GjSjw-?z+bBpGCDns5w8xUzn5?0H;w$a7i^U!iD7KFi#^ zK7o0Tbv=o`DOvxB!nZbGc5$3a=WfQ}Tjo{%VEG^y2SNh8p}PV@+uQq>=AJpkFEnu+ zt*%RGqBs)>|1H{x-?&E z@WZ%EV@$dG&c&?7&L-!|s&sxpB0ztDodDZ@tP^X~69WZf0)LAp>-!U}Kjg}A7Y_NW z*e^O5BFaiq-w;Iu@iy7x_ zzY)g!FfAt%h`<_^{GaMny#KyVHM6sFbv1Kl0{eT|2K>zz;I8N2um8E^r2&5L;B3L< z1zg-@a>`nB(XvHb z^8wKQzaIebOv(R6coG^d2iwn#9BR;rTLs|*o=}Y-5UlD*!pJXNDQYK&CYiszpzHYs ziK2M1i)~^$__2HG^#(kiY-byvMbwvBLuam7eJ~!~?m}Qijm#m@NdH(FN8`-;+lQ?@ zJ{w?SS$f^9B4qwnWGn6^?P;hX3nZ|4A>&+I>S&aukU*8XjIK_QQ`H-A5P*pp$S!0s zFau57PrVMkS6gDVyKR&$O-1xqKOfq{qcHFP^})aXe|vCoPe&kouZXRKiOs(x-DS-F z#fMO(zM+B!Y~gRnIg+d=h7(&BHL-ILQR7*vu}6}|;KIz|!ZG+ajyog3jbFBRzCPWDBM9uLQUk;$xP4zfux zshm8mwpne$sT=AYZ)WJUl6mwKw#Fh8OR%?*rX&*q5v8ZwlTGGC*nuoId8M^SHgG%5 zA*s$}rQc-dY%g~>#wXeZA3-T%jK>6ty$r6$!^)eR19mN@0_p6L9;)_k*)(vk%?bYO?6CHNk zVeL9UZQ%Nrk|RNC9#dvTr+(FYpB(xy4sAkEMJLP3kS?BW?o9*h-NtRKj6&utzc@dI z!-*)LT;%DuX?U>}{o;p4V|+m>lL@i2seIUM5cq~q4cwDDW6!#Fw}8;iZ%cG|8fU0qGjS z&}$N3v9poENn|3jjEOjYsPUffiGnxybz49=h{gxWI?|aUevvrk0jdxJ3LJqTBVWi6 zz7rALuc7ctR!>B($VmK?pRvnKt+F8(#2;9^IX{WhAssF8PIHgfg_lI&WJ3%e5uf_m zpd;+|f&ryRFsyP#sgnLwE$0x*YuxlLb(;L$!J8HcNL}A{>z+7Y9`0W~{=_xkn-p%1 zxhG3Qnql~j;W|f#(hLpD4fPQW4MpB!<3+~hCVvs6b9*bd1uSgG@MkWJ&N0bL#?l{( zc92P;5m35*{~+;|mP|Z0%YPT^A%9^|D&+nA8{sNdQCSiToZ|ib$2GD4VgKO2#{9oR z-v90SDpq!mwr1)^wr>9^X``yA@LT9F?lW}hP&X9uRT`wi4zSUOC7)ps%Y~rl+MG~nl|_28$A@A ze98hz@Q1k@ez_-{lV6r8M%=07hNdwjO~($ffa=Km!8-{%QE;XwfJ}}okUFAc7_4kj z&O#c+_}E~z0**@C(a*vobm?qvt$a*-1H)$B4tYZRfggpwogW^e4+}N^*9S+@9HsG> z;2f3C$s&PozsXK~@&cW}(BKU}m=DtOJVm#H8wf@B+zlB-NNIo=aK> z44mMsbQ@^UT+9X0Tk(^wSe+r48^8tbcL_ zlT__5Gd?z-FT`ZG(hVG0R7vpXZ(nk2zC7HX))3CYC@AX#`tFS2vunU`BFr3Ac=>OC z&1P0)F;`1~oTTd;7-$e&ZpV`KGwTpCDOKcBc5qn);wHFWJQHuf7S68}*&m`(L}_JF zoW+H>KA*-oX7c)JPdGi71gNm)C8H)9+a(`;Ke}Wf>D^>3kFNN+pJaJu0xA||l79^MCvWX?dqkh+XB9VV6dn5`3edyO#`jN3a85YAN4_z` zUQqpY3F@4Cv8Dp^pBEr@@PEGjh5omf;D2#~Y*n4VoZzEa?^qd@o)}9QVHeg%sl9@p zGzyE+CW!I&J4r%Ip6pM>Rk<}aPtHyM*a*EieMF+f7F*f4*Ww?c3liGHxnp)8YOUZ^Vx_Lec?Tt-R)h5Y!q;Xc~Ya3#ZNArA0e25&8~Sg!HFpaf?(jljM>&pi1BaGW+MFL<1 z@{rlV5F`qo4J#KyR63u9;L<*w4v%kEadSk?IjIfi$S;vh-L`{IOi>xO8Q zR%r^3#4xKx^N2G>f|_{WNd9|}M4KW2{sJ$NiK2oq?;>7VN?opW#8OahQNieEXJ~P! zXw5C5)&Ushk2s6ORNP-RGt%*gw0S3#;Z#DHG_kZ%QwMRq8Nt{*b(Vt(>u%OCQLRer z;o1qY{0_$P$H*&q_Z~>`hqy|GiT5QIMk3D;fBD4YYdCi?&?n%4ld%6keFBJ{{afcu z%GJ#7KPF6Uh6U;31_BKMHyir_I*h@<>50hRMHf1)!fus`KGAW}FT2TD+ zdv5k@f9c+_MnLl3M)Hy+4zGNP&tpy(kI&^s=48#5K{pt-ST~H3nCP*X?9?vF{Z4G8 zzZI0oOuQlsbv6mlx|);1su52#yRqsj3&tLa_d_?lg0!i~5V`08-Mo_kWOKjcu#a7P z0=Ou-4d2;ntUkSEb&&&X0A*zH5zIFk4ZFl$D%tUSLT0goKm4_*K2ylDD>gxS95&j< zdAhn7Q}x~2#DxMjc-}j0muYibP{GP51JC#FQrMfWeVm+kyK-8ZfKku<(O$L`iY!%O z4?W>PG`HjMEFnrX)DKiqV%jFa+!}z|tJtoMmU>cglaUXQ#!|%It-w{A=Wv35doEmC_f|``z_5ld}*$Mf_{1d@j+h4#wx;5maJ%(6>hrgn#SQII;pMaf|Ci+3%#)kNaGVoV|+jb-)e^v zUc8GCmr@L=@=e}iD%M3@0wmG#KnvV<3l%KgaKdqlE1u$}99^w4eWIfJ*Ni;67YB-i zTcdU|){X9$YKmOkr4#3Ka3!HUqOL(9Zh8Zo_CSpOvMZ}j*-idukou~d?rFmtJ?fjw zX=vYjunsHRgmGzHxiNU{WG!8ibNs4Vvernv?}BHyET_cx@jnK)W`w@hVtj`5`p704 z`9Ob&4e*f{sz6Ms{`?TyBh1jp4h{*qTh~49H_4kM=*miqqsU6tgwD`iJTDxcGivC zE?oX7D+MAO8NF=k2H*a@AUXkijg1aW&}RS919|_QTS?5p#Ldpk-c{WGU!;mvYIc8> zW&ZZ4E47u#Ac5s}DhS9yhY)4jdCRbUq#&!e>iPbfoJ+N>D`xIoLIIIIz0*^c{mD3M z{ue-jl`OeR_(BTz7m_2pTp#Bt7og5coM3<#6mggZEoA%!d4dW{I1EM$OWC%}qKB$( z?*{c{-5o~MD{Qf<>yC}PIXb`Mbxb6otk@01Ss1;!){tY@tnO`PdPgVA1Kt@T)x`HSlweWyfj?cM@hBI$x2dkr~!f|r73Mupj~O}ENc z#zStanR-sg5q@KJMlb2zoVgzYMt6+pQfeUACE8ki)qj%_#uBcXVM9yikzXpF&kjAF zI|<+uFRVzMwg2+_Esx~UcfL*l0uGiCPROvV>SL9L1gjRAccOk2Cc3dD99GAzyqe@l z?oiyuU+U`gwH;8=TD*g%Yh(=|TXEqXNvplFk-^`AF6Ef~e%lvErkRX1@Oa5`OVdyO}JuUYB+UVie zXFUIlzB22WadrwDT33)rq97j+aNjA$D5LUF+EuWE`aA8%cd3ltYOtmIgCIT9)Xw_* z2;6b@iQyd@Sl6C!X@E;U)nAJBj^0bfkwc_Jfz?Oq3u}34zv)1KHJ8I30hB{14_v{vQ&qKr9Q%!@yIJK!k;Dyge zu}HQoA&b!uKZ12p8ihQy|2!_)mrKMVttuYgB26wQd&}rV{z|q2(*5GX6U=@YYzFTA$dqZdBc%__d(WeZsY2J_fVtrh*cUwa=Mj%Y3X1<+Ioo66PKImd9 zj^hy;fm0XdW@KcrOts2m*~})=11&CLLTs%pXMITRkY*(rvqYjjkLp02;kArQl_+kw zFEX?9Z~2@@Vmsp-zeJ}+7|CPI;>tSt2iscHz!7|? zF>07{7)jI4g%hBx`QnyKsb>6Lui-4-toTB!c%H>ir!s6f8ClGyN;p?%r`SSV;1b{< zz+^hpteg6Z7mEX)#eD{YzRx&Se6Y!zlQ{x&Bj+irS!_3Nkn?;0uT z(fF>6VP+$3Or#*)Dy1TYds;1vI8yPv3v4FeEq=<2MJ1Q}XDrR%ckk5PhG}%oOp7%3 zSuS2SBKi~wosaj)yqd)oLPh#HU*_Fr8C>N?e0$-I9CDM-)f4oDyB52oYg6JBELJV5Kw3VTFQm?_3@X@)<= za>y|ZK@PRTF)-iVMBF|5<-Ao)wSGhRSe3dby_w}z>hgf#Rk=P#vqY24*o|cl9V1>u z`f3dlBSI64-K9LZ{f2Ap1W<4tt+>t}v5Sp}$iRb# zY}0Jhh&^8`t+H#~Mw$O4{GLe8!CophrZ2;(C)KtUk-=u2hVBXqueCE|tp0ZHPnVc6 zE9Wz@hzhSoz%C~+i#4ApmHmS^su!8sP!fNZfTa%&J^DjSAc39UMK`wrVp-fy9d3x7 z4Hvfo4S@55;3mX>GmY$t(ejXe&rQ{@`geA68(j!0nb7j3w$zFQJ^QF6`&uG0ZMCv8 zX?-zsFx}O zL&p3OJ47+%z9rAE=0&I|@2w=1zh%XA%qk+~@zrKS{V~Fv#QK)he8INJ*&QG|Baf~- zBOQ$Nhd{e0TV_{R%Xj&nsw1x=POkQ#X#K;9P~59_j>Osv6>@(kVgZ_3Be6_9u>31` zsh()^yycwu^UlsIgKTL10l86&QLz4byQxnk5r=xYQ~~uXWz!hivNqxB;080Fhhc`$(~13=9k*v2sTTR^y3-Yt-m7Eo$q1L~X~L z0?qK+OXiRhC$hSqA^svdv&<6ojC^d;rK6c#8ykbxQ>IKbRFPdYWSmu0(68&>^Cf3o z=E5%Ts$`8dEkl`h@{e{?<^!+@ zv4@_mkC(4)wvCcv3Y1_McI#RS=nFJ>A2PERXX{uC7ceafPDN07gp)M8!t;v-@=@xV zHo8&H0cD7s`>Fy<(vP@}qM&vGPBTy0rJY&Kwth2NoTPKZ&`o_Y1g6e&CyyVMj0O69 zwW5glw5Poy{v7Dmzxc9}SV>N}P<;o6=?ykwLASxRFvn5)l+h;O#yzPIbD`l-`Xe$^@lt2WNAzki>o*fka1St>R!`0W*xNH!HU zR712?z2r){7Tl)fP6v?l%y(XX?~Ad4SXdGn6~3fqeZDg}j3{}Um;$x1M-?ym$=wtY zrJKqYn#gGLT&h{^&Kf_?K=t~7HQL?(e0((Oyf@al@zGS>ml9`B=^VSGKOT9Kv6Afv z>Js|qt1ukNE?-#Xj&$dALhAbdbRrPy=KaL6^_uA@7{12!5FWF^^(t&=i5+xE>h#xx?wt8Xw=l*>Z7wmyrNkeq8#Cx^z>&d?idTI2h&sA4L4OZX!{?%9VNisHYv`5V(H6s z6rD9PPRsSY6fr*4@2}!HUWZQcb{iev&6mXdaD6ZxYtF2z@Lix5F6TBOs5fn{y$P4Q zz7Izi#9lpCJzr|486bq5+4aJZF&J;5UJAM(6jYFG3dRXkThFN3jg|xF9f26^p&B#z z`eHJ2Hn@2ci|ng&mIi}?O9zJnQ3CJ<(@G$ zi#=+W5CXyrnQ{zSS-??uk zfGiXL{aCI@#m)wpGWy$VXEI9QadEkIFW@Y3>1kgF|CD!hXFgvKlM+TbXx2a7m@6bt zcNLUTgoFL~5|HdEkE!Zd|DDKrb2{lL%jfEm$erhk!~y~XM>^?+%s~ege8Hw$Fh$=MAv#o#fl><%X^4O zyd511#gh{u0X}Rb)q7n;-^hu_{=EBF*12onU_YI(xf9mfD2c}iYv z0ktsD2X*99%Yjs<%F+iVM9Rya8&BFF<`A%M=C*Dnq8w7L*n^bznXP1B0xxvYj&|mx z9*t$!=y^dao-@Li?LCnZ7K#t$ROym5A??k@bvjPr)F|u z#OY!9-)geqxF=Tc%$RT8A$?A6ZKy;qDOvMovF6MPymk0`Vk4^^a~NPNvvesHr`?vB z@cdLyVt$->PY81(5`F3F0fqmH6q!SD#pnfTRk88{4&IwZ}m_oGDnF1%C$W7wtH^GjR~T zgmy~99A<6<>BL`hsw55=Sj5OsEL>F6m7(g$aaXSs@=iaMYfUQ|rI>RZySKoqVD|r; zd7Ma_qvfyZf7U-TJ^v4zw*UPg=>Hhp|K08@`WG|)SsFJ7APrNS5kiDTZdWK}a#MF#@Q4Eqt*Yyy*313qFr>SxLht zF1`f)_Pr6Q7yj_hy*yvOA9+--Wm(YJ@65?J?%R|Rh36I!t(u=A`%|WvSkxS8O`Dls zx8#2cm}jpQ2gpF6&oNKip)=(<@yr&@XHhhn)Wrq?v+NK1vD5Rcx1+-euTva`+le3q zSXw%ZwItVt*M?JRw_^sR@K@Na0JFfV&#cbxzt*#R5ssr{Fbx&BBNDD z#Pi-|09P=sYnlRTb5sJu4qNs1lSd>*Uni9D7ifspE$%Tz%Fk={QJ?h65mOr1Q};78 zbf4HcsCsl&sT3NhF-qAvghiMg*y^Af0=bNO>^zyPRFgxE($|M?)Tj7ZUkl#wz8wit z>#6>z60DuTw+a0!(Q5C!uRe7Kv5=e=ypbWAHCg7Kk+4_WEKLw8+Y!U3W#Q2=$iXM^j%R2KhfZ+jts*&C#E zTNo#~Jg6Hfi9W2Kl}efNPbBe#?MW$(A&NRWpWuEA5|9L;U9czW!Dt&05g-j%u!Y5u zv+v>g<$uJuJe$73cM47$%rQ-_n_dwVIhN{(l!)dC#Js{SaH%etQl$K+QJ*UXDt*)! z2es2OtDjAgT^}dyzy2r$GtcOR6la#?agd|86o`tK!UrjKrOADx^*@QD#MdGeGYMe5 z-xGS!s-+Hru6Tcrz&+a_mcN&0&yiCrMQS9n3F^WE&~D~DN#(cRY9SK-3CQ~;MmvcD zTV31qa#zPYD~wJ_NtgkY-rn)5wz^|JDaydUt4<@#OQ?y6AP{TttaJxc`ZdLhH}b)^ z1&ER1q}N4v7#f7!k+N6%P;T*-P&E|5TdEaVenV=4iM{?q>F>FJ5f`hnl6eH?+;Esz zVdaAC<@4Hu7{O#u_zrDzl!~&hJMz}fAr@nxp3XFkI_f0m?e7MG?Tm`wHPJEB$>!O# znytXR3WxsndP*qN4#v3x*KxUJ$RdQU6}HW~l2rqyAG1g87mtCG@4^RkL2Ga5H1+#% z-9FNOz6j9LfYFUNAgK0K@=$%)Cd>!6KW{_p`_!Q-U)8ANV8iTn$MfLwePY=Q*x8O&_w2Lu?SnsBJYGi(GchatH&4NxF4-W`DxkoqiITE=`@MDWCC}W=-*^jqV0w(y8^w zm>0jyhhIh>&pZ6Z4KW^S5`2QN3xMsM$r6&Nf>GAxtem$hsi?>>Mb%Hai9PRiI9xJ( z$J4&8UuLS-d}XTEo-wBUN2GZ&(;WsRg#-3F?r*iV!~Inv;)Lbcox$wZj#1>;DBpv1 z=Lik_Np@SHh87dccO&*0zu>||rwUYUdALL)ZUS303Qi;SDpaCHv265!gNdy6Qrf>r z{N;C(<9R7ME4MK^$Kox~y%X?avu|bM+032$e{OT=rV8a1D;aYW_ZPb^P?y{S2FBNw znZc^J-I8&Z`C!fSXwnAUg8JX@avfE}IHyH5YQKmEmHiCjLf53GtA%hfq%O@@=_5_S zh796rTAYTl%geu$Qmau8)&8{8`b|?{h(iavIjG}W1Omu`;+Yq`7?p?f`-I4bpVcNC zE;-UoBXpI^NFR%H5dJ~vh>XtCxUm%zUz{Sn-fWW29_UKGEaPyzFFXl>4dOX%zD$Vn zI2Sxp#ha1SZm4w%3sS+JYv)_l(Ru8rF#!w2ljl2nD4iwoA zOt&{(x?WSxdL>9N3x40)D(A{m7YHd5I{ zH&RK#p`<1e5RoP8etW{SBH@>BgxMYcgCL(&35~|_r7>aB#EWU>m&$Kb8uSsM}4Gwx=KzB2j;1CA?eEhXwr2r8Xi~@k!j2D$?n) z|LFKmZLGwAi`_$m6ks{k7lxCq$_Ctf-|(MQ4VECk{5|j?q0>y_1BNNPf0U{g`(K5s z|2q!@BJzNQbHHF_dz@lMlP5H!Ui2H_rJ!X>3`zgCHPL%Xu1w3J+7K%aoi7ZSZIpA6 z*mk8K1>8^sURO4dLLeT<>M;JM6F=Exj>MFLbdmp6n*zUN+RXspAPP#B9#c;5byuu& zcgS$$ufJI((?Q;lQwe>nwU%;OY4+PXF_{U%k>Ujjl85nx367fOL2KML*>r)8prd$~ z4Z{lrS{Di31=&K`-&_Pw3X&#JrH?bg#H-{oWxw-R+uRzR#bUG%AhyL(WCYJMsVprL zkM}E7HtLnxOHN~#wlNs zcemAuc(Jjxm#`CWEzKz5uBeTgx_7Tf;Y_UAV(v~QVaM(eG&Q};6$_;h(aKVb*0ZXK z?MK$NHp?ny3t;{`Wete7nc3zYOCMbu?H1Y*r>YRK!^192 zR84DbaKEGib!&ZEOMK?{1WXC`l76YOUK@_X!moSCDVSeiG?;oKsvUY(j{9%A$aQ2f zqQm+wcz|+GuPnIB7g}ofLf(dgN)>RKem$UD(CxJ!kJ$p#_rCJT>)E3v`mP zZ$J@~qU7Y>Q`14;a8sO6I~|3?p)BsA#UV#J2tTK{BFm$mg9#$UF-tT~v9ou^sBAy( zvKto;VSe;}4Y)9R!wSiO?&34m|&WT*WJBdC%e z$U#oHebhb91gwqT(zZ>Z7hjlD^;{HJ57J!OGBWstXg9Q(h>fv*oA5y7CJ!2oou~=P zqBrl{yYP71Bwen>pX@e}_(*oA@CEIEE#A$pr4-qtc{-m(43F^ci!XH;Vp`^e^q&lf zS1DXd*hZ6FTr~H%N}=vRHfvu4p|XcwhQ+6ekr9z{o|T#m!F2fMs(Z1fvA;Y#Qg)EqY>svRYfW2{jk28pNy zG#Ro%gA6tWQ)F+qc#@{c&S>1W&-G_)F+p0d=6P{SPI1wv4)oo#2BJ?=$u#o z(Vf~1}ftF3`_i*O#i+&@cpvLElSA4k?7UvFzLo=DoI?)ShQ z`iUJRLS(RyKxA()C$81$ogm`8@D@G!a&8fQC;4vJuKHazg9W{qK6a^YxCDpD{WJdD zvC$7sFJuh$FPQ5Uk0_*ABJcXB*}dtF^-*QuIxrLJ`o~P@-)l+zp8)pX zLX-cJWp2>X)Ko8pKu0kN1TFeuU*StF{xvB6r#PXtqw zh37{lh};h+He9ZNZO{qdznfC1i>~*E`I!JI0?6X__yv}jEc{#CoZ}hA8KZn^pj?~+ z2md_t_zVu=s&MgWe3|D*px5wOEKcj2rkLdK3ug50HYbkMh#u1p_tpvKA2EB(UE}eZ zj}H){21D*cYvz6mPghSlqA99F4Xq91emd1U!y)K{%=J#I$m*>po>Xg{v$Y$+<$4a> z#;JUA#yC3FbZ>59P=Uk`+VBkNJ>tpf5yyhT89&PZ#Hh%yi>$eTA-Lck;`G)M(4BEx zODowW&*$Sy!zbNjNop?Gyre8Qnl(i)=Jum}_9BowEeSEbkmH&gM&V+@^N+xRMG z2GGpoISn(Y9XG6~c8e7-5k6x$mupLz;|% zn-T||Y{g9XOB&Z%yf90xOffLfqqXa5Dt$Dc07P~;N@ zgk=dlzEAOVWajpCzkfj8}#AQCKZ>DBuqHS<-XUSVRAsTQG znQOKq040*vn!WjeWMY}LrP^ptNX}{_h-r49g8*hLTpbgLSlCmP;qV{PE3GvLWDw3g zhnU?DNLWI|)7#CK*IvdBs|Bkr$LFiO0pI!%{A*8+fBk4!nbSg=a|gtZZ(x^4%L0y^ zvu`w`hj}s2)eEO=GTiZ_@Hi3LE(Iwjy&HNle1u2X{kji?bZv32Nhz5I5yD&9tY%UX zb?5h_e4^HVZ)XT5rnB&emD`@QeeqgwvEq+#PRXv36xMm^FNwVkfcA;zLaSJ>!b^dDt z_dmm)|82+n@5=A3zsm0qd(?I_pTHTBC~8oSId<{H6#?I`o=$^-=t~;jz3r%i(t_CF*jS|7IPRPVsZ7oO+JUEdAOG{VtsIwbpXtL* zK?7e1VuWuaUnE-QoK;8k@#mfJso1kjy`)F5^?%13?Xfd4-8f5(jC&U0S*&0mndRdh zX_|Yb|7IS#RnvFwl(q4U$-A}9T5=TrIj+-aU6(9Gf7M#FFIS)}zi4Zs^_)?znNzZE z+DyWR9?UeVl=H(A zce<9da0elRi-j)!7~D^9MW3Nc-5>PJQnqc}8@rZ)_)tU!fbBHtXK;3bZ$v0G&0r%>w84;k8)X(eTT z7>t&tFQ8WnWI(o4V`1yrPg+0fpr=aDTp`Xt^hZVnha@7B;KwO0vu@Jl6-QTq=pZ2o z#ua-$M}8MLt2K${d*5$$o2I3jZm)Jq(sp39;7x6!iM0Q=PzHM*iFCxp)g;iSQl=E> zTRVO`gE9{9aoyDWP31&&J3YxphIWVm4{o_m9da*LMIDg+JZ)#mdjdJd)fl8yO&8#a z4$-{j$e?g=4l&NoABH%Pp)jQngNEKmP{;NU`;#XJ+_>EN&z5_lza zl5ilmQm%lcFJK0j)WBq%p|W4AVM2}wQ1^WDkpzrHe#6agP+<2gviC5l!*y?h zTccrrDJ)2RhqZ4YuYkNaozLZ!C5Y+Lk#h{9S;m0dp?z|p)3Y2yauOzCELZYVL6X9V zp$!<(mb(@b$=|4DpE;Jpk}rwug8qiNBpHMe7O#E(41fw|bDmxPJy#_E<4J>Y?_Jkjiz_z zTtzh`EWdB!oOrX`Pz#I?MP77YvKe-{%-#L}p^Xay&9X)tdq$@=heDaCny4MIMiZh8 zMJ88auNX+vF{B0lg`}u$DK!)v&<~Y+n1598id0^C!951KF0uNKdd-5w5UdM3%+fxa zBph(qj-uNI7dO*WNmyNi<%h2Aen zMXe6k%9Jh|%(>%+d2h;1zH-^tg}r%RFhGvyK){DeYCkMUQ?TtIw_d(c-&C~E{s`qL zxPX5A5LWDQN=%apFr?B&M%r}W{29~NY%1{dJ+o2ZYI81WAT5ELR>D3Tj|2bSB^|02 zVaQHbW_SY=m-*0b%W=77oPOC7svEj^xf-ct3sbZY{nxIaSM^>}0x4_3quLlofi$QL z_WchYsK_TmOwWZOW5V%1<;NiMQd|Y$y4!S44@*kPU~{VcuVpL8vYGl!`n+2)Cg*`= zdxRJhM^66f>B{By+cIcR?Dr~%S7U=YCih_b)MCoq!wu^-fsT>jO=l+AG6rzv;i>!! z8pbocjK3smDD=2V5pjE2&`4hAqa1SUAli`P)M?+)#B1V*1X?hb=2+pKJTP4%y)~^lJuz;tYjxBrRgpXh5ElzC#bkMnHt*uU#;63wM}JgAw)iqvx81?(AyJWX{tbI zOk?`=tjH12r-5WD0*rKGYlE~6J=pg^ACX?d*$V0YNHwWrHi8uCS>ZyZXjN(i9=`3x zZRgIiuGf#aS^XcR4J1Qx9r)TOrl9qNB(cH4#raXlb`$XqGK`bRb~5cGMHnzYx6qz) zHI=j$KLp>hagadVgJEyN`zgw-J%2W^iL{aOrq)mV2(^*8 zcLgRoHyKcq2`3w8+|ED(+GMLV%eA*4W{|!#*%#zfMT<629Y72P(32X<4R9~O&i|dX z?6A|hSK*R`i3o%X##F|ma1>#o^WGlQm^9h;N}P|11+BFN%kmgR?D~w{Rp@6V298cs z?V%*J_Ht~gOo84qNw@07VE~;SVaAwJyEd4w4}xyJQ>C3nHHk-KY{g3bE>Xtxp-^;l zf{-7d(!Gg@w)Lw2Wn7JQUz4LUAHw759XdX_T+YAbldGf7nUTM+aaB#QNzDc`JWiUD zbK6p}{uw9w*=fntFsAsSpR-ST0W5jVTH(Ab9dZd4`Yw55lM!D8Lrvi--uIsBzx=u( zt}@Js$yFzbEpm-`MI;HrEqG{*ICY8wCq1+Ymv*L+7>m>Dv+?T##F0LF zaRZLY8#q0`hxmoHrtScISP+_6RC{np$A!y${Y;`gcJDp3)*TY6G}cZimgpL00{afX z;1u8;97l9ZP~_eR1lZLWO-Z%H`*MB5#(eVvHcHL@5(A)yXG6 ze~dSofSA9j`LQ}4rvr)-!`8n6fnj6S{29ItyFHn$2ihbbSr}^yyBZOj)SKsLw9 zxm{|y^Ud|#^>yc-+VqqM=z%^3r9QZMt*(> z&Q>f`#iX+!=WK?++bIDc#*V?I`{We0Qy8c7g!a|GoEHW3X-J3>)Sfj7=+K3Aiy|VP zh3f(+esfPzg?1IBbvW^3khEit11RamN28dGXi;?gYaHd7`0=TSL2po<9CKA zm99|9U^7t}$fKxqWnCkc%hFF!7julj{WHgTvW`PbjMy=pJt8{fnc|qH+#?_LjDR>W zoc2$RkZ!A{;D*Gw+(C3{PmCgP9^^E^Fofvo9U@EQmCi#w3!`Lc4?82Htmv(_7&Uay zP+ROMQC#VjZjs?+r=7|)2a+_L8YZaJyN0ptehvcw@(n9+%fv%uD_j6Cj->}r-GflC zS_ao4r&?7&_6cj&^Ez_{ge`_RuJ6EVmpT zT?W4)035v|N!*_rnXTdUzrDN519W=3<9VI-wF!W&?$!;udpOU#OPixL&*5)844(G2 zaR5F2jZ;LIUSR^3{vq-!quOidu&?g!EJVX59X=vLCqTp~PUgxr!uQj(PX;#}142xt zo0F8B3t$M2zkgr|PT(3Lp?jc|<`K=rdxNaN2}rUdzMx8b>yhEbqxdF_?Wo|qL7u&< z7U&#qg7uLH?sg1}d<}?1=~KMFg!;atX!H2l-T%}(M)_xIJFVR#!?3P>xQhNhQ>J?+ zp9AwTEBb{l%_ED)-!Z~n_n?mco?gLkmTJem_A5r}tDlVDB_ht_gP?1eg8sfj#%IJ? zz&)a`DcENpS-*2wz$2qh_rN;stxV-}5-u;2p7#qU?QMmu*Ezz!YuI1+z&q`2fXvTj zUp(!tPUiCnS)gl}f&RWqCfh-ZP+i(ZYCm~_Dn$ib{#@_}sDh!ITE3fXNnb6!;%Tyc zFgqBHHL&S(5lz)(D*A`DRiK)T*&7WGu>863na9KE!d_$M#4k2d_yPBa_=o^C$ZOfR zb^}|z$2j@(*q?2z4u&H6m9&bQ1e&391@BX1v+`JRa~s%7T0O*>CJG*IZ#t*|D98$m zm^sigF32Ovc^XA&4U}VryQ=>~v5$oeEa8>lwG;ZrESHpz3A;yZtryIqYf<=cYb7Yr@ z!aI!5nn%#1aoBn+HUce+Mi|n0TMTsftAUBV<|@V;DZ}NGisV^9iPk^yt8ZAE*vGu* zc0Zp3xP$G)mRn?gS3fXRU8!gs>toN+^(>WdX#b%;Fk4r~7N`Il3I$-JXrfn_k$s@1 zyHYV!Rj{yvLGtPFMwP?UQV0=Nst{{3mk`bM6F{(s0ZJu|&s6$Tq{2c8UHA_zK+Wqb zw@3{nqu!ACQwJ-5_ah&4^JAdEj9WwlktRe*HAPw+O9#JcFAydc|L&K@j&nvtPRr=D z0!g}To=LjdAe7K@H63cCPHaO%bJ=la`(`$B$?mYJ&*UFgTLrC@gaJ8TqJPv-(*T?N zOqoZGsjaPreXG)Jx3&U#ey-9y9IyUOQ;{o=QaK4#<*k%o+dH?Ri0f_!K6yza3DmBK zS`8gdPNXZXQ}N1>p^Kx5t2=I#CP``i*%I)eq-Kh?++xBdpK6$ig3UIqV0H7L@lK<$ z3})%|avofo+$iK#L8-jDLxVUJbo+nxt&bt}(&Fu6lQlpTKS67fuB5)*Z)B{Rxlo&qU;<9^ zCY4*VqOU)_)DpY1SD86SJ{!Z-YucHISxrrHUJVlrx;B>0BH`@Wkm}l2!JHDnO}v3u z-wpq`D+N+hP+drx?V8F^Y@ZsL$iLPp)o3G6poaC7C0o#ek75Q*i)Xk;+9y*=KerW< zlnE{mPkD8ofCLFNNeyf&1CzSER2SKg1wMj}`Ot3SXyGtoscET<&m0$lEoSL48#^Jm zjLZ(+n2W|)P}xK4cU#ZOdM2DUf0i12Y~p zWY31&T%wN$>F6dpg_jcpgJ?<`BFUugQ%^rg#dT4QmWbZ4f*N`h%ZHlvOY&D2Giw}3 zJhyU7e&0eWM4;!GUaB*q-S17sRc-2m-W7ssSpU|K757)-+L}1K>!un8ej^nuty#hM zGc^_xT(64*D>uOOz|`{bz(r{1f|)N&&VYDKEU^-gQ!7mp&6iMOJ1N}U$xvXig(MY{ z7FPOSlcL%EKqwrY?RrXB=P+~RFboa$CAH*Gqgk}8?Ly(lVMs-w$tWmFSQ_6=%v0M8 zo$H^(Z8-KD7JXQ2!(oaUCp3~T9b5Xh2sKEKPyBH8E-p6psnY{aBj%R*RE1Pts8CMB z;nA2&0Cp2Ql>u2*JC!2hdvWJh*J?c$Y$>y3Q4b_X@po%$sXSDn_QnIgY3M}3(ZYBS ztEc&}U{HHCd_pa~5#7C^OvI&|wQ@#lE%kYZ;X%jc6mIS(O&{Yv?QtYBce;CrkIA)f z*UQy5hQYVBec>iTlGYV*iFG5>UB;Vl-w%>%8>Aa_3S{#nr|^`o!C}~=7_(-ZBIm(H z@cZUMbUEvWBFOz2)9+|oEdN61-CT;}L89za<{qkyGW_^S5b&0}euWSdMiQ=DT1tT; z0T@I4!SutSL8%@ha}k@Sr_qrm2I$-T)I|c7J$d;?+ojCDbvj`@Xc54~w=V3SkpXDs z04)JsQV&b`PfqZL1PP{2|6M=2)!4ysPbHh{U4cpt!pgGu18jA5OERUKg^SRQ#{PCf z2qt_OPkZw9APs{M2pGpeh^YFmFkJz(cikgH0R;G=eSDk#WBjYhZ8%;JUW8s0``0~N z-6I2Ygj5Gdl%1;qN6v*H5QlsSh(kn#89)^88qSB}jK@h+$^JqZmF?Oc`_d#vy7Ry15{lai8oQUGdRUwLQh0bBZ9)&B#M(f zAJK)^T(+FupTNZ#C{y8mu420~eEd#bxH`g*@o#yqeiDd@pZHvmRP9&3ZtLK}D;ck% z^9gKktXWXT2ne&h(>o%LX)Q^*{8!G$2I!GQ_!$yBo)V|HB#0dBV2a0M|WMeyFxJ_J^B=;jP^!AMx2j# zKnp{#$iOF;ZDttD|1J#u{Y19>e2$;NAmPBYKq8T_mz1d=GS>pOUM3Nn%7@6EMJ4N1 zPu~-HcTQ{Q7>}+aE7+IuVVo)vYgjR3VTgG!0MoD%#KDZCEYCa^>`)64cgTY86Dx7l zwl*=`JxbwXjToB4mpBFyie%2gH!?YP_XkLX6s&B%c23yP_1sf@8{u+Nvo#FNDO)1e z9H=8q50FyL+STq#uyZ>QHU>EXWujtAgtM}{2Pf~DD|)cSNdn zKW5ZDKq7NQx+2wB7RQoG(f-DVq0q>bcaTuxlqn&f#=`4F9y1zu?~2en39#1n8MAsp zin8wtt?UfV%)HP>|Gi!m8MRP@O2LpLc`ipipqgGG{kt)=(@SoqP|)iaLlCc1YPKAD z$@|~-R~ZUnj??!O+Q9F~r|20h&thTcwYAy7b$PB;lGE{bdCy)6`n_v61a&$JGD-yo zn3C!9fy$@fk%C^BJSZhl%!?(OpmfQ}bMGEgQUp0p2@PcKKy4)6;vJb8&u&crHsDv?G%CF>Q+P*qBuGzcim%V#bf&EL zT2|&YY)w{Gf?njG4n911Vu+#3t#LT<41$GWJR`c3`H{tSMg6ZN#)c1_e(T8k+W^U& z*#mu{&F`9kGC)b-6a4T##)YQ(IK4Mq1V5O)})M~{RgOMI03%zC+Cceeh1 zXx8-6>e2dDzDxbYtIkP9Tzi;CGT|2WM_&)p^|FlNVqx~_rIaCdG?+kIMZS}Auge>~ zSSsqB++O~w3RI!q&S_Z3%BbE>b;;UlEAiJ?IyDQIj2qIhm(sH$%K?2wA?dMw^Sg`*7Mp^q1EeAC~lE)zeo+)1baap-v@z zduHBWncW4oywEA^&tk?GKsb%X*G>?;b%N(v0eyoaP2V$e4weo-u8G)|1y5(JT9Av?P8%d+si1UE zJBtJO#1TMeU0!|45!X-Ul!uv4nL_iZAxCUW771PTH0^w*RjzlGmUwX%M^D$Bx#@`8 ztkoQ^9Y+O4JtQI3EO#63L zmiRVF)?(DOl!&nbJ^X$X0YjInk@aCw(iVUF8R>~ecQEcyJi0k3Es zb5U28pyz2h2}%D`M&6eRC#a$`M{v4UTf?w51e1cvJY&dOX_(VWPViQA{L-dsFRhr~LH?NKxcf`uGYEl!*c@ z7V2@_%KQ+vXY>8cMEfY7skDmSczRD;PoIGq^sQ7jCovA$y9K`B`U9}}A)RgCI-WQ% z!z?_04!;#ValnRMy7AXcK11SGTq>#aZB&kG?v84I0axLhFCRJv*22{M=7r&(&(ttk z26zbs)?Jajki7lWZY$G#R;68jX3eg>#Nt$WG(?|SdB)X4pulx@#7}tyx)Wl28(qB9 zTOpF1p5TYB*DmOSJb*7%pMZsc2{Y1%FKT>Jaa-k=vY_d0ORPw3%=1B5jqpPhHZgS?vQu8 zWrQ%B3#&dFhY(VxV7dJ9#7OOyk;e=*<~mD0W(B+<2CuYY{X%r+i

        dwJQt)a#B`B8l!oo&VldMjEicAEJ1jAE>z(viB7s`yraa1)m zOjNaV9Rgf5MWy_-hxY{gTp3RG(+9=BpcRyUuJQg^z0m%xWC8d8zfyKF0odFBKNiZ= zfBz^^2YVM+fc^jUMDKZAjtp1PKrKJZU*`#gB% zyKFX&Uk1Fr(gq6Hdd>um>VP>#r&BYkWVo9QN8`wOCl1pwwyfmtnWd$BDd=zGUiv_9 z>>SkKVj~I|mEW9;BR1H&5Lnu#^Zjh3_x#qV|FBK4RtQOJ3y&yctGUt2*oQB#5GTP( z4ed5+b{~X8T`3`u#4_HVNSL%8ogTxk%0AJgQ)P+5H#+$AV;Sw}MZ!F3bfSh3&mzFs zT9L|ps&Wllel7ULJ>>Tg}(XjhqCQPpRxwj-0&!;OtaX}AGqM0Gf>;&p^%Q;eOo|>cDs1SA zWMoqNZ49Sj_6V|;Q0I2`nmWOFj0ff4gNp4f_fk{EtNE%KFxUlRR5a*I7aAtJ(Opep z2XV_}%c36=eg#kR*3!#ZZZ?Wm6=J&RWa{kFm8VdI@9L9PhUHu*0f&`d4aJm$HGdtr zsxo3*C&F}Q(CdhEiPEiP)2NSW+lg6-FI*p+QGknLsXAgDq2-K#bB@6*3hDDaVOZI# zq4D*Kg2&g@Y%>d}T_Fo-FhwYUD_%tgpJ5#wgaL~_cAidJJA3>dtoO1takm<>qG1#Y z)5TtFcc3Iw(s3V_spFnk4G|xlrVU>t?${&`(s9p!!2H23TNtuc&>h3PJMbAoFKY7c z=``0M;PY*Ie^T2zc@JU@v6#w@AKulhjnyNRUvJIC!_Cj=WKYe?lb+hl%NES!=0

        NZ0SfK7_u=>l@r{NMrX9L04szC_HFrpJZ() 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�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 l43#m+ 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 z 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

        Fb{an!*8}`8bX0SOD97n<* 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 z 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 y@f*S-4JD}PAC-p0KaDoSV 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%0D!;vc6_)#>kLaJztpgKMW6?JyKQ9(;Pi(cj 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 JM-RdbyXqcvG! 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 z zPIl(&D*DgsQ4=7&Vg;N)4zh3nFIn3O^p0q?l6PZ({DG&$dmTT-psWcpdPds{QlUO| z%hcn(n*c^w&cW2HcPBw8`kn|Mg=Xu&81(xcQoesyIrsY|p6_3G6As=VjrjDB`^^N( z21KDLyN4U?M80ZFw<;TLT%pT5O&eX+AU|+M>mw$e^}!w)T{Czdy3NsEgFq*!%ggQ3 zudN|nYxo^pQU=^>m>q4>7tYR%2oK4ddslk&=hs{BWDjz5_?s5+wikbV{JqtVR@c-B zdiz^aIy^vPjQu$yUH8P`z7`D1KEV~7;_a`WDRKI8zj6%!>K{1T#dgO$1Z zsyw6OdC>Xl!tUGyePBIzPwms&TF|3!@9c@tb&n28k-ji>_mON<^{U;j^E_d>^z>I< z+u!oi>6nan?G9f%d;;UW=HdGs4C51nq-RX2cjr@f{sziGl*CSemMsViXJ+orA}!w9ujp5R%=97c`{XbnHWk=lG$}YtNPo0 zk(p#A1B<)sF!dKn2T`=tR2_X41#*x$tSRrwkt+GGhvY9yCt0Od(#$kuUztYvrQ@Te zrKt96F?jF{Kkv40?*{+?cK*&0?Q z5w#2Z@Zg<>CxC^&A=gC-qTZSo))2~YbiB>00z1t~y9-LW*b9Xo{51)xq@#|9a3V+M zt!pAAgKsiD$`t%4(56+@w`xc4#lJMaj=qsJZX5@iH+)3MjZfW-3n#fqO%f-L3?&bv z$~=*^BE<{rAz3>-P3q_p`3$>a84Z%pfmd&=pvRMVCQ-r`lsRMht#-7#QP&jXgm9^W zAtfwg5QG{ARXGW{E?I<2s^DUz%M#z5X&q!Wt2ireZUGLTnH-6j*+!N5*FP~XbUUf zvaTsiyq$m0S*2&XDoc!{+qE7#j{tG?4@(d)Bekr)nwzQFZR=td9POSQOYemg>AN_w zW|mO^+bVUuJr^?^iAVZ~;N=yJKD$M#63&9(1fC#WBuocP{MpelH|M&34~LBZxjO= zHjY=)F9**p@0W=xR50(S+NvRJk>hFj-ZVILz6{%eBjv)H&Hb0_@>kQA*_-`|YMem) zq;5FMe@Sr}HpjqnC}kKq=(>|Al3Kuw>x8Jl6*zq&iG#Oarl1uzYCdX`#-+X~M%NZC(U>c{G*EeF=EUFDwI=`3eyoBLev|0S9Gk6xVMw*A9+dB$J zA68vs24T3~TISJTngWfh8^VFrx;5Yt49QWftZWYc2IH}_-SA1CPPo&+bfFu>$NuaC zoFzqWk6U%{hwHO7%O}qMELJu5ef@Z^x{2c>yuX2;hd~qNpS6G6MhP_ygUE+@iNG{FSq($BH<|{q(rCWLAPh5Ctwa3k4wC# z;JP-zP~X-xHjOvpSspnuRD?d(s4|MQ!6BcVjAn=*?bjXK%lrwBZt zI@HsV8CrYASUMI>0KPMz9M^X?d19Us*AT*FGI%1IUPl1;nRSt!7B)$+gnYcE;kF`e zuZn%&TwUiCI#_%!D()YNCOh8K$!0y<*bH)T8b%s;-1V+bp|uFE~LLyN3@Zg+yK;F?OFDf$O_)ijvkOR?%;_=w#htJ%tyv&kn{J zEMhXQ@kQz7cvIp;anjr^WkZRBr*dMJ0Y)Xn*l$mAmpE|rPAXS#OmzfJ74P~0p9#n& zo3t0UPUAi97iz^fM`Y`O#<25UR{pQGf$e`4WLi*={9j80+r89eJfM)s)q2cU`%6aB zpLEPGyq$Z){HZTu7sZ;}H#HZDJTA`~o9E<9skZRg-Fo^ojI#s$y%r#r;rQQ{d%8Eg z$lJs4A1`Xi-=Zrw*DDe7?3vu|4Q`B(=>V)=P<&Q>LAKra-xhn{H-C}&V7AT%Qnz`aYF)DbV~L$q zfUkLj?Pu|{Y_wQW=J#WlZq0<`9~}f$#sC#1EJ8m!Vu&K@x9R(=O}G*bdECet+^~c9 zCiZ3cW^kanJrT7oz9#m*x|raSR99m;&R*ZimhW~t&`IPa&hF=7IZq5&lG!3RBmX=o z5kDr=7>JI%&ou)_Wh^w&v#H5NXP2K&IDFVOTa%b!x()+v#K?NhZ@rl2_|^T_yGeB>4(pR+?{FE(oPD0-o4 z0o_pZakXMk3XZ?5L z8&_CBN=XR2uTp5_k5Tt7j6IZ03!e|vhCy3n1U}+IUk-+DWk`Vf5DCG*Ck(Maz4zD zEv|2xWj@s?7%d(WN%=j_XD;yD>N0L~Gn9*Qyde86UFhiKW-dClve+?=JJ( zyzyW6_1$Vq&k~*}slqa5x!l*#4`P0Q8}XA_gG?2a646*ejTDrkPo}T~p=8lFzwq8X z6!*L(D_z*UJg~C!_`bm{di(_6z-Qz;uxp$3e!UbZ`j@1I#d)y`>P0Xju>4T0=M5^A1)=z1PTnu~yi~SL2qryJPxR>gLGxXD z1pj9}woZ8H9bngJ3KQ;MI~6xPzNVbNZ6j1HLeZ!f$u)EXYLKtd2PFRw*3K!&vTw`! z$x7SKO53coZ5x%gZQHhO+o-h7leW#T{`Yo2e)plfBX;aqaUOT zy@SQQ8^t?PPBFiF1bmZ(qyY4V$>~C`O}6|7Tf}nxe;P}cWj5drW7`Iz5T(Clj0gmg zKGc9*QfOU)Qz!8HXhY1y&<7u&(on!-9f0YCoLi-uQ+s~x>K4?}4^k^LafFO7s$TBP z3%q!BwlPAB!U-PgQdD5lzW?s}tmi6YmGvo4&>NZf0xR|n+IZ%~i2~1oFa{FO!Goh1 z0l^FmmJb$Tfcj(r2W0?_G(i7h0Gz^4oG}|xJR3v2i=zHxOPvnY=vQBH0Ade#tz`aL z*^#Yi|7?T^cfdY3Go0&DD}a^Lv0Qm{PELT;dWcv8%n>mLJ187YOi5ttcNuojZvq8O z0)T;6)5HrGUC}V|yqO_j1K3zO8GgW?E3dAv5~Ci;4moMx2s2oTTUxABy7wI0w%tfm zW;3Q2jjEh#Lkc3Kf~QDQ9|pIUsWude17ZX)hJUm~cYobJDU{&;lQF&O%--MBA)o8j z*-c0`M{Kd{F~Wizw(me}YfS)ucvwD63M`ZnKDl!&GU$Cbxc9nZ8pfy!x=01)0OCdn zFRq>{E*Y$d83FOhwCg6eiQht*(6Wi&rwT%`5ag7MaE_b5CXU~yVCCwTs@8eP(i>kl zRr2yn+46|8LLR4C@KYMWC<59D26!z4;tw0t!SU7HJxIAq>`JgEVXq(i;eid*L0Ngz zcPTu`XYZ9NG!X|-GZ$wXH}FCkXOJCiDCnlBDS+vhS!yC^2T06NCAV3u!yG=T1F-0` z6vidEL%+M%Y7g{+D?d+bPT(o+yt8r;ZYX15_NX*f$(26}VjH{E8zL@pV?Z~LE{s4I zKGltATI7Zf4H_!Uc0g|zG>884Ydl23OSghNo?;T<-s3E~L5>8$WNI{DximmV2EUPHxQ(Rfk^O9z{JyIRO~m~56p zg)CCvep!l}@|+hPglA%A=srQ3@!O#yKlig!-&oWeAAE4T9y!DO+<7{<+E=PtU*uZf zL%^`>k0X_;$FtEgs*Tb{Dr0Y~+HFFARH<+8sDNRL06)O9KBY@NYUDf0Z%P5Bz+%CE z!z7FPB*p1+1<7FOB4p_3IrpRi42~a)M>hT_q=?gt8Bb@lHg3%0iWsxvl0J^b=8DCf zs?;)nIm{9ZMUqNV^U_OFfyqvIM&_cH3kA58CKmotbEP7@Xn!RBa$C9iMY+t8VwOOl zD*2Br{i7B@|1Qvx;)dNXJj1~hgZEka(aTFTO2C=?Z4j{+XcYaO5aW{F{cfawfR-;? z7}ZzAFKH5rov}8kgU^fbcig9yXj&Xl&>{+fBQJoYhlzE*{vEYqkL^d6NlLtHq zgx4$N?(8zURrxt)EmLQgV4F3fPv5SONiB^Xo0H2GoM$n+Q;!XdO&hgbnKwJ5(FWE< zW$`A!l;QXlf6&cqp5yo(YB#}!bLOA}?IX{>mFidBnsW@ap~kSa^por})fYK_=3Yeb zU|9x%9{l|-Da`h3X3-gN6IyqMpw(f32qMJxpB8PQag}jFUdGO#F`}Z6tu~0ckDaEk4Ka$jBDC5z_q&Ca?u!+30BgXC zS!aq}aw^qR!7+lTDXDEAyLC>nbwSb9qe|gQb3dpH*d(N*`l=Af(KiRkF&37gvB|ZZ zc}b^7s*~BI)3vNAe+ENUx>pNPaIGSj zI}%+=V(SEsGmn%#o9Aon%Dl=aE|?E6dFg97p1k&zuQxgB0yx*epw5zOLS!X=(ACfU zVDiUk;`~a&6C8x(9%B89T5Q1{VuKdjf@472wu*4~OL>6*(mt{kx<$q4!in4Muu=K4 zr*rvudR20*$T#w0v8MSiVEDuOdDgou`UTB$6>!B`@cD`vO-&U-N2ovL?hPr2OqS*g zAR09wbG-h0ryhh8Dugm%Bv}xDprML%V2WhG8-!tsgb@BN<^}mv4uKmKd$@ILz>!t_ zn=JjE&isW{2rD7~oN;>|IF!dT-$-Yxsps7_gsI8l>wb7*-2alAsT4R|66<0+0zB3o zG)uk<%UAq@(lOzD5U$g#G?rSr1J|UjowHn1EN)LKT1yejkdvhK)rKh&19yl<|Fh;n z$U_yE3Hj%Vo1ZR@f4X1JY!O?2$wNxFSu{)n!$pc8M*k$6g+Kjj{WwqU&{-{qOIUdX zd1C4ybxgWP*sc;MDDCa!tTWf^LDst~3ATNSc>hrIVyVnKJL1ORZ_{v_Y-{F9c^n1M z`;WV_Y~P7pYvdDG`WruV1w*o4@|CN6uxQuAXjSd8~Ec~C$ zYVrT+vC4m&)dG%=w!i;tT2^&O2}cF>%LYweyv~+(@(_1MnlJ+eSORJmuL6B2aD!Hw zX;tL5+Fhlpk$Ut|Q`m^g4dW|xm&&Z4tgXd-%gqrsDa~FYu37dWIi!VFXIC*YJ90t2 z$I!vIP)ujEXR-?Pw;K2H!*<>^X4aNQ?Zd1+{mu&vIyRXeB93jJX&aj1YSha$Y$CaL z&SFT?>KG5v(BPe3kf^6bA3F7ImRMv$H8S7US7+-@+8FR%B9bAEbwcp03@xI?dve-Z zy}e^1ls`a=)g7z{X%giOwQ5z}%`H-YrZ7tnX6viV66A!6n`dx|Y?O7R@N7F#r=x|K zZBrq|9%LEZy=Gs+*?2nRWHm;37>l&R)jz`*UX=hCqzR%Y3anMyFRx^O#i$f<7m^Z< zGOXE~6cl5xD&lxVnSO&-KwP>HHJuAPY5+HG->N`oE!&D~n-AEflwo#E%_dLFk3NQ{ zV!7oCok~YycvQST5ZW&RZ1N%tPg#+~`li7=Ue!VUcBZ^#3)gO)8k7B$NTt5FWDqsQ z=;d~0mYjDbH{1kB5z`^~Yg#;=onhlO`4q+=iZ74y|FA@8(fe=RgBPqoU8Oh%*Yi7L zu(i0&;pLuOz{yJ+kFD27ezg3Iusb51IVgav+5_P=ZF4EQ2)gfxP;v`4xHw6z-GkLt zvPVBw#vQartNpD$T**;wh}+K5BYz9TuFO4@7IBYh!jC)T1zIGklzk39SRKQUne&Zc z@ogJMXCA1E0{;_5=1Fsoi2&=+Phy*CEMDFyF>!ge4DZg{?ONFt9*hg%#?;4vxD55? z`=@tvj#^e+q>Fc^N+k4jbPRFGTTq+lgb%cuh(m(78EuGwH6W{8;y~J)$n*@EGdIf@O-%%V)^R;dDiWS_87V%sdb^qc&e^0Y)@WU!CJBX&TRtD zpLQ)!Yv&Y63J>>_CdWmw$>3>ptG_z_bwxJvC8#L&(N<5`ppgw69(>{bxbeh_jn+j~u-o5bIe7U0q;}H(Cu;W(t?9oMPfg1fM+Eh& z#N}djTRW@BW_?!C40zQ1Tu{n9Gmb4aq$E0#e_qQkC7MTqP3Ky)GgBM@M?!*lh7vZ) zd-G%Or$`V{+-@~w4*v(iP`bwGcFjs%J0hj2iK%JNb(ZaPmd5wjb1WaI8y2-h)4mA^ zURyFhjtz{XSQ@9nHu@2s!FKe%4Kmaw3c@v1AvANYFj6sx8!im&rEy~sZIzr^%V2bX zM!_5@HtmZjR+9bT?s8boI$JB&v<&K$gRYKJs(a3i?~P|&)58{f(&i%>{7(Hz;8&=rB~{3+A!DI2;l?1-=N0v7x%MP2Yv4IK{I z3mYb)qqpy0$#lr#g-kB|oa>TQ59Wz5)pu#}jSCZX#hK!_k$*dnG=Sk_ETqM* zXtapGMsUd%51>giCx==xTtIhYE1=eDMKRPYDpMkIUb-FcLs+av+BejQu!C6weUWT& zeHW9Ty9g-V6K?2stXbKfGjoxhb%yTf7taKg#MJ?1 zPK*V&-@XCQVVuDbY%T!F1AiEXCBZRuPo#?k>Q}r7eSakWA)7*2PG0mb*rUk#G@nMc zZ^bV@xqCS!Ujpxxh0h>nG>qdiH1T@v9kL7yUDCr7)C>mN?ycW0{uN}pAAQ3;xBXji zP%E+i(3?&w(K#|h9~O3+jkEmGFiB*Sf%ugLy)pejro>;Xk8#tw1Bbs%&CiK^OszHd zS?p8~-0B*I{KrQ=$9o9o*8uv)`#z?8d8`C%b}gOx4a820>ZFl{cRC?i);3a)U_1IUX6odnx?>rd(hX3>koWx@1J+lbs^8e(A z9;P2g_*t9=8)SJq_=${c6Jh8AxKc5cd*%_)+Icqf4m0^FBqj5My*Y<4SnqWDZHic= zgGxkmTT+*DUZsKkJ5l;J@l(La7kNz&?$5Tx-*R^oh&e6!67Cm_A;Bp-H~O6W>n`6v z6e5%|$PbynY!}M^h-Z}gKap`c8{>bgc(tmv?Sd+*k4?fz^?5K^64N-__()3^Ll>~8 z<$RMlavn<|7StAyOk$!onpzCr8lC3XlusWogSotU;>)ja0@h3I4R_Lb$p!KD=eM`4 zWA5V@&J~~got;`>ui#wcp*X!h&()+lQsSt9w$&5`;lJ&8u0j1ejGHLzE<<*Du${ z=Ib7#%@2mI85|v88!FczHmhB^gjv2+8(^smvEp^& zR1U4?$Cl35xQ8jHGNkFUpHE_nX9xAlP9aK;@YjStQ`3!q2FS#a93YiOq>L!*h?kfw zKNj>^qtfn|Su@d~?D+{!H9Oz?MHQ8}=7OntyO5ksW;;Nyo%5XhHWwQXjy{^ z0d1Jb>V_1#V-f>(JX|qBxhHTeg+ts5@jmFAy6lVxCMO~uS?8tCC2wR(rVgl9QxSk% zvTYn=yO=FrnP&TBULM1TQ{;TUF{nKZgd<^w#2oXa{-7?T0g;Y|lLa#A#-wR&z8~+2 zDF$8F>A_~w#1XJ`a~4zVgH&{X8AH5%p&=a^}~} zUb2ORw@F<=Q^OB>ke`w2Zv;UE1jKj9KkM%ceQLCzXl<7elXQE#@mi+$F`K1#x;4b$4N zeFOF@OG#X`9O?U~aKkvqnkhL+CvSQclk754?lfvcIHl2`0K2h7f#J3vbZ>ueAL!<4 z$HTuAr~OiJ_4O}OZT2s5|NqZD`(G>0Kgq?m&NfE>R-A6NS63W0w7=AO7R`~)LXX)LG|q_k4`NyWz0sOxoL;$~L+ z*w8_wh);(%pvQJE)uq1RH{DnoDMsnaitwYOa@Sk!&zVeLXZLdPq+^82pfWaC?kiG9&kf_L3tjq!hQ4R&0sv$f3s#9YL8R?eLc5O;|it za;F*bOf*|8O->x8ndDB)R`ImB%>|^2fyf{A%JZ{TT@qni&it^!Pe{cYUg0LNObUX6 zdZdaRIgBx-2>^9%Da#{(qD_Qtt-m*gk)@Ty$(oaijgyO{9LYmakXDUJ7cpYa5-lya z;Y{dQGYG%UO78Zujor*Kbz8gaCRD|APtVyRHiqMb2hmc^>GO}8d{3`L@g z=o7zYBQ&M-X;lDB?Ml6aExg5ArKYZmU0v&s`f*LJq%n0Ou@YH&Me>K_Yn1gWor_99 zw1&yJctpTB8mQu7TRHZ{5@JN-Pn%GwfgEg;Rvy1|j zK{(-s+eC5vtvc!T11x8sWX8c+nNC5Ga4WmLj8?@{hWl-6M<`Imt>I5YU)(~AskPCZ zNuiK7gr{X49ci5c@wmFm9*aU|vPhF*XQ);-T_2k8z{!XpZ|4gg@{|4YEPjhjsyQMv zlH{SrzUIb}3TN3W&q`x!vrF`HQ0=~zRQ1s&P&8inrFfK$u*mP@L8&xfxanHL89@AA zd|hd&q~fx?N98|RKWH4GdX|EGHHQnNZF@}wnXCMo_HDg?0fegB5`2_prUkd|s|&$m?SpHNr5 zA^uSBr+x_!$c+G)wiWFj8@__Ym6|-b1#9AiTgAAE@8mbm-Pt<`OC4jC+)@F`9zST! zy^IsX7x(t2)Sz**mnYM{^mWIM)kV1x`mPR`-V$xZ$hO|0){Z*`E9r1ZZ+^zUrNn9gZy8X=EZG~fIHcp@fJ@C< z0qP1D=UvU-38^)POJYlC>OH)YT6m1Is< zjDqw9C9H)WhzWABHnl3|#n=hnsu-FE)tPaTUiT;ZGb_|exSvn^AQt_#730-4Vdhpp z$g7ZJclB~znom>Q*Ba|;Y?g={W#UGbPB5lT2m_Fy{0!nXag&G|<~Bst1|}jnROyjA zO9Rm8A~c~z?hIKDs~VRwL%Dwnlbhrk>SEqg+p4ey)`|B!J71lxw+GH7>W@293XF6U zB58wlR#g0yYLg8(!vI85R1~~n+=zaGVbrDbCHW>+%m%P;>_0xeq!?SJUmULhO<8LW zX%SCVh*|3nY-qQY>RIdZKd*h;2`*Q|wB>($F=AW~lf?|)Fr(wO;bq>+S`ByF;TV2! zMg8UoFqb9@E#!#yyhXhlWKQyk(bFCJxOE9P=BIB8!;`F zMR&}LiN&fYD|7ea^*)`E_|C+`X5vp)Alve3Y12@a(ZHRF8i@Wekk>8m!FXF3)gl?EY;qpIIU1%1iDK;=ru<$m1$J=#g zk8CuZM@Ntel8)LSlGkrVd-cb0UNE5Mcrrl-9)JtAter7qa-Hr)-~<`^{=$cRj6onV zrm{J(UpuCneX(UC=4DviLSj7-$H(VCY>#H@i?$ zlGo6gPhQ9Y8QVdGCE642jM5U^X{JsA$OgT zn9`*&V@%Eka7Kb{7y<<@K?&u%ki`B*VosVlBY+hhkiu;F?nNK0BxT|5HTZpX$4pn+ z@w;{Hms9GHEQaO7OVkOMR1pjDA%qi4wkYOatHxWzB*v$4Z$AS(Z@*ji0C)c;77Nso(o1>_hJCuO9=uA` z!olHeA2BysZa*~AF)PmofBGKlx(=x?5?Vv_!pWF<(lBWQmSLCRb|2N+#)BG#+H9G2 zo@V8$o5uUU4v%E7rC(wHPC8)y$4Lj7|C@JE#@6V+EAjuv-JdVlBw@6M2MnquSyOJaCFx~?1DcB zTlPQ=xDk=Y6%BsZ&7LUcRnTzQu5E{{ZSjy;I`WY^bA=w(y{fD( z`w7RXOSs*Ht%B6OucG&q56RBUV1<#TL)7Svf3a$V>)tQhzA6NTMP6m!J3uVQFJL_&k&`ZXVtBqfA&%+)+pJzE!(%RD$GR+&7?oM@?mqkT)y7?H!Ag7 zLkgy7&S_9p8HJvEP5O)ebV1QSc;YT7Ry}PH1y2r3_ene~*wW1eKxX4Sg~){7Fn|qJhQVmptk}!i4|VC#3%p+JD!5OByh4 zs4LFAVx99N}CqSHlzc$ZWRA zqBGeXvf|by7K>z}tVz(cH&&f5mL;}+$z~17?z31guvu^Y`sXh5#mvmrsTm!&s&Y3> zkkNUZ<9W?@?0lW&=>EDjF@rcK*)u8?dLk3tb6yPV!JG*{uP1TOW4@hm^gjR5%)%FU zWLxyAW&S0bK_GemJpU2M@_kZFFvkb=I0O9|nQF4I0sUE-3N3x&n+R}qI2nDop8p6H z{5}PLC)cGa`A*RIrk(men3X&AMSJ5j`0kZaF# z>%_{e=sh{bC{zGgcbPB}ZYA>W4Q?p|uk-1&QtBC;&=?flY5;d=43mXR?Vy!AuY7ch zF8N>V;*N#VE~X0xJ!6senc%If6Ok|I=8{Dk7sY5@!Wny3y5q%ywD$p2N^RNz=wRyZ zrqEPsZBij>RNd2JR&834YDKr^0ZUZf31MjqC5E!#bI=}f;YfCQm}@4D`qee7N)eeH_L5aPj^5Po$E7 zAoiu;!5)7T9^~N@I`Xd(<(=Y(OdF$d*q{zC;E$)508qDHF4V=F!g0BMo$h=)<$JBI zk{tDw!bc|ypWe7_Sv_G(h#>kX^Z9ZF16@7D-H+==|;jd1r`i|UU zx}7Gp#Bq2O0~hYUt*%~lQgVRed;Cyl8*u3=?^zK#ER19co&M{Jqi&gmxRg-;!wI!d zs&`jN+=>TpIEVUO z2)A9HozYxqJUO8X(GEDTs-{K+{$%b7UXTA-%FK{_N7KV?O}V#u48n;9LP!y$_92)U zF$-be3m!8BF?B3qXr-D4@4KbK#}Q<)>etcvz>q(cXS6y;jbHi|tsf`Mn3e)dR` zT(JDpmEf<-ycJZY6fDDnAR4Q!MT3Ma#s$HMQadfh!3GpIFCf1)up;h{mKd33;Ty&= zoHv&;k6Cjz#|7NDXqS=n0&yrV7fTPw<&t<`_I0f{ebs3zn>El;}!7 zr{d>?2v-S1FTRdm+wg7Q8sRax zv&p(+kqCyIVch|WKKbfME8T=EC_{3qsM1L>!;gh$9;_HjVu5;!(tKcExac&oL=T(5 znW{^-IJ8}~82Hzqa^f308fE@+7nCAyGRv=$JJIc;8+P9YR z$IUzkVp}D5u50-=iNox!@bb5}B?Wg3_DZK5-a-eMR;taCJDcr6W#?>-B+1fKy5whv z_oS&aWx{Zc=khMSi=}=DW!^u{&;*L{Gx!RxY&FK~aU(H`uPy>TLK$3hv)N88#SCG^ zrc?yRx#QWJ!%bwvS@nA!$o9hW8K*{)=a;da<31iD#i^&2RF)6W6}=BJTFJV3wiORl z-Xe#;y|fQ)whJ4k$x(UB9r$sVh-Kt6;=l$elZkOv+GF2Uc&8xJuuBgm1IkHhvs_4c zfJwgm{WP$NrFwh@Ndo`)v_+b0y48%=-i%=5xGE%ER)&+yS=J*iiEeFi#<hzVSt=hY zaSxwGy;vUjaC=jdKK&izK*ULFLM*_RpUQ);JToH z+3xWJ3+jBRD=QHe5@niD*7O(>@Pxo$&R_@DsHgVpCcP|uG)rA=0gFh+j7W}Bs2WoK z=Mw%|yf(riZurH-nt$G&e@bZ~z+Iu_ic$QX&245~}Lc~5tQgV*P52r-X zQy&o#TOz*gL=3*hCty(#{Y|)$DZ{cHi?wbkp!D8#OEa@QlF|~>apV&EZIX*jg_=u? z_Q7$WHJa&A;is`)&Z`G>`>^SGJ}D<_8O02^^OOp8o2DA*9p&wC`J!*&``S*}ihE6= zyuhR?33LhzGf@apcFDUdJ|i!oo5ea1BXDlt;*0TNKXv&Adm~SL^Dpv|Q{+oqL?C_i zOnfU%cmovqkmM7H^wOJm@s-CmY|J|PO|O15I-#6&p5o75gYM&v6VW4yjf;j)>DBPg8OWMvg~t7dlPM zF0tPXBw!Ip-iJ4LMrJ@`0iAcd4ct4R+O#!VlxgSy_H|I_q z&fh45_t%K+GYbN3 zT?j3Y_5meEnAd#+YhEZdBk&G+TKEn5G~t9<%N^kG!RC=|Q`&k0?}3y54L|Tj<;*CU zqcYzX7jsMWYr1%G>d+}bZC+wq5ZI;|AAXlTilG~0KD!XBkFp4176OUMR$yAMpG~oj z7vZAp;8*Jd4vj5o25Khj(PRa0{r%+4Ar7ff<~I&%icVCBSg#P(rXIvW5t`06@Em>P#Qf1ffZvYd z!}G&8Xm^F7%O0J#8-w=~@#9&+?MmR~!r+4oVbBNv@;AdJ0co=Q)kZ*pt_y(<)|dt?biVDsI;_;(_Dx zo~@w^nUAZ6shZTD|GcJoHtBHklS06~RX=1k9tpiH<6xayuNJUcwP!|z*vT?=(^r7? zmPnXV0r@Pi1h`YYO_71-4=v>dis>M!x(j2Wt|deRtc!1VvvYIl!>}=ZM(^Ol&4j~5zLm)K%@7zoRSQqckX?&T)v>K5!-V2vB=z9J1K9h zuF;c#z|a)3z^)UD{(XkbcDG7^4HMB8BtTe8>qvIUlN7jicEl6;h#;2S(>=t$b);{@ zuh*!nmTM1=Yy3FH6!}%xbqL3PC~=C<5xI*U_f{0|*5NQ6?AkNN&G#UT9DXVb>>47* zEfx2+;o$Gjp?{b5T}DxZ6Y-;cnby13LwZcxvA8#rgkQfCy858lwQ?lvc6!LJm}A;> z-O2htZ&~egorfO(FhgC*)r5NvkLVcV(u3i&<>bi}HgRH|ltS^Z?fd08{#f4wdbncs z&v6BE;F1i&J<#O$-Ge^0K94r=j5>PofRw18Pr zGNI5+jY`b)+s6vMFOA{Q!nM1r4Zk;Kll{;qD6SqObR_@y)fIMZ{8j-qAa)a}9T!q1 zXIE)i-Pva?azXq6oDXeRu}n-^F{Uja1X}vW{hFKi!^;IH)fY)BxlzYSVDXCLP#amh3kj1V5kM;!Fdxu|v50AVxB@k|C-e8uz(>Smw5>#E71UHW2 zeoT}Q;VmS)36QXB;eCkSQ{rGjZ;oF32aUel;!u0xe&P1$m`AI6`jad#dVB6mPwV$D zXb;vY{h2zM=$Zm=kkBOZFmRT&X2Dln5b-{$5fanJefT?+^sZsX3;66r(IiQD_%+2K zHHC(#D8!p>G_pK-WxPJJawZOQP>+4Lptn%5BggPuGS=JUD&ITegall zx(Z%Ph?PcBafuX83*&Ugg-mL_K}p98oZa*iU%Z*tlZ|Du4@xD%3Y*kkE`Rt2PuUU_dk^f`-mI*Cd=@U+11PClFbkasefDS= z&z6+Rn244CcsrrwmY{L-pTE#t?s}F*@5qV02D)?uOITk9)~}-{Ee>P7JmZ1B!YOYd zBhx7ZAj0ps%lZ)J@tW`5DW4tMT24&=u{4;_of~uz|HhlL|0nNQ>3{3nDVbZ_Ss4r2 zT3P)&PW|8R#;}UcKS^FZ3n?inD$qpgd;$vVclCbYQP$X&P~j5PWYyd+En6`hMx7gz zbR?g^U&wmi^2Cg{{SXA73L~8x2zjLW#U#8=N7GxL(^;O!E=MyvxxGMD2GjwB=mVGn z+)-c&HO-gTtrP)7Dv4)oDAzy2$^y@aFHo1x7%=@5dQ57#jkyEgS(Z`X6RJoYQs3w z27RRa9J1g}8&1$^2m|H|UAh(a`3lEV7RdrtcDEkK80As^mwoQ^P9B(cQzP4kvv zVL1iLKHeqv!e&+0H?#b!H%94PT4YYGU@AT9;PuNE9xHFAu`2S;N-FEG9U<5H&i>bn z)VENbl48@7hx=n)AEF_l*8L)A1R( zC975k{++)aWttSG8!1;do2n?38lj5ETmzRg!I7Re!zxAku+-3km~aLv{YpisR)oXy zUGrZitL+&^SiE1Mk!`IoLaRpN&i%@^cI;eZUOi?i!|$R3tMKfR+d8$VW-|I|4I|>SA24+eF5&NFA>3O7qYxV?Kk>c0<*+jb9Ge^p#S(S^@AF95 z4_WqdS@W=F;gQ+5ZJBK5reo}4rwp-d8wHQAe6IF2IeQO}c5j+lPTbwv{x&tH-uBHX zxud^reFB^_h*1;$BAPMkegD~ERn4evfWM|;2-JVtVf_Eo9j0txX!T!a_^_&$`ojy`=R+0l>2TR#uo2y z!>Ula%ZcST$Tv7gr{cjXJahPGpIMXV)5!(r4(IVk^Y{17b1zWOAP?GS+j2B-RHT6* z?24!S5F9xBu$NSSk>off_yV+v@`Jvr2r?h#i$*{0U_Lba#bGtJDTlTudk(h8Qr*f! zc?H0IA9hP>Im7xTlg^vK=8HF;8agooaBEzsNSfHMLnhT@xn^mUr%@SMqqJXRYaeSs zShx02U7_2+olA4YR!$~a(wLuUk$tWW)MS<0*`lz-bH#gD(=%?VVk)(>+mkOR<(^PA zK%un{qUtcvK-()`$4u*PtcHoKG)?vMie7^)cW1NAj(xnJG5Rb5plOIlh4O_GS=S0B z{p+W6x#)`WqBA6nyDgD zqWM*NjmkYlr*~;|b}VGiUGWrZGiRw4c}FANpd(WwMl>JTflq5We+V zvCyWemQ(>jWj}yu=-ep{VkCAuW0E;NwNawpt;|i-7hF7-$OtQ1h8|-bAnVlZ7WmtR8BXz3Y zDN~rz`|uKLYv-Up=-IWc-kI`Ml9-~CLoWrd=a8CRicie@=?YhjfPm<1vveh9$O);g zWO^Ca>E9jt%F#pg3TBQ!i(9BMWgU1Z`XzYL{NR!>!kghwEv^r{^#W|JSqx&CHDJy! zDX_>)V#xxLkx#L$k;bubrPC*>-mL1|i|ljS;U}Z&#T&8wct9 z0f&OIYcSvX4dUK2tNY`HR}Uh$pfB(DP9#(H@u{yemRdbU{sDzJAJc=8F)a*I8HhK| zPloP43yu;cY*gpOyXj4GtEKnf0^TwHttajr3BC}{IO~Y2reT=ojiV=9m@ z&wr^qzOOu+`R*Q2o%$px0{)fQ$wD}a-2b<|tP1-7TrU146_U2*Hvj(mHmjZcqMD-l zkadn(k%2-ebNeR_li4dRG4tM6IR7XP+h_HbrvsDmkR2FVJqx z-XpJT_Xk)Pp}1 zIbWvSk}P`AUZ){r>Zm5YavAwd`gL$d_jFl|%xPW%lTI_0rcH*nKkx}!5|3vWhesywEh!qd@S$J1af#N?qMnlQNrZd5Vm* zs<#JZIr4OP3Yo3f)*E@GP)Y0?LH19hL}`|I+pEs*@SF?1)Xl>V;*DTbJ_15ZzxExYR%kPDMHuZxk14RrOO#uYOT_I+c%Ks>b^-l}-Ok!zUp$g8sOO z>eZ4xF*lLn*jp5|X9LAyIeP^VBW>h)Ats-az2mmBJur2?Yi)}~7+GF2mU?%zd*mk? z$}jV|dFC?CYJyfSnRwXjD~)6@P8hf7Pxqsb~&ViVVW)=2W~; zSxSqorcWNKa+=b`H0erBm5@CwO|Dq?ifbjeMLKJ|7;L%oxabkCz%!{Ms5qOGtnMp~ z{4gw41hksMY^m6FYE|__#`oUk1ATl2P;7x3tUXBiuz55=yGO7mO04mJmZLAk!nd}m z3o&af%x@KEB)g86+faT!oZMQ9$F;t6#w8cU3<>b$u9$$Wq;qGlDS)1L`C>!v5s0LfMyHZ_+ zk#=Hrvk7Ud=_~XDaXbGQ|%=c~s zZ>dk_up??V0Lsu+q>Wkd5*T0a*Y!QtP!NZ&P2UfGFd8#HpvSnTj3Cv$T9LO5pdjn! zhQzN~4l-+@o?{^#R@-XX--ByQ_%5+tf4XPID{p`pk4j(7J~4G_zhVgFwj};`K%qeE zGMe7TJ=Z$vHY5SZ$f#zf^X$>6NnwfW&xiV|N}3BBPfY4tsP$V+y94%r`No0wNiMg& zEu2@*x2rLnWWc?I+04y0#D#1^(JK^ZQ4m+K4S(K37a-020{Z5>c7J-CUK31nD)eD-^rN2J?@wP}|;A79=)JF|M zmJ?du!d1w$9Bz%@%5NV8y^;V|*nbtb(<_4+x5_|ld%sx;32UTM#voemIdD`8LLgLM#N z_FgTmfR+W~1#Rn<)%c4Yu4Cs;?-kGZ)wccK6TO^&c9g#!>MQJQzIqvGH`d2)xz zgrB0Bn#~+?8c6{{n=&_XSAS|yNiNZY{QV$|@o+hW z5fd6mgbNL~Q~AG>+X;loL&M(<-)^Y?)65|Df3srzzca)4?hds5Uz0ESF>r(p6hp?6sKa}fA{a8KSJuTg+We?Rzo7) zxORlhp+0!tgkc-C(oA`?qj{MCRh6Vj7_B3piBQ~k{s!FD^xlzHcKG995|YNJTuPCajqkEmmrHQJHQ@aL0y^D$I!d~GrPmFhl0+-Z2MGdPsVGVTG?3i7NqK@}TA64p(x!TFMC!I<5AO?0RBT;UdU7-oQ#8t5>s}*#pKoxk#`k($;ra zEq1DLL%|%g19y2uUTk#lGBkFNB^-NYi}^(Ovu0n_qMxS14c5NmuV76$pWz#0uF)@0 zq)jzLBN56NCCF-EgCA(X6mGr}Qd1Cii=k4OW2+^qIFq zeUM=e{qVMYo`clRBLLD5>gVt)Ax=0dL|+=HY_E)V%h{j&5@L>`)w0r1Wb5V>Q#i>z_)$6vHXC|GWrFS($UVWAh2Z#i&BSol~; zTzRRqj8w*SC7OCc0qzLmXmv~%nTJy%@zkoquulj90|5#i&<%1+(r=qAPh=okF7;Y| zh2$@xD24L{uLx03J3m}#YnqE{0m+`{;u}%g?Dx`C-bp9PFX^65v}*~HnddO`O%s5` zk&re_ePVcZ{uNT#h&t~UP{7gJZ{6@5eT- z)fMRE++>ow-}#~+d8h+(R-oj*Q^>Lecy{OI9sFzEK}RiLax;f-pmOGye50}o{f>BORZ;mY{a7o| zDjQczvD7aLvj4zMyr0P`9EHy&EM4RR`?Ndeik1XD$QcRjv;QGN0et1deMlen_yV2JQ4_bco8+7*>9;AEUMAszu<_yzUP0((|d_ zn_Fo-5mg_fv2H%^`XN?nsG2YHXgnJT_wttEw6l`#LLu6~aF{z$QqDG3;sASAri)=cJ-)_=$v}aFXuCo=fxEyI*D>S?3o$OXj5(N~Fl>Wd2qX(hY2kDaKv!yt znUWuf`t)iVfSfo%O=e5TNt{VIAlWJOtRX$gO9@cS=X<7MUgTzU^rKNdK}M_?b*4R= zjith3-lSYCv7QsLB2JB{!-O079pc+#x9nihQdRt=nY6fY37lArY8($24X|X^os=3d z$_3f5Co7xK2Jt?**tn8X^ZUw@Ns8hvezKMH)2ElgfT0p|K^-Dim3o@~(6+9K)<`m^ zby+lfN>-t~vXGP{P59T)T~49PM!L21N>dj-U;bjgP1&Qm*!`$8Co}H8W!DtWhou(s z(HcqZvpI~%k8iXP0|l{Gq?!Wt&@D>#@uI`%YTs03uDIKFUa?g9JFu+#UW# zoy1D(+Lfr?v=r>%WT}Th5v5L@))eH&Kaghi8j=8a1r$elU5>ENg0;(CYfxh+XD2z$ z#538Satd2Yzr?9jZ@PtGgbCbJzJ3nU;hBB+Dm5v*tNn%1PXx=>e6JD7m`VQInP%M5 zxRN~cgSsVQq&PuMal%H0ZF=dZ7rg3V`Oe+45G=UANtZ(bG|8zyU~8`^qM7=y)Lv`s zwDplxEV72RL`3vG?q+4^t!2s{SC2xL0zY{mm3H*cuLwuL%bC^MB99K!*z#t<$0s#0ig~Mc7FM_&1fFt zM6e)o4nC~=bEWPc60Yly{W%nT)t4{}GS^_yG8r9Z*Xu9ZgDVV+EtuAr*(cB5BTU{3 zPfU21N#2)OL%h6WMXDY_U;DWRMxvIwaPHM%4xEQ-yZ}+Hn)!Q*;8HbB_=LWpdmIz2 zymYp~u>zvS0L}WX#)SCaCqQnPFhHdc`IwB#plRfVS4dLA8;Uu`$*;%85j?@Rd+p|?%|knKr+-Mi zPV?O%T;vy%!E#JERG#PgQzS{*Q#OA|8uDPkUE9*@)d~K={+HH1qD!6^@a;e^{2#S; zn*ZaI&cP7iWJ(YEo%4kJ&R6{S@h#*3=lB1g`}{v2vj6+rf_8TH&W6sG_ICf_BK;RB z#Oc3})c@f8kJA3}kCE))>VuH{fh!dO89JHT&q}*0f5{^kB5t|Cf26v@W#g*M`nxY;qp4}jWo2u5=_|)xZj=O~zlPuE-uwEt zbLO4r-*a1cO6Tj?J^c?3>1_w%U{~GHeO~X63Y_Z$a{Lb*pYoU-tQS{Mepjbsez*^z zou0*!8n}-VSc2UZJC0i%Z?C_CKYh-JuW$4rd}>&H8E$s)WqSYpeGrHES_zPR;lKQt z>&@Xw^^a+~|M&JX*jwTSyO~OEBoPg{K%&l#AbjUcmP0diV-U;%?`SzvHGprMCZ(~P zEQECsSH~31B@xFL-o&j(PS*O}`&~Gg0C!9EY2q!T7);K6gnF4-9#b~nBtlSv#WWQq z%A{#2=Q`n>mbb;6$)qeU^{N0wmrPSiIp2q|RXtNvZC|3XRpmaCX~`sQfKNLR>zGvS zZ^&YjPsu(=bjku`D_ikUBx~vN>1)F_HYsRFB+ePx(mIYQl{rawvHZPY^3JSjn1Hu* zE>KQ)HUWbJ-_tUm|tP>!Jc&HnURYNPEiqf;(_ml1rYEo7> zJZ~my^8a}CQ~2Gi;NX4=#rgP3q*&3ueMPY{tf1cNqN0>og~D;xpOtJNFL=; zBaXE@`nPy^`hbtVLl!;qtdG$w(mAvUxO9xy_OpQT22NOj^ri9nH?~u( z+N1{U-V|zSdPt3=IYH_e%*g+CN_(`RogW=ajXmBk#?#5pHhC`&e?@_tsx~_G=p3~Y zld@R&MoKdwDrOA>+U9!dxKa_-5`W3JW6R6)wqA7OtvLFqjsbrx)0=n^sxRz zB>;@s9igsGgs_st-c}vmccxNfL z?pw(yx32DPH1sht^P^Iy!tsr5L{wExZ#y9Qe3E|pn%V=ybB@rqT{yt zgkm$E3@(~B2+h=!=khWW= zVD7rwme(NAH!Bi4{^^=H+?>FtVq+*htg#`i=s9Iubh`}gdG*U%krD=86!i`UUL1l{ z6Hy|W;JK@00TvGv72XmS;idLmdh9B^NGY{kT*hS>f5(7jr*dlKD_PT_2bIkdD+pW5 zljpe0Gqrz`!OH^8_fw%&bMwYd4xt%T>M!QD)sFz&^uIRCX9-9XKb%>G9-xai60lag8 zIGn^~W_02WMLQy_iO8970Ai^#J-n-!mnzerx|dUG7c=uyvNkDAWN&p-iNN~pSXi00 z-#GAVCgVZ%Yl#tuMm}m$FphooC{9LXcKuT{7Qu`N%6#N1XLuh13{HVf#e_b}?S&hO z_|U2KqRr{ZiBrK3>Bz`Fa9KQ=Gih$1_Q?B$5j4tghserA{mN-9Dp96VGGT8?rH2hx zG|J7Cw=QAn^};S@Xbid(X@D{vv+*MUctoKgHC57sR8c1t^(ZAGqbY_gXv{t%3gT#z z|9o7sQn8m_HQNz(c+6+(TB0@D$+=9Mo*l!Xm~wY6+p}ofSYn3i5dEI2>g`1ErqOs6 zAS0~g7B1lPHU*u<&7o%lt)r&&!q{I;y^=&`kBC%DE*%guy+x_ddPLW@k+=nD*)1eg zYN7NzL>BJ;jzjO&e2W_j*bIFA#-(+nhHG)Q`asyVtlOfrw3;g8h@%+G zeIp`t5%E_?74A~!$xRw!h9dde<=7Q)rx-S#_q@teUBPgP@l)EpX@Qk#Gj5XRRaa+Y zNW`?LyjZk4_7)5EX;pYy+w)|W8uUq=#9r}w=sL>idI_w?Iro5CY%G4(W}$rDlZZF( zEVTmfBUioC+=*mEs?^A$H^<8uS9Q&YKKL>nSLeDo0Jb@u2z4VlBn) z12N@jYYUN2i{+|w@Ni!6I;x$qYY;(jw{Di`C_;MYyfHj)4lFlCW6EST-BwtN-hbox z+H-thEzUKnO@nhf;Vd1-^G~!x3ayUPn&?NOp2gFO>!x@lk=^>5rQz$Jh|k#;(@~n1 zpDi`4=!q;6Ztt%l_!#o#p;Pvbl*aV=Y>ZD$I>o4{2m3SUmW>yjITy&xyhM6c5X}Hi zoc^IkA1b|wNsioT9wA;30hSJr4HRX;-#hqeHV7`ER_!8J`&yh>pys1Li2>(|I2|qC zfB?a@zs6s^2cTXpVap~6ZGN)ei)E#1AQ@G^h5^Eq*Y~qLL}~gg?ifG5xiQr_c+p)c z1~@vpltfqeeq-rX<&3Ot|Hk|1Gt8ppCcNj5{VT;TsN~vEUW(DPO2Rt{+PE;*M|+-l zi!PL%nKWC_T+kV?sQiu8l{ABN5?4AG%#CPnPbKG(pQgxMBfZdIU`5o3o5p;xSrw88 z&73xI5TYD^iA^C}BZM8+F3dpdxh|!G5eDC=F^ajDXGil{sXC&Gvi3^j6SUF`RY|Uu z3SqCyA&}r&xi-7q`^$x8n#E4qmdPV=gGAoYxYJ;a|GK>u?fkJx3IlN${AsN) z!R9Ld_?Y7kOAvTfr|+}&W<@30F}pgOOR~t!;f>hd_hu7Lh+=Zgn!3GNBg5sQ^SmIg zKy$z%f&|*jQL|!X)3&x9jW^mS_w?a)a(78tvx-Pr+Z{N4pGBD$*7O!?)g39v^FY({!t;E67EHhl7l&euqeU+&%>YYg41gsc zMwU{u!~m{(1b#EhleExfA8s?0ULn4)@-~jXKB=Gu;OGFD@e8ORj7d~S9pL>jBkjOrUzobNFFQ1;NmK_G1_tLZOglh)uR`zID8!70?+iS1V4w z$k7=sOi_8mgT-za0Aj<gc%@ z!Vo}Wejz5F>?LKvDz_gUGY&)s;%7I*Z1LgDl(pA17JqrI7 zS#{eg&D3f@&0H&ek=OIC9@mSmQsDay@KAXo<`({rx%52bg^bieX~Fg8M>jaeqgQ4; zFBrSJo|FoHaY701_V#03;(%{PkNB+y(Y)8-=c4IK1$5??$FF;~ixEz%FI7;Em2(G` z)nye)oMPTv)%@k0iMe~F0zGlXsUKEd?mA38WIglen7#f|_Fq5Hi(`DyMM1I)sowu~ z$s2=wSKA`w`ok>kcW8`*+8B9Rj!bBX3oE9kjEG8$Ha#}S8?~U0;sUfKE$mM4jU_%g zvU9o6N)P$ue|3|g?ou}2G3W1i;6!GEVZOh3V$YD|?+AzeUGe!90X49XUfw2hgPVLM z=xEx>{HHzNgKxQEBbIX|ma*j1)Ww&Vk?WtNXN|L$S3<}$`tU&w1D^c?=~pns1A^Kv zBvxG~ZxPT_$eNthE1AdX#om_*`&dW*QU?D{$1<;n*1n1>a(|GrS?xvu{URu#W;nTk zXEE=abUQDXjlTvHT+QQ+l@x+?-HBko?ZeWdq8Q**ae<;1QmtsG+F|IC^|W!TqDo{I zD=HmD?V9cBzj5xd=R+fvTNOj#y$=FQFm!iW%i_kg!w6Q-JGZf`I6reBR*IKAh94>AqQKvHImPU-C)F=9Rz`5QOvR9q0 zcgMs02|rl?c}hv=$mlR^zGEI8HPbD9{*paiPFn~vy(!W=7Pr=%bJ!b8wIL61Bs=o( zBODT};>&;D5{xMuu|ExHStwRhI7nGzDqYcT=I3miul*cLLee=#fT63|T@rC4kv2m^LCDg8J3^?E1 zOBATNe}=&OE~=j<&GCx9R)Xvjz;h00X0x(Z=G4Ym7qq?j!Pejum)m4TK!@LZqH*oe zS(Y@dBI)^DcCWH#cL>BCE(8GMqd#v}4)H`zAb_~%LsDEK>PLLe4R5u^Mlr$i8*%f& zEs>_kCRD_((8J8^vI(aY30SGb%#PKG`D){}slDuDG>wey_KD1Mluo~X-*^Mqn#XvK z8=Y(t(Un@FSb|zYC9y(-ak2F^80&pkxa}+b&@v5+;Z{fI*aW*Yt((#vsv8iZ?OFp{^RMc?>PCDW{>Cf`?!6MFH&#QT`Ga@ixHts zXXRAN2j(F4PcJOrqA7Jauch9VkIdJ0KlR6dthU{TyETvh?BTqW|Mi&e+JD~cT{pgZ z+IHLSa{rVWKIi&GlyV>Fb%pn$|6}CKAI2jmy?pMU+n)D!e}4LuCR5*4B0DD976 zr{y}KG*K>zny$;t@0r*ZgDDg?5~USRp-E+&CFJTCk2&M%l$p4e5DA-s)e4)vnIy}P ze*%(JD7>5XtCKl{Cs|Fh3EsheUL=kGQP~5sDOELM3tPdLpDn^XMk0@|HAbS=A!sp%ywvb6*}{p&FVi0@TXNw+b@FJdoeJ03a;a2Qs9g-> z2s`pGNHR`bv>w`b`LuG)RnjKXof~$vRBY0XZJ}DXgq33BK04z z0F_-bXN(0Nm7{T0iYsSWS85^WV<@is(A>!N=Nn23hmWGfF7c1!G?h3B4da##R@~f| z(-)ajW16&_9VJ0J%;I}iirxMSESoDRNHP=sZR1%^$|cI@_9P+H#Q$b}w5dysL})5m za2Kx?@R@K58=r#){42z32^#z5N=CM?9LvaoRGOzNdLp)M(ky3?`En+z^W!#O7P2!5 z+_8IPFH_h_x_MO!uL5l+@t>77+6)Mw<@L;C7oc3S`3bZ9&*5;d|peQaT)hz*2vX)(dD{Jt-{=eT#tEV{`crL)E8;BZQNlOIK+`HhLc>2kP};emU= zfhb+BdL}WY#>M1F7WYZ(2C@~?Xa}mc5AA&Ky4bE^MTzwEqkK+%RmQzhFO;oSd#NrR zI)d(7|PoR&}Lu$ z)?AZQsgL2-(kr+nc&-|>m}Oi^IoYy7CwYG2qysq>P*BNGB&n8OFQtYu+@K2&c7)OX zD|Noof4MX=99ADvMw9y7&E;?2_cIY?RsDM6V?AMoXUnawm zTGLv;qcE2YG&CM?sO_k!eg@igow1l1K{3pXH**4!Gwk!|%6-4pj#6G^!ZpK4I)#nL z&&zZCQG<48Dq<`9^@#Qs;16)0yi!{-b~%YEzF6tP<1`qz74m(8%0fxfdnBp~bwrmx zaAQj0iDG-ch1fD?CqP*1YOh+x+`>-@r1Vawfn2H=2COC$13D;ODK1N|?(L$eb6&3* zkL21W5<8ZjmyAb*QD!D!h@5DBC*U~$x2EI?-?ozoc_^qyJmMeI84xMJ8FeQd+&MEi za92wiGg{zf8g*YcA%0aPxmtLDiH5mC4uV0>y$~~A*Rwq%SU%a&=s3y8Sp$`A*@b_{ z>C!1_|D{Y-QO_?dEw1FAc-69h`Lq}K{(F1qET%O;GD(=;7l#{RH4jYm&}AbtGUnc8 zlVg9F%ejFNIwLHX4}af<$mw&eV)Ll`SW<;%QF5sEa3v|!^BU7maMWrN`lwA9$>q&qPu#wAP+5CzP2YaxxUA{B;zp_#4yCvcQ=l7{TKF~x=Zi+ zJf%B*S*fk+N?33S`|d`A!>lQo?S-9yX00(Uh~8U7I`spvQm)`cM6A?8g?$sK4QZZ9Xz+`k@ zjQ&0()ZFT-yfYRir8TX+C9u6@zE?WA-ta{DY-8*!j=+QtoC4Uv8VFV7j%7I~<28e1VPgC>vS|(388!vdXsp^Ng3~5_1c9XEjzYIwvdsM4`K?Iy0 zltDcq-VqRfL$)}g?)%dH16^V*AzW&jAw1DUa6&TEzL298378rBHww{6KhFh0ka53v}QoEX2d&J@IzNI<~^$=tU7m2++~P%V82RQ zT>q|k#B)_hNUX*`qVVK=D;scO3_-> zD_P`Hib&GhSCYoQ^LG!pQHQ+eU=$=LYezxBxeIs=pr{%Wu0JaR|Ub*h0fBhdNoW+MLyv#I5?wXrb7r&!FD4T28KTs;PQPX)+ZGA zIw|gU0az@Myq0Z(PCxF!+Vhn(%XN~=gYyj((~B&AEKw#amzEJWH4^~2)?!}e^Em$! z48kCsLn=BTM~o#d#8_j87v+&?@cgl6wI&0Pkkl8b4g%Fkgq3>@Af*bRYokkGt1%+n zkcE4bg}XG9=~FA7Vhi@=wsK@nHXujw#y~kopT6otxG=RRpxGSfIy2x3xzT&_$w7Ny zNjSuk`XnaXC`r}wofhI4Nc2d9{)dh72~W12A=A~8YSq)5^}>1;kGn|=5iN;z6^GTT zPIdEV@jy^BFr*MGX4H&_iu)$@V&ovc_x%W;hY)d3_zsGXNPf4KCoE>1nS-$8#*s53 z!7kkw4uwN~3hzpYk@I-Z4%c{{*-_baeA{qy;DPOkb2H*Sbr%hgnY=0ALlXyi^8??c z-aeTEzyDq1=KD!?zzq!CP0Q>+k!KjdEqv)4ll*S6hIq^I^&_b9)Y^@o?+5?MbZzOs zUq9FHIrv6XQya;~;a-1*Gv)4D-R-eZcm?*9IP!#vxsnLx9fQ+syJN4UY|qA!!Wju$ z5_3<6lNL!UCz@V77{8h?os&S=}gRI-FSltu`J|kUGhhq<(Px;`5Uy zQ#@l&RPOzU5S065CA1LLN%Uka%Ad}HxTd=nqpJ1Yp5@VmPqM}@d+CIr;)yj6TOgLSxUavW3pt)jjPcCf<1LO>&<9paZ&HxqM zuk&ni96bY%FH+_E`|7EQvQwe`2g&u68m^M6YlHCZllAqu!G5peCjw?d0Hrsn_tQ@Z z{v#y&tAWgkxtJzB3lpjlsz(c2T8o8Z(G1R}#@wwYQBNFQ?Zy^KPxd4`Ibh2#O6NW` z;6B?NvOH(qvXhZ#R(tKT)1C{^F#Eip2WUvE+d+3waFo977KZKZhwd9!kb*Rr!hjPX z@=tv>l-?M;JKV)9Yv_Y2;)S*P9bzWOo@uQ6=*=2QJtX04TzO*ti%ZIP>-z1yRGW=6 zQE|_M(p6#`7l^`1p2nWDf4vZyeo~ci_>kZuBuh8tR?*%J$E^dmnI}G6+5U5LlAV5` z#M%6`ddARIm@le_G<7G2cf4ceXzLu0WJAA~Pi?4*hxZP`z)@H5%E-7LiN@{LxRp$U zVNHYK4??{6n2*FRJ|@`fM=rg_YRoj=GdAEZOMM~3L}z{41hiYW#4Dt{M=qtiZ{WTo zHRu{eaoa@e>yMpxMABLF$f6io2j6`Ffo9C#WK{8Y4sfV9~X_pqHJC=8s!YC*{y|jHOr#G1f zZuri^4n$blry}*=M{V1p9l7-W{g|^F=8cPY+&oX4`6de=BaNFmJh{jaiMVj=-?-_K-0&=sZ~!H(A?CD<>BorJK%dHCC7vsn}zs zN$Yk1L;zLkmueWiuIlZ6mu()ZPt5=g}?Z z%d|a&Q$-GUq1<7!DJ{C(sTiZA@-Xr1zvDz}h`@uBZPn3Ttw>L6v`N2R-}UOvneY=W zOPxiF{rOIBAD*CFrjtzsu3pOuFpr1y(cFO3f+Ww^x-B+h7drUD5gmcUp< zw%rdw^sf23+dbHdzCS;2a|eRqf;G*TU7!e1lI0uR(E20c#?!hhswxsaTcR?9KwxKwe?zC#W`}beg*` zMHX|Z@Ne^640>^E0E}s50B`OlxMM<{6=jF4s?OxBbp6VyP#eCvpUzQ!_ZVjj9UaM- zf(3T>gD_-^)ZsX_$czthI>J8sFbq4y-<_gLszDJ-ha+CDBPx^Et}3kYj#pVxHEG<5 zEAXM79}Za72;Ge%{t|w91b<>%!cu(Y!BLOOA(mUmglrIUZ~^V{0y<5?|V=MFUO2|rYBmoSm)1avCx#?%RvsbB7NGeP=WDxWGsFyj$uylC~hT3 z4Wo*hBTV!R67+A(5B~x~pBkSnH&!ggesoUUG7+a=+#p%MhdO>T)v>4+=qRuDI9(iY zkcNxkk6J-rg6Biqo?+z=o$@otU6$F9AStdxHHkUCoiON+pOYLY<&g8X2K(rY{5He9 zrZN5quEm@LD4MDVI-H5*UuF`BG&mz1OM2qY*kaJ>M#1f`yq!Jj>&D=kk$Gi&hTA13h zO}=HDaEmC4&O@I7wYx=cIo2X)@5`jHyt4l<_ZY)Pz#zuAGi~XAbf*2^YkWfAa^Qcm z8vkt`D^l68`^NL~W=P8-FU(VeYyAyklT+FUlm$wFQ=Oz^T=y z4`VMky|4BL`^g5Y2s@}Az>70nsHNMD9DDl^+2kE4f%hwK)_Lze2AQ{rtT@VFMnkoB z5v<$K$fsbExfI3sSqH}~hYILky%Gs|5J;3bqkyz=3FlulON^?BQYl^nvHK$mr&Kn{ zT+cQW)?@s`b^{);p1vY3vz6?6K~Kvg)=_x#XKnyGdvIe6!@pV@V^wnfDmsPZnhX^> zPRotgnypVboq4?fK6MtmkvG*2QA?o9L-hrQRfe%JkaY$1UY8&W}#kq>BX0XoKZ> zu9Mm?kE=T0+lEv$>$R`$UReWNF;GH9{H}%uWjgI#KO3hVHb4T#pX++Oy zSe`Ln2YQJCU}kTHvE51}Zrkmdi5134b~&iJl7W@x(Uq8MWOfT&lG{ID9oLy(`_*ed zmN5qTf+Uq2<$`P2Vh73arjfz^!oV&tMq&MKG-DJuSf2-H`QSk(dLh0uZlpiqCzkuJ z`yFH_F)pibHnu+9+-p>niBv>L0{^{XtKbXmsel z{f)r?k!>pYe|<{|+Za0iF9Etp6WUE>3GGXsX>4MWXH-Z70tx~u7Cuk?*BynPRbKiP-)%vnkgzaUwm3oKezxQnu zvNWuIC@=l(uIEjs8K3DcbGN-JbQx) zZc?-zcz^rU?`JE9OIUFMyA0jMd!fNK6{pNFr=@r^`<$%r!6@J_#p#b_YmA~#?oA)b z!5EpC5%wp0+~JE6RwtyuD^vI#)q`i2&i!7J&h(I##TW0#SHEBaE4QsM%a=INBRAnW z59NWFtkPk57F<^&h;60b9IKbK{8uM<`-)o(Y@f1Wean|7Y~O;t7ORge6xdtO$JcK{Sds zzx4YL5rm)L3H-*q74hm5=-NR+Sc#8}xd4xl6L;$??L)r0I7)^#)y*PImxlKAIYci`T zu{PaME8v~4zOb5QTo})2xvSi`hIVdM7Z>Ul5VswAEo11b-Q7(PJ&kqNck?dknX`As z_6yB*`wg5(LBlCi?#KayQGNoOR$#ykBdB3vbZK>Ue%rF`{ON4&)SvRiJoJhkL?newFgYfn-vSxI_Vi|<3BFH`?sOqB6w~0(F$a<4 z$-Hy-s9fJFOFm1w=O6%c5>T@ul>~jtaPU4j9X^lDi3Gcm1mP(QH-~h2=RqVEp(z)f z=x&Rv7^Lxs@KP6zRfrEQxX6;D5usNha-ZC#IE6pDhgojNNb(I$79mMJJgC`CTn7{r^6^3nNsf_JSb%~$uVVE2$1vDg!&4)S5IVUzR;=O)hq025av-GujuXQI ztVn{8Znz29z+Pbrq_nFTxLS%4R@npvR#ljE%B@oV1Q@4qiV}D>MFB8v5R1oR!L+`% zF@{qSZP_$D5>+6jj7c`cZ>l{}I?UihVM!weCWx8qHNQII?L&{aP^L5NXA*}(fpn3| zsZv#{EZ6JhV2G|6qXNOj1&kQzHpkENPPzqCh@n^}-AyKDGOP4+p%H{M*2XQAlt8)$ zRkz7FX3eXR>fc;;1DBRnsiXRMuKRS`3RuMz(Vh-923BT&xt@#&4p+U-LV41Vf( zq?4pJeR36 zLolJ?6R+VFuXrbd%P=$_mi-5AbY-wiD`L`0-(0;1JRI_sa+}>!WmX6?t(s7~WNZy< zWO7%4vVrc`#Cx7;#UG0Tcnpvj-}y)0l8=Xvhm(hw zS-l|Hn-^KxSXkI@a!V>EpxmZPfK&mf3Kw@pX?H|@U$xH7ke_qYe_(zp`#;dWaKx-+ z01}34_9J~=IQmR&u#L6&&l8%9f|jjoePBgd`qiX!WqR1qY^ZlEzC!!dgxoonZm>C zcZdrbG+f|%pl{&`U3&BAkY2NJn#`HCk=ii*p`z$tLCOl6uO#*D zaa*9;ricK9^w#hlhdXd|rFQJYg5^WYIoiYqovS$<;oSdZG$+BPEuJq)|O~~ z{PLNXc~LS14trzm5@g6oFJDYZIAZ>`S8N1PZUiAc?@aB2?NBT%jxiQt4_~Tm$MA}D zHBQu00kCS#1~6_p#Pw?=^lKDldV0_gLx&H$7MQTZK+bypU|t$uXJ09z(jmVXPDQOY zkEK3MPIs2JwxQD|psK10WAsBXoDasAp`$tZNm&j7r>i2HNpdyG=Jm`rE;KIuqTiI-OWVvgwVP3Dd^f0ZK6*4@>vNL1 z$;9rMu=Bs<yXE8f4fQ{?qxVuo*RIQ9>SoQK%K!P$vfJX_x3? z0D&hm%PpMyyMmh|TKblaFY4K$ZPg)YwN5(Rp(t`#l?hgT0w#K@Rc!e{Yc25nP-ycv z#-3PP;N{j)t7!E=6#&I9VQZDx(=mi6ko)MzRq{Zqcy#?7Pw@MZ>P6DZni&2_fEm?n zUm-8@21SPQu;Ld((L{oh3UT;l?SzSn!t$kqLNc}#t|By<{UbS|dEH^$O6kOqOelIA zQqCZ0<07A?L>HYY02d?AjBpteXM51x0Sizzveb&JE>M83T^rFnR)A39fVSsir4TT) z?{w&yDtdbV0>arjuF?sya)%=?o#0DETXR6Lv9009HLjF3QCC)u(dmWmq(P$5Z^$UT z-~uJh7D?~8=26>7HUd|jX-DIUI}xT(VpQpaSkWL=yxLBv$WC4-^yA$!Qe0yX-&E8y z(g?qBE!&{T2gaN^G087Q17y%zHlggt4m?}}jstNSJo%SwrfI@3?&hRGecZgtWMptC{VGPV61{y*9o#m)FB{hx%s6TJW1&`9@w ze9zpN`9;>LM?hYu9U=t58Mf7dlK>qRfY_Hq z!Aj##dX~@PPhHyRUdchLJI(Yj0M{y;n3Tp zEToggyYKg7-L&J1KQK7RnEwQjFIfBbW02p{qBLA9*u5>sIBy zl55$ZJ{2!*Z*S@gbkR!`%IroyTCUXaDd;IQRu4rly~KTk{W~~UPrzSc1V0qtZ{tz5 z`(_qz+}%2-dWAuD+`YlpB6qDeU$KuJ)Uwy2x5lRKTrh*rNL)UIw_d0fc+h{lMQgWx zv3Ivv--B?M_eQXM^@Hbc_0rGfA-NK#r&!-gb>8{=y;t^ZzLbOCvqM z#cG zl4n%VB$HrVmsK*am|~FOE!{jf&$!4l8Y`ZM0q2%r7C~xc$(YUz{F$W2;O6w_iIQR^ z6B&DSRc_IKi>uW6*03+sb+`&Oq8qp`W4!`iKMqXoD6XKzy8OZH9J;)~1YHZ+_h8$J zb>(Cz*0@)<5g?E2!wpH8eW(1yn>No+pM)NL5H9EmK#N38v00Iv|v^y4w1$ z-9m%zsA4D2IxVN@~IQL`9*Ap@Fe&J4<7 z%N{_xmT6_4cjT)(cV=nRRRnT;!nuwT?HcE?G_IkEr*0OjNd5U44r1N{{M&hJcacrO zs(5qo4NmsuV;S!Bku;>q(ns;YcGBM)F^auz z2;aWh9O+#ra8S!tCWO`0IGfmu@YeCqzm|%2bx{$v;v1+V@!OO6Qzg?eqQY8JMRa7g zMzO<1manWH!HR9k6qGJ4Ear8X%8d$Oxv93keT}bapT7L%9vQO)mZS}1pTp3|wiZCz zt3-+WVVc?057;K}ut1%JByHnK;NdTYZ28yCVuvwIEd{<_OwFhkIz_4vpNG~3!|ElT zzf@U3iWLz~Nzr?bdJ%T5?B0AM##|Wn5f~bxjObS#C0m=GFe91MKXwihC5`(GStDd` zBPPyo(O*TUxeArryzc`-O_C4r6g7Ig!RSYy;&Z4 za={^^BaS9pP&Acfo+YcYco^RrcL6a5B7Tdls@I>9GZ-FT!(?aYgBvJ}zM^!>}b4J<HH&Bf>%C~e&OiQS9vx%HC zltqFe#7Ped8OH55b_yaER6Pu_9i(DoF6mY1S{X6QS4z0Yf)DWpp{qtLHfi6MHc~W2 zpD^_3i!gRhXFQALSII!kvR{~VIc|aZSzBqERZaZLH55g8m|4i7b$Tp2 zhO}iPY_b41ya8k2tc1r(X_y%E&4Mfx+EMYf6Dm?C6=h7HI*k{QqoLu$m^(8X3mI&Q z;fe{l!Y6(;{^gfB8q za(j7))J3x&nU~eaDHGf|kF6+Xgr#!El6rFPjDswY?A#?vex@w)$Xc;t@q78KDGrTr z3P2;mPr*}le=#Kx`gIo%m+R>7a)&5ZFmBx{8(FSe3eYTA3?I5+t?Cp4&Xz^$D{hi5 zJO+4+v5tceDQRY_&W&Sb7c5EwRLEPSYElaXPO!F;edg=I(20(o*{YYvg|w>*M5Da{ z@8uGuzd&7n)`EcGGKEqG5ogPM7r+&abG<3Wyg4_SKm0GXn^bdp^4x_d~?b7 zq!-<@e9rZe;{#|=`|^h~N1LN5(-L>Kai#|n#8uOz=@^bECAqKD5pnGx9X1r=IEk}6 z^i(~vy&Zt_aF6y5O~7gmnv}Ov8E+_tIPBnfO&?Xr+qB#8$xSV zsC5mk?7k$v$ce#h23rzyg$Yj>3ix2n!pBsD+rs=tTqHh}cJ-!jh)SwsCvr$a2VE z%n^+f)Eq^|BDb8Tb~N}3R27@cur-%*di=8Md6>nVyV@b+5Q1Eig*<#7rM(n z8f?X3t31n!9AM7iEbQ)h&9`{k6F9_8xpa)+W^AA_S&@-{$KK8`5$*1EHM`207+J3$L<89BhCJHaHiGVSh(KnUi~#;K-vJL1$)wB6(3Vn`)ac5@C{Gr2JihUjG=>%AwieF8?FAjy z^9vc8#S+KYZapELvDl=C&jy}itZX)Jf>o^Tqh&3NE>}oG&q(#s7sq%!6lEE6t%zW; zqoa1Sq3l&JY+0sIdmy(V?>B#NesFkd??8rT#>=o{;(8v|y~o^3n_`HHArJXcO$A@i zDI1N?tS7YIiiasz4LRg-)Fo>iXgftcv4*gcT>_#MH`_;$^q_$3cvs+>oIO!Mx5^$% zAkPV5kK-5|`EXl>6!Ri&4=-bF*JriQ4(&hsjMZIbA1A3Xy4&q6U^wP(L z7i)+o;Z)>a`5VSP&ZE%Z>Cp*Fqp>?MeAR~iG11vGsQ@eSV$71F>B_Pib!Ej)eT4?> z(VCI;b`uy01v`{=oN~H+?9JN0)z+^^c?5YBa<>!=sNoo)F<^E^2_tLSwtqW&444eo z#8gt$lvh<(=#DQAB7$A63fA7$r7kSd?W?+H+>scm&Yf}T?!=to`^6`JKEC058|B-^ z#5-!FmDI^<*zO@9(^s#ppj?9~uSf&S%;h{scBFoBb883lpdU6NESLydD*&@4gbU5A1e|&;5WChEv|bzKwg*B z-V5LTDkl^Y0e!DNy8gFoUbg=DF6>HiCxHq18WZaza9juE)mHL|&L+x@8Y(Y#YAHVy z4JdBPAOQ!eV?XR+-f!K*9Dgufcif#{^3Ck~v^jrmYA!#mnz{y?-B6Qn9j<5ZcvA&e zx3>)UcMBig{_sG>R0OciA+q(m*E|WW0e_vM^MV1h`4jirqZhRbR(zU@$FF

        v3hj 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Ðz}?N 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 z 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

        `2QLE?$r85_1GGl*nas*~1DiK}4CCI{~w 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

        feOGkR?W3M4E-W%Gk9#TiCsY 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�T9=<`9f7 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

        17%FxHet|(6&@OZ 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�{^C`n@lf{t|j0 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

        PvNYs zc+$H|5*kdKkhFYa&hz{*>_qTb_9|_MQA`bSr``%IX8910TwHavrtx+9?yEf>?s@kV zgt_he!>jmH-IK{*mXVL9mcacNBUmAMXenG$YX4lm+1W{q?>DHxZ}6}C*pm!cLc96> z0DC^9wHvAHb&HcP>gC&mwup4}F*hlR7IAk7x~BRq(K+237KOZJ;sxQ#S)I-JXxF2L zzfD$S`F-OD%!E#qqekogqR-#!TUvjX5cg_hBnh(#qU!w36d1yH^g3ZD8nx@Q%3cMn40eYSFzE4kULf3N6T%=q zzkO2dWo$H2p0CQK+bw6YU!FfsJswPTKffOy(tmTWgeQ*j1W$%d1y9CeI&E%z2NvXN zshwbuQ+f^1uQZaZ!(Dg?e9gS%{F6pO8NuDL-gM970{^7EX83Jj)Q~br)2a0k>ZUT8 zMwyvfLixLXyt*Qwu~iw(gz?HtnVQNRteU#;Gt_gDRwrksCN41i3X9AUrU>LCJp(=k z?RIR_zt#)dgtC>;yG5U1hT%mj5p0JR=>-!HxqOK=#$gs)klRJrf!~g@#bPV)G|Sw{ z1G=$Nzs$o>u`Tg8oh$HMq5f06rGIO_6`P?f2vTU1kK+aJNCC9?`!;n|pnh|Q!i$_x zk;klWUUAHqRlxgJnAR~BQ67=U=R}E;S@6Z8RH7@_>I*N#2;XT!v#L^)$M#x1z+t-V zwKJE_VbnUuConeS1H8aky*39rraBZnix|km~hLH+ZfY!X+Z9X{ul+ZvBkVW6qtrsm>pf4 z)yW&{Zq{X1N|P)~$`jq!&zqb$h^EUKv#bS^$dlyd+W-fMw`7z74fs}6ALT<8+;cTp zng!8_eYD9&+$BnELLRShx4Bj*mJWcX>OCTzaHIc<&?q$`pYc~S-LAr<2Nv^Px4;8S zl)P0lR)@r;*%0TA_Q3sv)x7Q+i?7t=!!YB+u_BQJ-d8R9J{vO)@PhY`^ZG3nzk_ZQ z;v9`Us!#YG!#-pf2ss}E#9D|;C;)RN-jyf;uHcY)#J4&gUJS8 zgep#dpaC;=HGR(qZgCbO5ma||>|9xhf3>aj)TM;OdO?X*2$jW#-^%wsIO7_TY#rQG zK#{m!2=)A!!gdA=alTW!LAqDmoMCX(Hi3Q?g$X{<{zuuw20rLhT?=!Zd&`bM`ld^( zS2)I{O)i4WG0$YkBm+}L>oPV^#EqbI0o{8)QnnS}5$i=adPYdk?6drIZf6CKyOkpb z*@lQTWKK;A_oabxMPl*Xbd2SLj5#63Pyzb|S=pdiMTFGULs%?LGlJ?fJyg6VzK}bsZ*2kui*~y`;-J~55I}->SukmN7!Imq3W3{cbVQee zdvCcU*FXQU^8U$E3IvO0G^3JKP5!;#SpcmPNoS<#yDegObk%ouNOpUWTxXoB%pUP4 zbQ{@c?pAK?OZCGGL-G*>NdCq<(d3V1K#tmrqNFcdjiPEpi}soH(qV3M*$s60@`y#1 zjOSyWdc{8mhGITy@mIe>DcQgDb>#mqNEm-vJpPB*s7uw-ab5(K*D_<&MQW3kw2*c- zkt=u@75ZxzlDrxOez=&Uu*ge6X$Xl}5=;D{*Vn>SgGrI=ym7$PN2$b>RG;RVc4i?> z-Td-`_v?DNt7=Be=f^XGAN@5=FeH^dkC1Y2zMrW5;5Du-o@iX?yk6GKGRl=uFP~te zR@J4oas+9xT2oOu=@gR=6Ulfw8IG_ri}Z@os0v9}n)#83U=s7)>OxZ_iG-*_@iG%_ zm-+&0nK5R)$p*$$LCEg42L$y5LFJ{ba(3bgY@4Yf&{U&v)6nxDMVxs;;qVt(rU5VE zxjz;a?gTiVyZ#dBeem+!Mx{kmGega(^1@YdWtzeHto1mGVA|zJ@ue3L!TpA9K*Z_G ziO*`X4CCx2X5mSuVh=kCo4Gf_mBc}Jp^HhuWE!-;V*4riYL{cHytBs*pXJB|;%T-$ zgE?!W^toBxWprS7-C0=0s;PTc`yAEl>${S9f;3p(-5F68=ZkyMGAv*9VCG>G?o{6P zuRF@|KXg4P=Pj5`NUC#xSXNW@)QU|+cX(!ls+;IU`b|v2Fg088puy|gmN14+o|R5>@7Y{Wq8jE%$a_I^tkb3v*V5OCsK9`VZ(c*T7AJH|no7xLlXu zn4mot{xIf?Hyp?nyoQO;!q46^_E5W!*pVGU4_S_RJM@YN4z$o!wAUBxV*Vdux;maw zX zvVLOt^>|04HsRpf*@!Ei`so(8P%nQMznuKxfmN?f>Ya)~_||}+UxffXz^e7=`7qc$ zyL3xUb;>PU(wVnR&o?9K&1<`>VyfR;O?A7(%==@q#(u5Xy+pOXG3VhxZmfPZs{E)4 zh~$Fkvf@bFYrf3Pf3tZw*VU1t>wNC+0ybCmEKl`r?$rg><2mn6qTtvXLdDh;)`MH{ zcmqe;mOa-)e!XP|72YR8M(Tt65rarJCGg5pNER{TO}guf`eo*H5bE@Mq&*%LPsF^F zT99@tlgs%b$mE=3(izf%U3+af%v~o3N>M{?Fuh6sKVnZbg+e#NR|z-tFU7Rut zL!1ohGhH4+qzNLBCP+mU`YDNYHL~jt?BCcZ3k7QpNwfi&04x8~DgZ@%$VQS)z0WDk za8afAgBwu^m^cDVS&>7>Q+!K4D4b_1G~Gc+Pfr@PES}E3T*7|q1e`u;C7%RMGEumN zCX8n08X{5pw45wyK7RBR8rZBN)1!854CUM(CAGdSllWOzoSSz%ZqgW~&5J0gEjU7H z!jUxVw`-tYTCbjCWUm6v1*bbRIN9kIS~yY3F*ILI3pul^Qnh?#-I!O$(v|VZE6tEXLF#^N zg`HIxO2nDVPV5c##bw0M^-lUOv$DDzhji>p0v3ZmgcqCjMVbxZ z97`cPO)>_=OQE_6E1ThbrA!Vrni6bLB%6XgmUgbH3#oauks{NFzvJbwL1X$MGJulF zhOeL~YbTQm7rd@9Rf%&d?w46{5RM|M9Z%&zHm_|01D9QR%mVqnH_Ui|LPiRHi$QpL z?`;qQrMIHkyf0`8P0l^f-~zva!{raWW;X+U&#(i3_g@8X6#TtM9;e^v*6au4M#Z?D zJcn&LiE!1$2mVQqvnvBaG#@ak7E0{)yiGJr*Jlj#jHan?#Hdwa+!4OXis?GG7X^XG&ftP#qYn3pf1{~73QD%!JfZQ(yWjy~n1JZ0Ua?*O zn?p)HR5SF5A57jUbyvI9RC+Gjd+UBuDTX-%{CCkqIlS`BcHf4$C-YTpb(iQ7uglb4 zmnfdB*6q`Fui*nKUIQDRtoH5GpSTg`B_6&XXnI$^fgH|>{DL*n@;m)`@V6&PeC8gN;#5-1ZEC{SE-6>)UQG!nP>k zaC8{aQd}virOB69p(zjd$KNDO)9kn2jtN|g-P&+^)Ysr?wG!ZrF%f4<5WJ$uGeEza zILQqOLK~_3Ks$#B2KU_IGd6@t-Sp=KtkK}NU=K}7q-HNX;Q*o-u4?%2vX(O#@NNDo z(Gwf~b{h6ZPP2gVr~x^O+f314-h5hHoBFA9@7<7C$=F%MAKBb|s@b>oo+Mfg^Ij9Z zP6{JswB?2rgWSPGA`Nb;uY74@KB&j8%~<7t&{!PlmE=$Py14H7>D|F8JTX~&ln^0n z)NmKsk~QM1zQ8+ib|ymCsS340gYa&b+`U<}86&{_A|>vslw5mS$@sl9Nm2{_d@| z7h^tLo_jd`f{EtY2_*vbtp4D0WHW>l@uS18wI~h}rNu)OB{;+si1K=tD!n44^X3 zA<4r7j4A8u(Bl5EsbISYuoR>Z?XN%Myn(>W1yQ3a^<|+*!nfJ)^asIU$n>73>GP~c zqU*Nn_FO!_yl$TQ@bbUCPq}{68TkcCL?I+Mn8nafacvU8zV_un9-0LiKml5ZBg7fn z0X!(XYzV|WBzohYSv_Gv+tu_Ksyw9(w4+^AJYHPHtf4{|E4rEz4b=OqpaaIAZH_t8SX$G7~`NPEsw@b zoEv{MDetpzL`L~dLB&(7z9c++TtdY#=GfT1X8I{_w%nnM=oA{iLuPDUm7)fvqqw?^ zmHl`L;$Y`BQ)s&7;;!|1%cf1<&s%<7B9_;pk%tGb35Gk_f(lMW9yX}d=IeO49@)HY zX}QUGaef(UkubM$i1~_Rv7}1Zbkp_1?^N~e7F)KsGnda{6!F*J((~=>`igVbflSsC zkBo8ag;)iSA`(`s>a6E+KPn9Fyu)lN8UWF!(yR7=BHB2aLg@t=3w{}~*<+7%Fi=T+ zoyw$4UgP4HW0|;;&th$F7yP15lKuV)tXb-^H+2_Pi2`kxX zk@x_YWWmDbs6Vk~=Y8=7V3g@N53eFA)R&Qx55$kh8u~@I0V?fJOj*_Q9Yk^3Q-F%I z=6=VXg}vK~%pa(dPZXh^^6MiWsPuY-;S|{sM8U@tCJf};0LHnFa(&i}besARP3eP$ z_;vjx);2;t=RjnskWO9#V5S0LBS^o8JyEFQz!HeSyl|^Br&Rmwk0PR6QAA|nL}1AW zl6T)I{qSK_!+JxW$!uS|Qy!R2x446!;vP^$)A9FM&m<=pin0WS-NVaBgA4n_Vr50d zktNmN39m?{BRE9Qfq{)aAjQ)M0-sO}c4tyieER~P5=((7A)x8^i1ak!g_qZ4=2g~r z?}P@&_++~pd{#91_p5UVPx2*S(6sV>1R61*#Fnk&n{gUg*K?6R&3Nw73h8;8fi6&U zRwnbOfm75whXx*99@?b3RqcZ`;5{RFyrhpbK`;4#9=)>t(e)n9gZ~p7L9qx*_$&uR9%&rm?<~~^7kXMdb%?ZRUtnN>FZV{kycf%2>atqS&`lZ zB)bZSPGg&u49z>Ebt3AJH5;hw3Czz<>EWSnBgm)TiE4bhS-hmdZ}M#iXs2+0&V5iC zwq=9GYLt;?AOzgvUYHj`%6j}}{}y=wzd&jnzoHut;=f9)694rG=VoW_pl@Jh{GURd zwIYr(st;YqSa7WzpjZves>&LwuU@IbK#-Uaj+9;woWbR7mu3gMnanlKTYo!&e{gF% za(cOJ55m`vU&8a^0vQqtmoZTPa;)u;@6mmF!s_GW>+Hoh9sz4i**ICEuo^@DcO0K! z#>jmVXtg*MdA@9O3Ujr^tIVJGm29SZXuQls zYr6(m^E^tM##~m3dDICu?4z)HXRxm|a$cTmg2r;$J>?m{UZfcfrO@cRyMIl?__1pg zn_<(t=w1h>P$Q(5t#B!qn_bQcFIgmSz@J;&iog7e0Q_3_~rO;aUMa!2UrXB=JkL9Ikl=Q$Pwp)z6V7@1+Q zJmM;;|LTx8TpVa#Wx;Kj;=ORXUox`wwSKBf{_~|gN#nt#t*<~8%Z^O~-ip>Yaak4P z9;4^;qArfL#wOwUe3SftPLp`ApA)K2Y6%~zLI@w1>!&-kt#J36x72XkGo8W`%g+Z9 z-$Ve=n9-a z{{-oJtYYpR={YE(@femB0AaM1#~PV)JZPH#^g5^&#xjY_WG)v#5Zt!?421_!q@s`u za!T>Sxz(i#9oZU}@+CI=1viovM*Fl@vEau6il9l*4Q5;pze z0#<1JS-mlVfAZ+IHd)O|)zY_BuiLbA6H#)Q5_XjmsXEUwD? zlTIy#L8jt+2vWQ=ZFX)R^){Py+}rsp8nW%*4HASph1sF6s+<(&e<*mkm>W9%zk zQM7!ogGxKUhvVKi+f2m=DJrJe8JpcOf|!${z>&t|s=dR+qsej}5Z7?7rGsgNZe^aj zzK$$1?8@5_TUYdTu3@`t_u@BBH?ta4s)?CKgG0P$x8SkPA{2X5cdX7#aS2qj>0(N@ zGU9E$SsQv-S{&e^)pRA^4T09?mS~IBZAJVTzBVd_&y{WHpfVqW@}^UEVb_vKHFt{9 zc7n(+8dnsRcFi>gm72>~d?LeSlnlg;c*b~IZF3pDI3>HLMPWc4oY&A+A^$;GGMu!h zmN4_4!TB)X`o=4nJK2Md^FG#MDgAJnNtH~aeXNZcr94Ow4Zs)9JCrNI#JHSa0Be;k zwWtmoCXw&S4Plfr9W)&WKKr#LC<9QiJ)bB&fwxJ-rp9Srgm!iN>DFI%RFi%3p>cET zK9nG)Jql%8<}hoLFmN9OIBowKy>J6GNs`icz%7)n1xRz1Xn4|J#WjFOpVJ zvdp*Nd^txWwen)y3U2G}lg$F`{ySi@fJcL-Gh==H7pTgHQ3=oahqb)O0L85O(6z{kO?O|-* z5F0O^T1387JW&&^(4Z;^9+XM-)jJ-&9R7Uyxp_HfJ{kj0{tj3`qS+5NQXYCDn-ZtzgKLY3bF%b6e#M+v3Q@ zn5)&59>M}ZAn4?@T7TH@AeZNg{iFgar=YXj76qy?9WGde7l@bG;H}a1efPe+Kb_O{ z{k*~PJCuvo!(uOpwWq%7W5g{%O^ zn_u>C@~W-D9+!!-GF&_3HDRdgPiCFqKqWY2jlyb6H%OmEt(7Z1x_44us$fkn*4JJF zpcU1R065ng?>uCdsG5I%`yFm@QAPclvIfKqOeEY?PMK^y>p~6EZ!Bq-9V~lbA@d&(08<}i&$E4WnNjhR!I@-Wq%mIWzh zkG5qRlBuYQ7&?!qKkGg@9~+|7E5&_3@J{?<3zwog@r-0H*1op@myV8~RC1W_N;h#) zwypqMG)-gDh&!`#vDc=*WRXc8mtM(KBl0XYMybP?oqLnT(qUToM78A_fNtH0@u!47&4LX>A4-1{$}?mni{Ke{&?!uyN*qJC-3P zLLSK;TlGY0uQ`^fJM%;arVNZ4{s}H20rQV-&`AVzMh|j!MRfu-k6+dF-S0N;b#|WW zKiXxTG^*yNc7N<)zca@Eq-O%H?cIa^$cr@qRb;{LV=*bkC(Ri-b{!r>xpRAvhi`~+ z2+cZUkN}rp71GL`;}yFDQy5b^I{}F#DIwStC3r^cdxdP%UOp$X!RQjbAj&R$;1Te< zBNPCPU?%X5G~Tfq03KUO-op#;kg|z#3SnX*TF*cUf=aGo?RN^OLs3NeBoIyGyneRk zALiV==iI-c6pG#@Y7c!^CF7Dwq$=qW`P>8*T_S3`688Ti3+Z*p4DV2I7d9Z}g3Dtv z#wI!L?}Nj$G9(yBPD9e;h!$W%{0I_fg&R#g%yRuYN-n#j1NDN?97EEs=%i&%f{ zA&WI9gVpm$X_(g%X;u=+FE*S5V!Bs4oD%E!!fprsW`cUmG-b$ySu9BtBgrA?bxXqX z_O}Ws-uK&_=Zma#!2PRwe;gl|4F~7K@i@>~mYU7uW>SSP%Sx#*Id;PJbX64##DZA(I+v z=mv&AeW*+HaQ$`TlKb#v^!X#FrU&c_nJ<(uSPQm7?NpTi;#xlo0f!NrjkpzG5cC;x zGkp6eC<0h0cX%7|4>b}+L(gPCf9K{Y*kZKhP7|zG;N6Jy;YcfSMrjl1RBg&5@QHn$vVGIcRRF>DA(*l!kVdS~%cZbjX)#g)~UuVz4{gQeo*jt6xxRM@Tj%j+|X- zvZjzOda9HwlL(?$p$}B{2g>CHMq;i zCQ58IH}}O{C;PXgZi-@BIe<(xBQOwOV$U5FoYfH-u#MVvpJS|>JuQ^c+Gpdjbw^c$ z%+U23>GC^LgLNbi=l4i?dTcC{HB8(WmBb&@4JeFF7!76q5ljo>qqqkjjD}ptIXjeg z!**M0M=Oo9x8sEB<-?1F0CVg@rw5NzuTD^aAb;C$bE+?y^eC53}q$J$>0mKp<87% zeN|dDn}rmwBj{e$wy9tnA4UrtYxbln%cc#bX7h&ql*VLZjG`*S6=U;^+COGU;|Bq^ z>cuIRbKcXOTL&?w$+inUxzFI;QqttRRkU^*#kbQNcS&K^N6qqju1Y=_GVCipK`7yS zB%9IOSsa_fY|%(O7^2@r_b_|qzF+Rt`$dEdURoAwmmLKU;nk?5u4x`TLRa>~!QXfL zoochYpM=vokPysk`m}#5?aEX|xeu~_FZ#12dU2(8a@j0W1FqeY&rBBY&Li7{VTfo4 zN(g&{Ja;+qQ-|~hE@2~NFLnR^HfMwazI=>wl~Lw5Ig8|aLOaVls=x{L9WFs4m*Y1^ zX9XU=J5De`4(UA#U5XFCT9&|q-55-C-~QAm=4rVzGz?JFFy!y2V3{R?ZO%X_P7Ey^ zeX)l2;Y4I(GIM7anK!OFcdlfeSs)}rcmEGw08T)>mbN0=sO z5kX_*bqL;5r+FqacWGd@TH1T|IMAIjsk!G*VV!SK) zqn7YRxPJS70=TRQOu*}x0PkAE?3Tp)mt?PzRmpb+1}#_bGSPs44L?3LEw{P02zULl z-4O8Nwby~%=Siz^sy_IQ$9ymx^`>$UqIS~c_`Z@GmHK^K6dayJVYga39%-oDyMl4- zn5}|wqjRqwwrFQ3Diy%Cw>%5s@^@S3Z>kdW@RgN{kCAqmA+n0M#&PCc7Rd^+F-vqM_2W>b8AG~k za!e3ZtyP#q%N(6@%Hz+=?e*0Ze8sLRYZxM9^xV449h>0SKLZVYw(P6xzU>hY{y*8H z=zpiS`)iN?mgJZ#tbKP|gj09Jfy0T5iseYn>0|ndr#C>8SViFL(nf;}&z~em(T2;J zRhQsEd7RRmN-`)EWqKXM9!HzGt043ZZIjd8s=7NmKb^BZZEBrdd4Ik`_Fy%|xrFjV zkW*3ce4Xit5y?sFfsfC*5nEH*Rt(978ARfrqDf8lj9|gNFRO8LGg5gr^L1%dzi>CV zl-wBZsFFgNiGf)mW42k^r|%fH8ZkGvnJ!^!64skSR2Kb#X;F5t9JWA_lC!4|?5?ZhVkDBMoODSuc zG?FklO1oNhxPL7v_X48YtT>ZjRdK+}M!`?*zsR-ssoVCDb`+B}@zkF)Q10bxeU`Mj z57WF#;n`6?$Fd5Dqj~6#JBS!n%`B8A*+-`#}tzpGWnyQGQGaJa9 z%fI2b^~@!nn&j5NFO4hY?_!P+Y5Za;|Mx)GLMAJR<9;o<`Jb(-V#u?*O!s29P?|3< zje^L>$pf-RgEr;JZu)|zHxgjSc@HGqYT6XkIy9>j*9Ghk;pL}Y6&MlyGB9kPU%(c&J)~jqvj|k49m`6l#LsbLL z4&6=c66te7O#zdTWWH#8X5mtHD!8#xf9ibi1o<2ybi(8|c;ipGXVm@*=Rag-6AH>X zduz*tVzl0Met*<(5^g0wQ}}#jsYgpYrP;a0-b2J{ zcltF*M#{W)&>%i;Ba$l6-u?D8eBq;9>w+7IX#of&>L~Zgo!t7#Q_z=KSjmwu3#ED5$A%-+%Co-9Ac! z4d|B95-H6$TRUfSAN^wZr$0~^LLnI%TMj(4Q6)LDx!r_rLwMdlQIz6I zh%Ui?$l3J;2gYdcwQ!p?tyE}L%ZwCMI-mq_Cj#ZwOU;2N#i$sOdoEdg=G= zX)SP*)NQ`L)G?)D@wv_FlbcgrdF$Xc+=_gJj%wwRW-1ZFAkAJw`IGl1jMK<&6kGiV z2-70KT@zZ`NL@DN6rJ5obIE{f%6_5F#(d8bi_~8x79BT5UbD0#xq=REOhoktq_ec) zk$H-R`N8_Fns3U-H&G5OSKYh|n6im_3$8jxC|8S3e4k)ChhJr#VUME+C60^WnhKna z2~ED8g zL^gwA2O#F(W(rAkq@qpjVr53pyI@ax|Fhy%SWWX>?_1V>|8bR%-2d;=;os@|yHN^L z2<~%f?({&)f;8$bW{(#~Fp1jQg*4Wd3X;@oB+6ivz$SO;R&^8aBF(ep9MNXG2RIB8 zmF$=1HZQVlOWYX1FImN#e4i{W*M|l_0_(&gcXv0pu4?z9M(?k?dzK$GdmFSUHE6y8 z#5eig8>A6lR3b6G5Py_kY_eg^JzU@h+~8L5>;T`t(*&LAa^?I(4fZ_$@!)MuM8q2NOTvWO{PYP=##a52y+m)>@x; zu5AgGf&@2J_D}9=()iv!;$X#=I!nU_WpD`uKzMV?e<9`NRN7%MOL zon#p1oPui)+?(_*YAe}bWGcvr({sesl&R+T6B_g7eR8$@l@vFa&*Bb9s`F5&o;nW| z>Vb=tq#BKYROvwdH02xeENU!Q3~qajm?f4bH@7?nAe8ND|7b=Zl`ffjhU-H8R*bA% zJ&-cm*VHYhcjF^JKo&T-Qp(>V#+*D|YgE{&EyW2|k8)o>#m+|qbodQSLe)GAo z-=9(3T@I(Q2I`40pL%vu}TcR#&*(}H-kf^u~4a%44=ygTh1{k zmCQ}4t;;S~k-tli@EjL088vu|42Eq1lHDWcWc&5T4%E#_F__oV1cISUtH2tU_T{Ql zG5Y?bPBtCZ*wd{S+0b@+v_I${t}Pp7U41eY>^`63jGq3DR!Y()_aO%g8G>+_2)Af4 zHt+@r()xHI&P1F8QsDlq)H{H4f^>j46m-OtFOC|ZNxwih?QbaR4=19wI**r?Ynn?$!g$<+K= zpfQ_Z_5tncN^UlkqS3QWXhSzxrYJppc1nlK<`$IUwdWoen3?_#Qgn@XCd(7 zRgr|!bgj&M&mSp7T+(w|sn^QVu9OF-W8nHH)wi8|xG_E8JnJGolvB?XzHnGwttSs+liXN6q}4)=l&1){=x< zQio`?=0qEd;jM~pQcO76g3KnqKVw>SQt|3zS|3*j?*QzxJe+d%vd5RvZ3PPC0@KE$`+pAf&C$FcssaAHouCJprYk&?v zSc4FJ)P4wM_u24v57oVXw}_xfu**R>K5oA^c+QaRT%YSCeJgM{l#zwyDB>LNNG?5) zc?b*X`Uow68{lsJIp5>4Lj~oUImnGA{M6z!pdg#7WcAv-76cy!D$qfkzP z@&7WW=`02d%TkA*ZdVKksm^S3mi5;x@g6sXzodIo4|jnBvTC)Y%YH!u3YVo`Dt{WJ zUu3A~@E@hi??Jwl!A$~2911z0&d*q$c(`>094%Q)%8yf3r%{|}D?t@bP#H~_{mXq7 z>*#`)qbi=I*^HCLIpy9_P*NKQ5IHkMaT4_DVjb?G=h|8`!^~L0FdfLqWr$G8^_N8Y zLWPdP)TZKj%Rx-MqtYVU=g8-z*lW+c>Xw;AbGCmPVUJqu(rz{uTFI4-aZ9#pGA%ci ztr_{8*0|5!k2h_1$c_f`2sM}=QPc^^nofMuu(3pJw&?zcHyjfCqR4@9N+PF>(tvvg- zx@M(sio~?+mHJJQfHp(7H&{0Xn4|PM;6$)IZSM_eqn>QVdICLnpBU$>6dn5Yqg5y- zE~xD}fR%SZf?s)i8l%!V9S2F+5MoY#@nHX0(4L|UeeGlZlD|D8Y<8u3aMs9I@vqXD zMMoUv)GpWxrvqd4g9C91J$^d)QH}5tG;-NXH*x*?GM$eEy0}ktfkt?Sm?m^7rj_9a zga3f+_6R4QxhcTvNYDX#V-FEz6E+0jCHoE##~8wWBLWr5qo??eUQGU&2IBj3gL8-yh0PeW)r?@LElyb z?3-ZQEeN0-8!9ZkNKg zZY&e%!(T8cQo@c~E{a-7avXrk#bJr9G)K_EQ=BI%*t28|)!0w(w}gF+CFK{FlEdAw z&Z4_al;%$u0;DI>3EFo&2`yVLz{Pwp?2uaGMCm|5NPz!r5FT1d`aN^S(%r_#TFXqi zXZibp;=-Yln2O^L`)Itsn?t0=FJB&M*c2zXHTkeU<`f)Bde3f^+YX{q!V_X6I$ z-imAOad6BaGNG}LJ-Wxc?$1O)gh8aF8mdav z+a`ozGps_^CA7S#O(dv@2><~sws8^Awn1mi{q`IA4wNKXGyN5t3ImYF-)Mal%q^CX z={v6f7e(U#rbrm-k$)Zo|BE8!AF2awSJ=6G`{Qz2fKJd6Ip4SSV*klIP<9W{D5*H2 zSk%nY9oA_JT2P{ganvBC1Ma8AzC14C>nI+xe#YmSbNQx7(zT7q$r|qZ)^c;<*tbCv z3k%qC*78Rc_0@`oV^x|1s--sWYo{2X4pQzu^wH~Z#x#x3 zm3sBY7pn3BxOIqP4I!dxnaI7Vc9L$Dj}MG^mD>i^)P7#-a>PrNnH#S=a(NzF^k=`# zpV74bBSTfv*o_B#$qmGGbTemzuP&u4N~>v;Qd|Q@ge++-Q)D#6Gnd2G?R2L0WU;DS zO9o}>h~r860Z`}jqe&F=;%r>bY}lbP%_UdD(wQcen^I_?wkj_I0NMFE7XtaGtwqW5 zfB`ZKZGk?NfMQ_hm3L6_6*hj5hjni5(}mj5Sdm;Yqcu|3SFJi(x4O|xRfu#w^y(=N zBX@qX7X;Kt$P6eTFx+k4axQHD?}r@};gXADI@}rWg&|8ftTS#rX_zrEy{PyH7`j)0 z_?44XcjvtBd>RhF5pew#o}3K4OO{Y)Mk2p<2i(N|M0BD=HYkc|8x6JofLpMqlB-(S zKyZ(Jxy*s#7MU~gGXNX}TvJa!8E^@8g#pGe#uYWQkJMBfBjyY??1>Blu36p{C>%Ks zxIk~Z2{-4+ydh3QU<@Jv{go}aH{$(j(c;^Iz4F(efL$ldGDH69{YL=n%#+C#iRVN@ zM^rfEqf)6NlB2FE`8X=X5x%>`QH?p2_^+r)wOu|`kfTH1Tp~_4-mwq;w*ekHyX8L~ zLCv_>S4_taT<0hS-5wC;=$W`r>boSDox@+>AG%1+P6Fu>jtnid-4wXy% z-ftTjX&em!T4LDme8hy3r)(DE@eJHjL})-yE&&mEamd4~OKG6C$M-dF!46zLz6 z`FAN($y5Q656)A788a#;Bm^&O8-P#kh969rR$Fx7Cxx=wtDb65O-3Q@=P=5rlwze&)av zq)R#n@!A8PGS#B#WXoQg{YF*fs+b}dB2VXZd@j;Ln>*$w&KEf7Y0kENc_`keol^h6H!r!u<{KlO2+2{* z@1}Gc!S~cksVGvBUOy5^WH%KY9HG7M{DYCut5livld1vXL(a1nQOD2v?(6L*4{ZxZ zat<<)^K2V*#cJUak^|e3;Lm=sk~D{}H!gIXE)d{vSOaZ^2q~7oU-vki$|+v{#Yo1O z#s2uU_)W-@Z5?ovOzghCld+{~-xx`G^6{`LuMfXwbDmEC`X7ws_l=Qk2mfNErYSlu zrK?`EaMXMd?@=vnlr9@{cF&xydDMSlBo(n|$VQdV-fPjjrMgT>ehSlpq& zRBM#NA}p?i@#F{VKpblw=d(-5fK4AgOkoylV>hp|PYk4|n}g5lHFFbO?Z{Qs%pRse z0|`@(kLYVUVuHxMV=?^XAmAITnJVyhQpT9#FTG&1grqDo0`Yp!JZI8{!3GCQMzvbxK+z$$pTbGC{V z)vY8cu=rgKGwct$DK)!w1eJjf`sx;a$Ir2ru5PFcYjh1FgEw6IAe$#4b(T`P z1()<0K2~tEEpW3eWqnp(udqL+9llHd4B24vZFl>hp-BIG?eOpPtt_E{`MnbeMXVgu z{3r7e>~{xoNFZ;;T@$q*05GO+4_d(aew_M%Y6bO0oM*{)!hVdvFR_C-3Hh%5I4sS? z0?CyF0Xs1Yr58CdH>bhVP%O1o3aO{Z`+EADcbFdQ^DGz5#PdW_qVr*Hh$_vh^_kU1u$NW`ZO&=!EQ}b`upuYYJ6K#Jv4+aHQC`~ zU7dX?vo1fci`Jxhm?37v27mBQ5xqpHBr~0qUhp4_$UAXU;zh;KiHf3=B>nFbsV&t7 zxD>>OD$1PSy+v>uU6zzXC~IkZ*MP)@x`>RXnFryFY^IjwNV>Yiy2MJ&lV!hKM=49$ z#yzW_zhAv1l$9Gq>eJ+b75XLbofh})zk{#n4q`3H##x3{E;G>M+5wm^(9GyJ>E9X5yWvrCgy^)G#_zL2 zUDiC*>ZO(p_OrE9n4|i`d}U>SteJfzh1K7!_(-Hf1_`dzFeep@wr%#=k6F?an=-T(5xtJvLAC0{|`s1JC3(O z$w!FFqX}_GxZFz%@WM*A34-nSK^Uz_2-*&vjG$!avwb+`jAd#m8v$@ zKBRr84~|`e>HM8T-ydvW@F8>zNVHdb6Ix&VF+GEb8DNd;yKEow2G&NfA67$2&^-f) zJ2lT5hKJ`BRPzk{I%sVp?-3z)1O6+Vh8Eu|>d(lLrSnhC9%52pTg{=ffFN@fIN}6N zOo0e}JIjpgH#$DIh=O+d%gT&<<*|dry@5HML-#~(JYPbumS`WA%o}Pzd{z(R(NIvZ zfh>aSfjxY?{O3Y{6+7%P7g94SThet7mu4)h#3lO${d25?inwI3VG^%EpXWwI`;lG> zH#WG;pZJPGsGY}GI~cC*y1=j&*GKF%Tc0#FR_ayp7a#}+HMp@3+XF+TeGfU^gfm;X zfN9A?z*?!{?)Ic6QybP{4NvKFV2kt5xl$POlcoWurthMRUhDxwlPHWHh6VA?0!Td0Dhi>G>jA zbGZRZl|c!OUpG;!>b(^H>b6KlQJ4Ij2`1^fX~)+vzdV27_5@D3q|Tz__9V91BGO=|%;LZ?EGva_ zSstxeSb;%2xO*pVbMU=OAgh$Elg>HY+^I+@TV5#0X0t;C#u3TEUxp)*&1$mD-Z0Jq zMN*0yRY?NXT?efR)gjF2$g+x?tjsVNGy*Dl$x@mSa**&=)@6L=4<`ncWfEy^U?p^| z-g4udZ{c9KG!k>~Od1djGZW)kK2aJv4)b&^Xpvt1n8fdv$^px6@?Rthl~28kNn&Px z$+VIh**a;5(Hqb7=aS5aa}RxBcy@8WAk`EZP?Jfd!c9)YZ&td~N*9;ZSoj2TyFatl zmmBy^W;fFk98VTI)YKd-HpmtQHN}fA=jz{77cIp@v&(*!B`T>i#7VYZTr;{~Xzsb% zBCA#XQqChZk64o}S-PiXHegR0B6Yk`zpt?MR767>X5Qa58D3)jrOO!xZdSLXlg#>y zAAWrey)B(}D#m>B1R8GPYc@-@P%r%{%VZ-&`LOIj8Tul@5rgmPSgv306)nVX6Xewr zQ7ngzFB=x$fww4iSL94uoy%8H6)y`1#|<(G$2D?BVpU?9&%n=UBpYu$yH@Da?^j$Q z7pIdx%XZbHF3nB&BDVu#wJLZff}8TT`%e!YpDWmF?0_c=tep7|)@=<|J`Ufg0v-H& z0$M2){+Dud`SqXABo7ra_ia{St9)_T1NhmGFc)GpS$%88&+u zc8xUoZa)=ud`|HajECVygXsA4YY2}-7>Ky4=RfL65^{rNgFLvP@?|l;_eU(W-`{l~lZ&D-8z;|_(SK}k4|>i57uxGP(@7>5hzp+la_+rx|HgWowBfq zFe-rzjjH5i|s6s&I~%I_9Bg6~U{P*O zdMc~Z8eL1;VH4b*I$2zFe_cIR{wr-iwK|7C_N@Jy-_jm@nb4<;CsZdkS1(F8C@F%F zc`$BMUaE{cyhf&OyPes?nO?}?R`nW#W|=ROIUx|BvgW}LW``^qymC)8yreoE|CTnY zg#Znz<1o^jESkNFRG86|U*|5$L)|c;aF9kjb8&3oF1!xvCOs5WG>AYtqNt{xxqt;4 zjHRQl!9_G;AQx=|i7#myMjEsn{Up@cq&=38>2mok0=gBYEsI51s$$y%cgq^RnACM# z(nT62=F^KkPZv~Y>5%5Dwko`!*sLMG0<^oO!ID!*Q5TxdM`fzIWu_J)Bhu@ecWEFO zWdO=WrI=c@+T>ay(==11ywt#f;wv3j`?TYHVM0LZX|DQ85z}62!xjup{hbQtboknc zontKmwwl4Zcc7UFEC-6kG~IIrxpufOc9jgcKf*EpFJGr~nQeBfk`^(krPs5#9w^3M zPoLcG&^@TurHoHlzgM2syER6OyG_JOOqMZC=l8PQ%q9uKV;n9sRsr0f6vvi1I?1Ad zlVYzPF*D$SMq#*>?WPZa^m@Jn%LC6MHMOHpF`IMRLwp$Vi~=tpLN8ICW3cxz7F0d? zsKEf^Yp796(c#NjH;lF2`1!l7FR>-7-8YCLxJyv03Shz0X_?7r26FpA_0LX5cqZIZD z?-DJtpoNY5zKxmR8uNwRxh5g?@@c3_~t+eqiZKQ8$i)m2e zp(uU=@mYi;$jatsMyVUh!h!0!?Py^nBNR!QrH$Ngg5Cgh#Gucj(|ixP8oMb7O=Yf( zXzV=BsyCkY+Il%VJgUCp`B8y~D1b&O7huC8JkAAfj&LdA(gR2Lg3r=wMHg|7MR|qX zT5(MLqI8o|t{jBlR-NcDSSK}whl4aiAG7E%IYt*jvPM$?0hQZvlhhIH#F%-tnn=I` zo1mY{0Tfi002x-w=01&97uA3vpua^A-Ki)$#_W9&RPepfvbD;dK}Xq)Nm@Idqf9PV zB1n$HK6N21cf2eQ$Cl0d4^@5~i^C#wrbAQ0>a0W|`xbao9GW?Fq4o#jl$8!z9q1Z5 zh4K`+N*q!#m42u~EaIqQF@11+sjw~K{=H=LL|Z^Gls~s_|Il@Sl{2OeC5UauF?s9a%s9L!n! z`v8NWgU(0H#-_>FG&1|L-9^!7A>tZ~g~CC4+TDcY=fP_nA}s68>l|=3qhzkc2R^mApSX`yg8(x5#~cT#8bnZ+}7jJqBlO0F8W-8b?U52WL$0~sr+UqZ40 z*T=sSVEgrhOa%jSRVyUq8|cC$k{1ODuPPh&Nn{7LAxim)G~ zIRrLpTNhjtCXuiLG&<@FMpvb8gm?STLL+m)-23vpQ+Zt7-&Ve2Tx z*y!QlD*F}q2h_ZBiVa8kU5y(eqq1?2U5OgK)J;I8NFZkjU0 zUjosXP!%ruqgMJX8nR7?DnJKP7^Pyoa@4KXidHVunuJ#&p(@M9<%cSHleJ`h6*=G$}D1ZEdK<2hc+ehZE(5 zS+}G8@=Jc2E900!Q9%aO8mj9m)s)exqQ*5mWrSw}sep_Ll>0&R2`&Z5mQ>BkFu}q4 zyKI>Uy(;C}hm=Zv+BoL85#Un>)+4GB{;?J{kb>hF0jns54f==zxBxjX@twy3b7zcC zV--is@DLQ1Qk|PYdsJbP&TIahQWoVsP0=M=RvprH3BC8!qOb=;VP}dAWfuW zK!Z?ZtkgsRn?~JDWvZ_l)6qDA1wGM1X#-Z^j1v*brFpCv!2o67}dF|hG5R4 zJsOB^ZQ^FX49LeG%1!IbG%7dqxIdSI1Xi}cx7X^|736!_&YyL^1gVn##g=wBtYTw2 zyI&STcKogwLe5Sv26|guONp|cAEAXcdiq78)D+x zZt3K`vW~jYMH2oyApFkAZF!Nt5Qf0Z`XC$StWv!*b%G_%*$xFXnSX3Wjv>U1mvzjj zvoZYvu=N4_*@nY^fUXBQ{6426t_3;VXHxQYtK#BH8`Ry8F8TW1`Mo&)PEp8q_BOj_ zeAu!vPJbF1Y)3g+iZoGOgBq9_*cnDIV7+M13?cfh4D!)=m`)n{%|G`Un~2;WFmA(Y zQHgpxsk?X%Ed2=2+!LLU-P)QztZb^q)tf*hFnhbwBFOvBqu|{x zk>JxdZXAr!E=t=kO)k`@S|}3idJ2-HDORi3M7MDypxq=hA>KIC(7eDMywF7SwN?6K zg5-I0lw*=I8Rf;p{PuzE1%s?}hrH?9`l{>TQ;e2R9_hQIpTG6Ni!;5U=J<<&cek{1 z+ZLhPK=_YlBPdTX{3ZOA;s|@cG6YyyYU-?zEj`jP0Q>fp<&t`PqL}n-HoZ58O+|hS z$uq52mF!`!=CTGQzpF|dz2dTVL^%m*UvV*g`(I^BU(uF=A z44->Wvp#BPWD&%XYNY{>Dqpg~c`SM7=?o){@MNHCB1b;7T_^VD?E90@^>M{5?JrH1 zl|eG)^_g#9>PgRqwG5cfn$7tcla`7;NM4$aiI+C|&eRR1?fX723)ktDth-8=LQcan z#_*9014uFa)EO4Ew4F0ubIe_BJdhxzGTp{+Yam-k4KFRugSn4)=9ji@wFx4p%sn4^ zS&|>XL3~*(;XA{>yTq^(8z~QM8mx#oR85H#x-$V~8{et{wBO(28O`wS3!wT4?JP0mxpJ|KL6xMs5e-{$H-xDV|#L05` zG(#Y|>CD}=8MT4kfE6B1a_TW4bn={|T*C)&*}_^J9$jwV_FQ5j4w#vra{`Ko*vO2) zco&^%IodE;u{SJIRYiY#hJi8KnH}H*%e1H<#@eIhp%f?PxEsz%gqsU|Pq&VQkPh@f z2N{kMV73Q&6rH+b&XYSvWN0{Q@VcP$(=XAYkY_>EK)y#;TT7vZf|ghmgy;#33XLCo zwI<#a3dH%jVJ4{ZItALfCzF};$J6pP(Rs}d@N*$FO`inLWK$y}GnmLnE};S@PC&2) zbtZIOZmJ!6$~=9kmY%%0{=hU;P>gRLYGrtmVL#zDnSX7j*4O9_X_l$&74th3PGe)0 z;7p73Q-(`RYOJh&Kce7mXeL)dZ{u9sibX+^Wq;?u>)W=M#`vt83u85OwHfKMx(xN7 zpe+;ErX`8-=EhBRT#d8xhbNPt7M3~8BSvae{YwxHz0B*8Tr~vB7WEX$mh}#=vLlS? z)Pupwf{^l()#Jx>ij;b?P8Re=<^m15O-=-H)zI@n?hWx47r!lm9Jv?r6IWM7ldS7C zgNU;GrfM7I?pFgxZsEb1B=1b}EtPwPmsim&sr*Za$wdV`s0Bd!%$t~{F|GS~b~vJ$ zdzVP+;E%I*KRe0Seb_6S!Ln`w?@hkHThX$vQYu$Wig>qZMZJ|7JG~y!(lUs7-Y7q1 zddX;qvjM_QYXW6;)ncE@el}wLo;GBy*wo&FIoc2lI2y62kHU5|Rf?-vZrXlli+S9L zt%(`-WvESV#e=FJKlU7WU|ifXSA=6@2?hURRX^_zsLT-re_OK5G0Z7xa!S`Y?+zF7 z6dW4bm)2I_j#U%2sjXWZ8e|TnD$+C599={Tcm;-^b=@BY2wtZRv>=?xxGu6qT0V>#| zZ%5OZWph}H@zfe3VVv{}@67u+aZG16c7swqNW@(FU%W8%NEERXRNN)8>dk;%DF86c zZEtJO7e93gDFi}AT!~Q9FDvj~pkcxeD=kf+DhhN9c@#-uCT7@DqS7ebaE_|8{t$gY ze{W?hoja1|wmb|FYrxSmXvFf01yv&>IjX8IuQZ%tfN2ONEoJNDvTb3$4VXNr7B({E z;Jz#Ic`p;m-vA3A!n6A9cPMfLvYI+VwyEjBt?)q#ML<@q0VM8?ORtEr!2~1Fz($4j(6=S`bobM zn%~t{D8Z(2m`F2p$tTmo{dgV_|5iKGzW)Gg2EQ5Gt>4my<3|A>iI9{}uhw%>uN#_-yG@Qa^T@q+ zR#b6hXIV4&8duLa1G!n=7|Wh}{oaS3hc^(8(v`-wCne|5+6UA)lhUWXBz46fKkqe+ zZQF|LfoLTc1Sj1cu=h3a_L@0`9~DrVF@D6bD3?E!pBYWUoqWtWS|G!l1jO|=okXec z+nW80YiOI1@0DpG!qs~=MbEvoi;aRbA+r`4>k_5;0dyoPGxP@6!`3f%Ch#7QU@Ydx~@WX#G>w7bEwoq%?y z%_i*Tg0w6@ycsBS+r1FkLJ&@S#hnacOa3B#88YJ5rq=Oul_@@`}TP-#GTsn<(5JA8xZp?!> zF#J1(s9Sj_)O#9)W(Tr=v+FCS3#bO?AnMHIj+|x#8{`s)@5?&t+U^4_0^bS*aYK!J zE?lD~CDcu!i^3y6jyHPPB4_)yAjl??j+q`M)Ll`N>;}~?jGZMal(7v4&_j31<}@O*5AVi+p5ZPS8T`dGj#6t^6wC-LBER334bqmcDsy zbDD-QWOSwdM)lri9OiL4&!#_zdsU$QN@;UYXUKHNw$F1Nrf+!VGv)_w^EknDm9$Oh zMG7jKxsQ2RQk52-6?3fGra!W8pO+KnJx*BD!Jk=TWw<(lyB~6TNla_t?pi6bFIHd% zC;91TXh0FKG(rOWnD6%H_?M%eFn=>WU;hPJ( zB(p}>q1iJ=A<)$|n8Pf0PYlkF5_WkAnFL`IYIhQLpHy7hbQs7N+f1}xobmCt`dN`; zf_n>j0E<4!exGQ_&RYqc-J{+A@ecC4wPzKx_Kgj~q+WzcDZdH;e*ML&)@PpVz!5i4Cyc@!MLC2rw;ZJJS zSD51;*cwi*K9E!ETK*42X2GunXqI)0gio0Cith2l{iH9lHE**(R}TPNop&rn^wLi=-bI}-A#=Mqd9 z;;xD>y3!bk6JiE_t=+vUb150o31IB7fT-GRJdh{N1a1fWjTm#_V*bJJ-<@+0OJynfIc+kS={k6yLn*lWH;eIl2{CJ_Z1k@ zS?XQuU-HnK)N5wU8=vQtDxtI~^F1r?H&}xiulaw?r9pbSlnD^qCAGNY%LHmF=8b{$ z119VFTRHeL5<=QVRLyK1gZM{UBn0Eo&R+K^=95k^-R8`V1T#cz+EmSg@(b&zTHgEL z)t=K+X#^WK>#cOE3cHjKKd_;;^>=S?wHW#9!Azgf!b|hHdi+!|%Y0Ac<5U_l&9`G_ zrZ6@j6iEm_0yDIl*rKd0+*8LM(w1j)8>2-g#Oi|=?6xf1`dPO{)2cw=_SSwHc^&KX zqfDBVSoId^2xsp;!v~_wj_Y;2vcysjm)V~!elBlgtwpS1<^>P5fKmoqc$EwwnhuG| z0PQzgKR%>FwJrTovJGv%T^(svz_d?Pb3r-!0L?wMj4HzYr`SW*ug$r^wLBoud945M2RKk| zDaM+mwd)fTkuhQIL5KZUgC(co5}-qhGZChuiw?(T6Fyl(l0aKjXul_d`1cqOBAo)Q z){Sl1-q9f4>XDMhl7G|Q*^~%&%E|HMoi>-gvMWwY5PQp9n>J(Ejxfmbq-W|4-Co_IPphy&96OVR=r9~tU3?Dzj4F9 z!8q4kIV9oZ+t5|Pgu3eV;;obK4XHhQA2s>m+OHfJ(eSBIGUIGnqM;H_|KdY-L%*l{ zEGWJ3v%3F3)(ypC*=2M9@*TIve?U6>0`z8t1i8 zK%l~vTT}8BYcvn(NQL&~v$pKxcCWpVi>ViI^CN;8CxCp&h?^226@DhrQD}|VKBerC zrE%lEsO&}RGOIH%8Lsn)LkU}8=WusMDzbux(oaf@ISS%`T&mVsR+ z2)s?4liEBmZSzwL&Vet_ge!XK40zDgBJX)k$&#kM?lR+z&aI6?+BtI10hXx$O~A>? z_2~S3+{9Q%sG&RR*#(i@6PvEC+u!LCsIiAe?8kKckEsn{N|WNFO%#J^7ddT8lx}?* ztJP8Q{pP;0hZqf2`M%~@4-M3|w`&aior$xKKTf=%yiUR!Z+W`Utw- zsCOAr2Onz(kMl_Yw+RbwX<)`~k$(KWRB4iML4O#Mx>Tb5aI^P&6`j1nK?oQJ%O5S~ zvgTUW&qfaA`4UNE^3Ki%^= z_xF%Qhcfu-a$X*;G1!?$KGTWWN~=+@lud*rLUOr7p1}t{n7w zM~uC@R%CLViA;bmRH2G+8yiubtnmK+9)_^6#4l)nMe1#36B_c>Le8&G5KLoo$QZsH zoj&}(XnV`xMz>}=cxKGZ%*@Qp_L!NOnVA{J%*?jT%sggh<}oufJ3i;VH(%vTa#Ho) zMD<9eA1YNnQup3#_3mEFM?peE!p#Vf|7?d9fxrh`3}*tHYT|li^5A!2B0J3HnD;vk z48(+vobk2Wte!4%fKze8pOQ5tMp6*VmhFdq!0O2tI!>WNPnJX%^%k7D@w32?r%_H! zPujW*EjhLw#4MbJ6sf7qH^M8dK{bwR7e{Nh;z4JBhEkUlxAMVeHz9BvC#)Ga_{k)h zTg?Idof-L%Z5)A%R;dAvautf?9QSBRMi)gQe1Hvw;h+J|m~6BlPDd>onI8~_CbOm3 z5>^x|Dj*Dr*=laAbQcwRS0R`=HEnXSr?cf;ke?e)K~oXHNJ2ByGG`;>&N{xc+89}! zFhh{*go-(<9u5a+=>)Auex^s9olwLd!vS>R z(z>Lu=$z9p-0RlEHpkL+UyT%VS1ENF4P!Y^h9^CVCND~pOvk#p$z3Z zTp5AQZk6Des@u@S;a;Qab2-T?Y^YsCwdoJkD8~NZE+eFOs*lk$V$B5Q zk%3AdgvmF^2>|`NR)|C^C`JQzQ3jP>^2)c{>$O%j(^7Zb`7JI68%&9QyQ49QIPp^Y zZ&A>-^dOJnj?W)6Q5O>irIhX6KUfuT0hKDyIui)Pi5N(oI0~I2HEc6Oq_pMbI48KS zWoO8f5Ax$=%NH7<_x3txH!a`ZS^*R*M){t6;K+hq#2Ui|H>IupdbmlCZi@9h4$@B5 z7fc<4I!_5p@ER+Hkzu2k0Q6N{K$>(H|JsqKFK$CZIX{`-h#Bt!*H-1l@-OUf%h!cCPL$t zXUMkVgF zv}CNKyQk|r>GUAHdx(boq)=D6u8_#J$65vod5KZG0=95c!ch_ewpr3a2~TOc0_ZUk z2nU7fy_rrZ3}o6OE*w}eITEV&6w#DsoF!(Qg=U<&X5m}l0rAqv^Lx8u^G^sYJ{g#w ze%ODGO`?0^YiD4h9w?F(wfteTU&ad^PikA$Ro|4X%)-YY9XBjB1jIBYvSsd|GY&Tv z02EcT^Jnwx(pN6>E@jB_F-w68NB7{^r-=gB<1*Vrmaj+PlxtTWPwulkIx$n@tP(Vd z7Kx*sazDvT>s&NkG@6|G)K<)&Hbgm^znsNxx0`F>BKABnUHo7=4}@BFA66^vNI*=; z9T$?S`X=c6SMXRR5}1n&acn)PDsB-t%r~J=C>MRll1fXuz-~2BypIAz?5$4iz)tw- zbA()-;5?kI$>F97l6{aI#&z>doAJUYfarT8bCZ0rMkiczd%e(5(=P>*o;ByE!Q@$a z{a6kNTBhHSw2VJ6Y#8{0+Q)zAdcC2r8my??DlXgje4k3w&G&kP+25sd8+!wL+kC_1 zW%w=N{*>(h3^FPdWSkbN4tH05OFdY-5uUNBX*VVxVkQ|VnU}hoT6J+aRwrv`C`Gn< ze8qwuw)b9=;<~*lH?IlQTzmb7ekj{ApI>fVo#hnpkjLUp` zS*KV_o%Cw(14Omr@+G5;(wfo-hfY!P`L6uiN_G`mGS%?Ps!EsSy%vl4G;-pQ`y2nn9w zTE3EPIMR_(%tNoLj`lKPAY(78$nek3Jgc}K>lvGu%^WNm#brWfiB~;&0{!QcdwO|X zsWtmSiX}^N!@c`hl$OC1)Jm~=x4B_xqqQ&vw5G%|-nC6io+LzfZXV*zOf`9`!UTHV zgJ@fc-N=~BXtP7a4KMU}VQuf3<|a1!_F?Hzv@NP^ToX>$wf6j9c@4lgPlzOPk3INW z2y88tO4Bqrvot^*$q+!)SRrcW^s^G7!78Ykmd?Ss3owEztQAcTTZrXcT9)^IYczE0 zwprgMRAkL+9r6}VK-w$xuPRuub!uMt`%j>LH@@_UsrWwiVt)G)1+u+b)3>CTtc6Uo zfiY}i$#ibCO16bD_P+MU?@H10KwON#jFOz5Aq8Ip-@MRrn%&ZJ3&27|3b-O?BSu|( z(Y5&r?KJ$^0|Ir}f7AN>^E=(?-~?Ek0y!d{BY|KCMZvbBXkT$;NK8(2+{{(pjjs?U z45u_wqVN}4L?H?NdPOEd5E&sY6pqA`-)%0vh8w>AeJCmv=|S%CD{x{9kx4N<2JQI( zL`^2Mzr_&{+|t4ff?^e(i0+gh?CzFO(fc#ho&T3Pf&6MdvFKrLXK2^sVZJf=FM*kD zM8kgZ$o)igo+V3B64E582^L;1jhGUGS3g8Ud)X0%6wGwh!nZ#ZhRJYgYo0B>~;UfH-oH0y#+00^~>m3iJpC zdRTxSw?q$cV!#MFh@u>1Q9iPi5CypyMQXGHJrF>TRHBDEF#s|#V1*pSQ4Vrakb)fx z@C^sT@_UD&a_?nD@YVNZ-?050{Xc)yO}if#)urkuO+bq4oia zaXxb~KV!d^I!wO&L9$>v(WnynwfT}ChaA`&@`vEfcNK(~I@8&S5BS>$a_XV{T~rXm zOGv}ElHZ<_M)(ldWkceiJ)`=782~vX&ITU!E4^H7Uc5Rov!oS_F}nL(tZ#^l)0TteaH^YgSmoFD&(fo(e8oX#=lSL~NU% zBAV6H2CG(#ZAqUx%%3lH+ty49oZVJ0ay}vd`Q86$%fJ(P%)|{G|NSs9Ld=AwMQ1-b z4~rmH3(gsF1WPae?S+{(jNc36O)39Xm>T71lD`%HLW(tCa;t-_<4ZRkx|$-hnDXz7 zGauElR##v|Km2~VNel{LczN$)vFho7W2#);`iStTlaT#9qxNp zMuaoPa%b24k{WXaZ3S1_+Ug+pBGPzWwvl@3L-);*NR>0< zvJ(bndbxiFz|#R&i)JGsbes9v84o(aW}N-5GI)#;+MiS_S!$i&BUmiLVM}+`{TN91 z=OF-C0Ml9L2BrV@>q?@WO5xfhUj~r|Ly_Jq0hb^Qj|U1zbWrbq+N%qbC$dn=88al(xU*_M%WzU}^%6o~8v&HLT{5 zToz<8IUfPU63wlmxVtV}pn?a=eUVNtwh>FF>7iS=9Hz+7hc}sK5Jsf&o{)N|VbcQx zvr<*AvMb!;o<*tLwp)8KBdq;BtR3ho7DeFfJTyn&r~Td%C5ji}Wvs@MceJL((Sg({ zp;f9y;KMG!C9_rtKU_2-839+Z#lKpkAz7`QV(_hAc1ZV-m!FIU3E;cMILC5409XU4$~+R5qO8`LkR|B#aG&Lfhs3snEr zx|{TYz()R6nz?YYy({tDrDaJBU~A&+$Y|FFjJA(FSUC@hyWSesL~MUAeAmdt0Kjz% zaie5vMtXhA@LzNBH*U|1$okRhLW#W030)6^Zk|Ek)3hbU1(UpbTr)fAr|d$irRVA& zaeiUfx&c%*(AK=RVu#jc+x-Ye?+vV|;m;(0P7~~d&Bm$mkbB2UT_~Dc2DMJv8Ku>t z;eiDL{{7e*UogLXDIa!S6MGX>Up*3Do+y?R4reHfh1z}j>iquu zvt@%A|Dp5Rnlaq(Q(Lc&PhD_-bceb&8^wBF)gC;lU*X4i``-RAeA100?HyU%!?eJV z4y((-jIA86>!QQ(#o-D-aFg=bO)w& zAF_`L>OlY6OZZ9#`Em!zTEgW=;NT5K=GCk%Du5iQ?Wq*Hoe`#eQMn*h>lDn@x|mL| z-%4~el8o@a#(uLBYGN|BmWK$WUa3fo9nOWXEt&%`^~aUV?qr*el@yoAN+^b0Wc93I zta>=K{B`gE&E2BeHUc`<^5|SxZA61b_=83M<|#r=JUB1QOnKAUAY>~j^i#Yr$_v

        {)Uf|)2o$_SD63vO>>+!d(8Yw60>&(D?;RENROhb zQpBt0apc{c5J!~=X9*u?iQ`D_cYF^vgkJ)zGhdu9SILoDfRj?Kh4|2E>g@GLKRMkn zOPgOK`^C)!r3&DB$tOJX>xopwveHc0$>-1f$~s(g>6iVG6>Iwk z18ny^D%w*MX~B#1Yn&iR;D#*JbH}2wR0BczG`6h=rJI9Rxmk!xV0U^vpGK8xJ(1(W zKtIuTGr4;=G;ULD+Hq~C8H;Q+4pL&IaW{2i_12URBbmKzce&*n4)oiITuT7__ ztxH~Fh2Ng6SvK$Ke9WQoQrdy9nd|OH8*B2E;*hiIYsyybBf*QVFmosH#TlbwkyHQoMN`YK{MhB*>yJwD2;HlC0^YPgMaR z@HT|!uEse}Hjo%vW>bYjHU3-Dsq0wd+ zI~tni!;vZ~w-tudc6`a<95vZ`%8Lb$`0+xhZV#du$|f4^WH>@*%7j7+NKm{0$JP6LDzI0(|->4ZCm#6ccvWFJT{v9zzCO{K*RLJzel#dv?s zn4WDHrGb8VX7_wO1P-`{W4fK)%B|rlX zvfW6qbxX2unN{M@hCOYyIKsFqo6sFtWZmVn^gG|G1Cv;Vit^flTbAzFq(vi zily>OwYQr^j?&yR$A!IZhvlq}^x(znUZq;SkGm2#D9C|)a}%Mly3k=svaDIPaoBk( zJ-eKSVHzB?1dL^fa78)I%=QQM$(0*uLf*v;YTVh`qnbQwDw_kvExCq<6)hW^PlS^% zM#A&~T50mv;-<1~2-XL#o!N-;*of{;T6u^e!4M{zPYnC-8n2UH*517Leq zDQ0wExdTM+*v1Zet0#DWsqoELPrQq71~>};SkEU*2MQFi90?PjViOq~6d$#_$yUrX zDtpyiz`~355R=D*y5kW+eZyjWm$GqVk*?n~Qi&|e`X zt{>tfc+Y>qE%i3)l5&>{-Qq)fLjc9wrNbLWpRXSQwp8M{31`n)MwCgQiA@;*ozN&u zW3!_*{RI6h9G@4*dl9~dI2ymkp8xmZNd8aZ_*YOWI_Wz({wvG?Dt{c2l#xFcNmnLZ z)&wErB-XyENGsw~Qc58B%b7{8f-2_d$G0sCt%aFDMNSza zl#pm9YErdKWBcd<;s}bY{)X^d&e>FbLzRKdXlUA_mN4oFcNic}T7qKz>JR}KA;pJ zi8^Ahar$cQ3_`LFofu1`A*Z&JTQYF+A#| z+;e2(;4$K|0ZwCJ-|(LRWRYLdYdEsi;Vf~~5aqF%nmS4Dre02QtjkrCK{lGIc3Xrb zf(xT*$_eO`Vd3PGVk$D~sQaU(ibtJQhaL*dWC`_+3cn-;37Cf_IZ@^)$(K>^tT_sK zCAsb@w9EJQ)e|I_o0FFGHzl{f2KE*;a75O&eHu4^C`e}~N29aVz*U#1(bt5Hfr4Iz z`FB!-szcX)S*IIb1Meh0y_>7n8f__e4E8+Eu^bi34xEB+`pMN=ZGqo_s>sR7GwT^F zbhAgdi{z8yt@te0m5dq{5#Ba68hDgGOpiR57gGjns5^Lq>_nVxv^!r#+Jz%GP%oB} z9HH6^HB%Q`R|T|@O0aOaiU|06wKd{*NbRG4fHB`!fQvEvtQ4mdtwYJtofJ}Q@4B32 zU8d3(QA?^QkjPg`geTruO5_AIW%JGACVaztk%jG#QB#+ zi9_91aU2q`#l9KTw~cJwl_6gjCx-hr`t65JrYn+bZhtSH4mM-N4qN6HJMhWWwV1?fR87@PwB$2xwOg zB7iq^%3`d#wm#JE)>=%tgJ>UOEL&+6e!g zwb6lc2$C_K*}=Brj3M0SFg?mU5G561Fuj>EVmgi zvAn!C0G*K)XTZ7Jd=`Xq5-fif#ClaV>vT5z&S!QhpZItQbe>Ch2~F1!^$6$Xj&~XX_x;HJK-KIOUZE$CB2%$G|k-zbPX-9Ft9F*0CZu6^o`u<^k(@2mQLE$aTGO zJ&@w1=T(N+g=gO3iRZ!m@~<=OR=U07Us;gxm4hZpw>`y!aC=^g3gfV5!+JPghp ziI33}f&%^&BFDl>>d&e*+;1PC*PDG$h(wS2mTV=n!@%Uo0gjxii z1^Oldw`Uu4?CP=iVRwB_1P#j5D+PH)|=$#^lf7;FisUG7&T=!8UMs(az2&?u;<^OUv3JfT zzKhcAeJuGUcKyr$_usSc;cp&Li6Gy;JwpG}N-y?LEB*fgc>MqH20&5rFZ1mWRu=<< zrUq$A3P6WMo=hygmU&nZwOs5EY)lcm^_KGfr1Pk^t?T+&{v`eYE?+QqJAv^waba+5 z{Lp)DmxGMw!TKEEj!*C{*b`RD79|mk6dJ8s{jIWKOH>ycEmOVtZL7nd9q=~fJN~a* zNpxcBxjWt=5=>!%6$3TLZw&dHhV(qnKjFu+@RMb4O6U@*jzafJofGMLvw!}uj>$4% zg;oermK7=BP6$<`2K^w9Hr@#)lqLyw!_gJF;4c***H$1xY45rUoxQ(dR*Wk);FCqf zFtv_@#fzA^z$Rr_PPN{-H=F(GY5!!>-25jWbCBNz`c&pU1%u}tPn@qn(i2lAvka^U zA5}eD4#>Dz<{4TNX+0a<@g{U)bHhD%vE%eN1adIx#2Of-tk*OBw9v|jWvA7smS*_<3auZ{GzKO@$wa&uB7M1+;$JJ2(iae^J zzar0n%ap*M(jVB>2iagzTu!L}yF-oXL)4#)G_uQ>9Nn((ZjoT9m@UTn(QBX=YSVU0 z-A(>DK<&^{^c8ngPh1y++%Ow~)CnuRLIqd=`58ks%L(N*-oT3y#eCZP0;LYx1pi@~ zCw$Vvm6Y!>-q|82+~4mF(D$LE$r9w%!{#JHdwkNq_BMm;!+_DL7k{aBxlwvlTEH)< z4L>lUZ4YCe;r;}3Ig_-X5klE;y4N!ok+{;GylZcLW}Mx(1BLBmA3ia6jdIAN@ed%f z(V(V;^+;@L&RicV+HHPZOe_RtP;97kI zzx-rr*5A&KlBCCYIPgpnL0057ZUeg%;ZK#K@UhcFIywIKcK;6MSIj;m-_3*bc%2)@jcdU^FE?k` zFV}M5LyazRPUSOUoipbDUgS!$e#9Yk-HY`Tci=n89&J0ax~<1-ga$N`I2UY`6^f$*-;W$G1fO*7eJqZpp<2Jzh)?g1)8#(Oq`LcgJfPV8ONq5HG@Yx@^+%QD!a7JKB!gWnfKO}VkV4t7_6kT&XO+3xhYtq!l8 zTuCFAB>gmsOZXXw6&99fwU8pNS#wgFdw^V=u@U&^j8}8qmL}w*eLK-?wZbQFryGT? zQ#k1TcOtLMFwA;?ZHO2s^*oGOOI}`&U0a{x!`_+lq&$7=(xs8q`hv>Y5yZe4XSB*Dn>c6153~|Sl6(91e%5CQ zC*L0y@BbFY3*WW&1pQjm%KkC*1pf;=s*JOh)qg~tlC|uY(xp#wa+mwQw2qfRg+c?( zG|&K>#)%|RkK7FKY*5UQGfn8y#({_FUWRW^jzNCx&-_2{@`Ec)$Qt1S8AV+6^;47F zO!aKPeSAN^>mf`Lg&DAhwSvFUmnT2N&q|ySP?NW!hlF?vtjFL70Pt}^ugSxPpt~e0 z$LST8nRwCLti$TMjyaRbP0@d-ORCvK>vPD{8;j6MsyDUDScpJwFpq0j9WH3ZivHqC zQ{>$|JF}mgAdZ0k=%BU_=?Nft3Q=9zo=mPabVN~157B1EmORf8{oQW4fZotip~RDt z!pgl?bWTOklF%Hb5jAIi;l-&lk(AVdTy)5;)nX}X{n#iUmE%&(SbrLcVM3dTu6)e% z$F^F5Nhsv{f%&0)sI=mtpRv6$dxg@(0hz!XA%5jK0g6`vqc=lE9lh!hJ_P{feAN#o zzQCoM)(&0p%c!~k6-m68Q8>mN4Q8!CEvN2u%=CJIwrO2`&UdK-mwSzx-$>CTdPJ3G zA#}vCsz})mrq8XHe&+d2*DYBZWu^xDh7G}y9Yx_vK}ycn;Ia^@01ZKLNF6kJu_hoh zL;#vWD(guh%8QC-+u?9uEJ0OU5)$Rw9R5p#qq74pByVzuq2f-7=fqXenMY5lTq_a% z07;wom?UA_U)nr@+6lP#TIkgTZa3eouU~hjLO>xl{vFIV9q^rg;^KE_3Qibb=4dx3 zP(z~#7HoZNRsS{@m?etTSyKDJA2N-3HcfK1s3)j-HcR4P^#YkD&&1%7_rKRD2a6;!9A%f0>ZD z_dLTjePxL)=s)33>3=&*%xz5nm+CBP8>(1K2%nY2YLZ8oR`lPcXxgtsiGjimi=Bg{ zy3q|+(3e7DSH)Lp4g6UQNK_C*3aw`c#nXKXrDv<}b~C%KXG8ZgS8YxmPaID|Gv|DZ zWWB9l+S_mH1Q|j416?l0v$&XCO)l13UzU77Kj6LeCH!z@0$rw9kcrLt7$Oi+CxD}DiMQH!O}r95F$)MzR!e}WM2(}@qTTV-~(WG_d7^bqKglvS0d zM0Skm<6u&(qu!v_nT5PnZG4-7bf0(6yt%yfQBXhb~C@O?^`!r-Bs3-FR2Td?s*h%iSp+ zk28x5p;#U>Vl+`5y5};U0Lxzp2i$u~r5O9t%)K?W43hgBsg4cBx@!vQwH;jax@>kC zm_K(=qlHW9!|6UdxjnjfGo1r2Z)a(!$jZZg1$2!iCYc5kvyxGD;|542VqG$46s9Av zEC!yXe{=#)@Us{+ienQqgg!Vrht;mQ3{WeTQTPnOH;ldp5f7G|?v+P#>1dZ|`W>}W zVV;#u*rGPnethgn!%5~yw>U0Ia=xox$~66sC>x!vA*PYHGjo(2DdGB#Uh(IB%BJje zB+B0WQP9cumYp5bRZ_cC;Ck7c&6z}9TdK%n8njHj-Bi?!P_>TnMTE#wx1%xTQ5>i@ zY`2ddcGnDj<4FRYZzy!Ua>BALTsP<%ffsfcsrAV?Q~6pFM2L%qDjTS!I-HaS8*&$v zROyW}Qg@dPQh{rMS!dKleYLYB@lz8-TbAyenvZMYu}-{dJYdLm{_alPe5@E!!*ZR- zxn+sSP!~nI>!PkumTOGMd|jH{sX_>(kX=#UndT0DmK9X1y&yCmG;jJ znN^0F&EgtDOvO=J{9Q8{`WmbA?!u^vv`bH&dimABUI)OE>E?dB!Z$$m!5&tb701T6 z2)|Z3!;Q@<@4hhZW(Bb2R_Rlv@|d)~N|o#4ivG)Hu|zyN+H68+!X~mn`8=H%ENjt; zJY&GoE7--Kj`->6!f0Xd2|lNuSD2n$l0ppD2YLu1gWWgax7l}wE&~+Y;DpSx?fD;h zF*O_?-z2nJ!F1pDc%JykMq+e)9*Mq%&4Gs zcctA~bqgs#yJGPHd=$F>Q^mL*^@uDwOX3 z{P713{knLEt@>k5Kx5|-LGAU1Z`Xf*HRbcdy(2`9ar(A}>FQ{!nEgqWc{8*vThXXi86*jhe!u^+0Q~39Jf@VJX z{n%f1LX+2M_{OxZYmOtI}3;a%zw1;2kt|k0z$>g_6 z!r2UHZsCZi3nGu7`IW4zq7CZ#=d3T|ZXGG@M>JrgvOEkH)=m0+OlrMj>~aXH=0U=s z69%9N3=ygHGeie7WYC%WExPN29JPM((R2~igZ+d>!noDpBx`il4Cot)uD?ttWUEEs z0lGgjp$Me4zlR7!SJ^R}#0>6n^fsK1m}@oiP>Aieh{g<{n}}uKU0}S7&Df1E*!3jY zuO?l?jM}M4bVc?2o}|M{ak%0mNJJz&9U`QTX^$~25W@Y%v&$3XiRW!o-&jBF_uB@G zv+6W{NHS3kI(dfpB3Gn>zW9$G?(bvql(6;@aK#-nkv3ti-Tie2Hf>T411we6c^b%3 zQ>^e_O-)M3(=@)|j8D~r4eQ|!k=1gyPHM;GR4F!HuYz&7_1kt@#pteJ+Z2FLsOgO9 zsrn)3xr21O7DjXGRO}SS@jUf5HWfmujR1BJV%IA9XSUYP{j|R-`0tgL(0dDrY6MUS zsK}fz_-#e-hO1At4F|pk@keCo^KUb;{JuF9GNlznx$zTdk8)$96*aTh9R*Q~|#^#?*fs!|v0 zRItkc1|y6XapW7M%10yiyKl2RRuELS5W965J5S15Gi*U7=?mG;!s*|;_n{>j?CUee zm@+h(9D{I{ou9MMfpvu70}oWK>0}LTW7%l3XYTh|Qz>pZ! z6EvYER#x)rUR14mmI7W_UD@D7psU!E)z=ucH7ALR36mK7^m%nIynZD@Hy17c;gLW> z;-%SMfqYy_$NH+Y8olv)AY;wW^Qd2{#qD3XHdYSWY3^efszpOt&Qs=bXw2U4o@d{3 zwke8{1+sehtletQ-K@ntdo1lcld{m5UxpyHpz1al!xZ@TNd2aNlsb6<(O zP|d=@c}JgT2-4(?KbngZz{6Qd&C2e#4jK3)O4O&_3}IZ4A_*m6An?pvCIKK>#dHiV1*+*~yF-Qq`#GF(L$L=N zO1y(r9m}diWZ3bgseUY+`)3BFOtrgnH zsB2yG(+lU>NUZfzvDiw@aLm>Raps*47 zSppqD9#Xghk(R3TZ!U;le=l18g>pl||KDZ@<9}p_inijH_8^a@#BXpwt^tVBd^msx z_-c(X90hFfM*)4uQ(}=NmQ;dFo4(#4*ig<^%(QBz0FJkv*Mk_xW)z8rh$%fcacisR zL$>4P=EmM>vuw_Hsa+Lp`A9N&p(?PA;h{Kwg76XG)&=sS{8W>$u(p}eSf0M=_8Q}( z-kM4=T33$1IwSRUiZqS#0ZnMv(Y6ga%O-86Rtb~7CME5;Q!ScS8htj2CO~_1A5CpZ zzPmdakb!HM5WA5og;j6kz8xx? zg5E6WN`rXQT&vUc);x|cj}NZCItOUIRJbA@CLsWXwJgIrOgc!PUh#a^LD#w;AsJwJ z!0)Thj)%I$7Vd~#7Fxun-J|-{^i;k7>HQv%Lc8enl&s(0P@+GUfTGJ}kxZ%;dh$qF zBFy)ktKeI@qt?_>YHeOts?OrvSU2JEN_0?XU|{Dx1^WIkKMscQ})HV1MZY}(OA z+)@Csmc~PQtl(uZ;ewOJM{ndA{YKJVI4|w#&@(IDZmia5Onc&@++(aI4=+|7KwL%H z5^@S@gO4*H9nz{ti4wWRoaOr6m8EZ9|8&fb3!Z|db~_Yvyh*bMC8YF1QEpond!EJV z17M*w{C*VtW^b`RhTAg;xzws+EC+`HUT~KeK2sbCP;dZ@oa9seLe6S^H{uZ(zP;PK zx$Jfbh6C@s=Ld3%fd?P4!6x#I^#ks+uiH{5izEG08eL1^YnAGyzXE)hC``91eEcTn z#6XSa;Hl>c{#!J$Q=p~hw4T(c!3cWBXx$L^ongvUW*1sJ67h6MUAIqmJ~jsPL0(~k z++B!0rA@YMvUyIIBxW9WYX5icD-U7&=TF`X$uPwLG&3zkD#XJm@g2Ji(!hvKN9Yu8 z+aKzJ0rc8NvU0y>@Aw$}yTD0K2Krt9s^n=7(|n))N+IWeOrd|LMEpN&F#nN2s%u}T z)aajCMsv*i&53fetcjjItl|)Cbo?6Rwft+$AQ}-{QP#^%5yv)UD^4Z5NH3#&ep5+k zc+>LyX#&>*rr6G+IUQd36O>j^<8b7fm_;Jp$M{1;sxqM>$6L>S-}%|#Y5>MlRd49f3TzUqwC_r6+p<^ znFsL6fL$BGo1zzDNb^ihJ4s~BhNs6ZfkKzJbmPNehNz4q&nt*iF&i2GKtYhi98oON0O!aWR+Iads`K#9f@vWvStyW0mg zL>ax;z17R=CbYheoPIBx_0=U^H>G zm&Hh5eMqyxER)>GSPED9)nW9lHhfV-Gqv6HI+g8+atP=ESsOyAXw1^8Z3;2{px=9$ zDqU|_9>5{(nZ5l}wfXTa4*EQQfPN37`~()jQ7@N^O=(eoz%62`t@;qaSzQEK#*l@X z)seeTvj%5!16-z=55hUmt~!6E7sIy$#Ch7)9<6Wx?#lmV z;FqzJw=(l9nWT#Rgr>|6@6W1jhI*}WOEG61d7Q`Z%Oh#SYB8{sX0jqntr_33k1Hab z%@VGWcNnupxx-A2xFZgY&V(6b9YR7>oGNit{{7ev65+k#*oQF?zH# z;BcXP@Z>QzY?94(tn)m`ZVqb}v782Jsy&p=@nwi-6^P0KBr2!T`!FdL180@}x}-nD2MQA1qt9C59}^SD`>|YO>0N7HWfAmz zq82WR9}kIo+*GrZtKw5s>mj)r*23vAHO;nEiq4s56gmKyus;x^oG`f%ZHc=1r$9q8 zzz6>X?U|XyZ!uv4mVze0X966c%9GZPZlj+SIG1x6pK*i%dfCJIA zL2;a+f1GJ>+v7wPm#YaQ;G^OpMaaU-^NK{=U>J-ZDo1hx7yQI2fbAhy7z)z?wxR5h z#jFc3+TjTjjdyW#5YJfsURs|XlVVC90#BSqo3k!qS6ua`StiFF1{!1IS5h%ZQ-M;jmcH~l| z!nv&*JjsVWt<&RCtjfh@gjb0)94?8pAH)k7-sa(a^YKG<*0UH zx}Osgl1#%~7O57Qhlu%EBaUNc$zR``Wq?M9=wXO|o_w0SMpjD3lJ#q-+VCERS+^WU zPcfI$PeS_}%95X=XXnKGe9X)G+DY?-Jf{5~NzJ?mRgFLAvLBG79nV;A<@0a5H4&1i zwoXdqLx2-b93agTP=*jJyb)wKT$KUoHr)B+wMe_kz%K{!_lAzu{*II*g8(pK9x!yh=1r zbo@i<$MApeE15L$i&$MQFe4cejt-l+J$~QX^uZ_?T z?*!}QX+#*r5mHt6XGVHg`d12hy1Dx`CvYWZ<_ye6UM~%)*IYaow8G+g@qC*@TMwJW z0FRAz3c%^`%e>*NB$@UgTM_XEy*u{4{biWA^te)cZ|};B;Lnr2f6QU)m-yOZgs_b) zu_}cDn`mKwnI^(e7J~<+=;xmj8}*Q2;aOj?s+SO@d;M{npNwlBw)6W(sDfuIAuPXZ zB&vR_3XyDBt+VsED7rp*#mJW%Jy;DXuoQoEFI#bR9u$_vyI7@>NbZic4R0@!q+ZLO z#8Ec2=AlSwvfZ4nbI?BurN$5j&XBj+(}e3#3(tJ#2xm9q{NZ((4qpd7_9@2LSMghQ zjQ&s&-ut^SPEvryUQ(v{-f@S{)S1un$lfMRYkN|ZCp|{bwLPgXCPiZYv1E8ybCy6tVIHbFDtW%(X`pJQh@P^#T z9g%GWjpWBW+joVl zDLm2r1>@oyN9}QezI`kIM_K6q8!7q!aUoeGd3YYQWS`pPfN&H!d8*{58oxiuxoQmX zP{ITqPYoM7YXj#t^?1ODc#+o&!tV$#Uw#{RJx^ybj9oh6XUh?QD#MyYZ#DgLlUrNAgH-E?i;=}@`2tAv#a zj1ZM#yTRt<0$S*Xz<2yt`8CH}V>7yrkx-~DSGNz$zzhp$sgZK&U3Q(#4N0~9_CuKl z1NbqOX1Ya1X%nqaGr#y<%y(!&%~zp+K0A5>B4kbfRPX2yolAKu8GFOHJ%J-{Vej$6 z>%cXM18z9aT1^0lA6vIxY3Xbjj^czkX!AAG|zLVaDit$|h9NmgVV^uiFsSv@Mw? zJ$1#ODNY2uwFd4@gO|q!{GlI+dRj-Qp^2p!$psmWA{UF5Ws#CC)I`xljPWgmyOdQU zEzwTMZ0IJvrHKqdicS~7n=8;r=Ps$+D#H!T!yfPzd~29sQwuQ0bPz0`Px=W$hk9j$ z+O=e^fiI>*S!ce>S_)a^%AkM=e)OUxl}H^c>LkQ+X%#YU@xr6CbCOd8POn0)l+SO; zR9=EZo;mYke-H=>o)N`HF31RH>>{b379k2DxLT*!;GaMt68iC{wTV3zB@!onMalXM z2%3SKfR1VMzx)w;U1C`X@=0_F(!I`2aW}nbhcgGw+t5)KBbfX{bSwP*SkP;N()9(o z>{y*sl(H<7eoKW-|3!%MPKgNDKFN7;e}*agACAx=js+aP3LBIrkp@D2cmtz(Gy79B z2xQ9C4V8$Pzqm4lWdDpLe#y!CE0g|AK3*<-5u(6+b=>ERA`@BQ1EcgC*uv`j)s9H1FxE~#1b&c;;`})4ablV^4I}suE1L(b4uzP8> zR{Y_sZp2t4A*4dYQ=kmOWp43pRrYY0%H7YHXL!ep%)Fojkkq43W3YA)+MkI=(R2pp-Je}c=ZYW=tmgZYf7Z;&jSb&T@1g3FEr6-&D!#1W+ zt@3PC$a6NLN%bi>2lnUc;Ls&ivT*S{D=Xd0vUtV=4DayBky(;Dsc_nQnR_|I@p_k*~|+$TIE?N&j;)iU${8H zOrs&bf+8Og!PmY%P>LlXecrSkpjC5(f^EUhvBY^ zWD_i&Fk%hU2Y~wHdzTyH8=ugNU!wO} z5!q*10AfJlogtoUz!wwZgPn6V3ow~sl@O6KWqZ0$&U9YIhMtA}&VtV$=av16Q!$!=W@Z@Pok&T0%R=;wNts184|S z3XyqalYbx=Aq^~vX*A%GN!%#yJgoAHH^JFuLqAAd1l0dSfd)QOv&Mc0^0BP${;oYt z;@cZ3{*wid7Un)$+_uF*TJiu>$6JKG$*W*4fr~hyuP+sGt{Dxp$OgQo! z$ff7zfL&6y%bBa~Z)rT|qm-s<(r5N1SqM@4a4D;;!EfGyId(0fig(lWksgyI_gWu5T2aIeDiNLf`P*zc0@s_rU(cfezb- zO7NoEnpsRT3Yd3BqG}l6EOQ}Q|MnoRj}+T-ebTK16(r`ZtDy$nD0oB)85|6=MUfGm zkow%(txx_EJVL!)kZ9u{{S+fQX|BUwUzdoC4pkjM~>Tn`<} z3kZF}UzxB}zQmTB4zR__j^!;%0$~JjD>96$6fo^mN3kKu>Fe)rU6H|7J^w~fF(uz6eb|`MxsI3g8c}5mX@pkxH z1(~7NT@|C+93_~D%ymiL8if>PNtZ5%%H(}{x|V7sfm^yqAA@M`PVf)+W?b2oYfy=^ zZrnu)O>V?0=i+nwZenX;RjuSrAx2U6OwIl#cjWbi=ESlN8H|$o`cNy%oud}{MHmJ8 zur<$unz&{hqYz7T40plak}TEro_s^2YKU?+b%`uIuI&~Bm zG3tZ_@^B)^#!)HN6RT0Ez3aWNQAk$>di0O0`uH{ zFC3ouVodrAdIW&0#r_yvwoZi(o;P%7M6^=Xn&Okt0>ne9-@am|1`$j7&a4I6X6AI6Qt=8_f@hgB9^^P3=XGXgW&P4{G8XQj-z?0#7+@+wrE2bj)sy;Q|ne8P7Xg$F@hSjrg4ldZD+iq9PY4_(?d47`$_;NXjLRmSDNBj!uEKVvZ z%u*4?;RiYYJ}rM&r1pc!~xJ zg_;D-1ZtXZ9Pn#qiu$(rDWTgnT-uWhS(qa;X{<-Yd5&F<9KT-esjQ=rldg+xqYdYV zsmW98lDt&|GhK0%2C&o#HwP@PQCTB)mkBn9aIaw>!d>dmR#Oa@c$a8x3tY}Q1vmFP zCH;wL4Ji5%P380PVdA!vI6HJB37NZ)e!ya1wkz89^>c@Lf?o3~+d(CWU^*Nr#vY;U zSfW;qeZ>jmR>|O2^;dOcqrLll5%PvKDf5-QJMN4m`bRlW9 zFmhZmY`=gS?6a&r1H^El%CkHYL3F?3LehrmsU@V-Y;z%n#tDl6*`E$|ncpPKeM0xH43?Mg(WEVgll zL}T7d+WKqOT>8UygYwWILjFjQUoc+(Y9=>D?5df_*LaoWk}O zXzm=n#1bsPY(WMaY^Cg|aAQES{4MZ}wdZqmqu(22djLqMDPlmq8npcm+Tm0NJY**d zI{m;E@z0D&SX9U|EQqFz2>UH&I_e=2wifWdsK0z-Nk=L!aV@}9v2^k-^pVX4l9GMv z?ntgJv$^hfDN$u8f-&F7sURN`d?nX!^VuHjmc3~Hp#JLT5S)g`l}PUcKQx9i?K%H= zz^C3U(-B2&&w4|?+!B)>)D{I!iJA_mbfEUn%VKu76W`yzFl#Zn<0)N81fECTG@?hU zpnL3MEEZ%D%d`s%-FnztBXVkF&oIM-lM!GzA0?Xh==&u}n(#ToRLn?85&j`P=U4%! zU{25J#hj#5e-=KVq@7s`%zyfUCea)v3lvF|(ADH$lwi~r4JrW~E7e8Pt+5ZCFeu`E z8oY4~r|K9?Orck2B6}ne$~D4h^TlPT6SWGsVrr4kCJ?yMfVE9FU41M1*J$6h1ojr> zi-uqQN16A3Gnf3AZuNh!xN+-$2K)1*cJXb*FeLmG)rk0T%FT%FfrQACrI`A&0Zd=*@p7;-4bVeZafUZEjCpMr4!uzt5Z4~-l}xR1!Cr0~$e2fxFao6%xfbuOk6b*^Kt zpqI*fnb@8xF>l4dRa<7F>KRy)~nKKW$dKaj7M0+U~n8-PHs1S2HGlWEMEM=^I zc1@1jE^20-XkzP9gxrR6Ju5zQJztolTzpqje&cvk&_Dm(IbO24&12HKy0y`pS41*A zCK%YNd5V1nw;s^~=wN&Qv5mz!c^=}oN4l8Eq*EF9-N~HfllA?gTZ*H6o_iEGgZ@Ug zHrXoz@!(OV!t0u_A*=dB$Z6w7$0*JrZrDHKX9;IXYe~UbZtvBe;JCgS$-Z1nDf1d$ z)Do%lb z^M5w7a0_3<{nPn*#l1QH{#9}>|FPu$n;xo~y}6^YvYEY&lc|}AwWGb;zk5GL%34Zm zs_-9ybaheqP)mr2hl-eytq_RrL9vKJm=?6=_^^3i2nUgs%E{Uqk_k()pTaLcU;2c& zlrqhk<_oLe6|ycQ1qX-BLylc5z9KENH!feDi}*fY&RxDaJW)o0ATy#5Kxvh~wNUNq zvLUJ)J|0@4tZ1gx#tDE^F|snr*Tm;7votj+woIR*ol(@?^AANwh9DZ~MI0i&Ean`^ zIZghl3~y@u6i(a#gFLn>FgUI{gn(M3h$p*NX5;Zu%h#E!#Eh!dfOI%DZZB4`Y&U?4 znn<@YH}2F%(d_-z;#{e(Wjt*cxW74%wE)vOm4XH{Zks}Ub};4n%DgA+ zDkLwyT@gAgyH5-jtSP`B`SV*S!@UHEr2nLUzs zjuNsOl;$LD_sR~I99!6%epSG-N0(=t)ODUwfI#9QX7LadcE7~x2MQ!n)_2s~XA-Ek zhn{-v0#ZrQete0G(`a3!D%)h5ac8Hc8k+BnCuFY0$8kz)chU(gMo=nqq(?r~Y_+1% zq65e7WKdam;uMfyM>7#cnGZd~98EDG`-Ln(iMg}-?dZ{IND(5JxT%vbzC+j+~5 zemO0+-q3=nv4W{kpDkA_S2hqALadh-S1Q)Jw)VF^WV5j+1@PIY8y)eF^Z6U>+}%S1 ze4)bJsS^-KJoO{SyNO@VECMd$!RC4uLj#!1TOW{{0>V(TPExm(H|>TddgQh};H|9E znqxG6H@(C7TorrIQ)#F9^Cm$o_J(dYDTh;#n$IinX?ibao08|1UG!X3Q)Q<7Ay@Bw zkmW`%&!H{C#SZ6+W@u(#OPeS7I=Ms}nFUcKYR=r(&VObOJ!mA^oNP9I3C;8hOL+G_~f0@?Bi~sEo z;l!g6kM#8hN&d%K&VK`a|9X4=H|R@T`+`3B;7_Z})IwUP`8j)XWJzCad~4!DU1DSr z1qu`pTFju+C=HS-?Do|P1UIUdZ^X2&-*BNAut;Ks1X9Q9Ou4yk&%3!Eyg#q+v3#K@ z&57-}0+26^M%ET$+DR|cT5NVege31f1gvB7<{bOG=3)A)=&rH<3|1yuE8h;2vcnV9^d9V&&>tAK&cBT$`j71Gmz`!TDx;MYu;n+p+RK zf7L<_ZtPYG-OsgJ8W}ylfFQWiGtX^o%Z^Mj`|>Sbr1co78p{?%Lb1ldd(jAYY%|s9 ziTjANn(KF;3UX6J{+0*p+hvlpLz$8$Y3-`sy?Ibt0)2dy>%lS2#z()Wu}rNkq&YMO zwHEnKTo6@@MgGJW7SfoM3|8iBbe`?h$*==X52>?WetYoT$jtaOJ&3wXHn=lJwsqQ# z5wOry6@me*Dv^)``Q{^yf?tA+^Bj9h9&ozcLJ_w?r*!?>Fi&GQdxtiF-d!2v%( z|G~$`Ut4=*U-&rq)%g1VcP-)m?xW+mzTBS8+{0z$9RmN$?;fp`<(St+0* zBhUy)CpF}W6N2W?MjUfeNHw(^xk&l@j9}3*D~K~+&q4bnUQ25v&n*VVo0v{za=dn! zPNm6wzP(>V_Wq5ZG_VR7|W{+Q`gr~MY|4uTC-eonoQmXA|bbQcaFI@+}-%^tM?N2Tej^sGi3m3 zJ6;9o?~BW-+8uhE;{WJ0Z{?i3}s?ZXR^ejqq)m zLlubOa}NJCZ++h|94(SfgT|t2jhbBFQ67la^1E{V>rR|7mFWD0%Vyzcj5RnT#}MXJ zzH^m(5Vt44hCixPIFf4PRftcLMZs8-{8`tAb+)u*BQfTf<*NmYVug6)O?U;uo6Fr`5`A$ zOe`1@4b4ewAUMb^bb;MTDH?QUr7mHT6OGkUx{GRk>gtbxW9V9Dh>ZkrIBZ8z?rS15 zrRM}yY#a6>VD5KqUub*qx(t=i^{Bd+Ja9Oro_OJrNI(GLmr`YJ`N5_f17xKg1z zM_{VwpEUYiH0JTt7Gk{IR|lll8UE<83np~zag~fdnwCW%Ix|E`drcYm9(dR7>5UjGDw(myzWvM8O9AO)ulnm^{KJp` z?_P|5ah3nE_{mEA*D~txrxf&3c1Sk)(>GrHTq^}w=TW|g@iN;-U*yQH;U#bj-l zQ6BVbre{HZGiAUcPMG1GZF# zo##}6(%khvi!)Fuyz`I$+KJAP^N<1B!wDav9|M{@8}V-3swV~;mj)X(?aYfOr$R@d zT?@ZMC5)@FJ&Roo#9d`cGRpC;sLaN4hyQ@$aIcup4~{qGM9vwdNE%l|2OxA=Sc|OD zyz&IuCq=fzDo1Xw;|?6wZCCtZ<6)z;Kr42%i=k$?YwsEkKn=rWvLg>dyQhb0!AeTJ zOsJN(=fiMN8T31)fz~OjMWSRZkU*X4t)ma6_z{DVomHxoDva4jKN=UEMwK2@-XcmoNj>k~Y4R?3qO;AlOgpF7 zUUC{zvWQTYBwszh7NU?|kWYruOP zO;AOwGHJ1M2ODW^v@95X#z7)pxzP(+iPuwa#qMPS*|DBxeUJ+*K3K`oUtaqy$&rNo zM0?R_1e+oO8<$+9_ef$;EY9ou{x5>Gn32Zf{Z;4p{}BLq{|f;4*N4gf3jwM+Hfzf0 z-m>R^Bn}!k#m3uERRx<#jx~Q*yjryNB^NO>pZg}`w>V5FoWv~;+EJp|^}>Y05m@ur z=-BoX^RI%57a-viv|u29>id|idRTsGObaR#_HVDVAGt4YGaq@9KifZt^}d;0seTV& zPYDdZg*u3jrLWcp;u*M7gh9J<2uzYNbY=>Js0CJ%r;E&X5T=uWk$_b*-g#iDIuH)i zE3sw;>pEm=W}PxyvNu^{9)K@FR~8>KLq%IPX{W4h#?P*+GqBz^xNX+a*!TfiI}bO~ zpaQgQH}?Sn#^VR&m7+=Qr=pFr$pOa0%qJ-QjRV}wWB!yv9cCUE515bWf8wnin&sKj zWn`%wJV+R3g9&N+I|-WE)_`=EC{Es99NoI3bkZ()!!$AN!G|r#`2GlTgIm&W+6o(J89A97|Alf853bUPJ?ykt5vJ*=EqGp zf%?(xhdNRX{MRA*gfr=PxMZr95kTU2Ay%qH-C$eFOi^(zd($|F`m%qdUhMn z`mT|Z*b?qcsYH=3wRZ?7DdmPQPsF;vfm0%GW+QYbAiU*ULm3;!b~SvPXI9{3Ry-== z4uDM)jW{a!DQ-gM^J9EdV5^!rfnM5*@0tGLeN%qp72e^j6t5 z{Idi#|ME$E_$^V~7&u0)GTOv9OMB639_V0Si-4y)*Vr`Y1ACQU(~-S|!n;UBw&L+&f7?iHV zMq%Lf?tOSd=A<@^0Z z`!~(&aJW~yo*3hn*^nZ63~-Dc03>*?Z7eVpm?~h%K47~XL#*gMm(PR_AOeV?OM^%B zJ`hAH6h|{gGDN=G0oWLvnEGidE>-z@t#sEf261%PDFkW*OG`&VfST!fmoP4pvF^lw zoY32h%iDNzN$2x1TlpmX$;?Y2fs*P7VOXUzu|NQcNa#pnUdWDxr+OeKI#ING2B@Ai z)|?8L6%=IoMuoY}@z%;B-%L{w>Jl#MF2fq~ODxaXpbnx16cePq`clwJoHC7+IwEVz zQdW~Ck;u>R-!ht(m-3a{IwvDH{*-k}Y-7WjGdgn4?a_rS2GBgRTza~KuelasGsF~g z^|L|h9(%EzWx?@fyvQdw+{8Og4$6ZoeaHn7gUg{N;gvtFfEP?GTEZ$Dxdp7!J2p|n zLB{(&B{HRknv_}L=EG*K$fT9meYLy02n>|*hzDte#<5YMCM$x6@~lZtI$O#Ls|T9R zb+YJMH+FZ+ns4+OnwnDr@6q4F7Kw!w0i{jkG~5(A;;#E=i04RYd*(}ylbeJRzrI%? zKAzPd^XYI94X=;f-39hn32}M$>QBt?d7+Puz9;R`b2BSim^eeaT5`nG7ee!<_&xwcV?2ife zzT}X~jD|ZjolX(Ak}iBhGe2MpN*`H?vjyUtYBSvw_rHj*9w?Plh_wmMlVtKm#DZSx zYf5p(EELrb+iA&GSuKL56RYm@)pR-4nNNi1B7zfMguodXj8T2YkOuhGYpnF!8@6kE^*=ei~xQQoW=impaR zSVz$vfEnMovd}&3=wdtq3nHyr^oArsjhKmu4Pk_+XcKCqx9znF4SD*(Q8x!_FsvA> zdQj)Bgw7`BY$5tM4FIh9S(he&}ue#nbhFtsbvdTjnFY=&Zk$g_ljI6IjMnpwr4)%y}qX4c5!?I5* z|EXz@YRFC{u3Mih%2lvmmL4XohK+aj89vuYj%? zY2xK#MlFysH_l1}Trqa?zcgtBf6D-6{xle0LDS`o zSD;wsOjqDo+!%jAu`C#`z|dZqu708|naE>VCNjkaL^)yn>6CS+oE2%wo`T!=Ql`M` z`Ry6%zE4E0%qv=O1DQ;jV-R$Mk)AX?TjuEpGnUdK_zZRnvzSU0(8%zU&C{BR*if3zYRy}^}ZHdXM!y!E%qr-Tj)KA}FC|2t{` z0<%etIwzkon6FbF8e6a45i^9jRf@(C!@**cOAz6ZdQ8RW1$(P)@396zxh!LCA^P28MvPY9l$HI9p?;Z=G^1a?m>=ZX(Sbue zZd+(d&=%Y!VymgmJEwH0u9t+QjpclK^^nD~tuqDni!7ms98|mhFACBPr3e3op13iQE@cX;`~(-k39^V`TDO9?8ZSM|Jmx2%*N!FHri)I5C$p?0ZHJ?KnY45NDe8{L+qp90^D}&93 zbwqmSQ;jdD!y(0C`hC-3n#Tpl^CLkl2BZi3Ly7B^z@ryrsSXY2Ozey#?0p$ltu6&8 z^(`C{-8Z0fOt+w6iQ*gv>OD}9uV`kP{LTUD9W7|HaE4BNkB;I_O7ayY=p#e$Qz%c5 z>*^NkrDNYWWo0e#0d~JjDsM~i$OYMbdTP_Oo2-jZ{454GwNJNjj}M_gMWqT;mg}RY;~OvLVx%9)%VvxK{EP)fFG!K$skaN$c!9+ zRji$Dp_>(}5<%$fu=ZCemIQJDFC&Q4#3zN^X!f;mVSMAg^=`01_7sNSz1HtW3mV=4 zx;@Y&ybJ+o*9KuJ_)y;IS#mo?th_6|zpv)QTqwP!@Q>%up3-D<7%BPsd&k|tf+`ZZ z5_psD(nNA7UnZI|XFduP9k4xV`4V^+5cwiBRfOuMNv9kbpISY2!E>g6F+F|nise0& z@KgZ5v*q$SDajuk(3Hy|xiin5e!gqu~X%Y^i-m$OFnMhc*a}SF!UHlU!ILEnU&*|}l^zeF-SWGNxx9RCNH2qJCoScI^Q_({7x5 zsnlDBVC}IMy;tMT3T8%Ek^n+cIpyk1B}8MWZ`r+drM{)R9J>x(N%1TCvPc`|eSv3R zg0gotI6Le6oUME0+qW^aV+&-NQsD*RIZVN}Is=CnLJo$;y8@s&heaPNxSJD}f1dAe zrowW$aV&muBNW219*hh*^IG?8o8izdTWtpGC@Oc75SdVJB`Y zCx;OeRjD7zhTP|gG>aH!EZRQa4(Ldi52?oJ2k7ksHk;2@%z;5w&#ZmUZ=(nhI<0 z{hiRNEY(+f^fk2~)re_-ZIqQz!KLJZlIkx89wDFLDdg*Em)21=<3ZQvE^*E-wFI{oC3f-_^q5=}j4Oq* z+DI*)vKmsO`{PH*R)VSBQsfiVwLHz(rq4BO2#&QnZ;mC z%w9xLJI$Mm-JLus*@!th1v|H}x(8%s_lRo$u{e#?M#k%&OI2Bm1(iHQ{xh4)dFfk+ zK_%9$w#fct=?oCSno}n;zcOijJ%>45HfVPQjx?3Hx4+v16l!>QO7xTGlnQxjtHCmZ zVYAM1lfnodE)&t&WY^SCztn zMpLmT9?UeM9ra-R*>N`jn3_us$*=3J0FtlrmfPBUi1* zdP`vBoH%{a0Uw{%;n&h7Qjl>t7S{QOXG5uGBuk9mixio)8(7FFL*J`(@`wMK#V+|1w&%l?~Yh6F7 zJ{XXrXEP}B0+{|Xd3^UP6>meqL%bNA_HO_tr$C1u^}D+t(@!Ixo%SNEoIg4piwVl8 zYtUo&?q`-pz}gm*Xr7VSw>*cT2b~g!baTsB>t63jS8M6W?{L9`otvr1V%b|{R7MBh zN4ve=rpXCd`nSsb5(dX~8QHxD8%(F)ZcEbz3v6w`h`Zn2LVY_Grdl}jsoDk%)!04Y zbK97zWZ`pCG6;?Yw($s@_2E#Y$aoJX=8KAxIqlN7NSkp2rX+HE6f{jm(jB71 zEs#qb28o&ss!K9UpT@I~D1Fs!NE^Tb?Xo~Tpg!YiSeKuI+#?xD2Sh2qG>RrPbOA^H zP55}cNw`yI%c2lb8ZYPj%!&>F@%h7y^U1nGk_7eO!6j_>a!nB13OhKnN)0lj^Dm3a!78#w-M9Z+r1tCw|}lb8*e2(JsN!=o406@ra2(BRbupsb9W8(k}~-T`6%!~looZBa&&8$hBN5Q2wl%uB7su&A{oc|Zk)D~ z$^(ON5+P=R^qrk-VGicS(0{O0%d(=p*tw%Gmr_Im(MRQ=`g+Ou1N;**fTQ$#TK~5> za#l1o3`j4|0E*wv2Q75sQcK$+&{Z>vG)OU z(BG$6vuNpg$Bbx?C;EZOt@N&cy+`&^~QcsSKCB96a4`k*Q%-0p#wI-(_uvkfSvX5Wd zF@Ly!g1{)3y%ReHXwEUc6>3U2;76sTqE8lbn_}RuGO_b5%!TRg|DF{H{<2P>Gau&O zU>5F#kabH#cMIp?*`6x_@*kfORa@C^Dao~o=wN%hnxoMLFR?T^6H^mzUQ|MmtFMSw zJ6F&~w0>t}KG{oKD++WRi4(hy%aVx*iOq2D2pv;gB-fSUsGVWl4Y*%r#`VF-t}xB( zP?@b>tY4ta#~qcEQkU{?er^T2DGWj%m#~hWKKdVV@9w(%G&#=dCc1})@67tOR9r<| za6FrYYj8ZXnLx(766URt9q?vVOLs&iJEsA;ITJI4IQSI#2VYFgDys4v$Eorj1~A3_ zETBYar^$qAnDZ$sIrlVDzXNFu38y-ZzEJw}$1e}DwVOrg8S~uL# zc%Q7emQiPFFpGIJjbRt=J2UPN8IJoS;l?tejNURkH%pAyZ>Hz2+Rkk8sWcQ3X*mZ- zK`Le45m_aYvYZ_lsXxL^3pAPQ+E1?@^k*w_5%WXrgHJahQyT=^r&)>H4Rpuymv#9j z0rO(VL^D*+UYeLVy1yNvrDUe%u7p^fFymF18XH;X;J?xqg&Ah^JnHcJwi|*Vcdq5@ z=D?wa`DAS9VJIB6Yh*ggklBuaNupJ*1;Zm9z@+KyKI82qbGr?CoUKnKVWa75x zXvla`uB{$GRXm$&xb)>&IZFzA6q+dQwuP50!cHU#<4*qQkib$nBbovmrtVU-cQqNU z^EfcGi;EK`AZyDjl`0NLpj!!7(Ym*nB3FfE`P@4To|&9x(Vau<$96bOh;O1#=)&@l zs{()d^*YIef?aWT_-*HWS$&zKf0h!^0^dx7pQaf;^n#x<&_9C+KBQ8`)kyBjP1^Dh z@0Kv%VLF05ZJ@hc=s#%RRAWA2cQ4I7FZ(a=@A&lJVi>OZdUL?G^q61ND%ZbWZ-LLM zS-5RH_twwBC$Xzq+)uKhPq0r^&zv5}LNLb-lqpl}-C}V!6Y$(u01qv2edx@6-R~M8 zWu))H6;67w{Du02ffyVE|geF$b)H3CJRh29DrU!U>To z9MZRhn!pG-yA2AAU<7N2%b|m_&2|7s=;-)DgG6(`eL}(Y4*<#YD|Ue71n#T!(uBzp zKXdQAYw&_ch5oWbDJ^3A&xZgh?K9(;U=aSKmcCirwoQ&?Q7KBZpgKe?SPg={>ZW3w z)M&CIjkEPOj`yvr-ttE|9SvmcYZO_J4*^qkqb0=0#~A3pGX>|ZTRCgB{~~VQYqECE zc=UHl8JJ*UZJwk#2V1ccf^5n|!YjE+NwC~wtFEps@7=@|!1fz^(7~`g8W4qhcrw0RUCmF^0WM{`&RnqX^w;&ck6~xnt`=svKg#Ug zCHH(Q!ubciju{!{aW?8?O?08Rtkb0G7I!J(gT z#rz7A>qnFwtKpgU(8}|~fM#l1rM_wt#xAdkX$s@dSM1gGNpTxP+T?&x7Xi}ppjK)$ zJL8&_npl~h*sLsQ)4X-Io?bzEoxRmjR1MtmVMSz0{h+&;WqmV3s=jMK0tQ~0NO*q2ozG>R$ySsiz5rSc8y zfHX6&fAIYwv2Z~=cMF&!8<5D!mCDJJ(hIIE=0?k(YTj}*MeId_@z=5Q*J=BE6X?G& z3YNnv*^AQl*F=47TPF*Qb4@4a*M!1QB-#^~ zk;kVAkWgewl%fGAnFJn&Lc$%gv?L%ZX@@dY_Q4$nr??c0R z0Vc&#dWFqE#`XytVzWYwOR*$-3$NuCpV7?Upf$31J<;mj85saH0zu56v!*(}@F@lc z!4io^6$-JWO#ox06CL&RnLTA}KTL4waVZFH_q}?eWt>29&7biNo4$Nv!#Vxw2vkUU zsDRmc5}}5H(61x8Hz!UXoSX6|EumhlxRn2W~r_}f0)*&3&j!vVnu!aW-B5jV~~ zZs$C3ju@8Q8^}5;So>_)w5L7J%BRa zGD){@ndjVfg7nno;==9vIqT&IZ3A?gijGppTe9a{LRKQ0~i~; z|B+@ha+dwVDZ=JJyUhx0+Lfeya5sGt!OB8?XlRoB6 zC4s@HFm8(WYBHgDHp}e$fiCUZv4p!?%29J&$sqY?-@ z71Nmf9$Yo{2WT{;AyusFX423YO6k$?^;gK2>VNwVE;)x1=J-@t5G2T}{UgSt;mNM) z+&E<@5)~~fxd@wbEQX&bWLe;q9d_05NG+SbVQcWaI!EYCU+ROBZdNv0DL1*O6!=ZB z4oyB}9u|YSLw7j%qqNK$Z~Dp|3=OCjmn;OK%>Iy zXy6pC;LVcUe?C`5$Q!ebB~~}s@>qrWlI<_^G0WY2wGddasRZ9byDK7Wvp|!Me$^c3 z8f3zXv89-@M_B`{>MiZ?i)Bla#B$@g#gg-Y%Q;=muP++(S}s@ct6F^Xf1TRY{MzcP z^1^C=$hy8bjfa=;r>qLl4d*oHjIwL{@4S0XeA%&7=H`vSAe-M-P2ZO zvVVS_WE4~EPeg2KDJ(|>hhRjn($YPZ4Bm$&wd^x4B9dLli2%Mdd^66rYBRk)qr)7?XSVWXc)|~vyS>h^}_R8 z%Pki^$D=^gtpK^bH=1PTYaU>?J~M{D@fM%j5w>6P5Q3Qlu3s`z@5~dKd#YgOn7f#2 z7({6>c^zPSN?;kgXotu5fa*b)Z$utlB82QlQMflA3JI=8(OexrK zxBCE@Kv<8Z|TR1B|JjvEFKJXeVAi1Bi!PSNrVcg+Q`trrz~qoh->D0{?$)V4(^y-xR0^oEri-4^_pCs4 zd}^>n#NajTkPuy_=P(Mkj}p>rt?R|$H1)<&M&Cb@F47emS7d4#|{LjDW7!aKCWJC}}ft=R>jU>i|YFbU?D znQdmXwC{a{3=3-WU>n*+LylDz$F!;$m#QJ#0{c2_vlrbR+Uk0A>n$S`)69=QBf_i` zPk)-KBoF^8EMxDf5+ z0`gWEKI)5$K6)d(pL{<;_DM)>Wwb?TP@2$YWyhgKV@km(?saBx;IM6VEcky|`v%}l z*Ja(z#I|kQwr$(V#I|kQwr$(V#GFiQW0KsgS!F1q5xfqV~KJ zazEpn%ICNE4MXc<@gJzCbb9>wMkP~X2h_O}c=}D629o2`j)GW5B8gSm)wGazY^MUL zREzWD}o~f%i@e*P0TnSO9r^ zFM)aB{FVdq@a6oj978ogXN}QX9+s<_VFfyYepVXtBK!NzI3Zt;A@5i3wWY`E=ynUZ z2=!&I)ctf=({_}jC(_+!w^;7bHU=rv<+@9V8J((@vUKjj2g?a|r*r9Fuo1~hr_}h> zfG_zs@cX=MKM_Q2u4&bBJ!Pi;%;7hf|OId4M^{snsVvK}5Dy)9+V1sPx zs)#FE6SH46J|Aclxk^FG@6@?!EdZ-}U+R-l?OM{bKuf$uSMa6nV)ByakFrTB8x>M5 zfXt%WHmpcWt#2pC;lV_D!-JA4u&0^;`>KITERnx*$r0DCsIE!6l2mQeOr)hJ|1a`5s@)zN>gQ`=Yq4D^S~eD!}61>^waW( z)(nBxjETA_T!Jj;M?Re*`<@|>#R?M>?OidSVq3Ad285`k{g?Bc;I!6EdNpjOKzT?l zR_t+>6BM<0n=;x$7K~N)Mry7i=LG_^49Vj)c|JT5PSUYhnL<96Jm-2~+hjRSs&GrV z=Mu-g8;PA5&K3hOm<2Q7^lOFUhZ^=r6M|b$@O6!^?)~dKyCdATV0C0*`iee~9lPHX zmj4PoqyedaD+PFHiA;W2iCQttp7~jf=}H4es7|K#SYvriKeDCSGd0cJvDim$t4YC+ z8P9g>0!*>?_hLar4t-9boS0QRQ*NV`Y^4z^+42IQPBA2-V6Eue-lx+O?`2?!UX^zHu+Oa0o9*c3Vst#e-gn6 z{>4T6cPBxU>Z!_K+pJ)S_V>tCfM~6%)Rge}I`a`AhDwp4UBUCstT>@c^c@)zrlsJ{ z&t#YHp*InuwBJWCs7u%om zuX;6Bh0t0le?OYMpPc+=63N!VeVpFTOsPHNc*dEK0yN0%m$i89x%pt~R6$ix`U~8z zS$=`#js8oCi(!RDry5HY@UaPo*wksZ)Zs)?yfF((soxlTyTEYOmK6oSSM7Tp9_lJr_k3|w%lhsxiKu{rfJHPYC4*YvM$f30 z4VkrO$A;t!xA?g3N0JgzMNEyX)JIQM)?dBuvQ=rm7jlgF5G%p&Z(CY+-`Spg;N~SD7}y_6LGF&Ega2nIJ%Hn z7q4;7m3YLkkf<%zE9eufP+MWj=YLuGG8Ous>xm7Jpy!t#GwnvqaJXalJ?b@g-GXe6xFi&O%me zA*IE5Y##c++s0|`H@gcFs&^Mh-yGc1BNGaB7Ldciaswi2+<)X^O32qzqX97G&y4SVR zWYjg&U5x9;k6$^Z)^oW9bc{54TCNXgNyy53hPgFq-6CKDYH8(4O{Cb}7Mzm7x8I7b zQ~UJ2_0ItqXKb=Nl*t{sVsw9M)Z&8L`F?!00ey9e-I)wOe4$g_E`Wxg#(ty4f6>h| zreUUgLa6E?xPgq(oSU*kHQhl2j#-eSjkaCZl^=LL0`F#a-XS9vs^ySLOV(QwZBr>c z*#|AZ2~d7cP<~cStdZlLT4!XN=px`4K_pH%@`)BZ0nX=DJ#GS~6Z}$D9WIxo@^yf1 zypM6dzT9VW7?KG9F~n@09J6|yli{cnY9t8ql1N`1fF&MP{Lw)V6m^yxaMCpGRt8Am%5q%YDiUaNZUg$R-g z^$MdPh;Z_kC|Ar)mE#W%8x1x05V|090>|s3jU9=kQ`=GA>67-bb!I1}zERNR;0pZo zRkEax<>DI@MYoQ!UO*Q*O=)B76HQA)-esh{alnoUk3Oyt#7x*5&rmzDma^?e>PU60 z6V+>KqIclGCiK#6eFZ%}hcifF|K!wp|K!yF^5s%C`bNg~L?TYszZpW5Y<_$Azd!xk z&u1z9<_UQ(rlzt&)qt0~R)`Dl!h_VoX$(xkKqxFDS?qpd+LT%IJC|xeMf|0lZq~_# zmh(xA*I>1pD5uy@vgvT3)qOe1%K7#=i9`#)>6+~CCrXYa$0R3Vfbx@RZ-wb^xldWr^px@jXfzGBN{hULx+O6PYk|pDu;62SZwJD zOH^W+IPnR84eHea<5bF6as(bho5!o4L;VMVD_h3RI8)qbDQg@Uo`N@qrMTBc z(T+Q72D-r(CL*T;CQbB?CN zh7WE7h2Q1KgYM$OfjI-Qj)NY77VZdJ^7#wFGVW75%AX@ff`1$_`kx|L(aF~Ko4K+5 zzeBL1`rkas;)W;fR%G0{SVc^UL_zIXw6UcE5MRRu$`WHAqZ;g+ox0*+3vVj;zS?o& zWk1V@)@2D*86=h`pQUA;X1opG9$wDq0^sb0!9ZtlT;vtzaYb=aFpe5X4tPPsGJRvz zYF@PCg(|dU9q`_c>o-)hiJfaqs>jxkcdyiH81T}E5iEyVkT&n&0^{zhWhd|cZlUTz zUbX`%YhOamrAzVnwgn0D5Uk%^t;M@zJ$oQSR!rxLcEfx;u9uRhmcF9UHWgb@L37Wz z9b3Hu8^hUec^xg7928s+mV(HU1v;!Xo4_+LUn?ZJ)V72OJ=6gYIh=h8QFCFtjf$iq zecT(qH>IdPw5Z{D`?CQ$^Dac1tH*T}zv5@uK2aRKAWYHxphT45yI%&3i`A|6p`03j z6PLBYC{9>HXgAWbga-6igQKOjnPIPv!!~m(F4_xjdP!rJAG~7Tkt>8`U1b6@2(-q7 z#=A;+=VX1oU!|ZqLC*Uz2G)Smp`-*^ufRSh>U3PGpfC?djn$+&5a@Nn50rk%R)A*L zCax!aIfs2q1X*f`eo(H(<$(FQMv&WIlqhcy(yUvM)gA~{CxA-q72He(2w0Iigq3yp z!@*A{oxM6%i%2rYDA*|P2D-BT9y@J&)LZz1akXA8{}M}l2ie|Ln)#tts^ljTD5Vm1 zU9z4I?~e}p8}tHi>v(5KOTaro4&gcXpOE&vbVFC>ff=N@R}VslXAslI~E>mMrXznLrH3Qhv8?_E}}QqJ5Zq=P$VPSa8`lnyA2di z3JlS=X&+V>Z3Pq_0h~_NCsPL`af|>Y{lZN^(!tO5L zet4$M+F^BZn|V6$81)ptZNBJ}a|hl$iV*m1z4^TaX_JK(&CbsXkZj<)F$N*ob;Gq! zc4SP9$tY9Lhtn!iuEFg>c)w#fe%Hqwl2sG24uXe~M0O_)Tx4Hp_jcZX`GTFaonDzB z1FyobY6Qm0?n|+4i!ebqYc~|^B2@(rp3CI^Sjaj*Sl}1S-CF|?)mVL3oW44(BjkJl zS%R+uH59Z%HUXjp; z(#|jSwoBnhnBB`gFw{ux&>a@X?}SoEoWdau(}csxH+m7Gj`4qNb}z~f^1!jYJNZgG za^4V*A|=~7K$S7HkZl$FKv8PnoiJ%A9;J!jP0-(ATu9|E+q(F6m(XvBCTpDfQDgGU zMsK-SNq=+t0Z7r#Dw;PTzlc_bkXnRbh_s;g4EdMq^|TfwF!==UHh#;1!F54 zXZ>$7Hjd^d=7ztgt^NV=Cvg&zC=&O8_hfyvZfUMrDE%N+N3Wj$9GC&z9G)&jt2_c? zMxM5av+4IV_57M=V7JI;!0so#a)NZVq|_3npQ1(fHZw-HDRn{>nHSw&mu)4N+?x}; zAMfv=zKU13Y>`3Ej{0%Dl5QJ(>LaS1zn3pLQXR$(_($8^7BQSG~ z-$*VVvp34y1#*^7w%XPy8@C&=1B73x{$a^hj)#*@9|WuY94D{R6d)RbpC-dQg+ zP_i_JK2ep1yj-PJB))(FtlqDYaNu9rhQ!e4jZ{06l1*K1eEbaLX?PM3a$X+1iI~U% zCnINa2bJ%GQD4w(2x^F70=X`mthWju)m&_&B{1ooTtKQrI#`x)0Hg0*@q= z@I8(myK+@2-LGYLrp?c5xmjuHs4;6w4fgcoN0v8guDk`hvPUGqlmOfIGrKI4%S-x| zkTl4=rG;BHK|ok-LXg0=j7Qps&Qk(rGxDhNykMS9+L|!mLghdJP(tpYRG#c{3}Uh% zeqC5m;;rGrSfCDR|4#@cj9}BBZ^5PW>M+E>v=u1fzVp%?exg88xj+GADVKGchdN&4YLT{0i6W`wq=fHTe%Rlwj?NbZ)7 zFB{I?KY`X)GVZno%q6Lwg99wqNa3|T^_z|CS z&B-s>;^hH=Oz%`ir+)#h_H$sf+=1v`oL$m*kAUuIr{D&3+9>hPIs~sOrZ335gLzEQ zY5M-13_lSuriZ}OT<5m%Cr5>|l3_q>l~ezINV3jAv7z~q8=ypL#2%x>FQraw?)a1Z zaCdDEM;p*B`{i^A=J`F`v8So`JHi!VUfn|B!nwW|KFsL(iLGEm*O+0d^ZVJAzWT7o z=$5lMF0-@YkR#%C(eXo~HFK(5SaKxu2gKF+Gi6VhDmC}uW`hsL!f-&^Snr@oMkAlR zO(coCbD)nwsMrs@ywsHd{5@xgHzVp`vPRBQ?|^n>OX(?rXf8t$@^BzKY2kOlx{tb* z4_D7(#izjGuCgP!-INhodMRC=ezqvARPy)mvxQVE74#W0XOSbgI>rntL5OH;c_0^Z z{|WjHk~>oBP*fekNh`t0p-{)1e2gBM+Nz|T!Dz7Hp{LHWK8)@8z)v<7VOsnBkAn3p%N8ktV2D!indm z80z=~MLn@TfqnCo`=${YD@z}r-F>vRukh_=T_N8+3YxOLBOOn~Eh-GLC6aDu?V@Bn zvKku;)#_iM+97`|S{*Q9-C_?LA#Tr}+Mf+gs>ijXxcFs{iE;3X6ndl`K{aGhzd>`~ zqq&WY#Vvo~xHzajS!S0FfkU9B ziUDe8priZ4p!tpWFL!&&<~jxUnJ1h;{^_hn{olJ=DRT!$V{2pke_XAswB!IEoR^}d z!6_(CryKHOLm{}zs zuQmKUF(AgnlEplA8hdPBYSKZ&(LD7;Eh5SM7E03tzL(quB~s$U_4HGm?H4*D0i3%U z@;$ib5ojm29IQNFj$&k1H7p$zH$e}b2wzLUd$ z(P2i(^~v;q3UghhG?bt;lM6v$N$xrvp9lys{)8V2)JAeOk@?(u9_6#2E?bK0b5l*C zUGpwqBq&MRYKzUG@z(U?%ps~TPCD|6S)!f7FuCBd3Pl<$T6)$_P)!@I1M>3%R}#gE zY$tjE<2+=a9AqH^Y=sfcJSk61m^l!~{&i%@{03`b0yc7an#p~@ zaR?`LU9|R|zx0AQ%ID1UsT11I#Nt1%M)@D>-G^{A~Gggwz)$I-E|v zsm|0eC(jmf6z`m25o3!{*PeCX{vdjuEw*90mffWG#exEDTnBIHjUYYrDNa_vpgjA= zjqSiL_ZHc_=oU{OK+v45DD)Ly7J*-C;8uBmIx#({pBRn&_+=vp@{wQ2Vr+m%mneVh zf(}X7l|c=}o1z%Xq~KX-QHmAT1`Qg=ZKQ!1ZBbV*YtQ0rS*Za3?@Z6{X1c*}gmAcvqxz6}FsSc?7;@3&k4RF_e z&H|?7xNY?2VJH(_X<)&jq`20c5JY(18*x6VDP87JYzS;!a$Y!?J~`p&k*+jb9HCMauA^Hw0*n;w;CV<{5Xj>qgK;^t=Il_6GPkoZ z%`y)qRbQaFVgw6^kn_~Y1_maazR4bydbaO3!i}T$5v-iSf-p3=SwV* zw?vqLcW$3tih=DkMRyKiT2*}o%(BHAjx)^kfoYXa5a6n7Z zHwo#Ej7DIe@d#2xSZ`lk*vrS%(Y(7CF=ZTN;(uK zP(dcAVWo8%gW0Xnjxi_gdjcIK9)QO|6!^=8pQcm^h3NF#lrY>NsQ=59IDeax$3Lbd z^=V2Gfz@D^TRhyHCYO3P>OsODaTLCsD~&0P-wYFCqpi*=?+zVLI0ro63b3j^O{v~j zBKbT&y=^wD#cU~bp?kK$?#ko+_Zkb)h^R=Z|2-`+|Cg2|{tD|E!zAA=td>st4C7RW z)cO>QkR*Zx?(~{MTddj(zdB;bPi|Uk60Ch3z01$mY11lBI@rC`qlm` zjznr7;rG(7I1#Byc)__nz-9yoM5Fp2xL;(2CMD4zUy;9b5TFoA1-|(JD+yCcq(Z&6 z`*OqN-#Dr&PEfR^Filt@S!SzNtP9&?W@|P|ohE5lu0dapR;EljPtd@Zl%H9w8yklR z7HiEh6?Kky`V}rx+`4Le70>cr=xMI2I>JcK{IDn)vstHx3G&2e38VF({RUHz{$ovc zElRMX%@pUmxe(YQ1uc8!Vbk(KoO)%3byexB^hi|_gx!5Zx@p=yV8b!ps#u20RPfY+ z_d*dB3)b>AD|;qpeWeB)Uh~Iz9u;G|qJwnLCQ*@5wzQbdWU~FfTK5|Pn)~n1xN429}$DE<990XZP(GB?oKQC6pI^-u$|o9Cb8Mc7H)-Wh!??Z;1Ecw$KGFq4<8vF zN!auY{Mbf}USJPsm!ZiXYyepc`rsH$t^(&i>u(179mykV(l-39*1G<_(Xaqz%*owHP4qwp47r3Zz zB&z|7Lt?n~aoj_Xw(SvfJj0P^X-crGG{di{boHhS+?l6)p127j5B{?QN~jBasD+V6 zpoHyxE_CIXWiZ1|gqwYCn{XVd-#f%S*{a`=f?(H*6cewJ-t+Zv6c1ikif?Y@xmnCJ zSE(_e7rJC0RAQ~e=W}f&3nhY`sp=8qvY^go|1wtgR6Z!>&&@z=pnpmt|FjTQ#Kzu5 z-`?n7%?d<{=2o`fjQ^ic|F+^HC2bo7ek5){O)^KTy06}g8f7bAnXNsM2bH9x75zoP zXnCL~jMALbswNbE^vn;|Jn4PXd!t{{gv!;%-WgwPa2{qiI9QwbyuH5z_7ZZ15{7r! z8P#GBb)gZA4x6{(4#^;OKuuWbLq>S`>sMHCXb;$9O`w2Sbwo2rSvv>HUoR5~R?<)p zb#+S~ZAQ!$4a?WfQ6-mAD#S~;8wa0nU-|)iOSVF9)tA-lI7wNv zwo$%$sx5X#pV1ed)O%P&0FHQ#Y&I*Y^p51>QV?&1PkC_j*Oq)N@h+!jjfuL5%X$yK zF7)8u?Ab3GIwK#nGWoxJo+O{!6enf|BEv|*Jtk*b^&O1SX*Eas?@E6aJKnjrZ)M6; z(w+>Ynsr{>X)9uhZIAA=ZwTu8>;G`lb^C05UP?O?ulLj?ANi5(hy=~TDVX#Dh&B^A z62alPpFes^rWd1sDm$OK*rh~gE6?w_~=>mc$<%QyoYdz%^1HD4=RePUEo!@+>tDpj08fr55i*` z?j`KX)C{)_Wf-HX0?7~Yq@MhefM4BxHlRZ6YoB#)TsoU%%(RNg%W_%38BY17VwSuX zg{S|6J`p;2xD6n=7XX?>5eY?iukVA&9{b!@euDTKtr~}{CAClmbQr5GXJ|$%qtQyf zD>a;n-^i)P+3yV<3qOF#7(SEd&_7oG|8$!Fw_watu~b|aLF%#uf)Qvm|Jt}emz)TK zseqK;?3Nk}7l7F7C-Y_Ivzum;;F3*ZKS?y6d`!wm!8D$Bj0pDy@TGu*n-Y?jNS^6= z$HV1vi~I5DY!mzA_Hv{r%q+~=5u?O|1KrUllBYn~7>7(z#Y8&I$(UlCOX(nv0n=@5 zazQ1#+|7N`%zoLr8B5--i?>y^#kgRy>d-%~4!`JX9Olt$mk~p~xd^+G4ub;8GP1E= zQ*{1NSu_0H`IgVs<5w^LzSdGxtKyIBssnjB$n5oAG8O6;a~7?ZT`fo7Q6^X4bH<j%3AH?Lvzd=dA`wRlF_S#mM1wAE(oH?f?~+>0Iz($Gw^uC(S$cC!TCZyJG{O=0dl zsZSE)ii6wAZp6Z~K9ibR(E4r8dYq#vD(km_P?Pp9ps`zqqqWOmBF;RIfi!$=59rr-g0?2@8MCg3o#j=8`(jSWVRE z!nv6OCD2O%3Ua8>Ve}@ZW>qBd7;M4l8Zr{L>qi{PM2u*Hm|E4(__X`{ zIJjj%CzMc2sBi06+z+k))k|ErPZm~)2F^Sk0V{4I^yiUfWG=S~@-IXo`zyoSOR|a~hN^j{iEnIsrilsE<#@2}f%yWejgUqE_MzEhC>Xwu$N+TFDR#+ovx zGUywK4>5+N2Kmq$q_$$XR}>~t6k+VV6fr@2h&mo&AaXKuL<=*+8z5w73gm4C-8LpO z1x#vY;qEj90Q@L#l6o+RD`qfO^NFmgn3tN5YHTtd6dfwBDXLJ;)sZVink}CH}>E^narfBQA zoeYmB&Rk@(H+v^vvH)Vv+2|tv-M@*lR__f$<_hvc7$!5XNs13|kgAGn*)ny2ab?&i z`q}@0G4EWRyA`NIC@k<6Qxy=ZSbqd5 zC_cvLuau_rm`r&3^OSh`iJ1Rf7o+?CLd!o``M<3>iAgG8JJ8n(#vRmD%BRF|I$$J$ z;oxuxh+Zo+hMY#6h7SV!rfFiK=}&;aF_{6K04YIK&?gm_Yp!NCA_$S`sG4Lp6qmyYcR91;b+CZ6 zM5diBYO^_>2qIhe_vNhI$`2hAPo6Tl+_{OdXYSiKRu8#_o2wQRwMJM2k>*GSs+ozT zOlD8u1@$Gd9fB1k#kx@+*SOdm*LloMG{zm?2wCA?GASVCRRf{$NI2v1nmt*e*v(JW z1A>!4;?k5DmKZD52Rt8@h@^MtrGVjj*Dw=tQ1$sJhv9$T zO3tnkz~{7aT~rWH4-B&;DZUOw$l$I?3Vv|2*hvc`$!1(x^+F$4ZDXV| zy)&(?7s+3<8(=(k0wh+J8nHENr&%`^TaTKbbdx-M^*UH-w-mXEANtrz={u68DUS!X z%)NOqBzNM315pm-zm0*wYO_~Q0pa6R28|lS>RKS1TV@ciIm#^QGFqPQJ9}Zbe*nJG zMHo13j84Fp8-c1aAxNQ%a68hk_r)|S(&y2m`jXw$_6TU)BJxx_ix}WrmG$@M?ZqX|-W=4B%%g0Dbhy}NzqLCUnW@?Sa(A^d zfWU&;dYR{61=5V^Ix2T5NxbQsw{|Q7)x`a#LsuE75XP#`fnqW^0`B%*5c`&BPvqdC zU)@2`9Nl?9t>j(kRGh$5L9yyr>WJblZm80XD}uynAi^*R6t%UiG8ePPaioP+$u~PV zoLlrqMpDFaMLUy7xoMw!{=u{blA~l012YoHtlgaP!F=?A@5l>ujUOgwcl)fCUG>UceQF0*Z!ueYOPgwOns5Vmuf+Dxn7QO6EV9$}nJ46Zc} zQnp)L5oT_Jp)x?z>=}?>El8?}vUSLcuw4`=*W$Az*KT;h-z9flX9cjK*M{pSS{Dof zsQ0@GENOSYLu43o85|`J>8W*%atzcu07n$5R%6Z$RLylv^+3Ei3SzX0C(FhkjLcu4 z*3JmKrcJx=ZUl>(T4wuN7W(Bc+Xd9$?70AG;2(Pl{yYN5SK^IR<_@`PM|81ZvPQM8ZQjza>u?45i>!_q-XZmo;nFa><`u9P=p0TzG?~xT zW`gUWXr5}8Q_(X&F=U*`*|883{LZDwj^alEg;JrLNu<+$B6Co$tFl{lytimuQ6__P zCTc_G^7mAQ(`Tzb@T4_qV34{gBMYl?b@%jVF(KfIkD0HV<*F78Wg9}G(b|Y`U{_fH zO*7R6yLHFNv^`(`iXq4BSsFE;GFbn7{bwos`x@47DahFy8`@YKng6vG_n#&6RjO91 zm?OyEAmUJ$oB5}wa*BKI9jX0nc0 z&$F1XHAZDIIcLU_SfAbr+xCaO)g2aczoA;q9LJcsn>HQ+SACmLhHYqIeB_zwn#pR@ z;CX!{Z2{Pbf$cI2I0-%w##W+5xw7I}=sF764L%OapzX-(h`a5d(CwV%ej;g6bNoU6 zu62_iM4RpK!<@D|;IjRio7P{B`-#VgXCUO()Af76Ve81}&%OZE=UabJS~uId07))i zT-%NmZr7lmU$L;fdz8Ef4XWI(Qvo?wkIS1+4d~8r#4T1`H5TU4*<}_gi-%2#1*2n5?G+Ri z!^_Od>vHnQ*=b30xJpYL)YX~CcsT~dyKd(FX)r<5>1)x0AC4wR)y?I@O^KMXaWl9n zNvGa6=1EW6i*ZRc$*KLz>kU@y2uji=RI-(zg7UFa9LXs&>b>QZnH3T8=mLWd6|^X5 zhD9CHpkyQP+9{t%r9PWdUu9QA8jH9J12eTp#SVgJsQ^HH+Nj6){2Et#;|T;x!4>(Q z2PaBRZotIPOQrFg@u1teNKfn2i6S4yZ?ZJiX!8i;c8U=tG?FGWWhmESi9pJCK?;mk zs3RX&fojKMyA?3kLHKL2I~doo!wpe;XN$kK0+xoBDJ$*UiX4o%s!5MYLRBAK**?;7 zC-rj{v@OVGlL)uWt1xr0Iu{!eiZ5HKNGRtEpKG7NDDwd^R-^BwtG{~-Y}7Uut;rMv zs>w;LkJE-ZSl_8`7K4JL|BXeuauGYSbx9`L z%w2$GQlNJWoVtYcCt>(eEb`_B4-Tf_wzeFu+c?&IJ>=amXAJBkz6^F{;<7CXVM)=X z`vg~KVj^m52`2CDF7&TVk6-;EjCj=^LTh5AFxag1WLW6iZm ztnMgUNNv;e**veP|i48$0ePj@~l&K2Rd3W20UDIN}483 zac4#Lk)Y}0E^E*)HYaT?f(C)HkAtZs(lWVNTpn{iyFnq>HZ-;nH6~*G$xGb4)(ViR zdo>QZ`83qvx(a4s&S6rT7%di*B-U{hHD#?N7rS4LjF_#aBVy3Dlne6n+JwKf!kn{w z2{YN$+c$xR?BLcYXt}qN7*gou?{E}K7i`)*Qml{ZCVJMz^x{>(1$fh%$Mj)vZ+BPe z}CI0MFk5Uc>eQ zLJl<}=K*No7jlOj;{n*@d{ckKn^%UGk?B&NIkd;~6 zBa27*jQdLplhWaC9NxX(S)g1)uoY4+_NgDl}nD`6Cv|BLyxilCsYC~MoR)LI8fiw<{6=vFk6OLq3>MyFZ?wm^g zDC+fS7;3o9^{(p4*uvp35&knc1)h*2Wpnr}kZ!KeDS=5N%n{u1?fzDNzNd z;N^_=NcBN8bc)?~_^LR=<2!?Mu234wLn9Snkclws2|LC4oT8?~V-gp->vZFs1dh0x zyWgxFKR#}y^EUW<#BhROdt~vOURGHiU4oyTj2k}csLm=s!knbkF@9e_cKms5T)wYV z$$I43H}n*u^oOc-O zmAn27mTlxc^!7~FHSFg#h~|*yH|bJVF^j=k%!a~5Nvu;MZ0u0=aCfS=Wxo`B!)Sx! z+~#Z&PEZcJFSkq%0(CSO>UK?(-hd~ix3~0)OyghwZiVIt|Geb|0{{R<`cra3{F%BK z+E~$=+Sr(WGp7A~Yh`0i`#U-L*YwHX>6ul`%wPAP!#!12^C}g}SNr@|c<216HO*iI zLV@`P0iZS+wSkFK)>150-RYpXy&(vsQ6Cvylas95lkW%TZ$FWH!JW14w7)Sn3Z<8u z1`qTZksSC_<`H@$P8yks4k(A^F-8$me~S|je&~G^5!@zy-l?8tk=ggk9Px{9AwUdk zWZ+z0Q`0vra0u@D*-uK-E$ppLMr`J*!gf;!7yhloi3%3#N1aRi+O=h41INw9B9b~; zmm0kL45gzQ0#=HQ!0Ud`{OyT9?~Z7~ED;w2i9)<$I^6RNJbRDU3S>f|l5)ve%^F~w zETMh@cq8q_=jSWX9zI@dZa)6iwy^`{f$uDM2c*H2 zk>=v}X2w>;E-uKD^q5d4;ra0-p3D8cj9B+T0xxv0l_ds8;?$`a$0?6gB#Nv=$}LG( z+9G9|`c&L&5h$qjtJH1VWqe$&E(i08L;Nxif`%1){ zlg99yF5Oa1PF=mK*-R+Jl(EIOMY6H&NW1q@2)Eml8Z8#XrX5bL7}-)edpG6WM_hV1 zII~>$sN!Cb^h%8+0pD0lHDH!6*3E6?DpJ$5_1NE*oG>}H056>VeqS1k%I|%F`;>3{ zA7%UpOiS39e_pTrtEyM@S=IYI@Nz3kXeKWSRBhu4Qzkaos?4HB(n?))i0)R%$2 z#bDZBtj)!b5x^P(LSY`PMGAo*p$75FSywMHUf0aWrYrpJ^2EdX?Sd)NVn_}*A%y8RYzax{1m|WO`Kq%amH(R?&#TZim7Cxc%d{n>DSe^ zth`jr*hckr_|H`cbZ```ZK}vM8vXRZ*fH%JoCl_lZ~@l7sJC4$)g3Cj^obn2onbn`rC+_?3JrK?`>;t?J5ETc~KB(XWgcOm6MrzpQKOshav-QgV^e z3m54g+oBfVNk5ebxliuBr@LUjf@k6#@NN;Y*zqKJJoN1QR56_ktI;g^&y84=W9HuH z1dHw{C~ozrY+EA(fmP_)oX!%l#BL&z(gad-l|C`Fv`JK$-kS)}(EW%rIKsA@1aQ+d@MYoh#2tyS=2Zm8{jz4ykD;A?Y;S72fcZ8tb>297(vNBj zt>NTrrsbyXm9S!^0>qHG^e?{<4QLgv1&O*Jz?y7dF-5Mue3@1Wr452T5!P_5WE2UThEekGwGMex*ZxpUC@^s~1(fs;-jO;CUaR~T4P4oZp>gvBo z^*_CNMar70n94}+G6<<~#X-ent)x?mC(jPz2`O-YcS zNZSQ_3e!=Rv(@bM!V%1wxeKMN-Db_b0cupC8W8ym+2Z-(bHO z<+kjgkr0ILrP0ZV+QP5WO*a}KC|0?mEbP$}E~aQ)W0?$D$mG&UrotNH`xA}^)sgLn z2OgrQZ^j=ChM>D2C_6A}Gfm}BFEnm2Mct+EUEO7tp>N<29<`d7T>uHP%mJ+PWohYy zNv8o%&$7tIYq>c@txt@n%fugbmQlQf8(8jn>7pU%F!=IkGlv>TsA7dA6h8J9?;Va_ z_M!x#s!&B>1{o*lGtl=`Zz#>T8z3#H%TiTFDvO(HTYJL(3pyQ<%3*4^$z+S z@N|chFmx5!Pb^6d#MKVY#xI8l?cZOP4PcV&(AG4`89at@1JQ^5GRc#7x(0pKMV@>YBXGtf$VLe1Y|@q8IJM< zE#|;LxV1x3Ew%$ywFN7aPAEHOIx)i~80dF&gK~qr4tfglZ==h^@$_-ME5!!#p4`xD z;k%1~@K7V%G0cqI9cn+dKYFB?mL?w~+qveBT*X%OQeS)=$g{6W6gy##!l#rM$jo$H zX7LmxwKhl7tbaIRl!RU)hswNbf!cL zNeAdJS7Lbv_hDG8UZzoyJ7@Rk90XGYD~MJ-lw{;FT%iRc-amXYbixZOxBVDo92nR# zGP8ABJo(iP!vEyw^8Ms3DY%3?0By5PzTI2hqr=QdBj{*3jHW$KX7+@@{|i@ltBn|Y73^&w&a6)m%#rx#fsD^kqO%L5nr zP5xYsw-+U4Eu-$Uw_XV6cfYU@x_jk4#p!*7aklw!yG0J zrWpERT*;H;GK;M>=oq5~$3E2aN}WPYpQ|1t;0ryhD|E!F^7h7A&K0!GJ;dpjhL*fX z#eaAx*R6SiuG`|oAfgW-qLs<6=>*)t61+9Q953LQ!xe00(?@#93)y{%nLQygkIuVs zi!YRgpOE-@Z}V4CEVJRv$>X!Si2TQExPN~U|2yyeCq_%_+y4FT@BA}K6zKyR zNF^Q_UJ$8KnbJb6*SAJR2LjBWfD8}GvPn`+pZ;ukN+gf=wc5(+czx}A40m?+f&;~& zQk?rI4c5E7)#W6OBm%-$U1yVv4G$lei?_|Rx5I7TkFT@7uR2P*%(TvY-gVZQ=ld?^B5UO~tMaRV zb$503DM?oM{(Y(iEQKLMQUQiM32S94rY@I23`-day2Lc)&HS|bK5o`h(Hx~y(4M)FwNAgy9j6#gmzs#DF%+UjiuEju7G7Mw#khO zksYT$mBm8#g2A56P5mK(b{s!uLkV&l z20^eh6sK@`7u}8g9`>W@0DilL7p=xz&Thp>9BUhd zY>3^lLe7x6BYO#dxHzT+ZbBc6z3m16%HRfX>;jFo#>Jei8AO!Tn$zaD@_JiT*U(W{ z32m%M7LaMbW1w}FW}-M+EZ!3l5ZYZ*W+LSIw(!LNer~^3ndzsj0}il^$X1dyQPd`* z=ksRFbHOmtWkj85Wly<$c-ZLUY{O76r8cNhJlLUT*&>oNQ8>jsNmVLX232ambGlJr z5qC=gfJR&TLOg(I<>yugVS0F<@8tu-a5-YhSAxM5XDW9w&m`yd-1{M#Qinx%J>$uk zJ#dG(m2v~XYeYT~DLpK69)BGd8Dp<00#5TjPgQ_$MC?VlN6edaofgUUtTl|5TJS_D z$#3ix#sQ%__KdkL_N+4O`m8goJvsIa@RS_+TYa*YrYPyekEN|~o*5=##hl!eYVu%Z+KrBE;(FUEVTb z>ICc2U8`R{YS+ZC+l?jnt+BaNtD%Trpz=()sNX%+iKF+h?@K_*W4cm zownvG({BmGi1G5W^B)Z%DynA6Vur$I03dnSM99GwIlXt#!ZC8(bl6HzhH#r|_r{uX z{qNTekmn>XwCm_^azLRNV1@?6JCJ6$0;!GcE6SK{-Pn-Jv;qchkuY%P+T`@%Z8+<3 zyQ(f9ube{^0b3!(-Rr5ck<9V)hd z6?5Pygm|ks3mFu$Jj~Io2os!aWX6hn zitL@4C|HrgFx|a?vjR5vYRK5{$GL;oV+Swlx+u+T2bzvC#spU$_6y`^={ArWFj2`~j>g9I>VrWdC-cb;j}iSlyd3t71!lRdB_%h4R*JkOJEb!DDn#RqLY zhM*k#!-T_Q06Vj~TmI(4*T1R*o-@@e1GSPO)|tNs7a3jSYf8w%2YMI(4y za%~3(CkMwgHu^OZ+w{uWG=>LK#`=F>h#wDv!ZNjQap;V{Q1Zft7kI~HM-BrI6Z{U0 zhh#VtQU*bAD$2r$+4kgW;NtuB!46=DR|Uw}S~f*veJX5JmptGB+k$Z`%3Uf-D1(lw z;{^AD;0lEMdfD)qcO6d?><{|A=OHpV1BlFmkD3h$2EA&HFyrPfUX(=c})`vBtHwsOpD%90+p^Rv@LFOd3Nl5c;EoY2M+ z5SN6}4)0-)cvt6ll70P0icwAAZ?cDpN=dp5HDLwN{&YyOu#NK-fN=Jpg@R#Xtlj%IcV>g;jd(JF)bVrHiwR z%i7?)RwbkRv25mo?nH9EYbG+7ACo`}Y$=_?ahiAg^YP%^`~K;x^9$_+^&Y4bvy$s0qYZ{Dgm0GCnxEpPdjvF2f+xp>UV=cv6wC$7| zAc#07i=D)>?`npC)nt|{K{Z0SN=#C?Dp#Z2`nST_Gs#1E`gFyxfyZ}3m!Z9yK!CXz zx|9;#L*&uq!F|3t?O_u$Oo}uSPYr5QV?kJRFw>zwss0GNw`^ka5sRfr){JH4=w#VT zrNznng^UXs;{!oaWMDDE=In(a;#z>3v3N~aVS>5mX}&YrX(+u$pHa(#ZIX1OKGYJSFm@3VY5kCTehA&MEI$<_;D%8q8LK`SZ*`E6=Bhxn$T<#`KrfO zT<)sA$kx6su6;v;dIPRL-YT!{N`G|^xM&FWjK!TZuF0)dH5yJlL=<%#v zEy?#So9f_d+&-hmV8xt!Y1wJr-wrO;Ia^rx)H^?MH25)rNveD@wO>xtxbimLw(@5vbylG;^~`qg2Q)lf+V5hR(jG>LsjqB$d{Qi4oT$fG@;A!azGh3h~6PBIJy@ zFQ>U>5*6gRY&0^1l#pONrp&0ERN7ff?uw~>YB?jABsDH?)uY1G;*{@5rVqt#>UH$A z*6P^gd&HY`7cYwD*UDG;y5@A@w%pM+kDP7#H{IJX8&+9yh#|TFF7G`l8wxe%*BVHs zM(dRIFDVZ$31pVj;D~U$hYNjD-G~+qHbU?T6l)@u?QeX|?qH}s-qCa6my?c$vnI@k zcDwyPeeAi)9izY}m(3fD4jT73J9tmUc*h--v^EoQn5uz^t#y5yqkw6PWwn}^4jufu z*`XP@BSj6w4CVSSY0T^8enImM#<<-ZV(^9S(7Y=NbjEi@<_ytC=1e>bL-!2U7_>&W z7|zl>-8Zs*_nx+F#88k6R^fW&(k zi}0G60ydE&?+fdw2@a-^+`w>RvozqKwL&VsKpqV_Lx#FKozw6}9@`L-y_Rlh@<^su zSBOB$M@8DZQ*wvCnM(#&T0wQH%A<;PR8F4FDOH}g*s9vasuZD-)TUw7ve!DQSP;}~ zq^b)T3a0Y0N*t+Z;B#-639-}UiQEseCVrWHv#wMLoE!xyzNEhdxXQxd!{ zNQ!W$N}9m z1#js4W}CY6i?2ff$O7oCAi93QTI)R5L8BH*32@W%>wkfO8uN5t#>T=0sb83kIw%pU=k z<7EHDk~yy=yaHE6|F%k9a@h^NRty%2nJ+hdara>IkC%Gb>gQprGYn`zvJ$*@xF^S@ z8`>+19X1T~oRx$aGFB{mVc)`^A~TC-;gjq(L(Y?Wcytc3CBV&nFPH1yMz{~Et?UFL z6PCF?Mvf9Na7qUc@($FnfX5uc@VJ7GxMSYoA>d{f2b{b!W@FW8t>H{DlXnW@!xeA z{S8_YT3O(21A{}cYlrltTs*4D5)S4mf9uXb+ezN0lZn(m-J!#MoSX!XM&)2&T2y8G zmMFwc@|}Vero|RProA?AgoA}@ybLj-?6-NHbzcgGigFo0c$|3FT56{%)@mtQ+OLkt zD{b7Vc zy|2tp=)!jG5oY27*oq?#Bgrff3TzxTvxIO?v5c%D8LBWha(6;U;|!v;%${4#-eH$x z*ZJY4!~%+d_Cr=jYiQNpp`uOV9%1u=qBjNXDTw=WcmeakTRM7|enAgMHpjW3&FwR* zzWO~2E(ZM^ysd~|d1XK}^)~ zYkHgZsY{hRVS^KZ-8f1Y~%jq?3hLfHRI8DsnYnlc7|m0259pulZ; zT&LqY-INoC%26N(lG4>e4AdJpV8u&&v%&HD!jZ_JAXptS-ob6p@J)^!t#kQeWfrkZ zGmv0oLl^luL3Mnms=_b;uDwm@|^0%)vstizlg_E19xuIBy zBDa@VIN;Sejb5}R-+BM?gYcv8tu`Z%>6N<|Tlf)HnnN*kgcK=G9$Wqo+#1=;W^soh*fR6>H zCni` zpz?BDz&Ch%KgnJ@p|HvhSJEMybLKjI@^X=L_3HnJp zzyJEJ2}2nAR?2>~e-SZfp%qy2x}9ou5bH+585raxm0RyD0dEba<_5BgI6d@C$~jDz z)w;3bapPt!P1h)uK#vQ4lBt<4<2b5o1#FoaO{vsja>|{e!W;rz(B9i=n(mRN7F(P0 zk}cY@@ED07IRs;7w_=l)p&)W(xIFVvqwy-OE6jR1edf&q?g_WiDU|a3KCx)}Cdv-_ z1~qtz0GsPkHDhfCbXG&*nZpE)T?6GVIB)P^p+3eX@<5UjRT&-(hqhkm)LKQN+;XRW zSkS46Jo^MAc3Qr6z8-s!(2*~O<1+NPVB694l=KdLsbexprh0-Zr9W*w4KO1%x#F<* z18?`n`^?M=)JhukDbpGxBtJ{o=sw-TvPB%1mtbpu8I?vOwN|iVnNvghh@yGTDTIZv zO}vwBIm9#^_da`C*xHaY=!fv{c_W9ts(qJ*1|@6Fy(E^N@i`@rX!Po?ea>KIo5}H` zLlm!3qhD3;GtCwxZ47W3&uT+tYI#1MK0cH( zd8$Jb?9wxeXWIF@j5>-p6s_Te63`z}##v>UhvmpxAP1S~FaF4ixA(ExX^r6!qhzHB z{1$O0@Q9#QiQ{Lj{Wtv)(d4U3QVhEcA8{{om1IMoUe%|O<bcXEGVp}amZWC|s!l=EJ^9s9-P=1ebuH{Q(v zu?t%IU(WpI^i{Qsemv^x;NKNBnutr%-}RC%A+PFM!zI)>Xa^{KvK;kylaoH-fzfzmoM+_ho3HmBkJ+k6}i|qurCC!+P*@T!8j8Z`3SRH zmo*t9*Bm!-F4!ilvj^2iJ%_p0JeQK7Kg%F5_{N&J(h@4{n$M-LbyTX=E4%+@y7u9Z z^qeH|#C7lnHhfcpRwJ?{6Mui!7%@AQ85rHkg)}u7{5T?I5#uh`MwNL=r0^Vc^<%g%vQZy2=K~kV3m;UyuHtC+s@$WY$O(^ z7a2~^c5~eU$taY!x7da}qUm5S)6HC!EXd58T+Z<1u}eQ5bNXlYz(gT|XXH*C=0bnh z&fvrj^U2stKQ59{8q~&7>S~WO7A?5*9!bkJtUz$_kyt{_gx{*J>pg!ln-Y;ZiPv}6 zzw>Xq{=EOW82#VO_V3@Flx+V$u81sUYsK$;YaiMSBYkxpOr4-|v(iHlHET=$pOyK| zYC;kQ8jVXj{aLk6t3?@6if>(f{&=&GP7n2B`7pT^FeQ~IcK1c&z9}w!gA%euAXya36@A4!INCk@q4ff# zO&P^LkWYZga;=zc#E!>1z8+3+8X3djZkn@hw#jVGpsc-#bi+T8NYY6HI2ei812&1l zcA${+HNR7*Pu*pxU40if?Ez#R^|Et_3WeWhp3IkJjTxnGPWRVm#Dy!mO*ZFQ2P-Do z4wYT8aJ^GqciF_ofo4CFjkfEam*=_%|9N4C+(+tpahG<{j(DN5iUP5jOPlhI`GJvK zW|MRI$ zE0pXRYAN5SjUc6!bksTEC_V@4=f-ueE6;17RY#XRC+9f|V2foZubJK>nmS1ZjN@@c z^H|6+9lneFMvlhC(RDa?X37-oY9x@@rsK%&)I_Ic!5T4nN@<46-f>7MJv8*b1XuEl z@S=NXC}HFLC=>_9oCWS;@7FO!=L5CCIbwqO++oJMh@ragnw#~+UV-F$j`qT%IGuY~eW+@zTA;atPY`dTmBCALE zRh~7N#W~wxqP8*K3A{eY8Gq)(Z}E>~BcNmbfY#w)A{kFRgk|uqK~9WChA`RFQ}9kw zB06<>pic^|66IapJXDGCx4mD2n##oc?-o)9Q&)Liaie#<$ULFo0FjI4!yoTX9Dy%6 z2+-z|A0XZj&a=gsoC(@2PGFm-Qr)6&nDKO2u#!0J)XvAXN^Yr$k7lTBUK}CR;!$2o z^~Ut~e1EZ1w?t>NQ(8_+=gZ-P4>y2Os9+!gq2KZDtIB*HBXR8h zQ#WQJL4~<$1wTZkV@1?m5{>M_<_6241pZ=mT#;iD!IJ2pgQTKlM3Xw<>HSb@4Jl(=QbI~{P z9)AD)XNgY!e?`szROwkNo2ppC$Y0X+MhVijMH+=eYsCiQ;MRjNYw^f0u|Jss1q%J) zvI(H|&rHzRu;ji#y`Si=!@#^LjuIWc798J0yv}Z>P1IQlGOeb>5BH|Ko}M~fFDLhN zQs_Q`>4R!mpz{j}f=E`WE66S7uG7M2SO(?fZ-Ro^Rg@|%W^0RgB~i{OSvoWu5H?&wiFlN^RvHb@M>5q6<5QQd5kc9y@&n7POkTr_D+ zLDe*w9!M7`PAMO8leIMv??Ix~3b#3;wZP@->H3$>$khAqxCT8IShH_;kK!x>>wONfSRyTr z2qQwP89HwFIO+2f;!8BgMl}@YkAzErV@n4Y8l&(A(|BXu>{@T7U@_3#OB&X1IXR6g+r<-nw9Pci$VNouLbbv zJa`c1Ux_w7pO1+{m&}T&f`4S>)nMXHAf?)t+Mt{tZq~!*W_5M@!RfrJWKh3F-2Ce18|FD#GDhU0pi+p-8XjjTD)H-t{)uj#t@}A0O4?=(H4-y}GdYIMID zd*yG#8JYewX~`N`7#lh{5-Zs%IyrpDj))ms{kvGMQrdJxQbzvTB;J(%Z5`I+%L0x- zRV+TC@cxq~mn2k4ki4<6fNomaflPbj+=LYibmRu^rl*uC{+R*jm7MpC3a<0`c>9mr z^c1E5_yzsmK(^-$&r|01mDhRK*9@F10JR}k6!ezF9!IA5+~o!HR$m9H%J0-(b<`uZ zOw)BwuLo}xRdp>rc>{ZfFgPhMv)y`M^$T_zZ4f}mgN)ncM(q=p^C)_|&f%bLb78$T z#qzB!IU0=7*^-G}MS#7^J&qlBzknAqEmhQJU__FhYGBwz99d<~sd7kGj)$M?NYAzo#}?QkoLeX>-@LE|o3J3}c{L9&l)DySLgoNMOWL7Ed65p*F2kZ9d2 zx4d~JO_}vPgG$A;3`(WG@}rkLXq@eW$%eJNW*V>%m!iFPEgs0YLgMCE_@ei(J}wLq zGQftHAbaNw>v6hri>5^d9d9$%dPAEpHVM)tV0=3ht-2@u*2)k{mp9}HW6HHpSilpQ z9;Af@k`U3!aB4D)^?rhHyGdM-IyUo7T@Yh6IJOU@d$(qt9m*MXwR&pb9V%+w;Hfhd z2r`Y8-h4ldQs|z+G%$jWM{z%tk%%W*>^hx%`VKdm=_du+GLZ6JS38n)yz;ty(+ri* z=pB)r!FgvS#=MYElst5qrc7DX+s%`kNc6s>XIjeR4ui+GUD7hRtJ5vBN?9}H#N60i z7nKN{d2qHIzKC=o>nRQlKo#hP8NHc^F8&n1ztf*Z0k}GWci7#btJoFV_s}p|#x~qY z12mJv3EFtq*jJH|G$Qv<9rZu79KT|aFZD6`^l|z2gstZR;)djZUPTj#+5yt-v9F>( zGHL96cU9*+#4Ix%0~=O`_FeQ{f3Q^1eG2$Kg+0_@5-z*q{+!%Ff$8gT2aMbSzEGSL z{KGi3+BTfu>6Inlzc~~$flK=twQN!~ zQ4UQd4dt^vRbrtdmG)8xgGZyYB(JzsV-|&rRp1n071u%`S?0k>h;q2cEYK&4x!IV) z;oVY-p?4C1^1_CIzsvYRzM5%)_YYj^bArhM-T1>*-u0@_GxYKwCFD2bn=_|KWRP2c(#*%l6eP8eqkRxXk>{mU ztaC&uH?q|FX?KO`(7uC)e=s0MiB((nH@~g@t!yLyKQiFIB%7w=x)Ac`Qp%{x!HTqF zo;7)%v!<@t#?L(Kc+lUojm5(dQ4q{%rIl9LMfJ$UZH3;4K^Ung&~RGWZu+nN^w;qw zdcmT&&+^cw#zi;6B#pS9uFj9=E!!M#SxH}?M^AhJkpr=D{T=yjw1%*3#2d(P!WiP6 zWJLa&j1q2q!4A-OjHuUsW;PKf@**I35^CQbr@$DD-dtqqg!P8tQ}zx0<0`d?>Z**U zjE$8;R>7G>o6}2XLG}b~gV0HhvrGc@-_klZ3l$sHrOE-+-XxNWQ6!5?Lk+f(tr?tt z(TU6zI;H9=Q-44(muMQ~lyP)YYi#VNoJleA-y4E0=rd;$n-|_J`sAk4`FK{X$7q@8 zm95rTgprhk=UcFfE0$m4FOLU}_?s3vUE6pJ(~~RO+l>*c61GmW{9hN;$l0I;<;YT3 zichUr3vebYf$hi{#Z;Jn1RDb2CQ7#uWi$Zn7{iUpw10?!v+mj%2JC21rMmjl`JyaB zKkNtw7ig;?yS}CIu59rwf65${Z7{!#pgp9QwZmj+RlCL^@y^WD&=^j&q5TZA^yg0# znx)0Wi{*E@e{Jr|z%>m(#HuAX@VJy8QMOJA6b&EcCOY?B91phPvRP#eI!34c;yVBv zqdp~&uj15dm~<{*ln9!vkx?dX-z;Hb7T>NsBBIlP(cE)vXIB}T*-ljxde}jepX=PF zE@(c*fME{|kZ^!x<8?KydS&Ga^H8AoN9xn%3)u|pRvYKM8vh4g* zDi>KXixn|=ss%=Qk4bxNgA7S78DLg4)L)Z%`DL10TRl!nej~%aMBe#53Um~?k^Uo6 z56wz;znxA{czu7ZtNwts;#lhs$hvXp?*Hs-maZK z7}k_O$T~OA(E5QQN?pt{fo67?*Xwk`o6nv&@SB2Yw^~?p4eX*_y$Pu?$RqAX@3CaZ zd;xY+AAX}*8?^bJ$NIAPA8P>Zi-73@O9fPR4!i~VF$vdp8bAAK@VRL4A@*-D9}29K z8R*#S9zfuHHcH&*LQ;61@%?oh^(Nf1ZmB%l>An1QkrL=1)FByF#-E1X_O-Do4irzc z$yGxH`2?m*h6maCu-iH!1_54>8bPj6NbV3kZeSn|HS4`a#XtJioeCk&!H|m-JtCUP z>yNi4JfD$FK5Qm_m9Qk4gO~blD)Z9-Nrg zSlK?DY|;-rIcHMtfQ1tOcLYO%6`m6G7-k0Xb0vSn}$GwYjVV zf>^T;@1QSXx9|HL2cqdbu88t0QK^>L#V&;4gC{}e|}ej6s{zZ`O$q2ZMyJ0 zEz^sNOeir*^&-H%<^4IStE&O8;NOWI&+MWur$;X{=YA!<@XH;;9mj-cZ*n0LI;CVi zjdWk#abHcozj{9)^^zugDbZ_=pdXf}KFJSTp~zOKA){YmJGFPp~>2slI@6llCkGCS6-Al?^B?`Ca{;JTKK` zO}yuwcFK)Q!t*3-%3KyN3exZChyRw$kpv9^oUFQhxgfV5wi^f8V+dwmxOIx%%~0uP zPd!uE`@Yr7o>iL6F`q{IWocNMAfqV=L-nN}#|E;4bwFIkdP(m2w8&!ZFdhoL4sd!6 zq$Izmvc)+xUi^dIYXUuq)iBLCJRjBO0wHyh49d{_b?0cSEHry0@!yb5GqM-X7LZS3u-7M?K*LnCL4Xl>*jH9VEA;78fVKbDLNmDVhZ zz7g;Lc8vXJ0Y&zo<%FD-zLSZqgZ01rU$NSffc(h8+hfijy%N%IjG?7aFcuG-H^Y#C zZ@z#Ci?qTP$8^J zY7_ctzmqm4L}-GAnwAV}*F4D4m$($dGER)}{b})@3z50j4t!$3e!tHMQ(=z90zkJ> z6$#Bgx}!rXz;ab*vu7`5(_veXX>b7HLLN;Y%>}@cibgT{OEof=yec|sG%eXOC6+f$ zr}8 z(I%dq$x&Wu2odo}<;4pky1-hhnX*5-+63R`>_ESL)t1f=XwvKYqXzvRC@OUj|HAH{Z#GKNQWi-bo~MPz zNdj8Tfw?^96U^Am;=J)I!`N`DX#SByl{ z8OejE1Hu70`;aU9&BOZQl(XzVi}{ug9lf*i^%n79d1UA!Gom!s7!!e3y7h%9)J(*V zFVew@J1P{#C1&Dv2%IQ8N$x|WvbxxfV?0##Skp>!EndN6`6rwnQ_hynvnPx8MLIj( zv%2ftD=s`Cx6m2RmsNr5>;0M!T1QF*LJ1SL7|@%aqI~evpeZ)14nkVLIS2k!lZ865 zK?m|<)4A&{1&!2Zzv-?i)(U(w;v+6{6i;c<;&&OX!5l2aV|f&-H4%!pM|)<+D3LvE z2Quc`EbV6>Xcn$1Qf&HyB~yvFwK>M$kpBF2LqK2ZTu;t8PMI0|EX*SAIlz3Mt13vw z4D!UhF+wP4Fd=vSb3hQ9%B^sRA$!)BHdWTd4*{oNUC*ZfpYyVzr%oDj* z`pyR8BeDw+#5t4D>fmctJCL2Wfq$@B4`V-r$XrmzG`sc1k00G1$`}=FT<(jHk%uDo95w z=PDdDD-`_zE5~lNo*Y--cZ;)@djpgEB}K>M$DW)0R!~08DUaEgr)}=iy_J!b_VMs` ziTe{PgO<{)y|(sTZ-~7DR)+?7}OT5fFT7^8>l4o$S3a z=6KAwlUk0)brZmy6<$33Qkq1*U>e+g8W;PAa$0-3wOdEVrgQS?wh&24gp)ysG5l>BPT*QZwAf5Np0TxSnrdkeg` z9rTXFc`|CuRxL%U+CAd;6WG2jh`Tv3dO{RS42awZPL003)}b#0sPg9b2YU(TJfx_) zL_(RYs2tmU*c~bg@C%zxZG9-UftvPc9K_-9AEhktabkS_H-B~fEr0!ABLD9T6#qir zepiEp0H&x2FIGeuu@JMBU`=8auq@sju8Q4GGedcI^oDSq|9gYr8B5C}|1@uRGNzo< zk}&j-oJx9D&6A0#NzLbXP_Q17t(8)(!9Xt*6kXHZc)ul7Md0`wdDv|XaKSnkacVYa zav%tw#QxD3d+Z4t!XUQ#y)yZ(V4TQW4#<=jx-l?(rmQ%jA|0waDaY*++~NujIZJ5K z#Gx9A4L;+EhhQ9TC^zLm}G&pj-TVOpqN7yfT4eejVGC^1oMt^)D zL>MPsnXB);1=*bGL~DD>#WBY}#9Y;KJg>7r@2ot<(JQDWK*1RC$_>F#%VC#h@tJMU z%=5t=(>UGyS@Z5DpGuYgPta2yuiemcud2Z7!t=cNxkI0|s ze)6r7_Z@a90GGH8wm8D*b^Z9@a%MK!w_YO2(tHW}{ep9=&acxBIyt(gA%vu~eZbRb zV$4e~Qeg4%Ac>Aff0dj*om9S=SZ=>haRft+_H61ly+%FkHEG~jt%YCl&rnW#APDn< zZ|FP!8_@r2J>q{o`YObJ(>xj)VdWoXpbvq$NwJ!R5}>fc9CqueNeyv(!p;2mExDfo zI_!QPKQq6NN2(+71Aq4YU-;bU$IyzoAa7<+d ziL75%2=mP|D?2hACZHm-I=wji0Q^$cJ5$&}GYu9?5YC5DFZ;q1lY~>%ypt%Rn)m*X z-r#^|B*HM>i&S1HWSVj$ZH z>RQvvlKZ1Lf7KdGjfV^+-|!FoH{k#Gy$o^5^Plja7V&B949BH2-ny}KU?Mx(gCNA@ z;03r^uv;DmOh{veA;jUI_&2*l3AeDjt9T?TBm7`IW`fSv+p5~iAGfbx5WSEl*2wf0 z1HGw1_7_rWsg3l)i z{7h9~5CFiYY~e=dL4@MOqK8!77OgBr7I{vqR;8m=;X>^?+Jl~i4`+7*mMRFDeNvZ23d$K@>BF0ZKlEWj&_6Uq&tnpc&XC?h zGX)pCAoAg!P&B}B|D^JUMzu*`(>9tgp0X76xdCvR5rJjh4x)Aokm=5H{c&b<3`dz) zBCKPaHQzQTx_{XnYs+-o%atp+=)FFwkU8kJ8{$us61g2IYLi-t*sp{oe;TB>(!XuV&`DdPBiLG1(M3jrONlMUXH0b)h^8(i_~x>;Pc^m~73$^&1wJ<`ejrAT29 z>-f#yXM_Tyehq*(=$}?t{ssNSJP|MNgkpXa;a3tbC{)W>25rMZ{b5rpu&Y zBo%ST@7?cD4P0|#_u8mP>hHUQE9|#~5kmw}dIo{wLXpr6eE{`QqEXEB=?Db~!j~^F z9Q%pmLujz#uqzN{$Vcyplu6?RV+0{qHJ-tB@TjcS3a+wGp4)G)))zTnA3J0}MD5AK zcoRMB0j@~vLL&^wN9x$ZNVF8}IUrE3%G6{C{iqDwbfHy;9>c@o5XE-V!_NQ@g2Ul3 z3`(Td?+?*E9FSBo67v;zpg$strzWaiDP3!hD^M>AQE>!Ys!yvax&x$#D$=Au>CH&i z4{hdtXGqI%?L`DD(kbDTSlj^8oJDJ^EoOAeRi0c5Z!%eI;BeW;^H)v4Dabnvg`Gi9 z=IX}5N_F&KC0PY~w+(5&YIo_KxG0~}-Eq;_V7>1Pg%NB)ccTY)j4>E>7$gFVHJ+SQ ziw2wHG_-0zSU`6^e4`Z4|!=J1;Nt8HR4)!{wYoJ_x+0it{?QxvI9HKk^dU zHydkwyXA9D*prLc()*-$owS}(%6A&AWZl|CTd1JX9Js{r3>tt4+8g%f{PnF&cM(F2 z3|VVVaf=q*Y(i8#uxLx>MJD!8c8){_2>D9ZwL2ROXf)AL->d@L$9VszE>qLh{F?ISzD0%0uDV$&`=#^#(z>K$lno0#K zBoWM$sO+{D_YKm(wCJ0c1_(HsdGeXr*`@1WpWM&E$YN&+2l&?}H22asIs=ZADxXF> zh!6Hwr)Hn5EXXSWn{IRqZ6RXS$5Sx3#Z$XW<0j+OY}8XD9McdsDf@bvHgnHYPDU6Y zW}OvN;2X4I4dox_$!m=2q*H}ah>Z0LYvBFz>))o%Xgzw?g!XjMRLPYnT8{T7&024V zB0ng)1!NhO0c2!OjAIwL62KeO4fjb@Sol5PNI5I@fipMeTx)BN&<7vI(Ds6kfytu# zV_*gB2GNKCkvu1tgU~7Q4JW-vY>MEEc^0`MrA`-<+cy9}grWC1=M@(rm@ZFbDfiw9 z@N)@t1rP9X4_*YQx9&%+2qWaw0Pi0y7b74Zs@1p}ul;jU2Rsk6_bi=hzFMeX5>N@< zHfH+lwfHI_3^M7IE{YV<3ABQ=ox|pw2pfpq%0<83{d(4DW5IWjc0fo+8{wQuuR}ST z0E~;Kn#9{a*n)O*Sm{}S6$NX{;Lp{cC^cJC>Z~`oqP%`QtNcJuIaipo%`P6v53N_j z(%=?~2r*+~ya3in+91cyzB&0or#WiC3grp(py`QzCT)#GDfs2AM)#V!gjykGhL1E% zDfrTz!;DnuiacUeX=2As{|a&@qp-H2^@CYJ0eLvB8_{ek)Masqa&{i3CB z`Sp?h>xXs1Tx_o%kXXYex-o^+td^c9af7-#Ek^nX$;fK#p4F&*GJ7E$_Q(y$Lvhym&myVs zWCM{&MqCMJe^^&vi-F;PmaLic2P5p_ z0Mqn7zHj@LxYx$E?5rM-m?*GlI=LdgR@jw=Ll39QbK%izHr zHYcxA-|+{BS9KntRWq{^2IEAsAqW-p*!v`|VEO(M`+(h$gIm)k_n$4Ez24%ixo}I& z$Lt;T-HtUW5SR(m9|1Zp*q2FG15X?mQmRrd>XjWfn}@<0tlA}Rde5C|7U)~a2&pia z(wkZav+1``ZH2c*X>ZVzg|cBfYBEuLG+fX~FXKdev*c^RiYcER@8TI;q`K)8Oh(=h zQTm-JI0HtqBI-YX`{=m=fD}6qAIk8U(L*aR^1tw*v?I2gtgml(sUVXu6h>B54+J?+ z?@2$!Zr^N>4rtjfk49|vHe_;&nS7c9M=pdT;v`|q1sPEKbqJAS#ROY}1;8@m)ICFx(z(GR8oIM`#$@$zC-Fa2ING2Km6^KB7GYR#5^r>Yc3e#eLEgoAddLhom}%rVYQv5hrxf!x0}UjQl|tsk~j_ zhJeVF?+ph$JQRu-Ez9D@Q^?*H8EuQrgc{=@lofNx<11_GE}DK+?H`69$vm5L8hfr= zOSHKQH0<(!sje01bdd!=eDFp2?hvdj!Z%mysRMY1NpX)1fKy<_*AtuoX(<-Evm_|| z`Wd0<6B=2lB=!Q&mUQK89<$eQJ|gCZ%E?GQo}k}~5}c#BgB0X;okQ5SsD!0nuw7<+ z@WOBb`JGAeNK!vT58u-rfq(#%7Yg8@75C9hdBNA0J}EQ#|FHH>L6)vt(`a>ofmW7&4}@iXFQoXGS3vBC8tAO z%3L$u?6=?k<^q9o-^RqhK){KA)OP)sa1h78+mp2YoD|B?XM8g9-gE9bY&Rlv;7Uo$8 zn2om5_9Be2k-*d7wA>Sxq#-1JRH zcGoVEf{+a%2!z{cp-dQTtsTZEV83^{Yyo|RgSPKkdW|masQvUe?Yef@9ctMSl{7C^ zmdy~U5Bpqw50OMaFJ}&$rVy4cOaaz~-%OUsz#NSvxcD$(271g=}xMoU!Tq?j} zf*fAZlI)!OszXJFF6BeZUZ$`D+KydxN4qFp_Jv+$q0Ff!HP>ozqU(64-cijp`&8db z4VeKf`wYd~X@D~eij<}4et!V&a_J5|3M)=`3gCCpBR_`O@Mk-ZOW#oyfC`P$HUNd8 zZ~3#GQRZV)adsu7ic12PQ3J7Gn#j5JSW$`kNv@g}qbb36g{JiwCo$n122fe}Qmsuh zqhm2^8pqOEMBEk}7L!K1THNEPRK+Ozl|w^EpEMRq6PuW857+177!l)&!}tPZ<#`9J z;fY(@%o0W@|C=)8^?dC#VRMbaXG!rzd8kmRWh zC9N9b6f15jCqX^dD_8~Plca!cYv|}2Jj`zu*ylJS5KU-$lxp^1lq-Sa!4g9I*cjU9 zoC8kke8vD~7vY|GR&n-LL21@U2@(~PpVrj0pkjQgqRhzeCc%te*onzU0xZ~pW7)Tk z{wO8^nOZ!k0}3+q9;4OLYLD^@APA0eI)I*cwFyHT?1L4-ft)0WGWPp)%*ZkKzwts^ z8^+4zq`i`v)3-%4J%5Ay>vnHLz$a|+rNt`x$27SA^8Mxf7blhQx8(_7OLmq-Zi9`b z07a`y%0e0Z^e%uNG-ee-K@kfsN6KNXrMy4USUpO+M}DV27Fvli4{)+)OmYs?v5Fh^f{w4MR5&H4z5J;bdui! z5`wDVzRy}?K=AiaBUi`tqO#_E5HhQ#^3&G~z>WSeKsak8&0Nx4`-QEV*qq2>1@{}o zae7txTNyDou4vYC+Ck$)(Ge@IY23<#PCX&_Xhl=O?|~ue-wxG8F;LDs@*IBZ2??YK z$(K>xbGryJqq_`(---1E00M?BS1IDPlIpCc0!tb6aNc3-YtEYx`{9kco&>VuZL+tT z#_F1aLG65)f@5nlwf?HO`O~fu zhO$E_lP4U}&|G$gYD2aaQ2TQ5MtKe256)WrxeNLj?h#X7e`0K`Ue0$482C|fWXN3; zJ!<{v{D@=OflIqYuSll01TeWe0=RTd>VIh0#oa|2W~ABqSFrXUe`6XPXAGPXJr7Z1 zH0hJLoDj|+)HY9-h#zK-ybpuGMl}2}_ylteSK9AQvWpK!Ax>y|O2U*^!-^XRDvf{5 zMy%J>-$5Vpd!R(|)W5bc8hCk+&!#JQ;w$o$@WBZFm8ADju6C6?0%0B_(Dy9h&}&); z-U~9B_*kk1Y)7hkvc^}hEHdTbo=il)cU-Kr(UlGeE|Hwg6|7RBb|HDBs{Ojydk(QrV zK>4sM7Curm1Oq|53gY1cJptk~Qb4k0nSrV6u5nnRTuL=6#$AJp)z9ZSQqV40494jx!{{&Vu&^_n@9Y5$Y&=eL>&ZBL5nekDo*@XlYi8VWTOa7!pO zlnfY9-bvhZbwus0;<3KtCW;w~isFHyiq@8Bs5;`ZV~EKegGQT*^C&oC zvSXUPS|Rk^eePi-$*HR<;@bbbO zVa&9%A>lCw?f-~uVn|v?{vABX_W_vm0h#oHT2z;>h|U-aJtS_2h>mnV{5nU1b4X4nXMM@oMe?vq?PyZ?GoDj_GmRl-x7(aa27)$-c8;sfUjplH8biT+lV%jd{ zhZIg~{?BF{GKOpPzj`v?-Sf(?ufhiUy7v8Na`nG0?0=`8sYoj$3w}YaD_@!$DG*@9 zesGWx;1v-Be1S5CAXODmP6Nl7ITOtIfeAW0wuDyiJA9AZ-hpscswD8ydj5c$oPnPT z-bu6)JA%uVD<>x>&uy<~S??dOXMDeq&~_DK#Jkm#trvHg#THecVytT&RZ%Ya zDP3cc3Hk|YH`(r}(QH~l&dR937MCvJ7TZB)_7@qSv2G%H1!Yt_Oj$s%D^pD{mdO4T zHBYc1eT?wKWT9YbB<&C{T2f-1m{xYpK)<-?zHoVQB!DCF3OTm?`ZXO74& zg@eieY&K5e!WWJsXs>_C$X%C>Y0yKaU+ZNnVK6tyWcm`~g2wYntTEI2%(!|6r-_xP zvbl3x`?re)yrizS#O2QdO1-1B!X^vl+aEFWka8uG$;2LmN#o;m;!v=7r%MXyV^{(Z zIt7UIpFonfgpYwMg<2%GC`^vWiJS*l8-!`uaA%A?~p1u_g58y|_jKsz~;R6db=}7r!&uJwG51za)kbiW`ni3#*Vn z_a9fI^&tR0{`OnQ^Hogk{CX>%{#V-lznJGll?l5qceam3$6XTFP)kd#G@!z}AxG)> zrZ5@h0RR>njim-n-s!BvPbsA4VsOXniD=aCPW$s$q5yW^x+<4Y50CMsS zHB6pOvRU6S;!m45@`!omeGQhFR*n-R#D_xE^Drc9ow$SG{~%5hnINpIG)jw zR`X6mU<}9HS>*m@V|@xSrmbeL7fy4J=~Wc*s}G${nZbEFw$}#9;%?F)&}Z1%Fk0%o*?-$);VF22&fQ~m7oESs=As=0M8VW?4esX}D-Xf0o20x!(>u1{h6)Vf*fG*Xu@C^B zKVKOuGAqkj42HbLDkPW>b|V*O11ZH*b2cz&pmogv?cPd6tQe>-60>(R6aYeP;24~E zB*~W(jN(FG@l{+3iI{QCAYz7c50C*avE6tW(Wprj&N!%i{J{e1$-VFUi}Hl{eLQ67 zPC}b6FlrnERRUp7K(f4nX-^JNvM2cm;E0TA^F^UK;|u{p5oZXTlJdQ^7m2&*B?Eac zryEUyUmN8|I}8gQ6|$0qr3JC7Oet!0DXN37BZpuNAlT}6)@54Yju-g`~Kaezc@94E6N`;7Y z#&Hdhb(TI;Ebm8!jNvQ%f1LvgBrdP1Ulot`zj6-zn{fY%n)xdj&P==QyiNdB5M>|? z)Jw4mwS%N2)Q%x7K`3vhr}@Oq0==1g!cF>)|Ji64)Q5rZH9x|9F%P!E(!KtR8=Pck zKH|RpN;Jd=8uhR+K+;48Qs> z&>iB1e!Tu=XxIIKvQK5ntX3^?J;Q;ts{nZYEZ!gBXp1I9yC;oR2F{zqa2wdnMH(D| zxAZcbPlH+6K~M*CrN1!|5H_6Iy<97cDAV0C*T60~d`6IRafWF#pvhG0jY%w+>Sc*M zh0)ZWJ_a2Zx@Okcp>BxYw@fMg8OAW36dOgIBDC|Jj*@NMICto(Vu(Tc38cxzzn`6i z^#?~^T&O162az|;Xj_EnD0AT_LDw!M8Q6_!@D=S2R_1*vRx94t9$vO0#fQi#^j*Em zn2*XJKNav;i{LW|6XOS&+U_A{OHgYIYJ^sK*2v!_dDXez%Jo%}{r@XX_}?Occ-g;3 z6Tp@v8x3T*rT~JdB7*>53@9jKU$BZuI8*nx@POtKCNgPTGspVeyXq(K4v%RnzuAC; z6@1f`dK*Q?u>G11UgkeM+#7SZw@b}`fDW%nLh;5aj0+76)KWQ3FR5>Hz`w@s8DZS; zQU2N5f<49n$Nr6oBW_i3r({Cqrp`9i`;Ibd8mP0Z2C5Fi3Z=+bZJrwIUV0`MP}btu z)Ix)mSh|+Boc@E&<)!16;+}<)a(%e^bso}!r9Q-qnYzMtYA~}obt0pNn#(rsYD}@Z17P2N+T<}S zi4|1)G@;eJ5;j-%JjA{$Q7*tHMC*lQZc5t)t7#48r}S2VmbBu*w_5W0*2yZ$9(ec- zcbI_6^~_Pfnt-d0+UEMQf}fR)1#X>1_TlDHWz{P}nTkejsj!yqdVR4Aw21Q^KERkV z7!rG7etM=dD6l$1u)xL`tParmTuHDM1`FLBmrO8ksg%vYJJ>1xSbZYm&4UcStx<$o zs<5ngf7+B3bqUJ_Y3CIqgV*c{c+gRy-H&ZC?-q@UN|`{0ixY$8vP1c-e*1MG!{#o*tE^*CvKbtc(5=v^Eym;!mzM ze$D`YlOLM!^mHo6_fiWGcFWAtQSsqKh*Xu~UPz>i5+i6T&nT%~HqvSZWAwbXRYmLM zoDxu?dF8SsrPQG6X-p!6M_=yRc_Egm&_mAH7kVPC9SjMI#bUPc+oU$~NrpqN#*KOX zR8(IA&oGr&PBgkqpq&&nwP1bupAxaIguyN2Kxry+&*in=qZc3g`ixy(z z1QHgjFLRQ?Y0R}Kgltm?vkacXtwdH^Vs*U~_H}QgO(J>m#hD;hY8~aQ^2r=^mQZT~ z+at^d$Thb02vRB1fQ(u&4AB!p$J3QGZ%;?!&!7t&Y#L>?JentQBcuq^U3hD_WWrSm zG%!0c%(hbu84mz8kN75IW*1B%oykcv7Nr}>CWcM?-ZPE1?Vf6p9Z_2UZeHW~v@YrZ zk{cl_>*xA(sjCXUJ{RHI-4ZVBVuZ4rtMPh5TGLW4ZgLM+Tg=RK)CN?QWlNMJC_Bq~ ze;`1+Wn%jC=PDK)p%8Opsp_ihK%GshOtvaRDPb@r?3@G>3>zEPjpd`5+HVp}0vGx3 za651#`0w&M16<^ki%i05cByT21HLsH_x?i4*&%c_en;}(4G-e0(A$F#}2B2`c z{4u4lnMYZ3bNM*69hNPAa}s0!OnmnRZfwiPY|Hz|LEbzfUK-vZ8z)Xj5uD!2EP9YJ z{t`6maX_i1N+%5~f`>abyPn4F-}p*?eqE5kA?DMrRwTbb%*-#_=KtRpW_hQ7AwjCTf4Q*nZnTfp zNCy*WN_@{tp-F#-3doy*AdFj}aMa8bLAtZVC^CpMG|RjYou(R7!f$v3eFpU$2`FVE zOrfHl`heAcLmgbJ?=yL-S?3vFzg%nn!~3|--2U_9_7xvUZwMXJWhavbgzjNmSLWUT zD|y~ptk2Z-Aq%hq)8!%ZP=xv(4`57QnJZ`_l># z=OVjSMQe^BhXSWYLB~i^zDZTcuUD^IzPYMV`z1RJ6VCcbGsl{Y+gY>1=ZbgQAglP% zV~*flW&Nx=WWh#zlX(WDVAn$~67b4w&;C%S&l6J9N2ZFuDpo^EFe23W8hRW`Vv!%FKpkR%I>&wMw} z^GB{6ah7F8@?Ga#NT!T7qTImm+dPP#&~JdJ9~T;n4*C;FHWbY+SYPUAFcm}ClEnJd5Zl@7 zV3Sg`)MqMy)Gxh-v?f9lP#YyuW(NnQlJmzDZdFMTK&d*zF5naW8zUYj)IUw+k8doq z%UbU2@frn6w3@-EA$_RHhQ(qfEv5;XfF%2}$z$9({@}^ek?K88@Osk`*y-@QIQ5dx z*xkCSHfS6b=)K8isdwF`6As`_(VwHtrB_4Olmit$dYA-q1_tz<oE>AS>gt5_6KtD2>Wu>AcEL0gN4Zts7g@< zS z?*!4kbJdqOwh>p=jDx=gLw{l$P{sZXJk9FS6w1i;;*0?0phld8y5SI~z<{CvSTs?j zarGY~yUgPNptQMfB|pubh_fkKo*fp^En3C%Vj@>D|Zwl`8YQk(5J z&tHzJ?YF+!?D>AkcG}GnO)K(Q3GL0x(=khD(2Ea9AZulB*}rCu z3*ZwnZYVwPErs)`3&gPMUc>#-qb#Zc9O24x1GF8@?H9vy&<)B1^7am@^dc;N;)|E)R}{+F$jop2(gf`#H=$WLlTjxN z9B|zDh%rB@8H^^LiWX&-Ri*D{MxUbA{E*Sv>6)s&N5Ep@Nj^V?9Ina~sF#m@E>L2e zGL8by#oeJ=1Jq%fd|S$;nDTmzy0QoPYY%06RdX6bK$E>@{53FL z15qG8W|&dNW#J#48ra= z4pc~zEHK8i6pGWJ?Y_&&w@+Vg=8uQhTXi7smV@5@CTQq2YL_;%JwPNbm@|P>Pj|K( zCKb3M(t$f>#Nj2Pq#u?9z=~dKzi*_4er_laU)ij_SO^h6lx5a2mE~43fwAHt!HdsR zk*w1$ZkQ!RG)WSPyHg?ZJy)quO# z6Z}9)U_PPbZPrbI`s|!BKQ_C>t}TOi9-Mr^9%IuAay!sZiWbr5A8I`)c{nt#75r@T zd!|2rlR=gc`qISZ{#@oyBD`PFC}IF){#={R-Le&&0&f%1l6BB!G}Q@%qnKUQIz#rb z?(0E+B#uBHb*Pv z3BJZ2KlJ=Ss!vqeE)N~b6P6{j1-jTyS)#(kk9V}DXSkwk->9l%>$j!vO>9GpW*Sg9 zI&`(}7E5&DZD!==48_nG)={-JL0*m*Qait;?)}q_Sfmmd1GPo<|S(DRH&uviNj?Z>LlGbG};nn59f-P852!4G>dTOGy$2WwKmkw z%Z%ZityQIJY!gwOG{Njex0jeu3@rWW%$|(lXH$)JD>&0Qn|r%)0`cNVfQoV3A*7_K z@Yar$q2CinajDqq-G!iT318cThKAqy_98{qnmGJucXUNNG)BY2IY`mTYfL-zCc{x7 zZAh!bJsm?6b*;of`3@qHsI^VS8#gH$>lWPRPa|2?+){B}y^JdpE9>(G?L9nd`TP=N zW2^nbo2L;nqr?rOi$KfQI{9` z(7*?|H8$Jb*+D;Hu*fqULnniE*xGinfhnt|2vS0_F`87BX(}rnmg=+@`evH%rLCUE z&9Z7sEhWy!L^a%GZf_Bz#9Nu0svaacCX&=d z!aVHg0W=RHbCdiJ6-qe2v^BM)C^XB5wzsGWmsbGlj@UumE(Tg=N0>yI!?;zY=-|_Z ztVX=qjE=5?DwBSQ_T$)WWYPQ|6N8b~Rv2Uh4NWQwHke<~uPf_)Qqp`?=tF|~0yZyY z-jK3(V_`#?ld-HSXTXHA=27W=1y%8s7VS4${rbYqdapgMNgGq(0IB|I_A#iR)A*D{ zdg^+(_ep@Xkj8zdpVR6qn{^ZDN!kf&cvg2{ryYj;_G5Cab$wHh;pomfg`U@r=5{+o zz|^EGTWXkL3Ky`KrK^()=V2=8$J%(sPT>lA7^rAWBn^_NFqnIk(?dHN?>$&pGRnGDvmO`HM4!;&JUxQ~-swNt-R<>jD4SY&QL5lx)7~OC zAy}7M2bHa1!j?R=&uUgN(HBP!2s~80}F~HwPj7C=MB{-X{d@3wUM1 zn)H_299ah}8&%I)O_YM0Lj?DD z-%zS(3}U8>g+hho#^RuYH$yLJeGJ78z=t+>qid`;7Y)#=AFDgaAx&c|M3ij-+jvc8 zo0N<%#aghswOfAM{2baGXTX4RE%xSe#W0Q%Rz-V-mDvze?Wi6Zy-P>|S9tJUwf_wM zv;?WIYw=gJqEQAr-QX;vpqP2{Q%h_4Q099hjeMA*)+I4l;xCHk#yK^!EOukncK+#t z;w^<7$(Td|d@Yyo@wN9Iw%($f%DnoZpOoZ8mU(;xL60^t-tXV?rLAE=zi%$GNrt(m zcYWu#h5#r2ojy!HgPZHp-)-_!!Gn!b3mdMn`6j-wk+mk+>C?jOj;2p{c@e{wsUVs& z?8UfP-FEH7IwGXC$QnJOBXrolzdLO37mv0oo|}qi-;QPmxV{5gb0Cy6@&PWeg zU4!LSYofx0-I9U$h(Wd;xyS`Yzn|T<4N^For$k`W4r=&YSK*cCPO$RzV6a=gdXeh~ zQm|X12U6*ymJ{wuai3Cm>7wRY$9QJd;=28B2V89vW4 z<$olq!FC>p&n1xl7+k=@>+QpWuJ?j1z6u1)c}N-CM&!|%x)ALlud?z)XIp!KRx`<9 zk}q8QwX?dxwkM%`x6GQeG$rc}r7u~ZgSq7c+^@MKFN|>$Dh44G0G4dtd2ED7soG%h zt{EpDS29Dw<_}x1cH%?K!Qk*)zD0W}0Q_w{*df7LV~#RI_y?o{N3$=O<_GT5E#rMP zzHj|&W|SXz8(5SJEYCdamBdnazAo_4*LQc=yRV-%Ssm(}bACH-kMsq+a)a5Q;&dc0 zp5y%3UhE;x42X7v`)KjL@)+8_o~(Dr{o*$!>mS`Sd`fQD<1?}BwyoEPmqN%9C{Z2; zxZQFAQ658a;(wyuX*lm>ucJt#TT`(;e#uLC-h$ivBun6R9FYfnY5lZ?hGtto=8ojD zdE8$@or_;t*L#OHv8r!~V7DUN&u0-QOYuQqIMKNvkLN?V;Bl={vqouMNe|K&9a{Hq zO2+L+T;|ew9)biqK%PY-@WV*omfbvWo}?rBf1N({;FTpVc|TsA zc)m#%YR}MDuK|Day~W>a!8=Qsj6Av*eHq*JLg>G@Ah1QV*KW<$2RP}fM?tH^3{N8mYnJ-9-3omuh#ftixBvEE|CA%a^PW)*u+*>;F@ zRL5U5-I&P!_NJP^=wxsnq^u)#5Uqg{TX^bXLIeRoP>KzLSe4v_?G9|5?;~?>-vA&%e|Fo2 zD;o6SwkXekvLt#v9evnzv{740hwSctJsGTt5pl*05(!y0U)0#!atqzA(S-8~{N6G=zp@MgFMcw1 z6Vpe-(HgGW85;=Xl3gnDvpI+AoK)#xP#0|9kk?~u^)A^<4K%;85_kT{@c@uJN)xw7 z;x9)}%Jeh!zz>%1-<8qEi)<{&z?Ec`jdRR*#9OjY!Nu-e6n#Vpekho}nMpA1HM>}@ zTUllt()|g}?~z^G!!eDuWRxi)Wkj=_b(Ot)SB&H6XK-#v zYaa~J&lyVTP>f5RiPnUzfNwpxeA64h9KsQ-u-4E=ie{QaT$X_+8o6_T>3|`oC)p$S z(5VoW2Wl0fp4hwQRMk9jyCaIuAkDUF?#s37bT-xc*vW;D?mx_;5rUhuTlTQ)w-NgbTCA(}f|w4%G2MZR8vzv0GdhX2OVyGCHw|V3hziOVS{ClvnY7*F5{1Ti1{+r^Rx88t(6Z0RvQQQH=|^Z zST`4LVvt7kWDYZG5-}WL;h~K<^vH_!fSa)(f`)eC8Gt*29ItjqDLpB>WeKPYj6pT@uS1DX438<-fk7X+O+@{^VWdSIBuGlOJGrEK>h&>R+seJnCP|B81` zaa~-K(`}CiTt?=69dqb7vphhuv^cXp!>#JuoW!Im8#Z_GtSDidvoj2aGYJgxH!rzM zoX-A(o-6QK>9pEZ9_G?s-sHFXWl21%tTkDu8zxm+CS(lrBCk^h8u4u>^RmeSu1Vq) zkw_P3+pgtjS1}9()zAVg$kA z`Ab!APLSUGU&f!@G41I?iBC-fLKB%JY+VvlL~Kx^q{c=s7-y(X-<-4ZYlAY<}GJDn;d6qPksfZ z_^2~jU-tDHy4;Q!P&^`+!V4(3g($3I91xmN!V`;o2KF9NBvD51D#g(&w*{e|LCo3Q z=w8xgOj`A2SrI3cT}#KNO;8~BQ@M~-qV<>UM~V6`&$x8?e@``;ok zQd_u|1;_4AW|vDO>(5V=Y8J(rJ35V@m=O)dmAc(N>=H@yC$SW0({PXbB_ve(P-uy9 z5)sa&l@^f~qg9CY5(Pa-4=d}5<=#LgQB@;({wAV-W3@`$%8~PgT}xQnQQs7h@I>}bXs(g> z#NJZdMC`X)jAT3R=*zi<%e&1PmTBHm@8!O&5k@GVt@J4;Sd`JziqsF6EhUxzlz#&Z zE*WzAO8Y?O5BpABZ6r&8PyN0po(x!Sa0&@7m+e1(g=>^FIeZm2GvgE~+<(;jO6}Q` zq)|VXo@Fq#YYP{AMpk@aEX@6_g!K|QJ3WNbkZtI9!%3&u)lC(*G(*dfRtK3RDBkH9 zacq_rQYFXC-ZnS?pwET@E; zu0xsUFrjA?7d_aC5%6CRPbf<)&v_(c%!fJ)CnNfaL{1l+BO_uczaO|Udo(95FDTBp zge$r{>1`-SGLCx_RNfx7{bKDvTTwOlwtEn@hrB0(*|~|}n9R}}&3l#;h&T$2%8tV6 z+Fs;UOT7Itu}p+hD~)+p2^D(bur|Eg1t^rVL<+@ng(9_ly^UWJRJVmD!$nMWnOiiK2_tlry_nlVm{lBSktVUT~JopMr9bNE~(02_@Q!3*;?|v zpmM9px$<^oaU{+d1K3x$b}e(wPKb|5LrE+~>Ni%(ikd$e+izQ&#VVXnIESygU@dwE%{~q!2?}4|V)98~=tC!!% zmMK9pP%kuBTT*>2MpO&7HQ~S^pDCuXjbvvkn(|4mNfo%$pNGS3LJ#U=ZEB0Ib#^h0 z`itK>Ke+!w@~|n}UR{uZfOftXDE>2&_Ye8$@(wPR_I8FgBwx`f&Zc%Q|Dq<<{wE;H zEO|o{KuAc9Kx&aBF|7AXcHRPpTB@5O76|NnPeQC=^GYVic!hKA-30$O{FP$mO^=i( zC2^>hme?40Urcjl&HR3Hs6+e7vDyo{^!RN^e<-$YYxDGUcV!$A3F=p z4wZe9YK4WyK>AE&^e5&)zBSb%i-m^#HrF3^kNVVZ*iHLV4{5>bF}KvQb0Xy!oi^JJ z`+eFzx+8TryZStSVK{5E6}Go-(%|D4E=@3=!!$r+kIt0K`B^wLR01{B%MtF{E$rGB zL&dKFf}be;&_%W{^-zG>N}yC&P~Ka)&^&xyCfg>Q^9u&|jpbSp!eR*lu$~zmEbq6l z6G{bj-9yGT^&I+DHs>SSzFQ1hlccaoy{>Z()9?e!mZRlo+&<&y#4`CGu+}=41u6jS zZ+sPazhvC83k2fEl?pu4z<5&i=ActW=P=_qw9HuWWXxAbu%*odOAv=t8D`{i+}iJu z)>yxnlQsGW0--yi&1R-dxuApqdsG}R7e0p>-;83M8I7gN@dahfTNM(EpRC57_`Mv# zN4B7;lqZd>KX8%pw7!L)^g%>RTz8YpIMxy82A~X-4&b_T*3e+pJbv%Hfor8!kzpLF zc4%`HUxp|>lbUccDy{-;vcIf_ontPYRfk<#Hs*6avRS)^?F#6Yhd7775wjR~_Ik5& zn4towm+ER#U5PS1O{V=xb8BrKwN_hIqNvcfnJ{l!+gn)7=%%e3Bm1594qiUTlM{vP zp)HOSO(_A2C%up$W3EKjDK<_~n4w!&Xv<`#vOaqa*W}48IC&KQ@NoYFEVKm&_-+M?8J48|9@~S$_=q zAw5TtmG=N~-(4KC!@T;yDK~4=au|h@g_hmH2g$x!LeGD@@@3gIXifZ?# z6?u0c=m6R;e@TsW(j(xY;c4D1CQ)*HM5FdxSES1l>d{oUMMJtJ1x7tTg?Npm$Yj~J zG%`zC>`%UVJ!2c$VwZnd^;zJIu%U|#J7j)v?^R=P?>^|MW~f)Z*}C?`hPVy$8q5=} zVwW~}3E&sid-I(Pa1Pe@n?`ft?jw+GPe>2x?^dkcY?5)f{PTuZghha(Ya!qwG^3kF zXu`vAmbT@M(Dyff`3OB~%m?CA&ylEoJc18Mu&)dk-$Y@V*)6_#?wR0$BoX*Vc!{(v zikm+!{2vG{lv+zCkEFc^kdc8SQ3^AQ*%lLL2h-v8UP0j#&gsakQuZYkk4wXmbAP1C z>ilK?xH<29Y9_nuOK7DSvgx9kqZS zEfEQo@}Wm|-25G-EL0!jVLnK)mHyU=De(sWSJT6+HS}VJ!sxVgd_R?*6|s2_lKj$*!*7RtIk$_z^<`{oxk z3~^HpOO-v;SW)WQ0V?LC9)pCRFXieGPg|0Dl1#4lq?5?dC_#R zw*hQj1m=hCEFBoV&;aPkY!Z#(2399z1V*p(m?zY@PC2Ho31eOo2<5F3$Am0bQrRBG4#la@B1Lj1ev( z-LfFyvvSV7nYv#KT4S2SWtMS4*FHkChZNV)RZS#oPT%awz0fcEWxR+Z&5YG)-W?v7 z5J>to38<0viB@o|D(h`34jUj6rem%d2p-baRB``fJ8QFW=oAABS$HjTAat=jA0bX#JZEt~kR;HhJZYkx&ALss(aN_D zNy=jTqeNq@z<@pAE!h!G`UB;jKXE_f_yd%Yns|q+B#IU>f zFFhAQAmfTTR^*Ol2C495>x^O=yks^7lUOWKXRJQPXsu5mUJEDsemk~LgrgT(Ck)To z4I@u*INuA?`&g^O(=FbU{!SB`sK_`WGzm@jei_jta( z@20`W{Au#Aydrnucu(|nKjx*ccbr&)j&x^`Q`}^~`*f$K7w+Q=J>xNspj;ZfGzLgQ zrl55Ef|)P}j%A9=SKL%}TB&plN->E{_l>mpum9 z*jL51=U#Tz=xO`@nM<}y;_NuD@7Uqa7(U_?Wx2s55?_52555v1;PF$}Nj@qxL1XwG zw)D2Cdwn0I9I7|S&kX_yXrec`hG1D~Z~FZrAnd`r?99x^azh&RbR!SWwrePkLK6#) z=eC~7*zUMx=+v4~3i zkcY_g--a3(F{$*TU+pOx>Yrw^e=yJezwPN?n^i#(vVX-71Z`O~YEeIcQMIt$!Q^cV zeT7G{0G8v-3QF-NgTSv8jKW&n@NRFnCmy}{vw)lm7yd-*wBCHxIll$E{K>FmQ}e3kB|Ho1 zl``+IEorcVyyefaL1f_lQH~$DO$5^$#Q@`s!v%?Xs>Am3w@8lFQ@nxL3Dzf(_VMFa9cCH842A2j_0pVOa5O-^~Tb|1kk32%<3oo4~tUKOh@b!)% z-S8FMORps2toddZi#4o6tEj6VWN&cw!90;y;&d9vyJnV!hFm`RM;yHA*!>T9LQ z@5a)vztS<>Jmd37GK68V3+MREB(IJ77$Jeg7!=I%?{s{Jb?Id2Q01N%YB((K#|%tT z3o=+#rYJ($%&W>Aj=A19zM|Hm=tE*QerB$IsUof_`Tl5RiE?|7oBCWjH&X@fF`rD% zIjEA}%o>mj8Sf|NnNTIwyva&+G|c7#p2g8tXeNNxD>b1m_f@Por=}_!h-W`IRUCh@U?CbCL(`qC9b-#36-4gih^hi zguv)$6HR$^`-ma(g(!O8)$2RI0BemzKv5VL{(|dTsKE&q@UV0Fq28^$9^V8GO0!D~ zyJT#0VwXJ_f`$GCB0et5DLC)Bh($|hrII~%?5<+5da{0?!NWoh?_#C}`k#cDt1Tz_ zd-hM@yW{ew><@ptEJ!*w9iItLEdB#Uw@owy>eYwTB2sN3=P&WLM$#(AeUtpPGvt0h zs$29K5qB9=+0ZJ5wsa+Dah;N-*Q))5JyKjgB=H{F&>$0~dAX-sig>)kwMpE@Lf9(E za^)M}fj;7`^>@P9m5u+{Q>a|^40m2g8KNg~D zF-joIc*kF4^u~Zj9I3jV6+%er4#CX@)>2;L#|qjCQ!94{@A${$Jyy#;qk>=UOg;p9 zF?+Y3;j-?=HTy^8!(#EnXbA$p9x^2VP*I-#wzL7BiZN@2W3a`ST|s))HMQ!VQ4Yc) zMJss8%txtJER^#qk+dZKF5(Q2V|3`^NxE_ix#O2|@KzJ6m1dG!GU=x6=I_;xA#S&~ zi7&;;%0K4nQU2%tpzL5{>EiO2pYOkI#S0VG{!+^UK4sTAAm!4NW|NAhi)0BU;pI4_ zOIsjCp`;L%6zmQ6Dv*fHb#01IoeAhXAnanGBy_HTcu7&M3}Gm;gvvX>O14tFj-Ed~lWxTUW|Bpnl6IdhmQgpQH(f2vaxb*jIS;cc-$n|G!i<-rrl=~29o38} z1`mt7x%x&McreX;9D8~3TJ*@b^#no_v=h<#BKX}fSH${pM)CT7>~}f%aM$RL#9Xux zPa(FnN{iLKMbq=hB@mNIJW$dx`|yY{-*BbA_xA7_<=iGO{_v7w&+WlI~pVjhjuD<&0bBxhP zk4?9~PUJ2+-iUV7hx?YKm`+yyjSLlR8I(P$zZP=_#bzR#!%|VZGO2_VjcwIKMsg)L z$4{;YB6+65g^*g(6~5u_Z6@wM%IinAnDY^{hO_G>HFD0VJb^qgf?@~vm-z^ z@x?wz=~VyGgz*oT_J4!(U)NWW%HPoB%_v-5v^S>!8*j2kHlr(&^J^g@K}AEQEJ6^B za}&aLO=@-M9CD$0ijeYx;t?Q?efq)&&3M|{NELx2ki6XB$jRJbI>PVc^9G+AE`B?j zZ{@d-H}d)ASpf>m>{K`{aGXO9iFcDh-6_0~sC?Cf9u!_+52LHZmITWDscDhL#~WUV zV%01u*aA~pmLb3R7{{s9{^0WP4t-P+|lHE(c<1GJ;>fEEYi5fFfHU>;+H^U zG8`@tP{3sKkz~(d1VL;erR>BquTvI7qEDOT{UJ`g6A%XhKqqe%&2Bbg0d8xtTOzQY z1!_-1qwW@1npW+_ot#bEQV~x2Cr&;Ebxwd>kD3`i)l(d6z)BbbFXs+RZ-O0;c_GlA z4{;<*H0E^p@rHLdo2v&}B01rY2AwYO5?XjNH9&IyRWc?nAA-T+en!6urI2rqE?BzJ zWDJ61n5fEx1e;<9`tA(5hEWLH5oOX=qNn;NyL{}k8_1sUw>tEaYymTKFm@tOJa&7S zvVP`(F5H2O*p`Q*Z_i+k7=$r1f;Zc-IIe~g(H&UvXBCPESf4B@h(t;gr$WMsJ#=7~ zzf`T*>tRa;3_@e3`|Y%?iy5vqWDHiA2{O zC`CoiI8>R55`_`OSH&`-4|0$NS=Yl+%7ht9trUNifUryHvsG86 z7W?fD&M@k(dt@S~OcSXMOB@`pD6I-xkbjLD&MGW#O@S_t#?Jb)xeYU8IyR=VyyAgp zpyCPb$|hE3x2e9WkVUkn&_Q*G=7wEchyGf|FiCJ6(|CGTQNg*pQ+0jkm$b1kv9x+0 z1?Af3+f~RGKpKZLP|97Qk$!X4nPmuYIVAV{3|*UWV`|j)Qf5S3XNYVzToWP5mOsEu zmC9LR9}{6MM#)hXcS>w4UgCJBx9c)gFGG_hkMu~(YbdJ*BwJL3Oe4}@X`6)eD~s0W z^?V}-qrYh_O<@W6okVJ*{-Zt$lP7jA1Rm3XCy_By9K^`Th>;wK*9F3peEkh(@qv1g z+OGuGoLyg+0N#E6o4eG(*Y#RUfe`d2sAb)wvl~K(tYF_`Md5}|W-VrGtTL-J`53It z_K$3qtfLTn>iqGpp#?pQ=PQX1NKYL}z zMam(3ckF+%<1b3QY1ev zHqskXCy#O8V+~*wVf=zGGzyF*q2HXE-vlYavYet>W{_bM+e)#EBtaM>o}$5!z(9k% z&njx`cCGf>&Z^yX)?cuPWE`o(D1d)wyO^a@WZX9+mqb-@iKSiaf1wXE-$)4fmu08n z3KIGB^A`mFkCvVPgwX%(m#og9R1(aD@#jR=6zTtGb{B1(i~v0DSi}b{dx)g7p>NoFd8aw4jcOo zw%B3ZKpxd-Eb**@J_Qa`8`4;aevG^u%w*5kJq3;GD={_xJ6zjElTkh=9&)e2S|wiW zYB&HBZWB3XvPU#|jx4$G2|tFgxnCz#SB)2fYux6GL-O%dUIKNrf_m~@;=?bvt|_4$*>K0P5L*BnXCe4bRWI$ zbg7x-b1g$C(}x98F#ALUVtY$)ymGVQ+LsP4fXl}bqM|+)S2e4;@o#5k1X}Qdn&NKS z91gAMeuS;$@1j%}Zp{^6xptK?qkrO!BtyZ-qC_&t90>Y3QoXR!I&2rjCspEPyhSJ6wqiZOQ`b);_3Agb5OIIJ!!;|J=$_C6(8BzJ)lE)l`9A3 zh8SIrIObREAM*Hpv8aRAvN%+|NVRHUpbs-eUX*dYl#yuxD`(~GnbL5W2D3a=hUWg? z4I0!{BYdV$7_$Fg6FKvL6Zw=4vLfm`9qeSHoOXm(#C?fIxq$Cy=m^yyTp3hcI$0{+ zhVBkDFeHtOnWZyAerNbccvUzIey=M7ofpD>8?2m6k_-w)=4+N?x2Mkq=fHAKPS2Op zooiT?N@;s;FgRBwihL4L%?LQO460^K6ZuwEfL+f52Ay#Ab9#;)@HiuRHzFH=3E^Kc z9((s%tiGaHH}D0#%V52~N_*orXry-Oj05zqN3b;D8$`5qV;gzYQl0Tjw;fCelh{<839sT+t7Y7v%-rG1C#;_HTWIJ>ZctBA7&MiDW1(S;M(fY3tY(Cuz6?FL4tbsXt} z6W0dUUNz-?xMG|xbESBScBw*O9a5JZU%j1VB?FDTrJunT%E-oH_kOe2#fyqWouUN; zNvD8u(0y!!tt%$F@crzy%(jzNh{^63#Q@2l~>nN^XIlyHLHCcfX21)LKAZ z;lDJP(7g-8bXqh zfXP@${BiWOS|eWO?(9JJqLx8Lmi79w-7BIu#No-?7j`e;d9rzSHp$NXI(2q*iO&a8 zx+@8fZ%T^Hr=|6Nw)aD{!5>=MSB$ImW zV+=}LOgpNYG^TcvLQHn@FscAz zuZMzSxJX*oVD9O8_gmGrh872%BWeqScQ(e|-&#tl+h6ZWI1GpxO9) zTiFXZovlGOT_KIEH#|*_y0y@5vZ3S z-;F|jG$E|;Ch;OGV*mm7kM7`c?%Lmk^Vs-#UFDN1rZINAI{=xOey<{xZc)FaY-QNe zLPnj)08~5NeWR>Ei(eTMM>%meMDQ(AV5P_$q8uW>c4Ahyey8CCI?mtqa*`2Wu@n={ zn4_Ll?6O_#Kuao<+>Vk*RutmS-BBpsPt3I^&;3gfAY2uccznVc;vWUUeP z2%d5ZYfQC$U%)E}i>^-T5WXTYRI;pp-@fqpzKq7!*G+y7#DnZ`-s3W$_%r`NH?-nd zh{9*eLA5QAL$Ye!yIMy&yV1Mc?hj?hg_ zvUIVzBD7sn@TD*Q+y$s5=q6b>!Jk`28gS0#ATI$fbdC}TvBOX@`W?>J7M$cBkFqE*U+XH5LAy?1S+- zY1vsfs=>^u#!8SiA>2eiNiz*qXh5)dD)ZG!KU?gy`1>V|zScSf`8FRMiga zQe&~D7rVh(*(MGbyO5>kY>_p8Z%_(B3_4>~{a(YU{rxhmZk7{nIXdTwQ$Ey?O4f;b z-pCNBEf8b_Om>1kWE8JZ*=gmD@D!nz(xXwK@1=|Nc(wA6eTM_W;v3L-1ypB^gv+3X z9qQMg@W-R=8;MR92;|A`!344N4{@x*{}>NbF4 z($n#pO28sdohFf1%rP(`fOgvcjQv-OQyiggLG2T)6#v)U`|lMfMG5~^DVw*l=&+_J z5%O=A^dq5l{@Mj2B%~Ne1m=N+8cuz{5xGCU3btN0uH6Tw@--Y{Cl9e9I!_ge2|{x# z>ofT3;p)=s?coH*j}4C|KP(+2dL73V_P~CbK>ky=&K<0nFhpnOqC=hxp@1&|DfsS+ z@c9iX7C&9(&bqAVu+-jq5vC0%5glwsZblvv9B52^4J(Dks7%e;B6&-Kvp>roUD{;LA^$ zJPYeAkL`X^og(eANmGiP>|gp$6gutM9>oAgTsb#e$pGbsw`F7|E2BvR2EFGI!wvb0 zTrq?Xgv9A(XZOy@#CW`io(f)(Na$o`-lX1fV_Fndmuw#tboZ3eHQ{K!UbAZ7FP7N^ zkJ)0JG|JjRbYdvfMyFomLYNqN)QOAIP`osgX*qGea~oTng1eiXgAM^JGAY@_jZGnz zP)mc(mBi{kGAr1WE;;qieB=k>G@0V*rhltelZb=XqBzuT2@@N`$d|8FrG`nB(5pj6 za!@JePDT18m2D*fS^3w0C-KZwEgn;S!VmiY8h-z_H5V!WyBfw}57a@nDbiV={}QeJ z^ALo@Y%vA0P|BaL_4n(rE~hr9W$m))A2f+70iG)mug?-KfRZZw#*g%JaymPW*Kzf4 zlDvXlr)8-%Np^;iwc>E|6K7+ycCzL%v72$5pBf4kDwSZUgqMHDL_n_I(`WdlsgZTY z$a1goYg0Gmhe4uT0Eg_p$hSf{CA26vx_~Qhq9*h-kjJ8UkDR8qU(xA-`_)0yz2e`Z}jH5!KH`XtMW;vpkCFE?L7?l!y`+sbU0e~454T-=sf7WtP~&7)dKPy z)2M#F>Q%#9!Wc5LI216QxjA<56hJ51Z!({|x}k<=7Tcu!y13#OGgo7-ldH*>955_c zI!WaMAt^JvbFjGU&?sK0DC{cq&N5oxZvS%ILa%V!lmA}yt=XK_pqDRSxt$Soh;<_< zZAe>#FcIoDppet?%`w6udW~HphkodZ1#O_paD$GqqL%6${v!DX?;@e`SdxDbZXV~x zBKMEa-$9g!y~CzgpDt67e{?4^{s;AbSp&QODzEYp!_^Qc-{kV%UwTGZd;*NqGsq#HV9UUxe9xV>k|O`VE?_kyOCesa_WYFWRx z3$r~@r2H0lqUb$mc=3B2FP^3F-tXVMzl_x3^nK5a&_|f370HU$huz1T9-YvHLqRf= z5JwzrQ_CDNqAre&%Q1(;AbFi)Fkvw&S{+jB4Audp96Y;xYiO<9g%&;%A!Fy_wD+)~ zakMvav9X}Zz~yBgM$FRLncy*Ys7M`eM;oAmXKpOAp0IB_{MC8_)xMrhO|?q8V0U7~ z!IIW8QI>CwAsa_jZ>3%4ei6195;2IFtlidTj)KKVGr&8>kZfkLsgg%Nf+(>L7E$Fr zUn??9Jrg-D%4ZAxOu{`gg;N8#`3?l%h~H&sl)EmPO1*=cKu&5L!xfLc(qQh{bY8j} z%q9LTjEU$XFOYs8i#W}$y)kSpp}Nu;kcp#RZ7gq$!tSSu9f{_8{^swnoZR~^YM-!^ zQn89ag#w;4H-+e8u>$*wf0XoP+)J|9q~ozmTiMakoR~Kp+&}8f>PJElV=G#dzZ$S3 zxl*yQ^;C6q^Uj93S=tHilEE+Uj{i<=fsCViZN?QS;1fMD0~IpR!2k?1vaX58*bkX> zUk@qO>kiAa9B$AlpdqU?9$+k`DM&W%*kCmSV76m(>|{WfDfb@^aKZ0rKDU+cn>(4i zsgK}n0XbGkxNv83BR|LFZ_F#vMR#djrBuLi#rs$%Pe%)K1&>=p@}rSqLwMIu^MD|c z2TZy*l|xTS#M3`pcLyowIbxKhv4h>J@=j?=jxa>Fej4Og_RSjvzOcKj6xVaE<~kLS+}Ei9P4mak@uT!6R_yy} zWCL?AzpDAH3aU;uVc({T1)vr=l-Oehoyb$z0u(dUu`WgA_k)o)$BbvCHparRt3A$* zwc?W7ok+02v3H+4?J_U?{XtlJWJk;}K)+)cWQ^~c6&)v)aUaNabvn-0ut?A(m03@W z=i*8a*|!;R9vxzxTdBZ%RQrw*^VhJ%UetSKW!NkUh!6Wg1XB~Fr_(~zg1&oNl@Djlvx^;?Y ze&7>=OgQU9m^D#H%$D+j@x634(-aOObhLu2g2mr=BytLIZiEAqAV!6$+zZdsrzt&{ zd+6moOS>QWx~j@UnZ~-QphwdfQi_lx0J9<1i|<`tjJY=Zhu!hVBybIj>rbo7g7>$^ zpZ($_bBLuHdM=LX#Pyblmd zt2tEe%!yHgUVh&^j`=m7v9Rd#YPa56S^|2K)o_DOxlqKABxIk!|-y?}q`S&ZzvjYtVlpty@Aml!}) zo)>A*>{Gwp0ew=~Q=z?IiUc)yH}L7^pBy<_=l0XiTsE_ifh5-B$cSe$;M84dRHP%t z&) zb7(TrhD?EIMH2w%YqOBx7*O2S$$+Zd{I+H7*YF_5=ERk&_yzNqmIj%=Pd@lOotn?P z=zpF|VgFCg@9ze*xs9phXBXPQ$@ae%IjQN&;HaX$Uu@=RCWD|uhn?9x+nc+V(82^; zSc43K{iX_L(=Hp@UNz7tUd`%D(^N*;S1yR*yEP1FB<%hvqTr>lpYc+Pz{fT`IJhl> z;+u~&lck%RM=Jej(DNC4bF^`p={Y^+b-gW)4+;oE62q2T&O<{8wFfs1W+5t6B>Vw& zf<(wm^*%gs_o%_kl!`cC7+c)W5jql_2)7T#L&;W5nu)U?3QQcg) zet=jf6~e8l<)SwhSD|SKSm6<#)zWct;)*oJ{3=>NGHva2XZ%x5cVfD&To&4wDI?$8 zU7X*XF7`6a0P6xUAmP9d|DA{qX@x#v5l3`J1BOd@q0!(s^P$rB7W%ShB6F=`T3OoZ zvSz|1)uL@(rZ6u@QWoR*qNf0q>xuMY8`FsL{bM60l}OdSXn;y-tn#MuaakI=Fz-pq zL^WT5UV%^(nR1J!o3HA!jzi@HCYZAG1RE(H z<_vdrmBockzcMTH#woJ{c^4xWd1k|SbFn;Tem~s$)?2@t7`+3NVVHC)$v)-e*m3V0 z6WzW!W>(mEYk)guC{oH?^sA9mo_0SoQ}&P}lgBLWzI!LZt|%te4HFBE#H=w*zMdEe zIb}mvrctH<|G*CKHvT|wmzqdFGAJN=(Q0oncez@Zb+R;SG0P(ENB+8w$cN;tCqX`&III2y~GbDqasXG=`z97NHk)o2%8~Oc?RgZnuPl zN>N2zh@&UI>1i}EcO;rp3g#=|=N-fFibQ)x?o^*MH{sK#_&^;UE9*+i7AX-2ir_XaMO8ssku8+bX#!w!DX_?t^;ISYyBnpt`BWd99RKa zZQUg`5$lU4>^Y5UpyUeYSc>&4!cGT~6otny!|Wzb@SwQf|CjungJVg^tqNG}Hlkrq zf&ZJo%L94-8U0;dkA1*fAj>O8$tpUX!w%C?Z5zU}8{%?X5W5?|_C~DoimY=eqi#(5 z3d(lis1tPiO0MR8V3FJ#l2A6Qcg~NVQ2@E%zC%@)o39`ysMS@zh3XMCEti{9^E`$n zueIijJ%6J#4@Kgczxt?BUXg2zK(JRL&0H3CE?&xialth z1V$3xb?VUkG(G?r4vDQlIt|o36_>nLkL0T1jNG|cb#1b(CssbU+cH_H!L=k=x7#eR zH8fha$u;M-OjWuVY4g=7_t+#M%OHoJ{d~}ak_9hQS*K7r1$GW#M=->1#!N-da=kbGQ63)iX7!6#rCH+cjNt z>XD`-ZQ`y5P}3e_gMXYo6zpLUU(h0h_bMCCHKiSWXv-X>rz}D0C}8zbB}$GoS6N)} ziW}nsUF@yfAgZMzc z5#|BU-|^daoOr*{01tX<$sf&)i^CdX0sv@1EIL1d6MQ(zS9M6oMm73*I|xdo5)1(s zF|Qv1cc2GDMJLQb^6vsE_9@HJjiX}%eMGB~QqiR-?`OUNDlrp%%oHVIkmOWQrUD!m z5*&g3n9wk$8t*dSYo!;yr?dlRf9KKt(C6J4s&#>Oxw(bSFO2N{x>Q=NUlUEbf#QY_ z46@f6x&{;=e?$%27sNjOogULPWKR|IS%`4`$3g_#{{r~`f_#>m?&r`yDzDZ=@_Ff$ zxUiX})Vzo_E~q_>HJ@x4HuunAlkhosd_O}(JqcCxLEJLw8`2+;EpDDzi1ZT(Vbf!7 z{)iJ@P5TYN@HhUmi!RT{%!bFUpHDSCA5SQ~a9-FWoRdS0QEh-}AfMQ;03G9lD|4L4 zCz=paqkW^T& zU><$;tt~pt*l=633QCC8kji%H*j4V$W^JA)xXYVm*DSP;I^d}0?5d5ImSks=U3OH4sy7v`uFHmyuSeJYVot?#nM=ebW@XW# z>SOXxW&5OkzJ??ud?W_gIn4LCMRBhmUOE;tpqX`;6gY>~*GiJ2Z0(nKY=omQ`ypt2GzfvLX*7<*9KS>b8T0-)vf=$VF}ii&XE!9++*X7tXW}7Fpb_R zIRL>0wpIe+pl~q`uZnOk2=nst3nE^zmYltUYn-k0mBq1?xya(?ukq+k+z1Nz`x67| zfG_dd=2{)kSlj#2qnFy9bXLoXcIO(m-X(LD%ewMc=MK6NMSd=YA-1SG{MKD%0_2WD zaBEqpU<)6YXq2rR4f>0MMGp5Jp3hb`f!~Fyb;gxbDve-5rCqY}%%qY3b$Z z$!*RZPDA~aWo^czPb7I|s|;0q8iSiWmn)^o3eapC`{6Kc?mCG)6>_ItyR6q4Eq#s> zaN#eQ*Mx((#PqrhJRmRq=3EnBpl-yogt{NihZrI#ek?j3V3N;ZY2LZymV6H=f=BXz zzo%R!l$mu)HmS8QwfgFP1`Uh38Zm;VQ}n#1olTNkUeCMkg&&)ZFlNH1O{gD)E?(hx0-xDr)&Pd{%|XPDU`@6_ceYU22`7n37s*L*WI{bl0@-i# zuR=jjIW|1Vcy~K@uK`4KVYmdfi$7^&GUJ^$4dI& zpux)?#M@fFf2D<&l-}8d`*Rf5#Abvq;^3dSRd-M~WY@C2&W9^a-A4Y7CZ zr|d@l8*s;tfD<(=dpL@JW=}W0?C6Bn+aF2weTX9zM*8T)7s^Xe`d~!h4(_j4Ltvh_ z2>R!hTm6q$?tjw#{C6&Kma?wp-_4>`r-arf%b#q+Qax%JPjf#ZA{CH?GlUpqbK?T; z%B`4xGk zK!@B8G#?t!l}6{;xUC&jKWiawu331P2o*h45yF*Lsqm0E6I9yC%)> zGRTl@65%^Su={p!STLdKfoX-|?nAK^OAnYEv_DIJ$xus*dh+~+dP{yJQ8m$~`sI*w zI(XBNPt3}D- zPl9^}&8*^$FoCD$&C{D6LnOslUi$17CJvhvIr8Kdg*Cv0iJ0Yq^!cYrpYKS|2I$>k zUr;%w9cz#=g6-4Wl)F?I3^BMyCPa`2u+e3>#NGDwz=izLwEUeqQP;I-(&RGRzV_v2 zWAmaB8DZ%98}txcd}Dxm%?A04R&Jm-dmF&u|5 z_XY0kK>P$IbLL^pJNVRvuiu+FPg&#^~s=J-3FNCtk#Nw z?nLrLKPJr*SDc_WF{Dnu=hAM%&^E$RekTaNz}{STd}+DMEPkAhDvYDaV|+9C)#ZM< zdD-#U{dmzeU-996g7yXUNgVOA&oj_$7|n-wvgT3p&chcGzZb$=-Dab;F9$zx7XC|rh$l$JP$VqAy=;-<4P1NW^X{p1uTb(F^y{b~$ZqU@1FsnI z?89Y8qHg*;41UCGVGu-ukkP>Q_~?ekigh`~==g$^C$% zry5Q*B*ReMr^ZRcA&686jwFElyJNiWd)83j4plp#O9%{N}Xy4Rw|^X<3%GVEA5IORm5h zZ~nfrELBUbq$^sLP(=#Hu!JtdK5IDTIK${!=eyFpJD;-5>PVtDI_bHD8odQ7R}F0i zOhI`z6NbC={&yNnDelup(N3C6JDQ9#!)3k+;t4wKV?gOxq;h#0`yD2mKcbM=NXeoO zpLM(pFuD%xu8lndL0-t4q2{+_QgaE5fhf{CsefjJKyOu($QUmaZ4tGI{DhoM_}

        y;`uTi^=Cc@`oz|$g~wj%rs3*YN$GlE8+4u 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
      1. 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
        @`f$BgXBX{49?|P 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
        p_jp`-a5ExGzOFL7<|eg|KMdLzpyp6kzg( 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. - --> - - - 4.0.0 - - - com.lishid - openinvplugin - 4.0.1-SNAPSHOT - - - openinvplugincore - OpenInvPluginCore - - - - org.bukkit - bukkit - 1.4.5-R1.0 - system - ${project.basedir}/../../lib/bukkit-1.4.5-R1.0.jar - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - com.lishid - openinvpluginv1_10_r1 - 4.0.1-SNAPSHOT - - - - - - - src/main/resources - true - - - - - diff --git a/plugin/plugin-v1_10_R1/pom.xml b/plugin/plugin-v1_10_R1/pom.xml deleted file mode 100644 index 190ce3f..0000000 --- a/plugin/plugin-v1_10_R1/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvplugin - 4.0.1-SNAPSHOT - - - openinvpluginv1_10_r1 - OpenInvPluginv1_10_R1 - - - - org.bukkit - bukkit - 1.10-R0.1-SNAPSHOT - provided - - - com.lishid - openinvcommon - 4.0.1-SNAPSHOT - - - - diff --git a/plugin/pom.xml b/plugin/pom.xml index 5810c1a..4cf7c7f 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -1,5 +1,5 @@ - - v1_13_R2 - v1_14_R1 - - - all -- 2.49.1 From 4d3f5d67a849c71e79fc77daab33b94c9b0bbd94 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 2 Oct 2019 06:52:47 -0400 Subject: [PATCH 188/253] Update copyright Practically should make it 2020 at this rate, whoops (cherry picked from commit ff76f2b95ac5ea2a32a42b5dcd82a5e5b762b831) --- README.MD | 2 +- api/pom.xml | 2 +- .../openinv/internal/IAnySilentContainer.java | 2 +- .../lishid/openinv/internal/IInventoryAccess.java | 2 +- .../openinv/internal/ISpecialEnderChest.java | 2 +- .../openinv/internal/ISpecialPlayerInventory.java | 2 +- .../com/lishid/openinv/util/StringMetric.java | 15 --------------- assembly/pom.xml | 2 +- assembly/src/assembly/reactor-uberjar.xml | 2 +- common/pom.xml | 2 +- .../openinv/internal/IPlayerDataManager.java | 2 +- .../main/java/com/lishid/openinv/util/Cache.java | 2 +- .../java/com/lishid/openinv/util/Function.java | 2 +- .../com/lishid/openinv/util/InternalAccessor.java | 2 +- .../java/com/lishid/openinv/util/Permissions.java | 2 +- internal/pom.xml | 2 +- internal/v1_13_R2/pom.xml | 2 +- .../internal/v1_13_R2/AnySilentContainer.java | 2 +- .../internal/v1_13_R2/PlayerDataManager.java | 2 +- .../internal/v1_13_R2/SpecialEnderChest.java | 2 +- .../internal/v1_13_R2/SpecialPlayerInventory.java | 2 +- internal/v1_8_R3/pom.xml | 2 +- .../internal/v1_8_R3/AnySilentContainer.java | 2 +- .../internal/v1_8_R3/PlayerDataManager.java | 2 +- .../internal/v1_8_R3/SpecialEnderChest.java | 2 +- .../internal/v1_8_R3/SpecialPlayerInventory.java | 2 +- .../src/main/java/com/lishid/openinv/OpenInv.java | 2 +- .../openinv/commands/AnyChestPluginCommand.java | 2 +- .../openinv/commands/OpenInvPluginCommand.java | 2 +- .../commands/SearchEnchantPluginCommand.java | 2 +- .../openinv/commands/SearchInvPluginCommand.java | 2 +- .../commands/SilentChestPluginCommand.java | 2 +- .../openinv/listeners/InventoryClickListener.java | 2 +- .../openinv/listeners/InventoryCloseListener.java | 2 +- .../lishid/openinv/listeners/PlayerListener.java | 2 +- .../lishid/openinv/listeners/PluginListener.java | 2 +- .../com/lishid/openinv/util/ConfigUpdater.java | 2 +- pom.xml | 2 +- 38 files changed, 37 insertions(+), 52 deletions(-) diff --git a/README.MD b/README.MD index b980800..33b20e4 100644 --- a/README.MD +++ b/README.MD @@ -144,7 +144,7 @@ The final file is `target/OpenInv.jar` ## License ``` -Copyright (C) 2011-2018 lishid. All rights reserved. +Copyright (C) 2011-2019 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 diff --git a/api/pom.xml b/api/pom.xml index cc3883f..1f5b8af 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -1,5 +1,5 @@ + + + 4.0.0 + + + com.lishid + openinvinternal + 4.0.8-SNAPSHOT + + + openinvadapter1_15_R1 + OpenInvAdapter1_15_R1 + + + + org.spigotmc + spigot + 1.15-R0.1-SNAPSHOT + provided + + + com.lishid + openinvcommon + 4.0.8-SNAPSHOT + + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.0.0 + + true + + + + package + + shade + + + + + + + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + + + + + + \ No newline at end of file diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java new file mode 100644 index 0000000..e854f7e --- /dev/null +++ b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java @@ -0,0 +1,334 @@ +/* + * Copyright (C) 2011-2019 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_15_R1; + +import com.lishid.openinv.internal.IAnySilentContainer; +import java.lang.reflect.Field; +import net.minecraft.server.v1_15_R1.Block; +import net.minecraft.server.v1_15_R1.BlockBarrel; +import net.minecraft.server.v1_15_R1.BlockChest; +import net.minecraft.server.v1_15_R1.BlockChestTrapped; +import net.minecraft.server.v1_15_R1.BlockEnderChest; +import net.minecraft.server.v1_15_R1.BlockPosition; +import net.minecraft.server.v1_15_R1.BlockPropertyChestType; +import net.minecraft.server.v1_15_R1.BlockShulkerBox; +import net.minecraft.server.v1_15_R1.ChatMessage; +import net.minecraft.server.v1_15_R1.Container; +import net.minecraft.server.v1_15_R1.ContainerChest; +import net.minecraft.server.v1_15_R1.EntityHuman; +import net.minecraft.server.v1_15_R1.EntityPlayer; +import net.minecraft.server.v1_15_R1.EnumChatFormat; +import net.minecraft.server.v1_15_R1.EnumGamemode; +import net.minecraft.server.v1_15_R1.IBlockData; +import net.minecraft.server.v1_15_R1.IChatBaseComponent; +import net.minecraft.server.v1_15_R1.ITileInventory; +import net.minecraft.server.v1_15_R1.InventoryEnderChest; +import net.minecraft.server.v1_15_R1.InventoryLargeChest; +import net.minecraft.server.v1_15_R1.PlayerInteractManager; +import net.minecraft.server.v1_15_R1.PlayerInventory; +import net.minecraft.server.v1_15_R1.TileEntity; +import net.minecraft.server.v1_15_R1.TileEntityChest; +import net.minecraft.server.v1_15_R1.TileEntityEnderChest; +import net.minecraft.server.v1_15_R1.TileEntityLootable; +import net.minecraft.server.v1_15_R1.TileInventory; +import net.minecraft.server.v1_15_R1.World; +import org.bukkit.Material; +import org.bukkit.Statistic; +import org.bukkit.block.Barrel; +import org.bukkit.block.BlockFace; +import org.bukkit.block.BlockState; +import org.bukkit.block.EnderChest; +import org.bukkit.block.ShulkerBox; +import org.bukkit.block.data.BlockData; +import org.bukkit.block.data.Directional; +import org.bukkit.block.data.type.Chest; +import org.bukkit.entity.Cat; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; +import org.bukkit.util.BoundingBox; +import org.jetbrains.annotations.NotNull; + +public class AnySilentContainer implements IAnySilentContainer { + + private Field playerInteractManagerGamemode; + + public AnySilentContainer() { + try { + this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); + this.playerInteractManagerGamemode.setAccessible(true); + } catch (NoSuchFieldException | SecurityException e) { + System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); + e.printStackTrace(); + } + } + + @Override + public boolean isAnySilentContainer(@NotNull final org.bukkit.block.Block bukkitBlock) { + if (bukkitBlock.getType() == Material.ENDER_CHEST) { + return true; + } + BlockState state = bukkitBlock.getState(); + return state instanceof org.bukkit.block.Chest + || state instanceof org.bukkit.block.ShulkerBox + || state instanceof org.bukkit.block.Barrel; + } + + @Override + public boolean isAnyContainerNeeded(@NotNull final Player p, @NotNull final org.bukkit.block.Block block) { + BlockState blockState = block.getState(); + + // Barrels do not require AnyContainer. + if (blockState instanceof Barrel) { + return false; + } + + // Enderchests require a non-occluding block on top to open. + if (blockState instanceof EnderChest) { + return block.getRelative(0, 1, 0).getType().isOccluding(); + } + + // Shulker boxes require 1/2 a block clear in the direction they open. + if (blockState instanceof ShulkerBox) { + BoundingBox boundingBox = block.getBoundingBox(); + if (boundingBox.getVolume() > 1) { + // Shulker box is already open. + return false; + } + + BlockData blockData = block.getBlockData(); + if (!(blockData instanceof Directional)) { + // Shouldn't be possible. Just in case, demand AnyChest. + return true; + } + + Directional directional = (Directional) blockData; + BlockFace face = directional.getFacing(); + boundingBox.shift(face.getDirection()); + // Return whether or not bounding boxes overlap. + return block.getRelative(face, 1).getBoundingBox().overlaps(boundingBox); + } + + if (!(blockState instanceof org.bukkit.block.Chest)) { + return false; + } + + if (isBlockedChest(block)) { + return true; + } + + BlockData blockData = block.getBlockData(); + if (!(blockData instanceof Chest) || ((Chest) blockData).getType() == Chest.Type.SINGLE) { + return false; + } + + Chest chest = (Chest) blockData; + int ordinal = (chest.getFacing().ordinal() + 4 + (chest.getType() == Chest.Type.RIGHT ? -1 : 1)) % 4; + BlockFace relativeFace = BlockFace.values()[ordinal]; + org.bukkit.block.Block relative = block.getRelative(relativeFace); + + if (relative.getType() != block.getType()) { + return false; + } + + BlockData relativeData = relative.getBlockData(); + if (!(relativeData instanceof Chest)) { + return false; + } + + Chest relativeChest = (Chest) relativeData; + if (relativeChest.getFacing() != chest.getFacing() + || relativeChest.getType() != (chest.getType() == Chest.Type.RIGHT ? Chest.Type.LEFT : Chest.Type.RIGHT)) { + return false; + } + + return isBlockedChest(relative); + } + + private boolean isBlockedChest(org.bukkit.block.Block block) { + org.bukkit.block.Block relative = block.getRelative(0, 1, 0); + return relative.getType().isOccluding() + || block.getWorld().getNearbyEntities(BoundingBox.of(relative), entity -> entity instanceof Cat).size() > 0; + } + + @Override + public boolean activateContainer(@NotNull final Player bukkitPlayer, final boolean silentchest, + @NotNull final org.bukkit.block.Block bukkitBlock) { + + // Silent ender chest is API-only + if (silentchest && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); + bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); + return true; + } + + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + + final World world = player.world; + final BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); + final TileEntity tile = world.getTileEntity(blockPosition); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(new TileInventory((containerCounter, playerInventory, ignored) -> + ContainerChest.a(containerCounter, playerInventory, enderChest), BlockEnderChest.e)); + bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); + return true; + } + + if (!(tile instanceof ITileInventory)) { + return false; + } + + ITileInventory tileInventory = (ITileInventory) tile; + IBlockData blockData = world.getType(blockPosition); + Block block = blockData.getBlock(); + + if (block instanceof BlockChest) { + + BlockPropertyChestType chestType = blockData.get(BlockChest.c); + + if (chestType != BlockPropertyChestType.SINGLE) { + + BlockPosition adjacentBlockPosition = blockPosition.shift(BlockChest.i(blockData)); + IBlockData adjacentBlockData = world.getType(adjacentBlockPosition); + + if (adjacentBlockData.getBlock() == block) { + + BlockPropertyChestType adjacentChestType = adjacentBlockData.get(BlockChest.c); + + if (adjacentChestType != BlockPropertyChestType.SINGLE && chestType != adjacentChestType + && adjacentBlockData.get(BlockChest.FACING) == blockData.get(BlockChest.FACING)) { + + TileEntity adjacentTile = world.getTileEntity(adjacentBlockPosition); + + if (adjacentTile instanceof TileEntityChest && tileInventory instanceof TileEntityChest) { + TileEntityChest rightChest = chestType == BlockPropertyChestType.RIGHT ? ((TileEntityChest) tileInventory) : (TileEntityChest) adjacentTile; + TileEntityChest leftChest = chestType == BlockPropertyChestType.RIGHT ? (TileEntityChest) adjacentTile : ((TileEntityChest) tileInventory); + + if (rightChest.lootTable != null || leftChest.lootTable != null) { + player.a(new ChatMessage("Loot not generated! Please disable /silentcontainer.").a(EnumChatFormat.RED), true); + return false; + } + + tileInventory = new ITileInventory() { + public Container createMenu(int containerCounter, PlayerInventory playerInventory, EntityHuman entityHuman) { + leftChest.d(playerInventory.player); + rightChest.d(playerInventory.player); + return ContainerChest.b(containerCounter, playerInventory, new InventoryLargeChest(rightChest, leftChest)); + } + + public IChatBaseComponent getScoreboardDisplayName() { + return new ChatMessage("container.chestDouble"); + } + }; + } + } + } + } + + if (block instanceof BlockChestTrapped) { + bukkitPlayer.incrementStatistic(Statistic.TRAPPED_CHEST_TRIGGERED); + } else { + bukkitPlayer.incrementStatistic(Statistic.CHEST_OPENED); + } + } + + if (block instanceof BlockShulkerBox) { + bukkitPlayer.incrementStatistic(Statistic.SHULKER_BOX_OPENED); + } + + if (block instanceof BlockBarrel) { + bukkitPlayer.incrementStatistic(Statistic.OPEN_BARREL); + } + + // AnyChest only - SilentChest not active, container unsupported, or unnecessary. + if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { + player.openContainer(tileInventory); + return true; + } + + // SilentChest requires access to setting players' gamemode directly. + if (this.playerInteractManagerGamemode == null) { + return false; + } + + if (tile instanceof TileEntityLootable) { + TileEntityLootable lootable = (TileEntityLootable) tile; + if (lootable.lootTable != null) { + player.a(new ChatMessage("Loot not generated! Please disable /silentcontainer.").a(EnumChatFormat.RED), true); + return false; + } + } + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.openContainer(tileInventory); + this.forceGameMode(player, gamemode); + return true; + } + + @Override + public void deactivateContainer(@NotNull final Player bukkitPlayer) { + if (this.playerInteractManagerGamemode == null) { + return; + } + + InventoryView view = bukkitPlayer.getOpenInventory(); + switch (view.getType()) { + case CHEST: + case ENDER_CHEST: + case SHULKER_BOX: + case BARREL: + break; + default: + return; + } + + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.activeContainer.b(player); + player.activeContainer.a(player, false); + player.activeContainer.transferTo(player.defaultContainer, player.getBukkitEntity()); + player.activeContainer = player.defaultContainer; + this.forceGameMode(player, gamemode); + } + + private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { + if (this.playerInteractManagerGamemode == null) { + // No need to warn repeatedly, error on startup and lack of function should be enough. + return; + } + try { + if (!this.playerInteractManagerGamemode.isAccessible()) { + // Just in case, ensure accessible. + this.playerInteractManagerGamemode.setAccessible(true); + } + this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); + } catch (IllegalArgumentException | IllegalAccessException e) { + e.printStackTrace(); + } + } + +} diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java new file mode 100644 index 0000000..49fad58 --- /dev/null +++ b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java @@ -0,0 +1,170 @@ +/* + * Copyright (C) 2011-2019 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_15_R1; + +import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; +import com.mojang.authlib.GameProfile; +import net.minecraft.server.v1_15_R1.ChatComponentText; +import net.minecraft.server.v1_15_R1.Container; +import net.minecraft.server.v1_15_R1.Containers; +import net.minecraft.server.v1_15_R1.DimensionManager; +import net.minecraft.server.v1_15_R1.EntityHuman; +import net.minecraft.server.v1_15_R1.EntityPlayer; +import net.minecraft.server.v1_15_R1.MinecraftServer; +import net.minecraft.server.v1_15_R1.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_15_R1.PlayerInteractManager; +import net.minecraft.server.v1_15_R1.PlayerInventory; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; +import org.bukkit.craftbukkit.v1_15_R1.CraftServer; +import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_15_R1.event.CraftEventFactory; +import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftContainer; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; + +public class PlayerDataManager implements IPlayerDataManager { + + public static EntityPlayer getHandle(final Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + + @Override + public Player loadPlayer(@NotNull final OfflinePlayer offline) { + // Ensure player has data + if (!offline.hasPlayedBefore()) { + return null; + } + + // Create a profile and entity to load the player data + GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(DimensionManager.OVERWORLD), profile, + new PlayerInteractManager(server.getWorldServer(DimensionManager.OVERWORLD))); + + // Get the bukkit entity + Player target = entity.getBukkitEntity(); + if (target != null) { + // Load data + target.loadData(); + } + // Return the entity + return target; + } + + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + + EntityPlayer nmsPlayer = getHandle(player); + + if (nmsPlayer == null || nmsPlayer.playerConnection == null) { + return null; + } + + String title; + if (inventory instanceof SpecialEnderChest) { + HumanEntity owner = (HumanEntity) ((SpecialEnderChest) inventory).getBukkitOwner(); + title = (owner.getName() != null ? owner.getName() : owner.getUniqueId().toString()) + "'s Ender Chest"; + } else if (inventory instanceof SpecialPlayerInventory) { + EntityHuman owner = ((PlayerInventory) inventory).player; + title = (owner.getName() != null ? owner.getName() : owner.getUniqueID().toString()) + "'s Inventory"; + } else { + return player.openInventory(inventory.getBukkitInventory()); + } + + Container container = new CraftContainer(new InventoryView() { + @Override + public @NotNull Inventory getTopInventory() { + return inventory.getBukkitInventory(); + } + @Override + public @NotNull Inventory getBottomInventory() { + return player.getInventory(); + } + @Override + public @NotNull HumanEntity getPlayer() { + return player; + } + @Override + public @NotNull InventoryType getType() { + return inventory.getBukkitInventory().getType(); + } + @Override + public @NotNull String getTitle() { + return title; + } + }, nmsPlayer, nmsPlayer.nextContainerCounter()) { + @Override + public Containers getType() { + switch (inventory.getBukkitInventory().getSize()) { + case 9: + return Containers.GENERIC_9X1; + case 18: + return Containers.GENERIC_9X2; + case 27: + default: + return Containers.GENERIC_9X3; + case 36: + return Containers.GENERIC_9X4; + case 41: // PLAYER + case 45: + return Containers.GENERIC_9X5; + case 54: + return Containers.GENERIC_9X6; + } + } + }; + + container.setTitle(new ChatComponentText(title)); + container = CraftEventFactory.callInventoryOpenEvent(nmsPlayer, container); + + if (container == null) { + return null; + } + + nmsPlayer.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, container.getType(), + new ChatComponentText(container.getBukkitView().getTitle()))); + nmsPlayer.activeContainer = container; + container.addSlotListener(nmsPlayer); + + return container.getBukkitView(); + + } + +} diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialEnderChest.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialEnderChest.java new file mode 100644 index 0000000..7f26f48 --- /dev/null +++ b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialEnderChest.java @@ -0,0 +1,255 @@ +/* + * Copyright (C) 2011-2019 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_15_R1; + +import com.lishid.openinv.internal.ISpecialEnderChest; +import java.util.List; +import net.minecraft.server.v1_15_R1.AutoRecipeStackManager; +import net.minecraft.server.v1_15_R1.ContainerUtil; +import net.minecraft.server.v1_15_R1.EntityHuman; +import net.minecraft.server.v1_15_R1.EntityPlayer; +import net.minecraft.server.v1_15_R1.IInventoryListener; +import net.minecraft.server.v1_15_R1.InventoryEnderChest; +import net.minecraft.server.v1_15_R1.ItemStack; +import net.minecraft.server.v1_15_R1.NonNullList; +import org.bukkit.Location; +import org.bukkit.craftbukkit.v1_15_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryHolder; +import org.jetbrains.annotations.NotNull; + +public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEnderChest { + + private final CraftInventory inventory; + private EntityPlayer owner; + private NonNullList items; + private boolean playerOnline; + + public SpecialEnderChest(final Player player, final Boolean online) { + super(PlayerDataManager.getHandle(player)); + this.inventory = new CraftInventory(this); + this.owner = PlayerDataManager.getHandle(player); + this.playerOnline = online; + this.items = this.owner.getEnderChest().items; + } + + @Override + public @NotNull CraftInventory getBukkitInventory() { + return inventory; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public void setPlayerOffline() { + this.playerOnline = false; + } + + @Override + public void setPlayerOnline(@NotNull final Player player) { + if (!this.playerOnline) { + try { + this.owner = PlayerDataManager.getHandle(player); + InventoryEnderChest enderChest = owner.getEnderChest(); + for (int i = 0; i < enderChest.getSize(); ++i) { + enderChest.setItem(i, this.items.get(i)); + } + this.items = enderChest.items; + } catch (Exception ignored) {} + this.playerOnline = true; + } + } + + @Override + public void update() { + this.owner.getEnderChest().update(); + } + + @Override + public List getContents() { + return this.items; + } + + @Override + public void onOpen(CraftHumanEntity who) { + this.owner.getEnderChest().onOpen(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + this.owner.getEnderChest().onClose(who); + } + + @Override + public List getViewers() { + return this.owner.getEnderChest().getViewers(); + } + + @Override + public void setMaxStackSize(int i) { + this.owner.getEnderChest().setMaxStackSize(i); + } + + @Override + public InventoryHolder getOwner() { + return this.owner.getEnderChest().getOwner(); + } + + @Override + public Location getLocation() { + return null; + } + + @Override + public void a(IInventoryListener iinventorylistener) { + this.owner.getEnderChest().a(iinventorylistener); + } + + @Override + public void b(IInventoryListener iinventorylistener) { + this.owner.getEnderChest().b(iinventorylistener); + } + + @Override + public ItemStack getItem(int i) { + return i >= 0 && i < this.items.size() ? this.items.get(i) : ItemStack.a; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack itemstack = ContainerUtil.a(this.items, i, j); + if (!itemstack.isEmpty()) { + this.update(); + } + + return itemstack; + } + + @Override + public ItemStack a(ItemStack itemstack) { + ItemStack itemstack1 = itemstack.cloneItemStack(); + + for (int i = 0; i < this.getSize(); ++i) { + ItemStack itemstack2 = this.getItem(i); + if (itemstack2.isEmpty()) { + this.setItem(i, itemstack1); + this.update(); + return ItemStack.a; + } + + if (ItemStack.c(itemstack2, itemstack1)) { + int j = Math.min(this.getMaxStackSize(), itemstack2.getMaxStackSize()); + int k = Math.min(itemstack1.getCount(), j - itemstack2.getCount()); + if (k > 0) { + itemstack2.add(k); + itemstack1.subtract(k); + if (itemstack1.isEmpty()) { + this.update(); + return ItemStack.a; + } + } + } + } + + if (itemstack1.getCount() != itemstack.getCount()) { + this.update(); + } + + return itemstack1; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack itemstack = this.items.get(i); + if (itemstack.isEmpty()) { + return ItemStack.a; + } else { + this.items.set(i, ItemStack.a); + return itemstack; + } + } + + @Override + public void setItem(int i, ItemStack itemstack) { + this.items.set(i, itemstack); + if (!itemstack.isEmpty() && itemstack.getCount() > this.getMaxStackSize()) { + itemstack.setCount(this.getMaxStackSize()); + } + + this.update(); + } + + @Override + public int getSize() { + return this.owner.getEnderChest().getSize(); + } + + @Override + public boolean isNotEmpty() { + + for (ItemStack itemstack : this.items) { + if (!itemstack.isEmpty()) { + return false; + } + } + + return true; + } + + @Override + public int getMaxStackSize() { + return 64; + } + + @Override + public boolean a(EntityHuman entityhuman) { + return true; + } + + @Override + public void startOpen(EntityHuman entityhuman) { + } + + @Override + public void closeContainer(EntityHuman entityhuman) { + } + + @Override + public boolean b(int i, ItemStack itemstack) { + return true; + } + + @Override + public void clear() { + this.items.clear(); + } + + @Override + public void a(AutoRecipeStackManager autorecipestackmanager) { + + for (ItemStack itemstack : this.items) { + autorecipestackmanager.b(itemstack); + } + + } + +} diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialPlayerInventory.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialPlayerInventory.java new file mode 100644 index 0000000..5292ce7 --- /dev/null +++ b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialPlayerInventory.java @@ -0,0 +1,759 @@ +/* + * Copyright (C) 2011-2019 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_15_R1; + +import com.google.common.collect.ImmutableList; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import java.util.Iterator; +import java.util.List; +import java.util.function.Predicate; +import java.util.stream.Collectors; +import net.minecraft.server.v1_15_R1.AutoRecipeStackManager; +import net.minecraft.server.v1_15_R1.ChatMessage; +import net.minecraft.server.v1_15_R1.ContainerUtil; +import net.minecraft.server.v1_15_R1.CrashReport; +import net.minecraft.server.v1_15_R1.CrashReportSystemDetails; +import net.minecraft.server.v1_15_R1.EntityHuman; +import net.minecraft.server.v1_15_R1.EntityPlayer; +import net.minecraft.server.v1_15_R1.EnumItemSlot; +import net.minecraft.server.v1_15_R1.IBlockData; +import net.minecraft.server.v1_15_R1.IChatBaseComponent; +import net.minecraft.server.v1_15_R1.Item; +import net.minecraft.server.v1_15_R1.ItemArmor; +import net.minecraft.server.v1_15_R1.ItemStack; +import net.minecraft.server.v1_15_R1.NBTTagCompound; +import net.minecraft.server.v1_15_R1.NBTTagList; +import net.minecraft.server.v1_15_R1.NonNullList; +import net.minecraft.server.v1_15_R1.PacketPlayOutSetSlot; +import net.minecraft.server.v1_15_R1.PlayerInventory; +import net.minecraft.server.v1_15_R1.ReportedException; +import net.minecraft.server.v1_15_R1.World; +import org.bukkit.Location; +import org.bukkit.craftbukkit.v1_15_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryHolder; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final CraftInventory inventory; + private boolean playerOnline; + private EntityHuman player; + private NonNullList items, armor, extraSlots; + private List> f; + + public SpecialPlayerInventory(final Player bukkitPlayer, final Boolean online) { + super(PlayerDataManager.getHandle(bukkitPlayer)); + this.inventory = new CraftInventory(this); + this.playerOnline = online; + this.player = super.player; + this.items = this.player.inventory.items; + this.armor = this.player.inventory.armor; + this.extraSlots = this.player.inventory.extraSlots; + this.f = ImmutableList.of(this.items, this.armor, this.extraSlots); + } + + @Override + public void setPlayerOnline(@NotNull final Player player) { + if (!this.playerOnline) { + EntityPlayer entityPlayer = PlayerDataManager.getHandle(player); + entityPlayer.inventory.transaction.addAll(this.transaction); + this.player = entityPlayer; + for (int i = 0; i < getSize(); ++i) { + this.player.inventory.setItem(i, getRawItem(i)); + } + this.player.inventory.itemInHandIndex = this.itemInHandIndex; + this.items = this.player.inventory.items; + this.armor = this.player.inventory.armor; + this.extraSlots = this.player.inventory.extraSlots; + this.f = ImmutableList.of(this.items, this.armor, this.extraSlots); + this.playerOnline = true; + } + } + + @Override + public boolean a(final EntityHuman entityhuman) { + return true; + } + + @Override + public @NotNull CraftInventory getBukkitInventory() { + return this.inventory; + } + + @Override + public ItemStack getItem(int i) { + List list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + return list.get(i); + } + + private ItemStack getRawItem(int i) { + NonNullList list = null; + for (NonNullList next : this.f) { + if (i < next.size()) { + list = next; + break; + } + i -= next.size(); + } + + return list == null ? ItemStack.a : list.get(i); + } + + @Override + public IChatBaseComponent getDisplayName() { + return new ChatMessage(this.player.getName()); + } + + @Override + public boolean hasCustomName() { + return false; + } + + private int getReversedArmorSlotNum(final int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + private int getReversedItemSlotNum(final int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + @Override + public int getSize() { + return 45; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public void setItem(int i, final ItemStack itemstack) { + List list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + this.player.drop(itemstack, true); + return; + } + + list.set(i, itemstack); + } + + @Override + public void setPlayerOffline() { + this.playerOnline = false; + } + + @Override + public ItemStack splitStack(int i, final int j) { + List list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + return list.get(i).isEmpty() ? ItemStack.a : ContainerUtil.a(list, i, j); + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + List list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + if (!list.get(i).isEmpty()) { + ItemStack itemstack = list.get(i); + + list.set(i, ItemStack.a); + return itemstack; + } + + return ItemStack.a; + } + + @Override + public List getContents() { + return this.f.stream().flatMap(List::stream).collect(Collectors.toList()); + } + + @Override + public List getArmorContents() { + return this.armor; + } + + @Override + public void onOpen(CraftHumanEntity who) { + this.transaction.add(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + this.transaction.remove(who); + } + + @Override + public List getViewers() { + return this.transaction; + } + + @Override + public InventoryHolder getOwner() { + return this.player.getBukkitEntity(); + } + + @Override + public Location getLocation() { + return this.player.getBukkitEntity().getLocation(); + } + + @Override + public ItemStack getItemInHand() { + return d(this.itemInHandIndex) ? this.items.get(this.itemInHandIndex) : ItemStack.a; + } + + private boolean a(ItemStack itemstack, ItemStack itemstack1) { + return !itemstack.isEmpty() && this.b(itemstack, itemstack1) && itemstack.isStackable() && itemstack.getCount() < itemstack.getMaxStackSize() && itemstack.getCount() < this.getMaxStackSize(); + } + + private boolean b(ItemStack itemstack, ItemStack itemstack1) { + return itemstack.getItem() == itemstack1.getItem() && ItemStack.equals(itemstack, itemstack1); + } + + @Override + public int canHold(ItemStack itemstack) { + int remains = itemstack.getCount(); + + for (int i = 0; i < this.items.size(); ++i) { + ItemStack itemstack1 = this.getItem(i); + if (itemstack1.isEmpty()) { + return itemstack.getCount(); + } + + if (!this.a(itemstack, itemstack1)) { + remains -= (itemstack1.getMaxStackSize() < this.getMaxStackSize() ? itemstack1.getMaxStackSize() : this.getMaxStackSize()) - itemstack1.getCount(); + } + + if (remains <= 0) { + return itemstack.getCount(); + } + } + + return itemstack.getCount() - remains; + } + + @Override + public int getFirstEmptySlotIndex() { + for (int i = 0; i < this.items.size(); ++i) { + if (this.items.get(i).isEmpty()) { + return i; + } + } + + return -1; + } + + @Override + public void c(int i) { + this.itemInHandIndex = this.i(); + ItemStack itemstack = this.items.get(this.itemInHandIndex); + this.items.set(this.itemInHandIndex, this.items.get(i)); + this.items.set(i, itemstack); + } + + @Override + public int c(ItemStack itemstack) { + for (int i = 0; i < this.items.size(); ++i) { + ItemStack itemstack1 = this.items.get(i); + if (!this.items.get(i).isEmpty() && this.b(itemstack, this.items.get(i)) && !this.items.get(i).f() && !itemstack1.hasEnchantments() && !itemstack1.hasName()) { + return i; + } + } + + return -1; + } + + @Override + public int i() { + int i; + int j; + for (j = 0; j < 9; ++j) { + i = (this.itemInHandIndex + j) % 9; + if (this.items.get(i).isEmpty()) { + return i; + } + } + + for (j = 0; j < 9; ++j) { + i = (this.itemInHandIndex + j) % 9; + if (!this.items.get(i).hasEnchantments()) { + return i; + } + } + + return this.itemInHandIndex; + } + + @Override + public int a(Predicate predicate, int i) { + int j = 0; + + int k; + for (k = 0; k < this.getSize(); ++k) { + ItemStack itemstack = this.getItem(k); + if (!itemstack.isEmpty() && predicate.test(itemstack)) { + int l = i <= 0 ? itemstack.getCount() : Math.min(i - j, itemstack.getCount()); + j += l; + if (i != 0) { + itemstack.subtract(l); + if (itemstack.isEmpty()) { + this.setItem(k, ItemStack.a); + } + + if (i > 0 && j >= i) { + return j; + } + } + } + } + + if (!this.getCarried().isEmpty() && predicate.test(this.getCarried())) { + k = i <= 0 ? this.getCarried().getCount() : Math.min(i - j, this.getCarried().getCount()); + j += k; + if (i != 0) { + this.getCarried().subtract(k); + if (this.getCarried().isEmpty()) { + this.setCarried(ItemStack.a); + } + + if (i > 0 && j >= i) { + return j; + } + } + } + + return j; + } + + private int i(ItemStack itemstack) { + int i = this.firstPartial(itemstack); + if (i == -1) { + i = this.getFirstEmptySlotIndex(); + } + + return i == -1 ? itemstack.getCount() : this.d(i, itemstack); + } + + private int d(int i, ItemStack itemstack) { + Item item = itemstack.getItem(); + int j = itemstack.getCount(); + ItemStack itemstack1 = this.getItem(i); + if (itemstack1.isEmpty()) { + itemstack1 = new ItemStack(item, 0); + if (itemstack.hasTag()) { + itemstack1.setTag(itemstack.getTag().clone()); + } + + this.setItem(i, itemstack1); + } + + int k = j; + if (j > itemstack1.getMaxStackSize() - itemstack1.getCount()) { + k = itemstack1.getMaxStackSize() - itemstack1.getCount(); + } + + if (k > this.getMaxStackSize() - itemstack1.getCount()) { + k = this.getMaxStackSize() - itemstack1.getCount(); + } + + if (k == 0) { + return j; + } else { + j -= k; + itemstack1.add(k); + itemstack1.d(5); + return j; + } + } + + @Override + public int firstPartial(ItemStack itemstack) { + if (this.a(this.getItem(this.itemInHandIndex), itemstack)) { + return this.itemInHandIndex; + } else if (this.a(this.getItem(40), itemstack)) { + return 40; + } else { + for (int i = 0; i < this.items.size(); ++i) { + if (this.a(this.items.get(i), itemstack)) { + return i; + } + } + + return -1; + } + } + + @Override + public void j() { + + for (List itemStacks : this.f) { + for (int i = 0; i < itemStacks.size(); ++i) { + if (!itemStacks.get(i).isEmpty()) { + itemStacks.get(i).a(this.player.world, this.player, i, this.itemInHandIndex == i); + } + } + } + + } + + @Override + public boolean pickup(ItemStack itemstack) { + return this.c(-1, itemstack); + } + + @Override + public boolean c(int i, ItemStack itemstack) { + if (itemstack.isEmpty()) { + return false; + } else { + try { + if (itemstack.f()) { + if (i == -1) { + i = this.getFirstEmptySlotIndex(); + } + + if (i >= 0) { + this.items.set(i, itemstack.cloneItemStack()); + this.items.get(i).d(5); + itemstack.setCount(0); + return true; + } else if (this.player.abilities.canInstantlyBuild) { + itemstack.setCount(0); + return true; + } else { + return false; + } + } else { + int j; + do { + j = itemstack.getCount(); + if (i == -1) { + itemstack.setCount(this.i(itemstack)); + } else { + itemstack.setCount(this.d(i, itemstack)); + } + } while(!itemstack.isEmpty() && itemstack.getCount() < j); + + if (itemstack.getCount() == j && this.player.abilities.canInstantlyBuild) { + itemstack.setCount(0); + return true; + } else { + return itemstack.getCount() < j; + } + } + } catch (Throwable var6) { + CrashReport crashreport = CrashReport.a(var6, "Adding item to inventory"); + CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Item being added"); + crashreportsystemdetails.a("Item ID", Item.getId(itemstack.getItem())); + crashreportsystemdetails.a("Item data", itemstack.getDamage()); + crashreportsystemdetails.a("Item name", () -> itemstack.getName().getString()); + throw new ReportedException(crashreport); + } + } + } + + @Override + public void a(World world, ItemStack itemstack) { + if (!world.isClientSide) { + while(!itemstack.isEmpty()) { + int i = this.firstPartial(itemstack); + if (i == -1) { + i = this.getFirstEmptySlotIndex(); + } + + if (i == -1) { + this.player.drop(itemstack, false); + break; + } + + int j = itemstack.getMaxStackSize() - this.getItem(i).getCount(); + if (this.c(i, itemstack.cloneAndSubtract(j))) { + ((EntityPlayer)this.player).playerConnection.sendPacket(new PacketPlayOutSetSlot(-2, i, this.getItem(i))); + } + } + } + + } + + @Override + public void f(ItemStack itemstack) { + + for (List list : this.f) { + for (int i = 0; i < list.size(); ++i) { + if (list.get(i) == itemstack) { + list.set(i, ItemStack.a); + break; + } + } + } + } + + @Override + public float a(IBlockData iblockdata) { + return this.items.get(this.itemInHandIndex).a(iblockdata); + } + + @Override + public NBTTagList a(NBTTagList nbttaglist) { + NBTTagCompound nbttagcompound; + int i; + for (i = 0; i < this.items.size(); ++i) { + if (!this.items.get(i).isEmpty()) { + nbttagcompound = new NBTTagCompound(); + nbttagcompound.setByte("Slot", (byte) i); + this.items.get(i).save(nbttagcompound); + nbttaglist.add(nbttagcompound); + } + } + + for (i = 0; i < this.armor.size(); ++i) { + if (!this.armor.get(i).isEmpty()) { + nbttagcompound = new NBTTagCompound(); + nbttagcompound.setByte("Slot", (byte) (i + 100)); + this.armor.get(i).save(nbttagcompound); + nbttaglist.add(nbttagcompound); + } + } + + for (i = 0; i < this.extraSlots.size(); ++i) { + if (!this.extraSlots.get(i).isEmpty()) { + nbttagcompound = new NBTTagCompound(); + nbttagcompound.setByte("Slot", (byte) (i + 150)); + this.extraSlots.get(i).save(nbttagcompound); + nbttaglist.add(nbttagcompound); + } + } + + return nbttaglist; + } + + @Override + public void b(NBTTagList nbttaglist) { + this.items.clear(); + this.armor.clear(); + this.extraSlots.clear(); + + for(int i = 0; i < nbttaglist.size(); ++i) { + NBTTagCompound nbttagcompound = nbttaglist.getCompound(i); + int j = nbttagcompound.getByte("Slot") & 255; + ItemStack itemstack = ItemStack.a(nbttagcompound); + if (!itemstack.isEmpty()) { + if (j < this.items.size()) { + this.items.set(j, itemstack); + } else if (j >= 100 && j < this.armor.size() + 100) { + this.armor.set(j - 100, itemstack); + } else if (j >= 150 && j < this.extraSlots.size() + 150) { + this.extraSlots.set(j - 150, itemstack); + } + } + } + + } + + @Override + public boolean isNotEmpty() { + Iterator iterator = this.items.iterator(); + + ItemStack itemstack; + while (iterator.hasNext()) { + itemstack = (ItemStack)iterator.next(); + if (!itemstack.isEmpty()) { + return false; + } + } + + iterator = this.armor.iterator(); + + while (iterator.hasNext()) { + itemstack = (ItemStack)iterator.next(); + if (!itemstack.isEmpty()) { + return false; + } + } + + iterator = this.extraSlots.iterator(); + + while (iterator.hasNext()) { + itemstack = (ItemStack)iterator.next(); + if (!itemstack.isEmpty()) { + return false; + } + } + + return true; + } + + @Nullable + @Override + public IChatBaseComponent getCustomName() { + return null; + } + + @Override + public boolean b(IBlockData iblockdata) { + return this.getItem(this.itemInHandIndex).canDestroySpecialBlock(iblockdata); + } + + @Override + public void a(float f) { + if (f > 0.0F) { + f /= 4.0F; + if (f < 1.0F) { + f = 1.0F; + } + + for (int i = 0; i < this.armor.size(); ++i) { + ItemStack itemstack = this.armor.get(0); + int index = i; + if (itemstack.getItem() instanceof ItemArmor) { + itemstack.damage((int) f, this.player, (entityhuman) -> entityhuman.c(EnumItemSlot.a(EnumItemSlot.Function.ARMOR, index))); + } + } + } + } + + @Override + public void dropContents() { + for (List itemStacks : this.f) { + for (int i = 0; i < itemStacks.size(); ++i) { + ItemStack itemstack = itemStacks.get(i); + if (!itemstack.isEmpty()) { + itemStacks.set(i, ItemStack.a); + this.player.a(itemstack, true, false); + } + } + } + } + + @Override + public boolean h(ItemStack itemstack) { + return this.f.stream().flatMap(List::stream).anyMatch(itemStack1 -> !itemStack1.isEmpty() && itemStack1.doMaterialsMatch(itemstack)); + } + + @Override + public void a(PlayerInventory playerinventory) { + for (int i = 0; i < playerinventory.getSize(); ++i) { + this.setItem(i, playerinventory.getItem(i)); + } + + this.itemInHandIndex = playerinventory.itemInHandIndex; + } + + @Override + public void clear() { + this.f.forEach(List::clear); + } + + @Override + public void a(AutoRecipeStackManager autorecipestackmanager) { + for (ItemStack itemstack : this.items) { + autorecipestackmanager.a(itemstack); + } + } + +} -- 2.49.1 From 6d6257720abfc088a7e8de529c31c10795dff6d9 Mon Sep 17 00:00:00 2001 From: Andre LeBlanc Date: Thu, 12 Dec 2019 12:49:21 -0500 Subject: [PATCH 191/253] add support for 1.15 --- internal/pom.xml | 1 + internal/v1_15_R1/pom.xml | 75 ++ .../internal/v1_15_R1/AnySilentContainer.java | 334 ++++++++ .../internal/v1_15_R1/PlayerDataManager.java | 170 ++++ .../internal/v1_15_R1/SpecialEnderChest.java | 255 ++++++ .../v1_15_R1/SpecialPlayerInventory.java | 759 ++++++++++++++++++ 6 files changed, 1594 insertions(+) create mode 100644 internal/v1_15_R1/pom.xml create mode 100644 internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java create mode 100644 internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java create mode 100644 internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialEnderChest.java create mode 100644 internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialPlayerInventory.java diff --git a/internal/pom.xml b/internal/pom.xml index bb7f89e..fa36d4c 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -36,6 +36,7 @@ v1_8_R3 v1_13_R2 v1_14_R1 + v1_15_R1 diff --git a/internal/v1_15_R1/pom.xml b/internal/v1_15_R1/pom.xml new file mode 100644 index 0000000..d20b11a --- /dev/null +++ b/internal/v1_15_R1/pom.xml @@ -0,0 +1,75 @@ + + + + + 4.0.0 + + + com.lishid + openinvinternal + 4.0.8-SNAPSHOT + + + openinvadapter1_15_R1 + OpenInvAdapter1_15_R1 + + + + org.spigotmc + spigot + 1.15-R0.1-SNAPSHOT + provided + + + com.lishid + openinvcommon + 4.0.8-SNAPSHOT + + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.0.0 + + true + + + + package + + shade + + + + + + + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + + + + + + \ No newline at end of file diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java new file mode 100644 index 0000000..e854f7e --- /dev/null +++ b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java @@ -0,0 +1,334 @@ +/* + * Copyright (C) 2011-2019 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_15_R1; + +import com.lishid.openinv.internal.IAnySilentContainer; +import java.lang.reflect.Field; +import net.minecraft.server.v1_15_R1.Block; +import net.minecraft.server.v1_15_R1.BlockBarrel; +import net.minecraft.server.v1_15_R1.BlockChest; +import net.minecraft.server.v1_15_R1.BlockChestTrapped; +import net.minecraft.server.v1_15_R1.BlockEnderChest; +import net.minecraft.server.v1_15_R1.BlockPosition; +import net.minecraft.server.v1_15_R1.BlockPropertyChestType; +import net.minecraft.server.v1_15_R1.BlockShulkerBox; +import net.minecraft.server.v1_15_R1.ChatMessage; +import net.minecraft.server.v1_15_R1.Container; +import net.minecraft.server.v1_15_R1.ContainerChest; +import net.minecraft.server.v1_15_R1.EntityHuman; +import net.minecraft.server.v1_15_R1.EntityPlayer; +import net.minecraft.server.v1_15_R1.EnumChatFormat; +import net.minecraft.server.v1_15_R1.EnumGamemode; +import net.minecraft.server.v1_15_R1.IBlockData; +import net.minecraft.server.v1_15_R1.IChatBaseComponent; +import net.minecraft.server.v1_15_R1.ITileInventory; +import net.minecraft.server.v1_15_R1.InventoryEnderChest; +import net.minecraft.server.v1_15_R1.InventoryLargeChest; +import net.minecraft.server.v1_15_R1.PlayerInteractManager; +import net.minecraft.server.v1_15_R1.PlayerInventory; +import net.minecraft.server.v1_15_R1.TileEntity; +import net.minecraft.server.v1_15_R1.TileEntityChest; +import net.minecraft.server.v1_15_R1.TileEntityEnderChest; +import net.minecraft.server.v1_15_R1.TileEntityLootable; +import net.minecraft.server.v1_15_R1.TileInventory; +import net.minecraft.server.v1_15_R1.World; +import org.bukkit.Material; +import org.bukkit.Statistic; +import org.bukkit.block.Barrel; +import org.bukkit.block.BlockFace; +import org.bukkit.block.BlockState; +import org.bukkit.block.EnderChest; +import org.bukkit.block.ShulkerBox; +import org.bukkit.block.data.BlockData; +import org.bukkit.block.data.Directional; +import org.bukkit.block.data.type.Chest; +import org.bukkit.entity.Cat; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; +import org.bukkit.util.BoundingBox; +import org.jetbrains.annotations.NotNull; + +public class AnySilentContainer implements IAnySilentContainer { + + private Field playerInteractManagerGamemode; + + public AnySilentContainer() { + try { + this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); + this.playerInteractManagerGamemode.setAccessible(true); + } catch (NoSuchFieldException | SecurityException e) { + System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); + e.printStackTrace(); + } + } + + @Override + public boolean isAnySilentContainer(@NotNull final org.bukkit.block.Block bukkitBlock) { + if (bukkitBlock.getType() == Material.ENDER_CHEST) { + return true; + } + BlockState state = bukkitBlock.getState(); + return state instanceof org.bukkit.block.Chest + || state instanceof org.bukkit.block.ShulkerBox + || state instanceof org.bukkit.block.Barrel; + } + + @Override + public boolean isAnyContainerNeeded(@NotNull final Player p, @NotNull final org.bukkit.block.Block block) { + BlockState blockState = block.getState(); + + // Barrels do not require AnyContainer. + if (blockState instanceof Barrel) { + return false; + } + + // Enderchests require a non-occluding block on top to open. + if (blockState instanceof EnderChest) { + return block.getRelative(0, 1, 0).getType().isOccluding(); + } + + // Shulker boxes require 1/2 a block clear in the direction they open. + if (blockState instanceof ShulkerBox) { + BoundingBox boundingBox = block.getBoundingBox(); + if (boundingBox.getVolume() > 1) { + // Shulker box is already open. + return false; + } + + BlockData blockData = block.getBlockData(); + if (!(blockData instanceof Directional)) { + // Shouldn't be possible. Just in case, demand AnyChest. + return true; + } + + Directional directional = (Directional) blockData; + BlockFace face = directional.getFacing(); + boundingBox.shift(face.getDirection()); + // Return whether or not bounding boxes overlap. + return block.getRelative(face, 1).getBoundingBox().overlaps(boundingBox); + } + + if (!(blockState instanceof org.bukkit.block.Chest)) { + return false; + } + + if (isBlockedChest(block)) { + return true; + } + + BlockData blockData = block.getBlockData(); + if (!(blockData instanceof Chest) || ((Chest) blockData).getType() == Chest.Type.SINGLE) { + return false; + } + + Chest chest = (Chest) blockData; + int ordinal = (chest.getFacing().ordinal() + 4 + (chest.getType() == Chest.Type.RIGHT ? -1 : 1)) % 4; + BlockFace relativeFace = BlockFace.values()[ordinal]; + org.bukkit.block.Block relative = block.getRelative(relativeFace); + + if (relative.getType() != block.getType()) { + return false; + } + + BlockData relativeData = relative.getBlockData(); + if (!(relativeData instanceof Chest)) { + return false; + } + + Chest relativeChest = (Chest) relativeData; + if (relativeChest.getFacing() != chest.getFacing() + || relativeChest.getType() != (chest.getType() == Chest.Type.RIGHT ? Chest.Type.LEFT : Chest.Type.RIGHT)) { + return false; + } + + return isBlockedChest(relative); + } + + private boolean isBlockedChest(org.bukkit.block.Block block) { + org.bukkit.block.Block relative = block.getRelative(0, 1, 0); + return relative.getType().isOccluding() + || block.getWorld().getNearbyEntities(BoundingBox.of(relative), entity -> entity instanceof Cat).size() > 0; + } + + @Override + public boolean activateContainer(@NotNull final Player bukkitPlayer, final boolean silentchest, + @NotNull final org.bukkit.block.Block bukkitBlock) { + + // Silent ender chest is API-only + if (silentchest && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); + bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); + return true; + } + + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + + final World world = player.world; + final BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); + final TileEntity tile = world.getTileEntity(blockPosition); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(new TileInventory((containerCounter, playerInventory, ignored) -> + ContainerChest.a(containerCounter, playerInventory, enderChest), BlockEnderChest.e)); + bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); + return true; + } + + if (!(tile instanceof ITileInventory)) { + return false; + } + + ITileInventory tileInventory = (ITileInventory) tile; + IBlockData blockData = world.getType(blockPosition); + Block block = blockData.getBlock(); + + if (block instanceof BlockChest) { + + BlockPropertyChestType chestType = blockData.get(BlockChest.c); + + if (chestType != BlockPropertyChestType.SINGLE) { + + BlockPosition adjacentBlockPosition = blockPosition.shift(BlockChest.i(blockData)); + IBlockData adjacentBlockData = world.getType(adjacentBlockPosition); + + if (adjacentBlockData.getBlock() == block) { + + BlockPropertyChestType adjacentChestType = adjacentBlockData.get(BlockChest.c); + + if (adjacentChestType != BlockPropertyChestType.SINGLE && chestType != adjacentChestType + && adjacentBlockData.get(BlockChest.FACING) == blockData.get(BlockChest.FACING)) { + + TileEntity adjacentTile = world.getTileEntity(adjacentBlockPosition); + + if (adjacentTile instanceof TileEntityChest && tileInventory instanceof TileEntityChest) { + TileEntityChest rightChest = chestType == BlockPropertyChestType.RIGHT ? ((TileEntityChest) tileInventory) : (TileEntityChest) adjacentTile; + TileEntityChest leftChest = chestType == BlockPropertyChestType.RIGHT ? (TileEntityChest) adjacentTile : ((TileEntityChest) tileInventory); + + if (rightChest.lootTable != null || leftChest.lootTable != null) { + player.a(new ChatMessage("Loot not generated! Please disable /silentcontainer.").a(EnumChatFormat.RED), true); + return false; + } + + tileInventory = new ITileInventory() { + public Container createMenu(int containerCounter, PlayerInventory playerInventory, EntityHuman entityHuman) { + leftChest.d(playerInventory.player); + rightChest.d(playerInventory.player); + return ContainerChest.b(containerCounter, playerInventory, new InventoryLargeChest(rightChest, leftChest)); + } + + public IChatBaseComponent getScoreboardDisplayName() { + return new ChatMessage("container.chestDouble"); + } + }; + } + } + } + } + + if (block instanceof BlockChestTrapped) { + bukkitPlayer.incrementStatistic(Statistic.TRAPPED_CHEST_TRIGGERED); + } else { + bukkitPlayer.incrementStatistic(Statistic.CHEST_OPENED); + } + } + + if (block instanceof BlockShulkerBox) { + bukkitPlayer.incrementStatistic(Statistic.SHULKER_BOX_OPENED); + } + + if (block instanceof BlockBarrel) { + bukkitPlayer.incrementStatistic(Statistic.OPEN_BARREL); + } + + // AnyChest only - SilentChest not active, container unsupported, or unnecessary. + if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { + player.openContainer(tileInventory); + return true; + } + + // SilentChest requires access to setting players' gamemode directly. + if (this.playerInteractManagerGamemode == null) { + return false; + } + + if (tile instanceof TileEntityLootable) { + TileEntityLootable lootable = (TileEntityLootable) tile; + if (lootable.lootTable != null) { + player.a(new ChatMessage("Loot not generated! Please disable /silentcontainer.").a(EnumChatFormat.RED), true); + return false; + } + } + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.openContainer(tileInventory); + this.forceGameMode(player, gamemode); + return true; + } + + @Override + public void deactivateContainer(@NotNull final Player bukkitPlayer) { + if (this.playerInteractManagerGamemode == null) { + return; + } + + InventoryView view = bukkitPlayer.getOpenInventory(); + switch (view.getType()) { + case CHEST: + case ENDER_CHEST: + case SHULKER_BOX: + case BARREL: + break; + default: + return; + } + + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.activeContainer.b(player); + player.activeContainer.a(player, false); + player.activeContainer.transferTo(player.defaultContainer, player.getBukkitEntity()); + player.activeContainer = player.defaultContainer; + this.forceGameMode(player, gamemode); + } + + private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { + if (this.playerInteractManagerGamemode == null) { + // No need to warn repeatedly, error on startup and lack of function should be enough. + return; + } + try { + if (!this.playerInteractManagerGamemode.isAccessible()) { + // Just in case, ensure accessible. + this.playerInteractManagerGamemode.setAccessible(true); + } + this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); + } catch (IllegalArgumentException | IllegalAccessException e) { + e.printStackTrace(); + } + } + +} diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java new file mode 100644 index 0000000..49fad58 --- /dev/null +++ b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java @@ -0,0 +1,170 @@ +/* + * Copyright (C) 2011-2019 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_15_R1; + +import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; +import com.mojang.authlib.GameProfile; +import net.minecraft.server.v1_15_R1.ChatComponentText; +import net.minecraft.server.v1_15_R1.Container; +import net.minecraft.server.v1_15_R1.Containers; +import net.minecraft.server.v1_15_R1.DimensionManager; +import net.minecraft.server.v1_15_R1.EntityHuman; +import net.minecraft.server.v1_15_R1.EntityPlayer; +import net.minecraft.server.v1_15_R1.MinecraftServer; +import net.minecraft.server.v1_15_R1.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_15_R1.PlayerInteractManager; +import net.minecraft.server.v1_15_R1.PlayerInventory; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; +import org.bukkit.craftbukkit.v1_15_R1.CraftServer; +import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_15_R1.event.CraftEventFactory; +import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftContainer; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; + +public class PlayerDataManager implements IPlayerDataManager { + + public static EntityPlayer getHandle(final Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + + @Override + public Player loadPlayer(@NotNull final OfflinePlayer offline) { + // Ensure player has data + if (!offline.hasPlayedBefore()) { + return null; + } + + // Create a profile and entity to load the player data + GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(DimensionManager.OVERWORLD), profile, + new PlayerInteractManager(server.getWorldServer(DimensionManager.OVERWORLD))); + + // Get the bukkit entity + Player target = entity.getBukkitEntity(); + if (target != null) { + // Load data + target.loadData(); + } + // Return the entity + return target; + } + + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + + EntityPlayer nmsPlayer = getHandle(player); + + if (nmsPlayer == null || nmsPlayer.playerConnection == null) { + return null; + } + + String title; + if (inventory instanceof SpecialEnderChest) { + HumanEntity owner = (HumanEntity) ((SpecialEnderChest) inventory).getBukkitOwner(); + title = (owner.getName() != null ? owner.getName() : owner.getUniqueId().toString()) + "'s Ender Chest"; + } else if (inventory instanceof SpecialPlayerInventory) { + EntityHuman owner = ((PlayerInventory) inventory).player; + title = (owner.getName() != null ? owner.getName() : owner.getUniqueID().toString()) + "'s Inventory"; + } else { + return player.openInventory(inventory.getBukkitInventory()); + } + + Container container = new CraftContainer(new InventoryView() { + @Override + public @NotNull Inventory getTopInventory() { + return inventory.getBukkitInventory(); + } + @Override + public @NotNull Inventory getBottomInventory() { + return player.getInventory(); + } + @Override + public @NotNull HumanEntity getPlayer() { + return player; + } + @Override + public @NotNull InventoryType getType() { + return inventory.getBukkitInventory().getType(); + } + @Override + public @NotNull String getTitle() { + return title; + } + }, nmsPlayer, nmsPlayer.nextContainerCounter()) { + @Override + public Containers getType() { + switch (inventory.getBukkitInventory().getSize()) { + case 9: + return Containers.GENERIC_9X1; + case 18: + return Containers.GENERIC_9X2; + case 27: + default: + return Containers.GENERIC_9X3; + case 36: + return Containers.GENERIC_9X4; + case 41: // PLAYER + case 45: + return Containers.GENERIC_9X5; + case 54: + return Containers.GENERIC_9X6; + } + } + }; + + container.setTitle(new ChatComponentText(title)); + container = CraftEventFactory.callInventoryOpenEvent(nmsPlayer, container); + + if (container == null) { + return null; + } + + nmsPlayer.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, container.getType(), + new ChatComponentText(container.getBukkitView().getTitle()))); + nmsPlayer.activeContainer = container; + container.addSlotListener(nmsPlayer); + + return container.getBukkitView(); + + } + +} diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialEnderChest.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialEnderChest.java new file mode 100644 index 0000000..7f26f48 --- /dev/null +++ b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialEnderChest.java @@ -0,0 +1,255 @@ +/* + * Copyright (C) 2011-2019 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_15_R1; + +import com.lishid.openinv.internal.ISpecialEnderChest; +import java.util.List; +import net.minecraft.server.v1_15_R1.AutoRecipeStackManager; +import net.minecraft.server.v1_15_R1.ContainerUtil; +import net.minecraft.server.v1_15_R1.EntityHuman; +import net.minecraft.server.v1_15_R1.EntityPlayer; +import net.minecraft.server.v1_15_R1.IInventoryListener; +import net.minecraft.server.v1_15_R1.InventoryEnderChest; +import net.minecraft.server.v1_15_R1.ItemStack; +import net.minecraft.server.v1_15_R1.NonNullList; +import org.bukkit.Location; +import org.bukkit.craftbukkit.v1_15_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryHolder; +import org.jetbrains.annotations.NotNull; + +public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEnderChest { + + private final CraftInventory inventory; + private EntityPlayer owner; + private NonNullList items; + private boolean playerOnline; + + public SpecialEnderChest(final Player player, final Boolean online) { + super(PlayerDataManager.getHandle(player)); + this.inventory = new CraftInventory(this); + this.owner = PlayerDataManager.getHandle(player); + this.playerOnline = online; + this.items = this.owner.getEnderChest().items; + } + + @Override + public @NotNull CraftInventory getBukkitInventory() { + return inventory; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public void setPlayerOffline() { + this.playerOnline = false; + } + + @Override + public void setPlayerOnline(@NotNull final Player player) { + if (!this.playerOnline) { + try { + this.owner = PlayerDataManager.getHandle(player); + InventoryEnderChest enderChest = owner.getEnderChest(); + for (int i = 0; i < enderChest.getSize(); ++i) { + enderChest.setItem(i, this.items.get(i)); + } + this.items = enderChest.items; + } catch (Exception ignored) {} + this.playerOnline = true; + } + } + + @Override + public void update() { + this.owner.getEnderChest().update(); + } + + @Override + public List getContents() { + return this.items; + } + + @Override + public void onOpen(CraftHumanEntity who) { + this.owner.getEnderChest().onOpen(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + this.owner.getEnderChest().onClose(who); + } + + @Override + public List getViewers() { + return this.owner.getEnderChest().getViewers(); + } + + @Override + public void setMaxStackSize(int i) { + this.owner.getEnderChest().setMaxStackSize(i); + } + + @Override + public InventoryHolder getOwner() { + return this.owner.getEnderChest().getOwner(); + } + + @Override + public Location getLocation() { + return null; + } + + @Override + public void a(IInventoryListener iinventorylistener) { + this.owner.getEnderChest().a(iinventorylistener); + } + + @Override + public void b(IInventoryListener iinventorylistener) { + this.owner.getEnderChest().b(iinventorylistener); + } + + @Override + public ItemStack getItem(int i) { + return i >= 0 && i < this.items.size() ? this.items.get(i) : ItemStack.a; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack itemstack = ContainerUtil.a(this.items, i, j); + if (!itemstack.isEmpty()) { + this.update(); + } + + return itemstack; + } + + @Override + public ItemStack a(ItemStack itemstack) { + ItemStack itemstack1 = itemstack.cloneItemStack(); + + for (int i = 0; i < this.getSize(); ++i) { + ItemStack itemstack2 = this.getItem(i); + if (itemstack2.isEmpty()) { + this.setItem(i, itemstack1); + this.update(); + return ItemStack.a; + } + + if (ItemStack.c(itemstack2, itemstack1)) { + int j = Math.min(this.getMaxStackSize(), itemstack2.getMaxStackSize()); + int k = Math.min(itemstack1.getCount(), j - itemstack2.getCount()); + if (k > 0) { + itemstack2.add(k); + itemstack1.subtract(k); + if (itemstack1.isEmpty()) { + this.update(); + return ItemStack.a; + } + } + } + } + + if (itemstack1.getCount() != itemstack.getCount()) { + this.update(); + } + + return itemstack1; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack itemstack = this.items.get(i); + if (itemstack.isEmpty()) { + return ItemStack.a; + } else { + this.items.set(i, ItemStack.a); + return itemstack; + } + } + + @Override + public void setItem(int i, ItemStack itemstack) { + this.items.set(i, itemstack); + if (!itemstack.isEmpty() && itemstack.getCount() > this.getMaxStackSize()) { + itemstack.setCount(this.getMaxStackSize()); + } + + this.update(); + } + + @Override + public int getSize() { + return this.owner.getEnderChest().getSize(); + } + + @Override + public boolean isNotEmpty() { + + for (ItemStack itemstack : this.items) { + if (!itemstack.isEmpty()) { + return false; + } + } + + return true; + } + + @Override + public int getMaxStackSize() { + return 64; + } + + @Override + public boolean a(EntityHuman entityhuman) { + return true; + } + + @Override + public void startOpen(EntityHuman entityhuman) { + } + + @Override + public void closeContainer(EntityHuman entityhuman) { + } + + @Override + public boolean b(int i, ItemStack itemstack) { + return true; + } + + @Override + public void clear() { + this.items.clear(); + } + + @Override + public void a(AutoRecipeStackManager autorecipestackmanager) { + + for (ItemStack itemstack : this.items) { + autorecipestackmanager.b(itemstack); + } + + } + +} diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialPlayerInventory.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialPlayerInventory.java new file mode 100644 index 0000000..5292ce7 --- /dev/null +++ b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialPlayerInventory.java @@ -0,0 +1,759 @@ +/* + * Copyright (C) 2011-2019 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_15_R1; + +import com.google.common.collect.ImmutableList; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import java.util.Iterator; +import java.util.List; +import java.util.function.Predicate; +import java.util.stream.Collectors; +import net.minecraft.server.v1_15_R1.AutoRecipeStackManager; +import net.minecraft.server.v1_15_R1.ChatMessage; +import net.minecraft.server.v1_15_R1.ContainerUtil; +import net.minecraft.server.v1_15_R1.CrashReport; +import net.minecraft.server.v1_15_R1.CrashReportSystemDetails; +import net.minecraft.server.v1_15_R1.EntityHuman; +import net.minecraft.server.v1_15_R1.EntityPlayer; +import net.minecraft.server.v1_15_R1.EnumItemSlot; +import net.minecraft.server.v1_15_R1.IBlockData; +import net.minecraft.server.v1_15_R1.IChatBaseComponent; +import net.minecraft.server.v1_15_R1.Item; +import net.minecraft.server.v1_15_R1.ItemArmor; +import net.minecraft.server.v1_15_R1.ItemStack; +import net.minecraft.server.v1_15_R1.NBTTagCompound; +import net.minecraft.server.v1_15_R1.NBTTagList; +import net.minecraft.server.v1_15_R1.NonNullList; +import net.minecraft.server.v1_15_R1.PacketPlayOutSetSlot; +import net.minecraft.server.v1_15_R1.PlayerInventory; +import net.minecraft.server.v1_15_R1.ReportedException; +import net.minecraft.server.v1_15_R1.World; +import org.bukkit.Location; +import org.bukkit.craftbukkit.v1_15_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryHolder; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final CraftInventory inventory; + private boolean playerOnline; + private EntityHuman player; + private NonNullList items, armor, extraSlots; + private List> f; + + public SpecialPlayerInventory(final Player bukkitPlayer, final Boolean online) { + super(PlayerDataManager.getHandle(bukkitPlayer)); + this.inventory = new CraftInventory(this); + this.playerOnline = online; + this.player = super.player; + this.items = this.player.inventory.items; + this.armor = this.player.inventory.armor; + this.extraSlots = this.player.inventory.extraSlots; + this.f = ImmutableList.of(this.items, this.armor, this.extraSlots); + } + + @Override + public void setPlayerOnline(@NotNull final Player player) { + if (!this.playerOnline) { + EntityPlayer entityPlayer = PlayerDataManager.getHandle(player); + entityPlayer.inventory.transaction.addAll(this.transaction); + this.player = entityPlayer; + for (int i = 0; i < getSize(); ++i) { + this.player.inventory.setItem(i, getRawItem(i)); + } + this.player.inventory.itemInHandIndex = this.itemInHandIndex; + this.items = this.player.inventory.items; + this.armor = this.player.inventory.armor; + this.extraSlots = this.player.inventory.extraSlots; + this.f = ImmutableList.of(this.items, this.armor, this.extraSlots); + this.playerOnline = true; + } + } + + @Override + public boolean a(final EntityHuman entityhuman) { + return true; + } + + @Override + public @NotNull CraftInventory getBukkitInventory() { + return this.inventory; + } + + @Override + public ItemStack getItem(int i) { + List list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + return list.get(i); + } + + private ItemStack getRawItem(int i) { + NonNullList list = null; + for (NonNullList next : this.f) { + if (i < next.size()) { + list = next; + break; + } + i -= next.size(); + } + + return list == null ? ItemStack.a : list.get(i); + } + + @Override + public IChatBaseComponent getDisplayName() { + return new ChatMessage(this.player.getName()); + } + + @Override + public boolean hasCustomName() { + return false; + } + + private int getReversedArmorSlotNum(final int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + private int getReversedItemSlotNum(final int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + @Override + public int getSize() { + return 45; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public void setItem(int i, final ItemStack itemstack) { + List list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + this.player.drop(itemstack, true); + return; + } + + list.set(i, itemstack); + } + + @Override + public void setPlayerOffline() { + this.playerOnline = false; + } + + @Override + public ItemStack splitStack(int i, final int j) { + List list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + return list.get(i).isEmpty() ? ItemStack.a : ContainerUtil.a(list, i, j); + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + List list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.a; + } + + if (!list.get(i).isEmpty()) { + ItemStack itemstack = list.get(i); + + list.set(i, ItemStack.a); + return itemstack; + } + + return ItemStack.a; + } + + @Override + public List getContents() { + return this.f.stream().flatMap(List::stream).collect(Collectors.toList()); + } + + @Override + public List getArmorContents() { + return this.armor; + } + + @Override + public void onOpen(CraftHumanEntity who) { + this.transaction.add(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + this.transaction.remove(who); + } + + @Override + public List getViewers() { + return this.transaction; + } + + @Override + public InventoryHolder getOwner() { + return this.player.getBukkitEntity(); + } + + @Override + public Location getLocation() { + return this.player.getBukkitEntity().getLocation(); + } + + @Override + public ItemStack getItemInHand() { + return d(this.itemInHandIndex) ? this.items.get(this.itemInHandIndex) : ItemStack.a; + } + + private boolean a(ItemStack itemstack, ItemStack itemstack1) { + return !itemstack.isEmpty() && this.b(itemstack, itemstack1) && itemstack.isStackable() && itemstack.getCount() < itemstack.getMaxStackSize() && itemstack.getCount() < this.getMaxStackSize(); + } + + private boolean b(ItemStack itemstack, ItemStack itemstack1) { + return itemstack.getItem() == itemstack1.getItem() && ItemStack.equals(itemstack, itemstack1); + } + + @Override + public int canHold(ItemStack itemstack) { + int remains = itemstack.getCount(); + + for (int i = 0; i < this.items.size(); ++i) { + ItemStack itemstack1 = this.getItem(i); + if (itemstack1.isEmpty()) { + return itemstack.getCount(); + } + + if (!this.a(itemstack, itemstack1)) { + remains -= (itemstack1.getMaxStackSize() < this.getMaxStackSize() ? itemstack1.getMaxStackSize() : this.getMaxStackSize()) - itemstack1.getCount(); + } + + if (remains <= 0) { + return itemstack.getCount(); + } + } + + return itemstack.getCount() - remains; + } + + @Override + public int getFirstEmptySlotIndex() { + for (int i = 0; i < this.items.size(); ++i) { + if (this.items.get(i).isEmpty()) { + return i; + } + } + + return -1; + } + + @Override + public void c(int i) { + this.itemInHandIndex = this.i(); + ItemStack itemstack = this.items.get(this.itemInHandIndex); + this.items.set(this.itemInHandIndex, this.items.get(i)); + this.items.set(i, itemstack); + } + + @Override + public int c(ItemStack itemstack) { + for (int i = 0; i < this.items.size(); ++i) { + ItemStack itemstack1 = this.items.get(i); + if (!this.items.get(i).isEmpty() && this.b(itemstack, this.items.get(i)) && !this.items.get(i).f() && !itemstack1.hasEnchantments() && !itemstack1.hasName()) { + return i; + } + } + + return -1; + } + + @Override + public int i() { + int i; + int j; + for (j = 0; j < 9; ++j) { + i = (this.itemInHandIndex + j) % 9; + if (this.items.get(i).isEmpty()) { + return i; + } + } + + for (j = 0; j < 9; ++j) { + i = (this.itemInHandIndex + j) % 9; + if (!this.items.get(i).hasEnchantments()) { + return i; + } + } + + return this.itemInHandIndex; + } + + @Override + public int a(Predicate predicate, int i) { + int j = 0; + + int k; + for (k = 0; k < this.getSize(); ++k) { + ItemStack itemstack = this.getItem(k); + if (!itemstack.isEmpty() && predicate.test(itemstack)) { + int l = i <= 0 ? itemstack.getCount() : Math.min(i - j, itemstack.getCount()); + j += l; + if (i != 0) { + itemstack.subtract(l); + if (itemstack.isEmpty()) { + this.setItem(k, ItemStack.a); + } + + if (i > 0 && j >= i) { + return j; + } + } + } + } + + if (!this.getCarried().isEmpty() && predicate.test(this.getCarried())) { + k = i <= 0 ? this.getCarried().getCount() : Math.min(i - j, this.getCarried().getCount()); + j += k; + if (i != 0) { + this.getCarried().subtract(k); + if (this.getCarried().isEmpty()) { + this.setCarried(ItemStack.a); + } + + if (i > 0 && j >= i) { + return j; + } + } + } + + return j; + } + + private int i(ItemStack itemstack) { + int i = this.firstPartial(itemstack); + if (i == -1) { + i = this.getFirstEmptySlotIndex(); + } + + return i == -1 ? itemstack.getCount() : this.d(i, itemstack); + } + + private int d(int i, ItemStack itemstack) { + Item item = itemstack.getItem(); + int j = itemstack.getCount(); + ItemStack itemstack1 = this.getItem(i); + if (itemstack1.isEmpty()) { + itemstack1 = new ItemStack(item, 0); + if (itemstack.hasTag()) { + itemstack1.setTag(itemstack.getTag().clone()); + } + + this.setItem(i, itemstack1); + } + + int k = j; + if (j > itemstack1.getMaxStackSize() - itemstack1.getCount()) { + k = itemstack1.getMaxStackSize() - itemstack1.getCount(); + } + + if (k > this.getMaxStackSize() - itemstack1.getCount()) { + k = this.getMaxStackSize() - itemstack1.getCount(); + } + + if (k == 0) { + return j; + } else { + j -= k; + itemstack1.add(k); + itemstack1.d(5); + return j; + } + } + + @Override + public int firstPartial(ItemStack itemstack) { + if (this.a(this.getItem(this.itemInHandIndex), itemstack)) { + return this.itemInHandIndex; + } else if (this.a(this.getItem(40), itemstack)) { + return 40; + } else { + for (int i = 0; i < this.items.size(); ++i) { + if (this.a(this.items.get(i), itemstack)) { + return i; + } + } + + return -1; + } + } + + @Override + public void j() { + + for (List itemStacks : this.f) { + for (int i = 0; i < itemStacks.size(); ++i) { + if (!itemStacks.get(i).isEmpty()) { + itemStacks.get(i).a(this.player.world, this.player, i, this.itemInHandIndex == i); + } + } + } + + } + + @Override + public boolean pickup(ItemStack itemstack) { + return this.c(-1, itemstack); + } + + @Override + public boolean c(int i, ItemStack itemstack) { + if (itemstack.isEmpty()) { + return false; + } else { + try { + if (itemstack.f()) { + if (i == -1) { + i = this.getFirstEmptySlotIndex(); + } + + if (i >= 0) { + this.items.set(i, itemstack.cloneItemStack()); + this.items.get(i).d(5); + itemstack.setCount(0); + return true; + } else if (this.player.abilities.canInstantlyBuild) { + itemstack.setCount(0); + return true; + } else { + return false; + } + } else { + int j; + do { + j = itemstack.getCount(); + if (i == -1) { + itemstack.setCount(this.i(itemstack)); + } else { + itemstack.setCount(this.d(i, itemstack)); + } + } while(!itemstack.isEmpty() && itemstack.getCount() < j); + + if (itemstack.getCount() == j && this.player.abilities.canInstantlyBuild) { + itemstack.setCount(0); + return true; + } else { + return itemstack.getCount() < j; + } + } + } catch (Throwable var6) { + CrashReport crashreport = CrashReport.a(var6, "Adding item to inventory"); + CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Item being added"); + crashreportsystemdetails.a("Item ID", Item.getId(itemstack.getItem())); + crashreportsystemdetails.a("Item data", itemstack.getDamage()); + crashreportsystemdetails.a("Item name", () -> itemstack.getName().getString()); + throw new ReportedException(crashreport); + } + } + } + + @Override + public void a(World world, ItemStack itemstack) { + if (!world.isClientSide) { + while(!itemstack.isEmpty()) { + int i = this.firstPartial(itemstack); + if (i == -1) { + i = this.getFirstEmptySlotIndex(); + } + + if (i == -1) { + this.player.drop(itemstack, false); + break; + } + + int j = itemstack.getMaxStackSize() - this.getItem(i).getCount(); + if (this.c(i, itemstack.cloneAndSubtract(j))) { + ((EntityPlayer)this.player).playerConnection.sendPacket(new PacketPlayOutSetSlot(-2, i, this.getItem(i))); + } + } + } + + } + + @Override + public void f(ItemStack itemstack) { + + for (List list : this.f) { + for (int i = 0; i < list.size(); ++i) { + if (list.get(i) == itemstack) { + list.set(i, ItemStack.a); + break; + } + } + } + } + + @Override + public float a(IBlockData iblockdata) { + return this.items.get(this.itemInHandIndex).a(iblockdata); + } + + @Override + public NBTTagList a(NBTTagList nbttaglist) { + NBTTagCompound nbttagcompound; + int i; + for (i = 0; i < this.items.size(); ++i) { + if (!this.items.get(i).isEmpty()) { + nbttagcompound = new NBTTagCompound(); + nbttagcompound.setByte("Slot", (byte) i); + this.items.get(i).save(nbttagcompound); + nbttaglist.add(nbttagcompound); + } + } + + for (i = 0; i < this.armor.size(); ++i) { + if (!this.armor.get(i).isEmpty()) { + nbttagcompound = new NBTTagCompound(); + nbttagcompound.setByte("Slot", (byte) (i + 100)); + this.armor.get(i).save(nbttagcompound); + nbttaglist.add(nbttagcompound); + } + } + + for (i = 0; i < this.extraSlots.size(); ++i) { + if (!this.extraSlots.get(i).isEmpty()) { + nbttagcompound = new NBTTagCompound(); + nbttagcompound.setByte("Slot", (byte) (i + 150)); + this.extraSlots.get(i).save(nbttagcompound); + nbttaglist.add(nbttagcompound); + } + } + + return nbttaglist; + } + + @Override + public void b(NBTTagList nbttaglist) { + this.items.clear(); + this.armor.clear(); + this.extraSlots.clear(); + + for(int i = 0; i < nbttaglist.size(); ++i) { + NBTTagCompound nbttagcompound = nbttaglist.getCompound(i); + int j = nbttagcompound.getByte("Slot") & 255; + ItemStack itemstack = ItemStack.a(nbttagcompound); + if (!itemstack.isEmpty()) { + if (j < this.items.size()) { + this.items.set(j, itemstack); + } else if (j >= 100 && j < this.armor.size() + 100) { + this.armor.set(j - 100, itemstack); + } else if (j >= 150 && j < this.extraSlots.size() + 150) { + this.extraSlots.set(j - 150, itemstack); + } + } + } + + } + + @Override + public boolean isNotEmpty() { + Iterator iterator = this.items.iterator(); + + ItemStack itemstack; + while (iterator.hasNext()) { + itemstack = (ItemStack)iterator.next(); + if (!itemstack.isEmpty()) { + return false; + } + } + + iterator = this.armor.iterator(); + + while (iterator.hasNext()) { + itemstack = (ItemStack)iterator.next(); + if (!itemstack.isEmpty()) { + return false; + } + } + + iterator = this.extraSlots.iterator(); + + while (iterator.hasNext()) { + itemstack = (ItemStack)iterator.next(); + if (!itemstack.isEmpty()) { + return false; + } + } + + return true; + } + + @Nullable + @Override + public IChatBaseComponent getCustomName() { + return null; + } + + @Override + public boolean b(IBlockData iblockdata) { + return this.getItem(this.itemInHandIndex).canDestroySpecialBlock(iblockdata); + } + + @Override + public void a(float f) { + if (f > 0.0F) { + f /= 4.0F; + if (f < 1.0F) { + f = 1.0F; + } + + for (int i = 0; i < this.armor.size(); ++i) { + ItemStack itemstack = this.armor.get(0); + int index = i; + if (itemstack.getItem() instanceof ItemArmor) { + itemstack.damage((int) f, this.player, (entityhuman) -> entityhuman.c(EnumItemSlot.a(EnumItemSlot.Function.ARMOR, index))); + } + } + } + } + + @Override + public void dropContents() { + for (List itemStacks : this.f) { + for (int i = 0; i < itemStacks.size(); ++i) { + ItemStack itemstack = itemStacks.get(i); + if (!itemstack.isEmpty()) { + itemStacks.set(i, ItemStack.a); + this.player.a(itemstack, true, false); + } + } + } + } + + @Override + public boolean h(ItemStack itemstack) { + return this.f.stream().flatMap(List::stream).anyMatch(itemStack1 -> !itemStack1.isEmpty() && itemStack1.doMaterialsMatch(itemstack)); + } + + @Override + public void a(PlayerInventory playerinventory) { + for (int i = 0; i < playerinventory.getSize(); ++i) { + this.setItem(i, playerinventory.getItem(i)); + } + + this.itemInHandIndex = playerinventory.itemInHandIndex; + } + + @Override + public void clear() { + this.f.forEach(List::clear); + } + + @Override + public void a(AutoRecipeStackManager autorecipestackmanager) { + for (ItemStack itemstack : this.items) { + autorecipestackmanager.a(itemstack); + } + } + +} -- 2.49.1 From e7dc52bee4b528783d5dce7d12d5f5c8c252d5cc Mon Sep 17 00:00:00 2001 From: Jikoo Date: Thu, 12 Dec 2019 14:21:33 -0500 Subject: [PATCH 192/253] Drop support for 1.13, latest 2 versions only. --- internal/pom.xml | 1 - internal/v1_13_R2/pom.xml | 74 -- .../internal/v1_13_R2/AnySilentContainer.java | 311 -------- .../internal/v1_13_R2/PlayerDataManager.java | 85 -- .../internal/v1_13_R2/SpecialEnderChest.java | 266 ------- .../v1_13_R2/SpecialPlayerInventory.java | 736 ------------------ 6 files changed, 1473 deletions(-) delete mode 100644 internal/v1_13_R2/pom.xml delete mode 100644 internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/AnySilentContainer.java delete mode 100644 internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/PlayerDataManager.java delete mode 100644 internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java delete mode 100644 internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java diff --git a/internal/pom.xml b/internal/pom.xml index fa36d4c..5509e52 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -34,7 +34,6 @@ all v1_8_R3 - v1_13_R2 v1_14_R1 v1_15_R1 diff --git a/internal/v1_13_R2/pom.xml b/internal/v1_13_R2/pom.xml deleted file mode 100644 index e84efbd..0000000 --- a/internal/v1_13_R2/pom.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.0.8-SNAPSHOT - - - openinvadapter1_13_R2 - OpenInvAdapter1_13_R2 - - - - org.spigotmc - spigot - 1.13.2-R0.1-SNAPSHOT - provided - - - com.lishid - openinvcommon - 4.0.8-SNAPSHOT - - - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.0.0 - - true - - - - package - - shade - - - - - - - maven-compiler-plugin - 3.8.1 - - 1.8 - 1.8 - - - - - - diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/AnySilentContainer.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/AnySilentContainer.java deleted file mode 100644 index 4b32bc9..0000000 --- a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/AnySilentContainer.java +++ /dev/null @@ -1,311 +0,0 @@ -/* - * Copyright (C) 2011-2019 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_13_R2; - -import com.lishid.openinv.internal.IAnySilentContainer; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import net.minecraft.server.v1_13_R2.AxisAlignedBB; -import net.minecraft.server.v1_13_R2.Block; -import net.minecraft.server.v1_13_R2.BlockChest; -import net.minecraft.server.v1_13_R2.BlockChestTrapped; -import net.minecraft.server.v1_13_R2.BlockEnderChest; -import net.minecraft.server.v1_13_R2.BlockPosition; -import net.minecraft.server.v1_13_R2.BlockPropertyChestType; -import net.minecraft.server.v1_13_R2.BlockShulkerBox; -import net.minecraft.server.v1_13_R2.ChatMessage; -import net.minecraft.server.v1_13_R2.Entity; -import net.minecraft.server.v1_13_R2.EntityOcelot; -import net.minecraft.server.v1_13_R2.EntityPlayer; -import net.minecraft.server.v1_13_R2.EnumDirection; -import net.minecraft.server.v1_13_R2.EnumGamemode; -import net.minecraft.server.v1_13_R2.IBlockData; -import net.minecraft.server.v1_13_R2.ITileInventory; -import net.minecraft.server.v1_13_R2.InventoryEnderChest; -import net.minecraft.server.v1_13_R2.InventoryLargeChest; -import net.minecraft.server.v1_13_R2.PlayerInteractManager; -import net.minecraft.server.v1_13_R2.TileEntity; -import net.minecraft.server.v1_13_R2.TileEntityChest; -import net.minecraft.server.v1_13_R2.TileEntityEnderChest; -import net.minecraft.server.v1_13_R2.TileEntityShulkerBox; -import net.minecraft.server.v1_13_R2.VoxelShape; -import net.minecraft.server.v1_13_R2.VoxelShapes; -import net.minecraft.server.v1_13_R2.World; -import org.bukkit.Material; -import org.bukkit.Statistic; -import org.bukkit.block.BlockState; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - private Field playerInteractManagerGamemode; - - public AnySilentContainer() { - try { - this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); - this.playerInteractManagerGamemode.setAccessible(true); - } catch (NoSuchFieldException | SecurityException e) { - System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); - e.printStackTrace(); - } - } - - @Override - public boolean isAnySilentContainer(@NotNull final org.bukkit.block.Block bukkitBlock) { - if (bukkitBlock.getType() == Material.ENDER_CHEST) { - return true; - } - BlockState state = bukkitBlock.getState(); - return state instanceof org.bukkit.block.Chest - || state instanceof org.bukkit.block.ShulkerBox; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull final Player bukkitPlayer, @NotNull final org.bukkit.block.Block bukkitBlock) { - - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - IBlockData blockData = world.getType(blockPosition); - Block block = blockData.getBlock(); - - if (block instanceof BlockShulkerBox) { - return this.isBlockedShulkerBox(world, blockPosition, blockData); - } - - if (block instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.getType(blockPosition.up()).isOccluding(); - } - - // Check if chest is blocked or has an ocelot on top - if (this.isBlockedChest(world, blockPosition)) { - return true; - } - - // Check for matching adjacent chests that are blocked or have an ocelot on top - BlockPropertyChestType chestType = blockData.get(BlockChest.b); - - if (chestType == BlockPropertyChestType.SINGLE) { - return false; - } - - BlockPosition adjacentBlockPosition = blockPosition.shift(BlockChest.k(blockData)); - IBlockData adjacentBlockData = world.getType(adjacentBlockPosition); - - if (adjacentBlockData.getBlock() == block) { - - BlockPropertyChestType adjacentChestType = adjacentBlockData.get(BlockChest.b); - - if (adjacentChestType != BlockPropertyChestType.SINGLE && chestType != adjacentChestType - && adjacentBlockData.get(BlockChest.FACING) == blockData.get(BlockChest.FACING)) { - - return this.isBlockedChest(world, adjacentBlockPosition); - } - } - - return false; - } - - private boolean isBlockedShulkerBox(final World world, final BlockPosition blockPosition, - final IBlockData blockData) { - // For reference, look at net.minecraft.server.BlockShulkerBox - TileEntity tile = world.getTileEntity(blockPosition); - - if (!(tile instanceof TileEntityShulkerBox)) { - return false; - } - - EnumDirection enumDirection = blockData.get(BlockShulkerBox.a); - if (((TileEntityShulkerBox) tile).r() == TileEntityShulkerBox.AnimationPhase.CLOSED) { - AxisAlignedBB axisAlignedBB; - try { - Method method = VoxelShape.class.getMethod("a"); - axisAlignedBB = (AxisAlignedBB) method.invoke(VoxelShapes.b()); - } catch (NoSuchMethodException e) { - axisAlignedBB = VoxelShapes.b().getBoundingBox(); - } catch (InvocationTargetException | IllegalAccessException e) { - return false; - } - axisAlignedBB = axisAlignedBB - .b(0.5F * enumDirection.getAdjacentX(), 0.5F * enumDirection.getAdjacentY(), 0.5F * enumDirection.getAdjacentZ()) - .a(enumDirection.getAdjacentX(), enumDirection.getAdjacentY(), enumDirection.getAdjacentZ()); - return !world.getCubes(null, axisAlignedBB.a(blockPosition.shift(enumDirection))); - } - - return false; - } - - private boolean isBlockedChest(final World world, final BlockPosition blockPosition) { - // For reference, loot at net.minecraft.server.BlockChest - return world.getType(blockPosition.up()).isOccluding() || this.hasOcelotOnTop(world, blockPosition); - } - - private boolean hasOcelotOnTop(final World world, final BlockPosition blockPosition) { - for (Entity entity : world.a(EntityOcelot.class, - new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, - blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, - blockPosition.getZ() + 1))) { - EntityOcelot entityOcelot = (EntityOcelot) entity; - if (entityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull final Player bukkitPlayer, final boolean silent, - @NotNull final org.bukkit.block.Block bukkitBlock) { - - // Silent ender chest is API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); - return true; - } - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - final World world = player.world; - final BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - final Object tile = world.getTileEntity(blockPosition); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); - return true; - } - - if (!(tile instanceof ITileInventory)) { - return false; - } - - ITileInventory tileInventory = (ITileInventory) tile; - IBlockData blockData = world.getType(blockPosition); - Block block = blockData.getBlock(); - - if (block instanceof BlockChest) { - - BlockPropertyChestType chestType = blockData.get(BlockChest.b); - - if (chestType != BlockPropertyChestType.SINGLE) { - - BlockPosition adjacentBlockPosition = blockPosition.shift(BlockChest.k(blockData)); - IBlockData adjacentBlockData = world.getType(adjacentBlockPosition); - - if (adjacentBlockData.getBlock() == block) { - - BlockPropertyChestType adjacentChestType = adjacentBlockData.get(BlockChest.b); - - if (adjacentChestType != BlockPropertyChestType.SINGLE && chestType != adjacentChestType - && adjacentBlockData.get(BlockChest.FACING) == blockData.get(BlockChest.FACING)) { - - TileEntity adjacentTile = world.getTileEntity(adjacentBlockPosition); - - if (adjacentTile instanceof TileEntityChest) { - ITileInventory rightChest = chestType == BlockPropertyChestType.RIGHT ? tileInventory : (ITileInventory) adjacentTile; - ITileInventory leftChest = chestType == BlockPropertyChestType.RIGHT ? (ITileInventory) adjacentTile : tileInventory; - tileInventory = new InventoryLargeChest(new ChatMessage("container.chestDouble"), rightChest, leftChest); - } - } - } - } - - if (block instanceof BlockChestTrapped) { - bukkitPlayer.incrementStatistic(Statistic.TRAPPED_CHEST_TRIGGERED); - } else { - bukkitPlayer.incrementStatistic(Statistic.CHEST_OPENED); - } - } - - if (block instanceof BlockShulkerBox) { - bukkitPlayer.incrementStatistic(Statistic.SHULKER_BOX_OPENED); - } - - // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silent || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { - player.openContainer(tileInventory); - return true; - } - - // SilentChest requires access to setting players' gamemode directly. - if (this.playerInteractManagerGamemode == null) { - return false; - } - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.openContainer(tileInventory); - this.forceGameMode(player, gamemode); - return true; - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) { - if (this.playerInteractManagerGamemode == null) { - return; - } - - InventoryView view = bukkitPlayer.getOpenInventory(); - switch (view.getType()) { - case CHEST: - case ENDER_CHEST: - case SHULKER_BOX: - break; - default: - return; - } - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.activeContainer.b(player); - player.activeContainer.a(player, false); - player.activeContainer.transferTo(player.defaultContainer, player.getBukkitEntity()); - player.activeContainer = player.defaultContainer; - this.forceGameMode(player, gamemode); - } - - private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { - if (this.playerInteractManagerGamemode == null) { - // No need to warn repeatedly, error on startup and lack of function should be enough. - return; - } - try { - if (!this.playerInteractManagerGamemode.isAccessible()) { - // Just in case, ensure accessible. - this.playerInteractManagerGamemode.setAccessible(true); - } - this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); - } catch (IllegalArgumentException | IllegalAccessException e) { - e.printStackTrace(); - } - } - -} diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/PlayerDataManager.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/PlayerDataManager.java deleted file mode 100644 index 1a3a311..0000000 --- a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/PlayerDataManager.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (C) 2011-2019 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_13_R2; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import com.mojang.authlib.GameProfile; -import net.minecraft.server.v1_13_R2.DimensionManager; -import net.minecraft.server.v1_13_R2.EntityPlayer; -import net.minecraft.server.v1_13_R2.MinecraftServer; -import net.minecraft.server.v1_13_R2.PlayerInteractManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_13_R2.CraftServer; -import org.bukkit.craftbukkit.v1_13_R2.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class PlayerDataManager implements IPlayerDataManager { - - public static EntityPlayer getHandle(final Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override - public Player loadPlayer(@NotNull final OfflinePlayer offline) { - // Ensure player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - // Create a profile and entity to load the player data - GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(DimensionManager.OVERWORLD), profile, - new PlayerInteractManager(server.getWorldServer(DimensionManager.OVERWORLD))); - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - -} diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java deleted file mode 100644 index 944936c..0000000 --- a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialEnderChest.java +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright (C) 2011-2019 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_13_R2; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.util.List; -import javax.annotation.Nullable; -import net.minecraft.server.v1_13_R2.AutoRecipeOutput; -import net.minecraft.server.v1_13_R2.AutoRecipeStackManager; -import net.minecraft.server.v1_13_R2.ContainerUtil; -import net.minecraft.server.v1_13_R2.EntityHuman; -import net.minecraft.server.v1_13_R2.EntityPlayer; -import net.minecraft.server.v1_13_R2.IChatBaseComponent; -import net.minecraft.server.v1_13_R2.IInventory; -import net.minecraft.server.v1_13_R2.IInventoryListener; -import net.minecraft.server.v1_13_R2.InventoryEnderChest; -import net.minecraft.server.v1_13_R2.ItemStack; -import net.minecraft.server.v1_13_R2.NonNullList; -import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_13_R2.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest implements IInventory, ISpecialEnderChest, AutoRecipeOutput { - - private EntityPlayer owner; - private final IChatBaseComponent displayName; - private final CraftInventory inventory; - private NonNullList items; - private boolean playerOnline; - - public SpecialEnderChest(final Player player, final Boolean online) { - this.owner = PlayerDataManager.getHandle(player); - this.displayName = this.owner.getEnderChest().getDisplayName(); - this.inventory = new CraftInventory(this); - this.items = this.owner.getEnderChest().items; - this.playerOnline = online; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return this.inventory; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public void setPlayerOffline() { - this.playerOnline = false; - } - - @Override - public void setPlayerOnline(@NotNull final Player player) { - if (!this.playerOnline) { - try { - this.owner = PlayerDataManager.getHandle(player); - InventoryEnderChest enderChest = owner.getEnderChest(); - for (int i = 0; i < enderChest.getSize(); ++i) { - enderChest.setItem(i, this.items.get(i)); - } - this.items = enderChest.items; - } catch (Exception ignored) {} - this.playerOnline = true; - } - } - - @Override - public void update() { - this.owner.getEnderChest().update(); - } - - public List getContents() { - return this.items; - } - - public void onOpen(CraftHumanEntity who) { - this.owner.getEnderChest().onOpen(who); - } - - public void onClose(CraftHumanEntity who) { - this.owner.getEnderChest().onClose(who); - } - - public List getViewers() { - return this.owner.getEnderChest().getViewers(); - } - - public void setMaxStackSize(int i) { - this.owner.getEnderChest().setMaxStackSize(i); - } - - public InventoryHolder getOwner() { - return this.owner.getEnderChest().getOwner(); - } - - public Location getLocation() { - return null; - } - - public void a(IInventoryListener iinventorylistener) { - this.owner.getEnderChest().a(iinventorylistener); - } - - public void b(IInventoryListener iinventorylistener) { - this.owner.getEnderChest().b(iinventorylistener); - } - - public ItemStack getItem(int i) { - return i >= 0 && i < this.items.size() ? this.items.get(i) : ItemStack.a; - } - - public ItemStack splitStack(int i, int j) { - ItemStack itemstack = ContainerUtil.a(this.items, i, j); - if (!itemstack.isEmpty()) { - this.update(); - } - - return itemstack; - } - - public ItemStack a(ItemStack itemstack) { - ItemStack itemstack1 = itemstack.cloneItemStack(); - - for (int i = 0; i < this.getSize(); ++i) { - ItemStack itemstack2 = this.getItem(i); - if (itemstack2.isEmpty()) { - this.setItem(i, itemstack1); - this.update(); - return ItemStack.a; - } - - if (ItemStack.c(itemstack2, itemstack1)) { - int j = Math.min(this.getMaxStackSize(), itemstack2.getMaxStackSize()); - int k = Math.min(itemstack1.getCount(), j - itemstack2.getCount()); - if (k > 0) { - itemstack2.add(k); - itemstack1.subtract(k); - if (itemstack1.isEmpty()) { - this.update(); - return ItemStack.a; - } - } - } - } - - if (itemstack1.getCount() != itemstack.getCount()) { - this.update(); - } - - return itemstack1; - } - - public ItemStack splitWithoutUpdate(int i) { - ItemStack itemstack = this.items.get(i); - if (itemstack.isEmpty()) { - return ItemStack.a; - } else { - this.items.set(i, ItemStack.a); - return itemstack; - } - } - - public void setItem(int i, ItemStack itemstack) { - this.items.set(i, itemstack); - if (!itemstack.isEmpty() && itemstack.getCount() > this.getMaxStackSize()) { - itemstack.setCount(this.getMaxStackSize()); - } - - this.update(); - } - - public int getSize() { - return this.owner.getEnderChest().getSize(); - } - - public boolean P_() { - - for (ItemStack itemstack : this.items) { - if (!itemstack.isEmpty()) { - return false; - } - } - - return true; - } - - public IChatBaseComponent getDisplayName() { - return this.displayName; - } - - @Nullable - public IChatBaseComponent getCustomName() { - return this.displayName; - } - - public boolean hasCustomName() { - return false; - } - - public void a(@Nullable IChatBaseComponent ichatbasecomponent) { - // Ignored - name is always player's name. - } - - public int getMaxStackSize() { - return 64; - } - - public boolean a(EntityHuman entityhuman) { - return true; - } - - public void startOpen(EntityHuman entityhuman) { - } - - public void closeContainer(EntityHuman entityhuman) { - } - - public boolean b(int i, ItemStack itemstack) { - return true; - } - - public int getProperty(int i) { - return 0; - } - - public void setProperty(int i, int j) { - } - - public int h() { - return 0; - } - - public void clear() { - this.items.clear(); - } - - public void a(AutoRecipeStackManager autorecipestackmanager) { - - for (ItemStack itemstack : this.items) { - autorecipestackmanager.b(itemstack); - } - - } - -} diff --git a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java b/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java deleted file mode 100644 index a36da79..0000000 --- a/internal/v1_13_R2/src/main/java/com/lishid/openinv/internal/v1_13_R2/SpecialPlayerInventory.java +++ /dev/null @@ -1,736 +0,0 @@ -/* - * Copyright (C) 2011-2019 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_13_R2; - -import com.google.common.collect.ImmutableList; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.function.Predicate; -import javax.annotation.Nullable; -import net.minecraft.server.v1_13_R2.AutoRecipeStackManager; -import net.minecraft.server.v1_13_R2.ChatMessage; -import net.minecraft.server.v1_13_R2.ContainerUtil; -import net.minecraft.server.v1_13_R2.CrashReport; -import net.minecraft.server.v1_13_R2.CrashReportSystemDetails; -import net.minecraft.server.v1_13_R2.EntityHuman; -import net.minecraft.server.v1_13_R2.EntityPlayer; -import net.minecraft.server.v1_13_R2.IBlockData; -import net.minecraft.server.v1_13_R2.IChatBaseComponent; -import net.minecraft.server.v1_13_R2.Item; -import net.minecraft.server.v1_13_R2.ItemArmor; -import net.minecraft.server.v1_13_R2.ItemStack; -import net.minecraft.server.v1_13_R2.NBTTagCompound; -import net.minecraft.server.v1_13_R2.NBTTagList; -import net.minecraft.server.v1_13_R2.NonNullList; -import net.minecraft.server.v1_13_R2.PacketPlayOutSetSlot; -import net.minecraft.server.v1_13_R2.PlayerInventory; -import net.minecraft.server.v1_13_R2.ReportedException; -import net.minecraft.server.v1_13_R2.World; -import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_13_R2.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - private NonNullList items, armor, extraSlots; - private List> f; - - public SpecialPlayerInventory(final Player bukkitPlayer, final Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - this.items = this.player.inventory.items; - this.armor = this.player.inventory.armor; - this.extraSlots = this.player.inventory.extraSlots; - this.f = ImmutableList.of(this.items, this.armor, this.extraSlots); - } - - @Override - public void setPlayerOnline(@NotNull final Player player) { - if (!this.playerOnline) { - EntityPlayer entityPlayer = PlayerDataManager.getHandle(player); - entityPlayer.inventory.transaction.addAll(this.transaction); - this.player = entityPlayer; - for (int i = 0; i < getSize(); ++i) { - this.player.inventory.setItem(i, getRawItem(i)); - } - this.player.inventory.itemInHandIndex = this.itemInHandIndex; - this.items = this.player.inventory.items; - this.armor = this.player.inventory.armor; - this.extraSlots = this.player.inventory.extraSlots; - this.f = ImmutableList.of(this.items, this.armor, this.extraSlots); - this.playerOnline = true; - } - } - - @Override - public boolean a(final EntityHuman entityhuman) { - return true; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public ItemStack getItem(int i) { - List list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - return ItemStack.a; - } - - return list.get(i); - } - - private ItemStack getRawItem(int i) { - NonNullList list = null; - for (NonNullList next : this.f) { - if (i < next.size()) { - list = next; - break; - } - i -= next.size(); - } - - return list == null ? ItemStack.a : list.get(i); - } - - @Override - public IChatBaseComponent getDisplayName() { - return new ChatMessage(this.player.getName()); - } - - @Override - public boolean hasCustomName() { - return false; - } - - private int getReversedArmorSlotNum(final int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - private int getReversedItemSlotNum(final int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - @Override - public int getSize() { - return super.getSize() + 4; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public void setItem(int i, final ItemStack itemstack) { - List list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - this.player.drop(itemstack, true); - return; - } - - list.set(i, itemstack); - } - - @Override - public void setPlayerOffline() { - this.playerOnline = false; - } - - @Override - public ItemStack splitStack(int i, final int j) { - NonNullList list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - return ItemStack.a; - } - - return list.get(i).isEmpty() ? ItemStack.a : ContainerUtil.a(list, i, j); - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - NonNullList list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - return ItemStack.a; - } - - if (!list.get(i).isEmpty()) { - ItemStack itemstack = list.get(i); - - list.set(i, ItemStack.a); - return itemstack; - } - - return ItemStack.a; - } - - public List getContents() { - List combined = new ArrayList<>(this.items.size() + this.armor.size() + this.extraSlots.size()); - - for (List sub : this.f) { - combined.addAll(sub); - } - - return combined; - } - - public List getArmorContents() { - return this.armor; - } - - public void onOpen(CraftHumanEntity who) { - this.transaction.add(who); - } - - public void onClose(CraftHumanEntity who) { - this.transaction.remove(who); - } - - public List getViewers() { - return this.transaction; - } - - public InventoryHolder getOwner() { - return this.player.getBukkitEntity(); - } - - public Location getLocation() { - return this.player.getBukkitEntity().getLocation(); - } - - public ItemStack getItemInHand() { - return e(this.itemInHandIndex) ? this.items.get(this.itemInHandIndex) : ItemStack.a; - } - - public static int getHotbarSize() { - return 9; - } - - private boolean a(ItemStack itemstack, ItemStack itemstack1) { - return !itemstack.isEmpty() && this.b(itemstack, itemstack1) && itemstack.isStackable() && itemstack.getCount() < itemstack.getMaxStackSize() && itemstack.getCount() < this.getMaxStackSize(); - } - - private boolean b(ItemStack itemstack, ItemStack itemstack1) { - return itemstack.getItem() == itemstack1.getItem() && ItemStack.equals(itemstack, itemstack1); - } - - public int canHold(ItemStack itemstack) { - int remains = itemstack.getCount(); - - for(int i = 0; i < this.items.size(); ++i) { - ItemStack itemstack1 = this.getItem(i); - if (itemstack1.isEmpty()) { - return itemstack.getCount(); - } - - if (!this.a(itemstack, itemstack1)) { - remains -= (itemstack1.getMaxStackSize() < this.getMaxStackSize() ? itemstack1.getMaxStackSize() : this.getMaxStackSize()) - itemstack1.getCount(); - } - - if (remains <= 0) { - return itemstack.getCount(); - } - } - - return itemstack.getCount() - remains; - } - - public int getFirstEmptySlotIndex() { - for(int i = 0; i < this.items.size(); ++i) { - if (this.items.get(i).isEmpty()) { - return i; - } - } - - return -1; - } - - public void d(int i) { - this.itemInHandIndex = this.l(); - ItemStack itemstack = this.items.get(this.itemInHandIndex); - this.items.set(this.itemInHandIndex, this.items.get(i)); - this.items.set(i, itemstack); - } - - public static boolean e(int i) { - return i >= 0 && i < 9; - } - - public int c(ItemStack itemstack) { - for(int i = 0; i < this.items.size(); ++i) { - ItemStack itemstack1 = this.items.get(i); - if (!this.items.get(i).isEmpty() && this.b(itemstack, this.items.get(i)) && !this.items.get(i).f() && !itemstack1.hasEnchantments() && !itemstack1.hasName()) { - return i; - } - } - - return -1; - } - - public int l() { - int i; - int j; - for(j = 0; j < 9; ++j) { - i = (this.itemInHandIndex + j) % 9; - if (this.items.get(i).isEmpty()) { - return i; - } - } - - for(j = 0; j < 9; ++j) { - i = (this.itemInHandIndex + j) % 9; - if (!this.items.get(i).hasEnchantments()) { - return i; - } - } - - return this.itemInHandIndex; - } - - public int a(Predicate predicate, int i) { - int j = 0; - - int k; - for(k = 0; k < this.getSize(); ++k) { - ItemStack itemstack = this.getItem(k); - if (!itemstack.isEmpty() && predicate.test(itemstack)) { - int l = i <= 0 ? itemstack.getCount() : Math.min(i - j, itemstack.getCount()); - j += l; - if (i != 0) { - itemstack.subtract(l); - if (itemstack.isEmpty()) { - this.setItem(k, ItemStack.a); - } - - if (i > 0 && j >= i) { - return j; - } - } - } - } - - if (!this.getCarried().isEmpty() && predicate.test(this.getCarried())) { - k = i <= 0 ? this.getCarried().getCount() : Math.min(i - j, this.getCarried().getCount()); - j += k; - if (i != 0) { - this.getCarried().subtract(k); - if (this.getCarried().isEmpty()) { - this.setCarried(ItemStack.a); - } - - if (i > 0 && j >= i) { - return j; - } - } - } - - return j; - } - - private int i(ItemStack itemstack) { - int i = this.firstPartial(itemstack); - if (i == -1) { - i = this.getFirstEmptySlotIndex(); - } - - return i == -1 ? itemstack.getCount() : this.d(i, itemstack); - } - - private int d(int i, ItemStack itemstack) { - Item item = itemstack.getItem(); - int j = itemstack.getCount(); - ItemStack itemstack1 = this.getItem(i); - if (itemstack1.isEmpty()) { - itemstack1 = new ItemStack(item, 0); - if (itemstack.hasTag()) { - itemstack1.setTag(itemstack.getTag().clone()); - } - - this.setItem(i, itemstack1); - } - - int k = j; - if (j > itemstack1.getMaxStackSize() - itemstack1.getCount()) { - k = itemstack1.getMaxStackSize() - itemstack1.getCount(); - } - - if (k > this.getMaxStackSize() - itemstack1.getCount()) { - k = this.getMaxStackSize() - itemstack1.getCount(); - } - - if (k == 0) { - return j; - } else { - j -= k; - itemstack1.add(k); - itemstack1.d(5); - return j; - } - } - - public int firstPartial(ItemStack itemstack) { - if (this.a(this.getItem(this.itemInHandIndex), itemstack)) { - return this.itemInHandIndex; - } else if (this.a(this.getItem(40), itemstack)) { - return 40; - } else { - for(int i = 0; i < this.items.size(); ++i) { - if (this.a(this.items.get(i), itemstack)) { - return i; - } - } - - return -1; - } - } - - public void p() { - - for (NonNullList itemStacks : this.f) { - for (int i = 0; i < itemStacks.size(); ++i) { - if (!itemStacks.get(i).isEmpty()) { - itemStacks.get(i).a(this.player.world, this.player, i, this.itemInHandIndex == i); - } - } - } - - } - - public boolean pickup(ItemStack itemstack) { - return this.c(-1, itemstack); - } - - public boolean c(int i, ItemStack itemstack) { - if (itemstack.isEmpty()) { - return false; - } else { - try { - if (itemstack.f()) { - if (i == -1) { - i = this.getFirstEmptySlotIndex(); - } - - if (i >= 0) { - this.items.set(i, itemstack.cloneItemStack()); - this.items.get(i).d(5); - itemstack.setCount(0); - return true; - } else if (this.player.abilities.canInstantlyBuild) { - itemstack.setCount(0); - return true; - } else { - return false; - } - } else { - int j; - do { - j = itemstack.getCount(); - if (i == -1) { - itemstack.setCount(this.i(itemstack)); - } else { - itemstack.setCount(this.d(i, itemstack)); - } - } while(!itemstack.isEmpty() && itemstack.getCount() < j); - - if (itemstack.getCount() == j && this.player.abilities.canInstantlyBuild) { - itemstack.setCount(0); - return true; - } else { - return itemstack.getCount() < j; - } - } - } catch (Throwable var6) { - CrashReport crashreport = CrashReport.a(var6, "Adding item to inventory"); - CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Item being added"); - crashreportsystemdetails.a("Item ID", Item.getId(itemstack.getItem())); - crashreportsystemdetails.a("Item data", itemstack.getDamage()); - crashreportsystemdetails.a("Item name", () -> itemstack.getName().getString()); - throw new ReportedException(crashreport); - } - } - } - - public void a(World world, ItemStack itemstack) { - if (!world.isClientSide) { - while(!itemstack.isEmpty()) { - int i = this.firstPartial(itemstack); - if (i == -1) { - i = this.getFirstEmptySlotIndex(); - } - - if (i == -1) { - this.player.drop(itemstack, false); - break; - } - - int j = itemstack.getMaxStackSize() - this.getItem(i).getCount(); - if (this.c(i, itemstack.cloneAndSubtract(j))) { - ((EntityPlayer)this.player).playerConnection.sendPacket(new PacketPlayOutSetSlot(-2, i, this.getItem(i))); - } - } - } - - } - - public void f(ItemStack itemstack) { - - for (NonNullList nonnulllist : this.f) { - for (int i = 0; i < nonnulllist.size(); ++i) { - if (nonnulllist.get(i) == itemstack) { - nonnulllist.set(i, ItemStack.a); - break; - } - } - } - } - - public float a(IBlockData iblockdata) { - return this.items.get(this.itemInHandIndex).a(iblockdata); - } - - public NBTTagList a(NBTTagList nbttaglist) { - NBTTagCompound nbttagcompound; - int i; - for(i = 0; i < this.items.size(); ++i) { - if (!this.items.get(i).isEmpty()) { - nbttagcompound = new NBTTagCompound(); - nbttagcompound.setByte("Slot", (byte) i); - this.items.get(i).save(nbttagcompound); - nbttaglist.add(nbttagcompound); - } - } - - for(i = 0; i < this.armor.size(); ++i) { - if (!this.armor.get(i).isEmpty()) { - nbttagcompound = new NBTTagCompound(); - nbttagcompound.setByte("Slot", (byte) (i + 100)); - this.armor.get(i).save(nbttagcompound); - nbttaglist.add(nbttagcompound); - } - } - - for(i = 0; i < this.extraSlots.size(); ++i) { - if (!this.extraSlots.get(i).isEmpty()) { - nbttagcompound = new NBTTagCompound(); - nbttagcompound.setByte("Slot", (byte) (i + 150)); - this.extraSlots.get(i).save(nbttagcompound); - nbttaglist.add(nbttagcompound); - } - } - - return nbttaglist; - } - - public void b(NBTTagList nbttaglist) { - this.items.clear(); - this.armor.clear(); - this.extraSlots.clear(); - - for(int i = 0; i < nbttaglist.size(); ++i) { - NBTTagCompound nbttagcompound = nbttaglist.getCompound(i); - int j = nbttagcompound.getByte("Slot") & 255; - ItemStack itemstack = ItemStack.a(nbttagcompound); - if (!itemstack.isEmpty()) { - if (j < this.items.size()) { - this.items.set(j, itemstack); - } else if (j >= 100 && j < this.armor.size() + 100) { - this.armor.set(j - 100, itemstack); - } else if (j >= 150 && j < this.extraSlots.size() + 150) { - this.extraSlots.set(j - 150, itemstack); - } - } - } - - } - - public boolean P_() { - Iterator iterator = this.items.iterator(); - - ItemStack itemstack; - while(iterator.hasNext()) { - itemstack = (ItemStack)iterator.next(); - if (!itemstack.isEmpty()) { - return false; - } - } - - iterator = this.armor.iterator(); - - while(iterator.hasNext()) { - itemstack = (ItemStack)iterator.next(); - if (!itemstack.isEmpty()) { - return false; - } - } - - iterator = this.extraSlots.iterator(); - - while(iterator.hasNext()) { - itemstack = (ItemStack)iterator.next(); - if (!itemstack.isEmpty()) { - return false; - } - } - - return true; - } - - @Nullable - public IChatBaseComponent getCustomName() { - return null; - } - - public boolean b(IBlockData iblockdata) { - return this.getItem(this.itemInHandIndex).b(iblockdata); - } - - public void a(float f) { - if (f > 0.0F) { - f /= 4.0F; - if (f < 1.0F) { - f = 1.0F; - } - - for (ItemStack itemstack : this.armor) { - if (itemstack.getItem() instanceof ItemArmor) { - itemstack.damage((int) f, this.player); - } - } - } - } - - public void dropContents() { - for (NonNullList itemStacks : this.f) { - for (int i = 0; i < itemStacks.size(); ++i) { - ItemStack itemstack = itemStacks.get(i); - if (!itemstack.isEmpty()) { - itemStacks.set(i, ItemStack.a); - this.player.a(itemstack, true, false); - } - } - } - } - - public boolean h(ItemStack itemstack) { - return this.f.stream().flatMap(NonNullList::stream).anyMatch(itemStack1 -> !itemStack1.isEmpty() && itemStack1.doMaterialsMatch(itemstack)); - } - - public void a(PlayerInventory playerinventory) { - for (int i = 0; i < playerinventory.getSize(); ++i) { - this.setItem(i, playerinventory.getItem(i)); - } - - this.itemInHandIndex = playerinventory.itemInHandIndex; - } - - public void clear() { - this.f.forEach(NonNullList::clear); - } - - public void a(AutoRecipeStackManager autorecipestackmanager) { - for (ItemStack itemstack : this.items) { - autorecipestackmanager.a(itemstack); - } - } - -} -- 2.49.1 From ab1f4ace8a470f0437e7755a546db5f34f230dc6 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Thu, 12 Dec 2019 14:33:42 -0500 Subject: [PATCH 193/253] Fix AnyContainer breaking modified ender chest sizes --- .../internal/v1_14_R1/AnySilentContainer.java | 29 +++++++++++++++++-- .../internal/v1_15_R1/AnySilentContainer.java | 29 +++++++++++++++++-- 2 files changed, 54 insertions(+), 4 deletions(-) diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/AnySilentContainer.java b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/AnySilentContainer.java index 8f580b2..dc310a0 100644 --- a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/AnySilentContainer.java +++ b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/AnySilentContainer.java @@ -29,6 +29,7 @@ import net.minecraft.server.v1_14_R1.BlockShulkerBox; import net.minecraft.server.v1_14_R1.ChatMessage; import net.minecraft.server.v1_14_R1.Container; import net.minecraft.server.v1_14_R1.ContainerChest; +import net.minecraft.server.v1_14_R1.Containers; import net.minecraft.server.v1_14_R1.EntityHuman; import net.minecraft.server.v1_14_R1.EntityPlayer; import net.minecraft.server.v1_14_R1.EnumChatFormat; @@ -189,8 +190,32 @@ public class AnySilentContainer implements IAnySilentContainer { // Anychest ender chest. See net.minecraft.server.BlockEnderChest InventoryEnderChest enderChest = player.getEnderChest(); enderChest.a((TileEntityEnderChest) tile); - player.openContainer(new TileInventory((containerCounter, playerInventory, ignored) -> - ContainerChest.a(containerCounter, playerInventory, enderChest), BlockEnderChest.d)); + player.openContainer(new TileInventory((containerCounter, playerInventory, ignored) -> { + Containers containers; + int rows = enderChest.getSize() / 9; + switch (rows) { + case 1: + containers = Containers.GENERIC_9X1; + break; + case 2: + containers = Containers.GENERIC_9X2; + break; + case 3: + default: + containers = Containers.GENERIC_9X3; + break; + case 4: + containers = Containers.GENERIC_9X4; + break; + case 5: + containers = Containers.GENERIC_9X5; + break; + case 6: + containers = Containers.GENERIC_9X6; + break; + } + return new ContainerChest(containers, containerCounter, playerInventory, enderChest, rows); + }, BlockEnderChest.d)); bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); return true; } diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java index e854f7e..a2cdf5e 100644 --- a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java +++ b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java @@ -29,6 +29,7 @@ import net.minecraft.server.v1_15_R1.BlockShulkerBox; import net.minecraft.server.v1_15_R1.ChatMessage; import net.minecraft.server.v1_15_R1.Container; import net.minecraft.server.v1_15_R1.ContainerChest; +import net.minecraft.server.v1_15_R1.Containers; import net.minecraft.server.v1_15_R1.EntityHuman; import net.minecraft.server.v1_15_R1.EntityPlayer; import net.minecraft.server.v1_15_R1.EnumChatFormat; @@ -189,8 +190,32 @@ public class AnySilentContainer implements IAnySilentContainer { // Anychest ender chest. See net.minecraft.server.BlockEnderChest InventoryEnderChest enderChest = player.getEnderChest(); enderChest.a((TileEntityEnderChest) tile); - player.openContainer(new TileInventory((containerCounter, playerInventory, ignored) -> - ContainerChest.a(containerCounter, playerInventory, enderChest), BlockEnderChest.e)); + player.openContainer(new TileInventory((containerCounter, playerInventory, ignored) -> { + Containers containers; + int rows = enderChest.getSize() / 9; + switch (rows) { + case 1: + containers = Containers.GENERIC_9X1; + break; + case 2: + containers = Containers.GENERIC_9X2; + break; + case 3: + default: + containers = Containers.GENERIC_9X3; + break; + case 4: + containers = Containers.GENERIC_9X4; + break; + case 5: + containers = Containers.GENERIC_9X5; + break; + case 6: + containers = Containers.GENERIC_9X6; + break; + } + return new ContainerChest(containers, containerCounter, playerInventory, enderChest, rows); + }, BlockEnderChest.e)); bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); return true; } -- 2.49.1 From 65c6eb269342a1c86e7f8957d3225f0ef5bc9daf Mon Sep 17 00:00:00 2001 From: Jikoo Date: Thu, 12 Dec 2019 14:36:38 -0500 Subject: [PATCH 194/253] Bump version to 4.0.8 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_14_R1/pom.xml | 4 ++-- internal/v1_15_R1/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- plugin/pom.xml | 4 ++-- pom.xml | 2 +- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 1f5b8af..6c45dc8 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.8-SNAPSHOT + 4.0.8 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 7f7c032..14a60fa 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.8-SNAPSHOT + 4.0.8 openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 52638cc..497cb2e 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.8-SNAPSHOT + 4.0.8 openinvcommon @@ -31,7 +31,7 @@ com.lishid openinvapi - 4.0.8-SNAPSHOT + 4.0.8 org.spigotmc diff --git a/internal/pom.xml b/internal/pom.xml index 5509e52..00023d8 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 4.0.8-SNAPSHOT + 4.0.8 openinvinternal diff --git a/internal/v1_14_R1/pom.xml b/internal/v1_14_R1/pom.xml index 9daf2dc..5fff234 100644 --- a/internal/v1_14_R1/pom.xml +++ b/internal/v1_14_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.0.8-SNAPSHOT + 4.0.8 openinvadapter1_14_R1 @@ -38,7 +38,7 @@ com.lishid openinvcommon - 4.0.8-SNAPSHOT + 4.0.8 diff --git a/internal/v1_15_R1/pom.xml b/internal/v1_15_R1/pom.xml index d20b11a..e4afc02 100644 --- a/internal/v1_15_R1/pom.xml +++ b/internal/v1_15_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.0.8-SNAPSHOT + 4.0.8 openinvadapter1_15_R1 @@ -38,7 +38,7 @@ com.lishid openinvcommon - 4.0.8-SNAPSHOT + 4.0.8 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 6940763..c240a3b 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.8-SNAPSHOT + 4.0.8 openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.8-SNAPSHOT + 4.0.8 diff --git a/plugin/pom.xml b/plugin/pom.xml index 62e37d8..97c9c7b 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.8-SNAPSHOT + 4.0.8 openinvplugincore @@ -31,7 +31,7 @@ com.lishid openinvcommon - 4.0.8-SNAPSHOT + 4.0.8 org.spigotmc diff --git a/pom.xml b/pom.xml index 1c433e0..d94b2d1 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 4.0.8-SNAPSHOT + 4.0.8 pom -- 2.49.1 From 19c491411f90ec6b447a5033f340d051ec0c6915 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Thu, 12 Dec 2019 14:37:03 -0500 Subject: [PATCH 195/253] Bump version to 4.0.9-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- common/pom.xml | 4 ++-- internal/pom.xml | 2 +- internal/v1_14_R1/pom.xml | 4 ++-- internal/v1_15_R1/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- plugin/pom.xml | 4 ++-- pom.xml | 2 +- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 6c45dc8..dde9936 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.8 + 4.0.9-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 14a60fa..d737fd3 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.8 + 4.0.9-SNAPSHOT openinvassembly diff --git a/common/pom.xml b/common/pom.xml index 497cb2e..870d900 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.8 + 4.0.9-SNAPSHOT openinvcommon @@ -31,7 +31,7 @@ com.lishid openinvapi - 4.0.8 + 4.0.9-SNAPSHOT org.spigotmc diff --git a/internal/pom.xml b/internal/pom.xml index 00023d8..0d6c0ba 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 4.0.8 + 4.0.9-SNAPSHOT openinvinternal diff --git a/internal/v1_14_R1/pom.xml b/internal/v1_14_R1/pom.xml index 5fff234..5fac1fb 100644 --- a/internal/v1_14_R1/pom.xml +++ b/internal/v1_14_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.0.8 + 4.0.9-SNAPSHOT openinvadapter1_14_R1 @@ -38,7 +38,7 @@ com.lishid openinvcommon - 4.0.8 + 4.0.9-SNAPSHOT diff --git a/internal/v1_15_R1/pom.xml b/internal/v1_15_R1/pom.xml index e4afc02..eca1f76 100644 --- a/internal/v1_15_R1/pom.xml +++ b/internal/v1_15_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.0.8 + 4.0.9-SNAPSHOT openinvadapter1_15_R1 @@ -38,7 +38,7 @@ com.lishid openinvcommon - 4.0.8 + 4.0.9-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index c240a3b..78bf009 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.8 + 4.0.9-SNAPSHOT openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvcommon - 4.0.8 + 4.0.9-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index 97c9c7b..a826320 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.8 + 4.0.9-SNAPSHOT openinvplugincore @@ -31,7 +31,7 @@ com.lishid openinvcommon - 4.0.8 + 4.0.9-SNAPSHOT org.spigotmc diff --git a/pom.xml b/pom.xml index d94b2d1..39d754c 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 4.0.8 + 4.0.9-SNAPSHOT pom -- 2.49.1 From 7d93bb06ad031592f55879e3ebe32b7ecd9c8ae2 Mon Sep 17 00:00:00 2001 From: unixminecraft Date: Tue, 14 Jan 2020 21:35:32 -0600 Subject: [PATCH 196/253] Updated /sc check command to correctly display if SilentChest is active or not. --- .../com/lishid/openinv/commands/SilentChestPluginCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java index 145b0f2..001d57f 100644 --- a/plugin/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java +++ b/plugin/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java @@ -40,7 +40,7 @@ public class SilentChestPluginCommand implements CommandExecutor { Player player = (Player) sender; if (args.length > 0 && args[0].equalsIgnoreCase("check")) { - sender.sendMessage("SilentChest is " + (plugin.getPlayerAnyChestStatus(player) ? "ON" : "OFF") + "."); + sender.sendMessage("SilentChest is " + (plugin.getPlayerSilentChestStatus(player) ? "ON" : "OFF") + "."); return true; } -- 2.49.1 From 4f2665fedcba5e86ed0988e425ecf6c1673921ed Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sat, 1 Feb 2020 08:00:03 -0500 Subject: [PATCH 197/253] Improve any/silent container commands * Merged duplicate code * Added on/off parameters - closes #120 * Added tab completion for parameters --- .../main/java/com/lishid/openinv/OpenInv.java | 57 ++---------- .../commands/AnyChestPluginCommand.java | 54 ----------- .../ContainerSettingPluginCommand.java | 93 +++++++++++++++++++ .../commands/SilentChestPluginCommand.java | 52 ----------- plugin/src/main/resources/plugin.yml | 10 +- 5 files changed, 107 insertions(+), 159 deletions(-) delete mode 100644 plugin/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java create mode 100644 plugin/src/main/java/com/lishid/openinv/commands/ContainerSettingPluginCommand.java delete mode 100644 plugin/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/src/main/java/com/lishid/openinv/OpenInv.java index b5f8b1d..3703220 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/src/main/java/com/lishid/openinv/OpenInv.java @@ -18,11 +18,10 @@ package com.lishid.openinv; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; -import com.lishid.openinv.commands.AnyChestPluginCommand; +import com.lishid.openinv.commands.ContainerSettingPluginCommand; import com.lishid.openinv.commands.OpenInvPluginCommand; import com.lishid.openinv.commands.SearchEnchantPluginCommand; import com.lishid.openinv.commands.SearchInvPluginCommand; -import com.lishid.openinv.commands.SilentChestPluginCommand; import com.lishid.openinv.internal.IAnySilentContainer; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialInventory; @@ -167,50 +166,6 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return this.accessor.getAnySilentContainer(); } - private int getLevenshteinDistance(final String string1, final String string2) { - if (string1 == null || string2 == null) { - throw new IllegalArgumentException("Strings must not be null"); - } - - if (string1.isEmpty()) { - return string2.length(); - } - if (string2.isEmpty()) { - return string2.length(); - } - if (string1.equals(string2)) { - return 0; - } - - int len1 = string1.length(); - int len2 = string2.length(); - - int[] prevDistances = new int[len1 + 1]; - int[] distances = new int[len1 + 1]; - - for (int i = 0; i <= len1; ++i) { - prevDistances[i] = i; - } - - for (int i = 1; i <= len2; ++i) { - // TODO: include tweaks available in Simmetrics? - char string2char = string2.charAt(i - 1); - distances[0] = i; - - for (int j = 1; j <= len1; ++j) { - int cost = string1.charAt(j - 1) == string2char ? 0 : 1; - - distances[j] = Math.min(Math.min(distances[j - 1] + 1, prevDistances[j] + 1), prevDistances[j - 1] + cost); - } - - int[] swap = prevDistances; - prevDistances = distances; - distances = swap; - } - - return prevDistances[len1]; - } - @Override public boolean getPlayerAnyChestStatus(@NotNull final OfflinePlayer player) { boolean defaultState = false; @@ -389,8 +344,14 @@ public class OpenInv extends JavaPlugin implements IOpenInv { this.getCommand("searchinv").setExecutor(searchInv); this.getCommand("searchender").setExecutor(searchInv); this.getCommand("searchenchant").setExecutor(new SearchEnchantPluginCommand(this)); - this.getCommand("silentchest").setExecutor(new SilentChestPluginCommand(this)); - this.getCommand("anychest").setExecutor(new AnyChestPluginCommand(this)); + ContainerSettingPluginCommand settingCommand = new ContainerSettingPluginCommand(this); + PluginCommand command = this.getCommand("silentcontainer"); + command.setExecutor(settingCommand); + command.setTabCompleter(settingCommand); + command = this.getCommand("anycontainer"); + command.setExecutor(settingCommand); + command.setTabCompleter(settingCommand); + } else { this.getLogger().info("Your version of CraftBukkit (" + this.accessor.getVersion() + ") is not supported."); this.getLogger().info("If this version is a recent release, check for an update."); diff --git a/plugin/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java deleted file mode 100644 index 683d628..0000000 --- a/plugin/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (C) 2011-2019 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.commands; - -import com.lishid.openinv.OpenInv; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class AnyChestPluginCommand implements CommandExecutor { - - private final OpenInv plugin; - - public AnyChestPluginCommand(final OpenInv plugin) { - this.plugin = plugin; - } - - @Override - public boolean onCommand(final CommandSender sender, final Command command, final String label, final 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 && args[0].equalsIgnoreCase("check")) { - sender.sendMessage("AnyChest is " + (this.plugin.getPlayerAnyChestStatus(player) ? "ON" : "OFF") + "."); - return true; - } - - this.plugin.setPlayerAnyChestStatus(player, !this.plugin.getPlayerAnyChestStatus(player)); - sender.sendMessage("AnyChest is now " + (this.plugin.getPlayerAnyChestStatus(player) ? "ON" : "OFF") + "."); - - return true; - } - -} diff --git a/plugin/src/main/java/com/lishid/openinv/commands/ContainerSettingPluginCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/ContainerSettingPluginCommand.java new file mode 100644 index 0000000..e636e38 --- /dev/null +++ b/plugin/src/main/java/com/lishid/openinv/commands/ContainerSettingPluginCommand.java @@ -0,0 +1,93 @@ +/* + * Copyright (C) 2011-2019 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.commands; + +import com.lishid.openinv.OpenInv; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.function.BiConsumer; +import java.util.function.Function; +import org.bukkit.ChatColor; +import org.bukkit.OfflinePlayer; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; +import org.bukkit.entity.Player; + +public class ContainerSettingPluginCommand implements CommandExecutor, TabCompleter { + + private final OpenInv plugin; + + public ContainerSettingPluginCommand(final OpenInv plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) { + if (!(sender instanceof Player)) { + sender.sendMessage(ChatColor.RED + "You can't use this from the console."); + return true; + } + + Player player = (Player) sender; + boolean any = command.getName().startsWith("any"); + String commandName = any ? "AnyContainer" : "SilentContainer"; + Function getSetting = any ? plugin::getPlayerAnyChestStatus : plugin::getPlayerSilentChestStatus; + BiConsumer setSetting = any ? plugin::setPlayerAnyChestStatus : plugin::setPlayerSilentChestStatus; + + if (args.length > 0) { + args[0] = args[0].toLowerCase(); + + if (args[0].equals("on")) { + setSetting.accept(player, true); + } else if (args[0].equals("off")) { + setSetting.accept(player, false); + } else if (!args[0].equals("check")) { + // Invalid argument, show usage. + return false; + } + + } else { + setSetting.accept(player, !getSetting.apply(player)); + } + + sender.sendMessage(commandName + " is now " + (getSetting.apply(player) ? "ON" : "OFF") + "."); + + return true; + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { + if (!command.testPermissionSilent(sender) || args.length != 1) { + return Collections.emptyList(); + } + + String argument = args[0].toLowerCase(); + List completions = new ArrayList<>(); + + for (String subcommand : new String[] {"check", "on", "off"}) { + if (subcommand.startsWith(argument)) { + completions.add(subcommand); + } + } + + return completions; + } + +} diff --git a/plugin/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java deleted file mode 100644 index 001d57f..0000000 --- a/plugin/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2011-2019 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.commands; - -import com.lishid.openinv.OpenInv; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class SilentChestPluginCommand implements CommandExecutor { - - private final OpenInv plugin; - - public SilentChestPluginCommand(OpenInv plugin) { - this.plugin = plugin; - } - - 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 && args[0].equalsIgnoreCase("check")) { - sender.sendMessage("SilentChest is " + (plugin.getPlayerSilentChestStatus(player) ? "ON" : "OFF") + "."); - return true; - } - - plugin.setPlayerSilentChestStatus(player, !plugin.getPlayerSilentChestStatus(player)); - sender.sendMessage("SilentChest is now " + (plugin.getPlayerSilentChestStatus(player) ? "ON" : "OFF") + "."); - - return true; - } -} diff --git a/plugin/src/main/resources/plugin.yml b/plugin/src/main/resources/plugin.yml index a2d629c..b6df8df 100644 --- a/plugin/src/main/resources/plugin.yml +++ b/plugin/src/main/resources/plugin.yml @@ -43,7 +43,7 @@ commands: description: Search and list players having a specific item permission: OpenInv.search usage: |- - / [MinAmount] - Item is the ID or the Bukkit Material, MinAmount is the minimum amount required + / [MinAmount] - Item is the Bukkit Material, MinAmount is the minimum amount required searchender: aliases: [se] permission: OpenInv.search @@ -52,16 +52,16 @@ commands: / [MinAmount] - Item is the ID or the Bukkit Material, MinAmount is the minimum amount required silentcontainer: aliases: [sc, silent, silentchest] - description: Toggle SilentContainer function, which stops sounds and animations when using containers. + description: SilentContainer stops sounds and animations when using containers. permission: OpenInv.silent usage: |- - / [Check] - Check or toggle silent chest + / [check|on|off] - Check, toggle, or set SilentContainer anycontainer: aliases: [ac, anychest] - description: Toggle AnyContainer function, which allows opening of blocked containers. + description: AnyContainer allows using blocked containers. permission: OpenInv.anychest usage: |- - / [Check] - Checks or toggle anychest + / [check|on|off] - Check, toggle, or set AnyContainer searchenchant: aliases: [searchenchants] description: Search and list players with a specific enchantment. -- 2.49.1 From c8938f451d3f2fca1b21ed538d872dd2fc3ed4c0 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sat, 1 Feb 2020 08:03:15 -0500 Subject: [PATCH 198/253] Update copyright --- api/pom.xml | 2 +- api/src/main/java/com/lishid/openinv/IOpenInv.java | 2 +- .../java/com/lishid/openinv/internal/IAnySilentContainer.java | 2 +- .../java/com/lishid/openinv/internal/IInventoryAccess.java | 2 +- .../java/com/lishid/openinv/internal/ISpecialEnderChest.java | 2 +- .../java/com/lishid/openinv/internal/ISpecialInventory.java | 2 +- .../com/lishid/openinv/internal/ISpecialPlayerInventory.java | 2 +- .../main/java/com/lishid/openinv/util/InventoryAccess.java | 2 +- api/src/main/java/com/lishid/openinv/util/StringMetric.java | 2 +- assembly/pom.xml | 2 +- assembly/src/assembly/reactor-uberjar.xml | 2 +- common/pom.xml | 2 +- .../java/com/lishid/openinv/internal/IPlayerDataManager.java | 2 +- common/src/main/java/com/lishid/openinv/util/Cache.java | 2 +- common/src/main/java/com/lishid/openinv/util/Function.java | 2 +- .../main/java/com/lishid/openinv/util/InternalAccessor.java | 2 +- common/src/main/java/com/lishid/openinv/util/Permissions.java | 2 +- internal/pom.xml | 2 +- internal/v1_14_R1/pom.xml | 2 +- .../lishid/openinv/internal/v1_14_R1/AnySilentContainer.java | 2 +- .../lishid/openinv/internal/v1_14_R1/PlayerDataManager.java | 2 +- .../lishid/openinv/internal/v1_14_R1/SpecialEnderChest.java | 2 +- .../openinv/internal/v1_14_R1/SpecialPlayerInventory.java | 2 +- internal/v1_15_R1/pom.xml | 4 ++-- .../lishid/openinv/internal/v1_15_R1/AnySilentContainer.java | 2 +- .../lishid/openinv/internal/v1_15_R1/PlayerDataManager.java | 2 +- .../lishid/openinv/internal/v1_15_R1/SpecialEnderChest.java | 2 +- .../openinv/internal/v1_15_R1/SpecialPlayerInventory.java | 2 +- internal/v1_8_R3/pom.xml | 2 +- .../lishid/openinv/internal/v1_8_R3/AnySilentContainer.java | 2 +- .../lishid/openinv/internal/v1_8_R3/PlayerDataManager.java | 2 +- .../lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java | 2 +- .../openinv/internal/v1_8_R3/SpecialPlayerInventory.java | 2 +- plugin/pom.xml | 2 +- plugin/src/main/java/com/lishid/openinv/OpenInv.java | 2 +- .../openinv/commands/ContainerSettingPluginCommand.java | 2 +- .../com/lishid/openinv/commands/OpenInvPluginCommand.java | 2 +- .../lishid/openinv/commands/SearchEnchantPluginCommand.java | 2 +- .../com/lishid/openinv/commands/SearchInvPluginCommand.java | 2 +- .../com/lishid/openinv/listeners/InventoryClickListener.java | 2 +- .../com/lishid/openinv/listeners/InventoryCloseListener.java | 2 +- .../com/lishid/openinv/listeners/InventoryDragListener.java | 2 +- .../java/com/lishid/openinv/listeners/PlayerListener.java | 2 +- .../java/com/lishid/openinv/listeners/PluginListener.java | 2 +- .../src/main/java/com/lishid/openinv/util/ConfigUpdater.java | 2 +- pom.xml | 2 +- 46 files changed, 47 insertions(+), 47 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index dde9936..bcaa09b 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -1,5 +1,5 @@ - - - 4.0.0 - - - com.lishid - openinvparent - 4.0.9-SNAPSHOT - - - openinvcommon - OpenInvCommon - - - - com.lishid - openinvapi - 4.0.9-SNAPSHOT - - - org.spigotmc - spigot-api - 1.8.8-R0.1-SNAPSHOT - provided - - - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.0.0 - - true - - - - package - - shade - - - - - - - maven-compiler-plugin - 3.8.1 - - 1.8 - 1.8 - - - - - - diff --git a/internal/v1_14_R1/pom.xml b/internal/v1_14_R1/pom.xml index 61c3922..9a7fc9b 100644 --- a/internal/v1_14_R1/pom.xml +++ b/internal/v1_14_R1/pom.xml @@ -37,7 +37,7 @@ com.lishid - openinvcommon + openinvplugincore 4.0.9-SNAPSHOT @@ -47,7 +47,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.0.0 + 3.2.2 true diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/AnySilentContainer.java b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/AnySilentContainer.java index d172fa7..dfa759e 100644 --- a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/AnySilentContainer.java +++ b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/AnySilentContainer.java @@ -16,6 +16,7 @@ package com.lishid.openinv.internal.v1_14_R1; +import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.IAnySilentContainer; import java.lang.reflect.Field; import net.minecraft.server.v1_14_R1.Block; @@ -191,7 +192,7 @@ public class AnySilentContainer implements IAnySilentContainer { InventoryEnderChest enderChest = player.getEnderChest(); enderChest.a((TileEntityEnderChest) tile); player.openContainer(new TileInventory((containerCounter, playerInventory, ignored) -> { - Containers containers; + Containers containers; int rows = enderChest.getSize() / 9; switch (rows) { case 1: @@ -300,7 +301,7 @@ public class AnySilentContainer implements IAnySilentContainer { if (tile instanceof TileEntityLootable) { TileEntityLootable lootable = (TileEntityLootable) tile; if (lootable.lootTable != null) { - player.a(new ChatMessage("Loot not generated! Please disable /silentcontainer.").a(EnumChatFormat.RED), true); + OpenInv.getPlugin(OpenInv.class).sendSystemMessage(bukkitPlayer, "messages.error.lootNotGenerated"); return false; } } diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java index 882e721..5d6c9d7 100644 --- a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java +++ b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java @@ -16,16 +16,19 @@ package com.lishid.openinv.internal.v1_14_R1; +import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.IPlayerDataManager; import com.lishid.openinv.internal.ISpecialInventory; import com.mojang.authlib.GameProfile; import net.minecraft.server.v1_14_R1.ChatComponentText; +import net.minecraft.server.v1_14_R1.ChatMessageType; import net.minecraft.server.v1_14_R1.Container; import net.minecraft.server.v1_14_R1.Containers; import net.minecraft.server.v1_14_R1.DimensionManager; import net.minecraft.server.v1_14_R1.EntityHuman; import net.minecraft.server.v1_14_R1.EntityPlayer; import net.minecraft.server.v1_14_R1.MinecraftServer; +import net.minecraft.server.v1_14_R1.PacketPlayOutChat; import net.minecraft.server.v1_14_R1.PacketPlayOutOpenWindow; import net.minecraft.server.v1_14_R1.PlayerInteractManager; import net.minecraft.server.v1_14_R1.PlayerInventory; @@ -42,9 +45,11 @@ import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class PlayerDataManager implements IPlayerDataManager { + @NotNull public static EntityPlayer getHandle(final Player player) { if (player instanceof CraftPlayer) { return ((CraftPlayer) player).getHandle(); @@ -88,26 +93,37 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override + @Nullable + @Override public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { EntityPlayer nmsPlayer = getHandle(player); - if (nmsPlayer == null || nmsPlayer.playerConnection == null) { + if (nmsPlayer.playerConnection == null) { return null; } String title; if (inventory instanceof SpecialEnderChest) { HumanEntity owner = (HumanEntity) ((SpecialEnderChest) inventory).getBukkitOwner(); - title = (owner.getName() != null ? owner.getName() : owner.getUniqueId().toString()) + "'s Ender Chest"; + title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.enderchest"); + if (title == null) { + title = "%player%'s Ender Chest"; + } + //noinspection ConstantConditions - owner name can be null if loaded by UUID + title = title.replace("%player%", owner.getName() != null ? owner.getName() : owner.getUniqueId().toString()); } else if (inventory instanceof SpecialPlayerInventory) { EntityHuman owner = ((PlayerInventory) inventory).player; - title = (owner.getName() != null ? owner.getName() : owner.getUniqueID().toString()) + "'s Inventory"; + title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.player"); + if (title == null) { + title = "%player%'s Inventory"; + } + title = title.replace("%player%", owner.getName() != null ? owner.getName() : owner.getUniqueID().toString()); } else { return player.openInventory(inventory.getBukkitInventory()); } + String finalTitle = title; Container container = new CraftContainer(new InventoryView() { @Override public @NotNull Inventory getTopInventory() { @@ -127,7 +143,7 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override public @NotNull String getTitle() { - return title; + return finalTitle; } }, nmsPlayer, nmsPlayer.nextContainerCounter()) { @Override @@ -167,4 +183,24 @@ public class PlayerDataManager implements IPlayerDataManager { } + @Override + public void sendSystemMessage(@NotNull Player player, @NotNull String message) { + int newline = message.indexOf('\n'); + if (newline != -1) { + // No newlines in action bar chat. + message = message.substring(0, newline); + } + + if (message.isEmpty()) { + return; + } + + EntityPlayer nmsPlayer = getHandle(player); + + // For action bar chat, color codes are still supported but JSON text color is not allowed. Do not convert text. + if (nmsPlayer.playerConnection != null) { + nmsPlayer.playerConnection.sendPacket(new PacketPlayOutChat(new ChatComponentText(message), ChatMessageType.GAME_INFO)); + } + } + } diff --git a/internal/v1_15_R1/pom.xml b/internal/v1_15_R1/pom.xml index 0351ef6..4aef51f 100644 --- a/internal/v1_15_R1/pom.xml +++ b/internal/v1_15_R1/pom.xml @@ -37,7 +37,7 @@ com.lishid - openinvcommon + openinvplugincore 4.0.9-SNAPSHOT @@ -47,7 +47,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.0.0 + 3.2.2 true diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java index a43637c..e4b58ed 100644 --- a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java +++ b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java @@ -16,6 +16,7 @@ package com.lishid.openinv.internal.v1_15_R1; +import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.IAnySilentContainer; import java.lang.reflect.Field; import net.minecraft.server.v1_15_R1.Block; @@ -300,7 +301,7 @@ public class AnySilentContainer implements IAnySilentContainer { if (tile instanceof TileEntityLootable) { TileEntityLootable lootable = (TileEntityLootable) tile; if (lootable.lootTable != null) { - player.a(new ChatMessage("Loot not generated! Please disable /silentcontainer.").a(EnumChatFormat.RED), true); + OpenInv.getPlugin(OpenInv.class).sendSystemMessage(bukkitPlayer, "messages.error.lootNotGenerated"); return false; } } diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java index 8da163b..25e6deb 100644 --- a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java +++ b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java @@ -16,16 +16,19 @@ package com.lishid.openinv.internal.v1_15_R1; +import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.IPlayerDataManager; import com.lishid.openinv.internal.ISpecialInventory; import com.mojang.authlib.GameProfile; import net.minecraft.server.v1_15_R1.ChatComponentText; +import net.minecraft.server.v1_15_R1.ChatMessageType; import net.minecraft.server.v1_15_R1.Container; import net.minecraft.server.v1_15_R1.Containers; import net.minecraft.server.v1_15_R1.DimensionManager; import net.minecraft.server.v1_15_R1.EntityHuman; import net.minecraft.server.v1_15_R1.EntityPlayer; import net.minecraft.server.v1_15_R1.MinecraftServer; +import net.minecraft.server.v1_15_R1.PacketPlayOutChat; import net.minecraft.server.v1_15_R1.PacketPlayOutOpenWindow; import net.minecraft.server.v1_15_R1.PlayerInteractManager; import net.minecraft.server.v1_15_R1.PlayerInventory; @@ -42,9 +45,11 @@ import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class PlayerDataManager implements IPlayerDataManager { + @NotNull public static EntityPlayer getHandle(final Player player) { if (player instanceof CraftPlayer) { return ((CraftPlayer) player).getHandle(); @@ -65,6 +70,7 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Nullable @Override public Player loadPlayer(@NotNull final OfflinePlayer offline) { // Ensure player has data @@ -88,26 +94,37 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - @Override + @Nullable + @Override public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { EntityPlayer nmsPlayer = getHandle(player); - if (nmsPlayer == null || nmsPlayer.playerConnection == null) { + if (nmsPlayer.playerConnection == null) { return null; } String title; if (inventory instanceof SpecialEnderChest) { HumanEntity owner = (HumanEntity) ((SpecialEnderChest) inventory).getBukkitOwner(); - title = (owner.getName() != null ? owner.getName() : owner.getUniqueId().toString()) + "'s Ender Chest"; + title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.enderchest"); + if (title == null) { + title = "%player%'s Ender Chest"; + } + //noinspection ConstantConditions - owner name can be null if loaded by UUID + title = title.replace("%player%", owner.getName() != null ? owner.getName() : owner.getUniqueId().toString()); } else if (inventory instanceof SpecialPlayerInventory) { EntityHuman owner = ((PlayerInventory) inventory).player; - title = (owner.getName() != null ? owner.getName() : owner.getUniqueID().toString()) + "'s Inventory"; + title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.player"); + if (title == null) { + title = "%player%'s Inventory"; + } + title = title.replace("%player%", owner.getName() != null ? owner.getName() : owner.getUniqueID().toString()); } else { return player.openInventory(inventory.getBukkitInventory()); } + String finalTitle = title; Container container = new CraftContainer(new InventoryView() { @Override public @NotNull Inventory getTopInventory() { @@ -127,7 +144,7 @@ public class PlayerDataManager implements IPlayerDataManager { } @Override public @NotNull String getTitle() { - return title; + return finalTitle; } }, nmsPlayer, nmsPlayer.nextContainerCounter()) { @Override @@ -167,4 +184,24 @@ public class PlayerDataManager implements IPlayerDataManager { } + @Override + public void sendSystemMessage(@NotNull Player player, @NotNull String message) { + int newline = message.indexOf('\n'); + if (newline != -1) { + // No newlines in action bar chat. + message = message.substring(0, newline); + } + + if (message.isEmpty()) { + return; + } + + EntityPlayer nmsPlayer = getHandle(player); + + // For action bar chat, color codes are still supported but JSON text color is not allowed. Do not convert text. + if (nmsPlayer.playerConnection != null) { + nmsPlayer.playerConnection.sendPacket(new PacketPlayOutChat(new ChatComponentText(message), ChatMessageType.GAME_INFO)); + } + } + } diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index a4f9086..c4e587c 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -36,7 +36,7 @@ com.lishid - openinvcommon + openinvplugincore 4.0.9-SNAPSHOT @@ -46,7 +46,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.0.0 + 3.2.2 true diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java index a14df88..7153515 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java @@ -19,8 +19,10 @@ package com.lishid.openinv.internal.v1_8_R3; import com.lishid.openinv.internal.IPlayerDataManager; import com.lishid.openinv.internal.ISpecialInventory; import com.mojang.authlib.GameProfile; +import net.minecraft.server.v1_8_R3.ChatComponentText; import net.minecraft.server.v1_8_R3.EntityPlayer; import net.minecraft.server.v1_8_R3.MinecraftServer; +import net.minecraft.server.v1_8_R3.PacketPlayOutChat; import net.minecraft.server.v1_8_R3.PlayerInteractManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; @@ -30,9 +32,32 @@ import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; import org.bukkit.entity.Player; import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class PlayerDataManager implements IPlayerDataManager { + @NotNull + public static EntityPlayer getHandle(Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + + @Nullable @Override public Player loadPlayer(@NotNull OfflinePlayer offline) { // Ensure the player has data @@ -56,29 +81,36 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Override + @Nullable + @Override public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { return player.openInventory(inventory.getBukkitInventory()); } + @Override + public void sendSystemMessage(@NotNull Player player, @NotNull String message) { + int newline = message.indexOf('\n'); + if (newline != -1) { + // No newlines in action bar chat. + message = message.substring(0, newline); + } + + if (message.isEmpty()) { + return; + } + + EntityPlayer nmsPlayer = getHandle(player); + + // For action bar chat, color codes are still supported but JSON text color is not allowed. Do not convert text. + if (nmsPlayer.playerConnection != null) { + nmsPlayer.playerConnection.sendPacket(new PacketPlayOutChat(new ChatComponentText(message), (byte) 2)); + } + } + + @NotNull + @Override + public String getLocale(Player player) { + return getHandle(player).locale; + } + } diff --git a/plugin/pom.xml b/plugin/pom.xml index dbfa04f..e695d91 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -30,13 +30,13 @@ com.lishid - openinvcommon + openinvapi 4.0.9-SNAPSHOT org.spigotmc spigot-api - 1.8.8-R0.1-SNAPSHOT + 1.15.2-R0.1-SNAPSHOT provided @@ -52,7 +52,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.0.0 + 3.2.2 true diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/src/main/java/com/lishid/openinv/OpenInv.java index 78a7f54..151ad67 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/src/main/java/com/lishid/openinv/OpenInv.java @@ -35,6 +35,7 @@ import com.lishid.openinv.listeners.PluginListener; import com.lishid.openinv.util.Cache; import com.lishid.openinv.util.ConfigUpdater; import com.lishid.openinv.util.InternalAccessor; +import com.lishid.openinv.util.LanguageManager; import com.lishid.openinv.util.Permissions; import java.util.HashMap; import java.util.Iterator; @@ -45,6 +46,7 @@ import java.util.concurrent.Future; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.PluginCommand; import org.bukkit.entity.HumanEntity; @@ -107,6 +109,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { }); private InternalAccessor accessor; + private LanguageManager languageManager; /** * Evicts all viewers lacking cross-world permissions from a Player's inventory. @@ -128,8 +131,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { HumanEntity human = iterator.next(); // If player has permission or is in the same world, allow continued access // Just in case, also allow null worlds. - if (Permissions.CROSSWORLD.hasPermission(human) || human.getWorld() == null - || human.getWorld().equals(player.getWorld())) { + if (Permissions.CROSSWORLD.hasPermission(human) || human.getWorld().equals(player.getWorld())) { continue; } human.closeInventory(); @@ -140,8 +142,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { Iterator iterator = this.enderChests.get(key).getBukkitInventory().getViewers().iterator(); while (iterator.hasNext()) { HumanEntity human = iterator.next(); - if (Permissions.CROSSWORLD.hasPermission(human) || human.getWorld() == null - || human.getWorld().equals(player.getWorld())) { + if (Permissions.CROSSWORLD.hasPermission(human) || human.getWorld().equals(player.getWorld())) { continue; } human.closeInventory(); @@ -284,6 +285,43 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return this.accessor.getPlayerDataManager().openInventory(player, inventory); } + public void sendMessage(@NotNull CommandSender sender, @NotNull String key) { + String message = this.languageManager.getValue(key, getLocale(sender)); + + if (message != null && !message.isEmpty()) { + sender.sendMessage(message); + } + } + + public void sendMessage(@NotNull CommandSender sender, @NotNull String key, String... replacements) { + String message = this.languageManager.getValue(key, getLocale(sender), replacements); + + if (message != null && !message.isEmpty()) { + sender.sendMessage(message); + } + } + + public void sendSystemMessage(@NotNull Player player, @NotNull String key) { + String message = this.languageManager.getValue(key, getLocale(player)); + + if (message != null) { + this.accessor.getPlayerDataManager().sendSystemMessage(player, message); + } + } + + public @Nullable String getLocalizedMessage(@NotNull CommandSender sender, @NotNull String key) { + return this.languageManager.getValue(key, getLocale(sender)); + } + + @Nullable + private String getLocale(@NotNull CommandSender sender) { + if (sender instanceof Player) { + return this.accessor.getPlayerDataManager().getLocale((Player) sender); + } else { + return this.getConfig().getString("settings.locale", "en_us"); + } + } + @Override public boolean notifyAnyChest() { return this.getConfig().getBoolean("notify.any-chest", true); @@ -317,6 +355,8 @@ public class OpenInv extends JavaPlugin implements IOpenInv { this.accessor = new InternalAccessor(this); + this.languageManager = new LanguageManager(this, "en_us"); + // Version check if (this.accessor.isSupported()) { // Update existing configuration. May require internal access. @@ -332,16 +372,16 @@ public class OpenInv extends JavaPlugin implements IOpenInv { // Register commands to their executors OpenInvCommand openInv = new OpenInvCommand(this); - this.getCommand("openinv").setExecutor(openInv); - this.getCommand("openender").setExecutor(openInv); + this.setCommandExecutor("openinv", openInv); + this.setCommandExecutor("openender", openInv); + this.setCommandExecutor("searchcontainer", new SearchContainerCommand(this)); SearchInvCommand searchInv = new SearchInvCommand(this); - this.getCommand("searchcontainer").setExecutor(new SearchContainerCommand()); - this.getCommand("searchinv").setExecutor(searchInv); - this.getCommand("searchender").setExecutor(searchInv); - this.getCommand("searchenchant").setExecutor(new SearchEnchantCommand(this)); + this.setCommandExecutor("searchinv", searchInv); + this.setCommandExecutor("searchender", searchInv); + this.setCommandExecutor("searchenchant", new SearchEnchantCommand(this)); ContainerSettingCommand settingCommand = new ContainerSettingCommand(this); - this.getCommand("silentcontainer").setExecutor(settingCommand); - this.getCommand("anycontainer").setExecutor(settingCommand); + this.setCommandExecutor("silentcontainer", settingCommand); + this.setCommandExecutor("anycontainer", settingCommand); } else { this.getLogger().info("Your version of CraftBukkit (" + this.accessor.getVersion() + ") is not supported."); @@ -351,12 +391,18 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } + private void setCommandExecutor(String commandName, CommandExecutor executor) { + PluginCommand command = this.getCommand(commandName); + if (command != null) { + command.setExecutor(executor); + } + } + @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if (!this.accessor.isSupported()) { sender.sendMessage("Your version of CraftBukkit (" + this.accessor.getVersion() + ") is not supported."); sender.sendMessage("If this version is a recent release, check for an update."); - sender.sendMessage("If this is an older version, ensure that you've downloaded the legacy support version."); return true; } return false; diff --git a/plugin/src/main/java/com/lishid/openinv/commands/ContainerSettingCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/ContainerSettingCommand.java index eb14e8b..09ed34c 100644 --- a/plugin/src/main/java/com/lishid/openinv/commands/ContainerSettingCommand.java +++ b/plugin/src/main/java/com/lishid/openinv/commands/ContainerSettingCommand.java @@ -22,12 +22,12 @@ import java.util.Collections; import java.util.List; import java.util.function.BiConsumer; import java.util.function.Function; -import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class ContainerSettingCommand implements TabExecutor { @@ -38,15 +38,14 @@ public class ContainerSettingCommand implements TabExecutor { } @Override - public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) { + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if (!(sender instanceof Player)) { - sender.sendMessage(ChatColor.RED + "You can't use this from the console."); + plugin.sendMessage(sender, "messages.error.consoleUnsupported"); return true; } Player player = (Player) sender; boolean any = command.getName().startsWith("any"); - String commandName = any ? "AnyContainer" : "SilentContainer"; Function getSetting = any ? plugin::getPlayerAnyChestStatus : plugin::getPlayerSilentChestStatus; BiConsumer setSetting = any ? plugin::setPlayerAnyChestStatus : plugin::setPlayerSilentChestStatus; @@ -66,13 +65,18 @@ public class ContainerSettingCommand implements TabExecutor { setSetting.accept(player, !getSetting.apply(player)); } - sender.sendMessage(commandName + " is now " + (getSetting.apply(player) ? "ON" : "OFF") + "."); + String onOff = plugin.getLocalizedMessage(player, getSetting.apply(player) ? "messages.info.on" : "messages.info.off"); + if (onOff == null) { + onOff = String.valueOf(getSetting.apply(player)); + } + + plugin.sendMessage(sender, "messages.info.settingState","%setting%", any ? "AnyContainer" : "SilentContainer", "%state%", onOff); return true; } @Override - public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { + public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if (!command.testPermissionSilent(sender) || args.length != 1) { return Collections.emptyList(); } diff --git a/plugin/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java index 8c20be9..f8246c5 100644 --- a/plugin/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java +++ b/plugin/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java @@ -23,13 +23,13 @@ import com.lishid.openinv.util.TabCompleter; import java.util.Collections; import java.util.HashMap; import java.util.List; -import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; +import org.jetbrains.annotations.NotNull; public class OpenInvCommand implements TabExecutor { @@ -42,9 +42,9 @@ public class OpenInvCommand implements TabExecutor { } @Override - public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) { + public boolean onCommand(@NotNull final CommandSender sender, @NotNull final Command command, @NotNull final String label, @NotNull final String[] args) { if (!(sender instanceof Player)) { - sender.sendMessage(ChatColor.RED + "You can't use this from the console."); + plugin.sendMessage(sender, "messages.error.consoleUnsupported"); return true; } @@ -79,7 +79,7 @@ public class OpenInvCommand implements TabExecutor { final OfflinePlayer offlinePlayer = OpenInvCommand.this.plugin.matchPlayer(name); if (offlinePlayer == null || !offlinePlayer.hasPlayedBefore() && !offlinePlayer.isOnline()) { - player.sendMessage(ChatColor.RED + "Player not found!"); + plugin.sendMessage(player, "messages.error.invalidPlayer"); return; } @@ -100,49 +100,48 @@ public class OpenInvCommand implements TabExecutor { } private void openInventory(final Player player, final OfflinePlayer target, boolean openinv) { - - Player onlineTarget; boolean online = target.isOnline(); if (!online) { // Try loading the player's data onlineTarget = this.plugin.loadPlayer(target); - - if (onlineTarget == null) { - player.sendMessage(ChatColor.RED + "Player not found!"); - return; - } } else { onlineTarget = target.getPlayer(); } + if (onlineTarget == null) { + plugin.sendMessage(player, "messages.error.invalidPlayer"); + return; + } + // Permissions checks if (onlineTarget.equals(player)) { // Inventory: Additional permission required to open own inventory if (openinv && !Permissions.OPENSELF.hasPermission(player)) { - player.sendMessage(ChatColor.RED + "You're not allowed to open your own inventory!"); + plugin.sendMessage(player, "messages.error.permissionOpenSelf"); return; } } else { // Enderchest: Additional permission required to open others' ender chests if (!openinv && !Permissions.ENDERCHEST_ALL.hasPermission(player)) { - player.sendMessage(ChatColor.RED + "You do not have permission to access other players' ender chests."); + plugin.sendMessage(player, "messages.error.permissionEnderAll"); return; } // Protected check if (!Permissions.OVERRIDE.hasPermission(player) && Permissions.EXEMPT.hasPermission(onlineTarget)) { - player.sendMessage(ChatColor.RED + onlineTarget.getDisplayName() + "'s inventory is protected!"); + plugin.sendMessage(player, "messages.error.permissionExempt", + "%target%", onlineTarget.getDisplayName()); return; } // Crossworld check if (!Permissions.CROSSWORLD.hasPermission(player) && !onlineTarget.getWorld().equals(player.getWorld())) { - player.sendMessage( - ChatColor.RED + onlineTarget.getDisplayName() + " is not in your world!"); + plugin.sendMessage(player, "messages.error.permissionCrossWorld", + "%target%", onlineTarget.getDisplayName()); return; } } @@ -155,7 +154,7 @@ public class OpenInvCommand implements TabExecutor { try { inv = openinv ? this.plugin.getSpecialInventory(onlineTarget, online) : this.plugin.getSpecialEnderChest(onlineTarget, online); } catch (Exception e) { - player.sendMessage(ChatColor.RED + "An error occurred creating " + onlineTarget.getDisplayName() + "'s inventory!"); + plugin.sendMessage(player, "messages.error.commandException"); e.printStackTrace(); return; } @@ -165,7 +164,7 @@ public class OpenInvCommand implements TabExecutor { } @Override - public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { + public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if (!command.testPermissionSilent(sender) || args.length != 1) { return Collections.emptyList(); } diff --git a/plugin/src/main/java/com/lishid/openinv/commands/SearchContainerCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/SearchContainerCommand.java index d95d3d3..7242ee9 100644 --- a/plugin/src/main/java/com/lishid/openinv/commands/SearchContainerCommand.java +++ b/plugin/src/main/java/com/lishid/openinv/commands/SearchContainerCommand.java @@ -16,10 +16,10 @@ package com.lishid.openinv.commands; +import com.lishid.openinv.OpenInv; import com.lishid.openinv.util.TabCompleter; import java.util.Collections; import java.util.List; -import org.bukkit.ChatColor; import org.bukkit.Chunk; import org.bukkit.Material; import org.bukkit.World; @@ -29,16 +29,23 @@ import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; import org.bukkit.entity.Player; import org.bukkit.inventory.InventoryHolder; +import org.jetbrains.annotations.NotNull; /** * Command for searching containers in a radius of chunks. */ public class SearchContainerCommand implements TabExecutor { + private final OpenInv plugin; + + public SearchContainerCommand(OpenInv plugin) { + this.plugin = plugin; + } + @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if (!(sender instanceof Player)) { - sender.sendMessage(ChatColor.RED + "You can't use this from the console."); + plugin.sendMessage(sender, "messages.error.consoleUnsupported"); return true; } @@ -47,10 +54,10 @@ public class SearchContainerCommand implements TabExecutor { return false; } - Material material = Material.getMaterial(args[0]); + Material material = Material.getMaterial(args[0].toUpperCase()); if (material == null) { - sender.sendMessage(ChatColor.RED + "Unknown item: \"" + args[0] + "\""); + plugin.sendMessage(sender, "messages.error.invalidMaterial", "%target%", args[0]); return false; } @@ -95,15 +102,18 @@ public class SearchContainerCommand implements TabExecutor { if (locations.length() > 0) { locations.delete(locations.length() - 2, locations.length()); } else { - sender.sendMessage("No containers found with " + material.toString()); + plugin.sendMessage(sender, "messages.info.container.noMatches", + "%target%", material.name()); + return true; } - sender.sendMessage("Containers holding item " + material.toString() + ": " + locations.toString()); + plugin.sendMessage(sender, "messages.info.container.matches", + "%target%", material.name(), "%detail%", locations.toString()); return true; } @Override - public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { + public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (args.length < 1 || args.length > 2 || !command.testPermissionSilent(sender)) { return Collections.emptyList(); } diff --git a/plugin/src/main/java/com/lishid/openinv/commands/SearchEnchantCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/SearchEnchantCommand.java index c755185..9e4206d 100644 --- a/plugin/src/main/java/com/lishid/openinv/commands/SearchEnchantCommand.java +++ b/plugin/src/main/java/com/lishid/openinv/commands/SearchEnchantCommand.java @@ -21,6 +21,7 @@ import com.lishid.openinv.util.TabCompleter; import java.util.Collections; import java.util.List; import org.bukkit.Material; +import org.bukkit.NamespacedKey; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; @@ -29,6 +30,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.NotNull; /** * Command adding the ability to search online players' inventories for enchantments of a specific @@ -45,7 +47,7 @@ public class SearchEnchantCommand implements TabExecutor { } @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if (args.length == 0) { return false; } @@ -54,14 +56,28 @@ public class SearchEnchantCommand implements TabExecutor { int level = 0; for (String argument : args) { - Enchantment localEnchant = Enchantment.getByName(argument.toUpperCase()); - if (localEnchant != null) { - enchant = localEnchant; - continue; - } try { level = Integer.parseInt(argument); + continue; } catch (NumberFormatException ignored) {} + + argument = argument.toLowerCase(); + int colon = argument.indexOf(':'); + NamespacedKey key; + try { + if (colon > -1 && colon < argument.length() - 1) { + key = new NamespacedKey(argument.substring(0, colon), argument.substring(colon + 1)); + } else { + key = NamespacedKey.minecraft(argument); + } + } catch (IllegalArgumentException ignored) { + continue; + } + + Enchantment localEnchant = Enchantment.getByKey(key); + if (localEnchant != null) { + enchant = localEnchant; + } } // Arguments not set correctly @@ -97,12 +113,14 @@ public class SearchEnchantCommand implements TabExecutor { // Matches found, delete trailing comma and space players.delete(players.length() - 2, players.length()); } else { - sender.sendMessage("No players found with " + (enchant == null ? "any enchant" : enchant.getName()) - + " of level " + level + " or higher."); + plugin.sendMessage(sender, "messages.info.player.noMatches", + "%target%", (enchant != null ? enchant.getKey().toString() : "") + " >= " + level); return true; } - sender.sendMessage("Players: " + players.toString()); + plugin.sendMessage(sender, "messages.info.player.matches", + "%target%", (enchant != null ? enchant.getKey().toString() : "") + " >= " + level, + "%detail%", players.toString()); return true; } @@ -120,7 +138,7 @@ public class SearchEnchantCommand implements TabExecutor { continue; } ItemMeta meta = item.getItemMeta(); - if (!meta.hasEnchants()) { + if (meta == null || !meta.hasEnchants()) { continue; } for (int enchLevel : meta.getEnchants().values()) { @@ -134,13 +152,13 @@ public class SearchEnchantCommand implements TabExecutor { } @Override - public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { + public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if (!command.testPermissionSilent(sender) || args.length < 1 || args.length > 2) { return Collections.emptyList(); } if (args.length == 1) { - return TabCompleter.completeObject(args[0], Enchantment::getName, Enchantment.values()); + return TabCompleter.completeObject(args[0], enchantment -> enchantment.getKey().toString(), Enchantment.values()); } else { return TabCompleter.completeInteger(args[1]); } diff --git a/plugin/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java index c92b064..86d20d2 100644 --- a/plugin/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java +++ b/plugin/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java @@ -20,13 +20,13 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.util.TabCompleter; import java.util.Collections; import java.util.List; -import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; +import org.jetbrains.annotations.NotNull; public class SearchInvCommand implements TabExecutor { @@ -37,32 +37,33 @@ public class SearchInvCommand implements TabExecutor { } @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { Material material = null; int count = 1; if (args.length >= 1) { - material = Material.getMaterial(args[0]); + material = Material.getMaterial(args[0].toUpperCase()); } if (args.length >= 2) { try { count = Integer.parseInt(args[1]); } catch (NumberFormatException ex) { - sender.sendMessage(ChatColor.RED + "'" + args[1] + "' is not a number!"); + plugin.sendMessage(sender, "messages.error.invalidNumber", "%target%", args[1]); return false; } } if (material == null) { - sender.sendMessage(ChatColor.RED + "Unknown item: \"" + args[0] + "\""); + plugin.sendMessage(sender, "messages.error.invalidMaterial", "%target%", args[0]); return false; } StringBuilder players = new StringBuilder(); + boolean searchInv = command.getName().equals("searchinv"); for (Player player : plugin.getServer().getOnlinePlayers()) { - Inventory inventory = command.getName().equals("searchinv") ? player.getInventory() : player.getEnderChest(); + Inventory inventory = searchInv ? player.getInventory() : player.getEnderChest(); if (inventory.contains(material, count)) { players.append(player.getName()).append(", "); } @@ -72,15 +73,18 @@ public class SearchInvCommand implements TabExecutor { if (players.length() > 0) { players.delete(players.length() - 2, players.length()); } else { - sender.sendMessage("No players found with " + material.toString()); + plugin.sendMessage(sender, "messages.info.player.noMatches", + "%target%", material.name()); + return true; } - sender.sendMessage("Players with the item " + material.toString() + ": " + players.toString()); + plugin.sendMessage(sender, "messages.info.player.matches", + "%target%", material.name(), "%detail%", players.toString()); return true; } @Override - public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { + public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if (args.length < 1 || args.length > 2 || !command.testPermissionSilent(sender)) { return Collections.emptyList(); } diff --git a/common/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java b/plugin/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java similarity index 85% rename from common/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java rename to plugin/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java index 752ebb8..a801490 100644 --- a/common/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java +++ b/plugin/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java @@ -32,7 +32,8 @@ public interface IPlayerDataManager { * @param offline the OfflinePlayer * @return the Player loaded */ - @Nullable Player loadPlayer(@NotNull OfflinePlayer offline); + @Nullable + Player loadPlayer(@NotNull OfflinePlayer offline); /** * Opens an ISpecialInventory for a Player. @@ -42,6 +43,14 @@ public interface IPlayerDataManager { *` * @return the InventoryView opened */ + @Nullable InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory); + void sendSystemMessage(@NotNull Player player, @NotNull String message); + + @NotNull + default String getLocale(Player player) { + return player.getLocale(); + } + } diff --git a/plugin/src/main/java/com/lishid/openinv/listeners/PlayerListener.java b/plugin/src/main/java/com/lishid/openinv/listeners/PlayerListener.java index 390a65c..7bbead2 100644 --- a/plugin/src/main/java/com/lishid/openinv/listeners/PlayerListener.java +++ b/plugin/src/main/java/com/lishid/openinv/listeners/PlayerListener.java @@ -55,7 +55,7 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerInteract(PlayerInteractEvent event) { if (event.getAction() != Action.RIGHT_CLICK_BLOCK || event.getPlayer().isSneaking() - || event.useInteractedBlock() == Result.DENY + || event.useInteractedBlock() == Result.DENY || event.getClickedBlock() == null || !plugin.getAnySilentContainer().isAnySilentContainer(event.getClickedBlock())) { return; } @@ -71,13 +71,15 @@ public class PlayerListener implements Listener { boolean silent = Permissions.SILENT.hasPermission(player) && plugin.getPlayerSilentChestStatus(player); // If anycontainer or silentcontainer is active - if ((any || silent) && plugin.getAnySilentContainer().activateContainer(player, silent, event.getClickedBlock())) { - if (silent && plugin.notifySilentChest() && needsAny && plugin.notifyAnyChest()) { - player.sendMessage("You are opening a blocked container silently."); - } else if (silent && plugin.notifySilentChest()) { - player.sendMessage("You are opening a container silently."); - } else if (needsAny && plugin.notifyAnyChest()) { - player.sendMessage("You are opening a blocked container."); + if (any || silent) { + if (plugin.getAnySilentContainer().activateContainer(player, silent, event.getClickedBlock())) { + if (silent && plugin.notifySilentChest() && needsAny && plugin.notifyAnyChest()) { + plugin.sendSystemMessage(player, "messages.info.containerBlockedSilent"); + } else if (needsAny && plugin.notifyAnyChest()) { + plugin.sendSystemMessage(player, "messages.info.containerBlocked"); + } else if (silent && plugin.notifySilentChest()) { + plugin.sendSystemMessage(player, "messages.info.containerSilent"); + } } event.setCancelled(true); } diff --git a/common/src/main/java/com/lishid/openinv/util/Cache.java b/plugin/src/main/java/com/lishid/openinv/util/Cache.java similarity index 100% rename from common/src/main/java/com/lishid/openinv/util/Cache.java rename to plugin/src/main/java/com/lishid/openinv/util/Cache.java diff --git a/plugin/src/main/java/com/lishid/openinv/util/ConfigUpdater.java b/plugin/src/main/java/com/lishid/openinv/util/ConfigUpdater.java index c07beaa..082427b 100644 --- a/plugin/src/main/java/com/lishid/openinv/util/ConfigUpdater.java +++ b/plugin/src/main/java/com/lishid/openinv/util/ConfigUpdater.java @@ -59,6 +59,9 @@ public class ConfigUpdater { if (version < 3) { updateConfig2To3(); } + if (version < 4) { + updateConfig3To4(); + } new BukkitRunnable() { @Override @@ -71,6 +74,17 @@ public class ConfigUpdater { }.runTaskAsynchronously(plugin); } + private void updateConfig3To4() { + new BukkitRunnable() { + @Override + public void run() { + plugin.getConfig().set("notify", null); + plugin.getConfig().set("settings.locale", "en_US"); + plugin.getConfig().set("config-version", 4); + } + }.runTask(plugin); + } + private void updateConfig2To3() { new BukkitRunnable() { @Override diff --git a/common/src/main/java/com/lishid/openinv/util/InternalAccessor.java b/plugin/src/main/java/com/lishid/openinv/util/InternalAccessor.java similarity index 100% rename from common/src/main/java/com/lishid/openinv/util/InternalAccessor.java rename to plugin/src/main/java/com/lishid/openinv/util/InternalAccessor.java diff --git a/plugin/src/main/java/com/lishid/openinv/util/LanguageManager.java b/plugin/src/main/java/com/lishid/openinv/util/LanguageManager.java new file mode 100644 index 0000000..d0a51a5 --- /dev/null +++ b/plugin/src/main/java/com/lishid/openinv/util/LanguageManager.java @@ -0,0 +1,165 @@ +/* + * Copyright (C) 2011-2020 Jikoo. 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.util; + +import com.lishid.openinv.OpenInv; +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.logging.Level; +import org.bukkit.ChatColor; +import org.bukkit.configuration.file.YamlConfiguration; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * A simple language manager supporting both custom and bundled languages. + * + * @author Jikoo + */ +public class LanguageManager { + + private final OpenInv plugin; + private final String defaultLocale; + private Map locales; + + public LanguageManager(@NotNull OpenInv plugin, @NotNull String defaultLocale) { + this.plugin = plugin; + this.defaultLocale = defaultLocale; + this.locales = new HashMap<>(); + getOrLoadLocale(defaultLocale); + } + + private YamlConfiguration getOrLoadLocale(@NotNull String locale) { + YamlConfiguration loaded = locales.get(locale); + if (loaded != null) { + return loaded; + } + + InputStream resourceStream = plugin.getResource(locale + ".yml"); + YamlConfiguration localeConfigDefaults; + if (resourceStream == null) { + localeConfigDefaults = new YamlConfiguration(); + } else { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(resourceStream))) { + localeConfigDefaults = YamlConfiguration.loadConfiguration(reader); + } catch (IOException e) { + plugin.getLogger().log(Level.WARNING, "[LanguageManager] Unable to load resource " + locale + ".yml", e); + localeConfigDefaults = new YamlConfiguration(); + } + } + + File file = new File(plugin.getDataFolder(), locale + ".yml"); + YamlConfiguration localeConfig; + + if (!file.exists()) { + localeConfig = localeConfigDefaults; + try { + localeConfigDefaults.save(file); + } catch (IOException e) { + plugin.getLogger().log(Level.WARNING, "[LanguageManager] Unable to save resource " + locale + ".yml", e); + } + } else { + localeConfig = YamlConfiguration.loadConfiguration(file); + + // Add new language keys + List newKeys = new ArrayList<>(); + for (String key : localeConfigDefaults.getKeys(true)) { + if (localeConfigDefaults.isConfigurationSection(key)) { + continue; + } + + if (localeConfig.isSet(key)) { + continue; + } + + localeConfig.set(key, localeConfigDefaults.get(key)); + newKeys.add(key); + } + + if (!newKeys.isEmpty()) { + plugin.getLogger().info("[LanguageManager] Added new language keys: " + String.join(", ", newKeys)); + } + } + + if (!locale.equals(defaultLocale)) { + localeConfigDefaults = locales.get(defaultLocale); + + // Check for missing keys + List newKeys = new ArrayList<>(); + for (String key : localeConfigDefaults.getKeys(true)) { + if (localeConfigDefaults.isConfigurationSection(key)) { + continue; + } + + if (localeConfig.isSet(key)) { + continue; + } + + newKeys.add(key); + } + + if (!newKeys.isEmpty()) { + plugin.getLogger().info("[LanguageManager] Missing translations from " + locale + ".yml: " + String.join(", ", newKeys)); + } + + // Fall through to default locale + localeConfig.setDefaults(localeConfigDefaults); + } + + locales.put(locale, localeConfig); + return localeConfig; + } + + @Nullable + public String getValue(@NotNull String key, @Nullable String locale) { + String value = getOrLoadLocale(locale == null ? defaultLocale : locale.toLowerCase()).getString(key); + if (value == null || value.isEmpty()) { + return null; + } + + value = ChatColor.translateAlternateColorCodes('&', value); + + return value; + } + + @Nullable + public String getValue(@NotNull String key, @Nullable String locale, @NotNull String... replacements) { + if (replacements.length % 2 != 0) { + plugin.getLogger().log(Level.WARNING, "[LanguageManager] Replacement data is uneven", new Exception()); + } + + String value = getValue(key, locale); + + if (value == null) { + return null; + } + + for (int i = 0; i < replacements.length; i += 2) { + value = value.replace(replacements[i], replacements[i + 1]); + } + + return value; + } + +} diff --git a/common/src/main/java/com/lishid/openinv/util/Permissions.java b/plugin/src/main/java/com/lishid/openinv/util/Permissions.java similarity index 100% rename from common/src/main/java/com/lishid/openinv/util/Permissions.java rename to plugin/src/main/java/com/lishid/openinv/util/Permissions.java diff --git a/plugin/src/main/resources/config.yml b/plugin/src/main/resources/config.yml index 35f924c..d8bc7bb 100644 --- a/plugin/src/main/resources/config.yml +++ b/plugin/src/main/resources/config.yml @@ -1,6 +1,4 @@ -config-version: 3 -notify: - any-chest: true - silent-chest: true +config-version: 4 settings: disable-saving: false + locale: 'en_us' diff --git a/plugin/src/main/resources/en_us.yml b/plugin/src/main/resources/en_us.yml new file mode 100644 index 0000000..8ea3b42 --- /dev/null +++ b/plugin/src/main/resources/en_us.yml @@ -0,0 +1,28 @@ +messages: + error: + consoleUnsupported: 'You cannot use this command from console.' + lootNotGenerated: '&cLoot not generated! Please disable &b/silentcontainer&c.' + invalidMaterial: '&cInvalid material: "%target%"' + invalidNumber: '&cInvalid number: "%target%"' + invalidPlayer: '&cPlayer not found!' + permissionOpenSelf: '&cYou''re not allowed to open your own inventory.' + permissionEnderAll: '&cYou''re not allowed to access other players'' ender chests.' + permissionExempt: '&c%target%''s inventory is protected.' + permissionCrossWorld: '&c%target% is not in your world.' + commandException: '&cAn error occurred. Please check console for details.' + info: + containerBlocked: 'You are opening a blocked container.' + containerBlockedSilent: 'You are opening a blocked container silently.' + containerSilent: 'You are opening a container silently.' + settingState: '%setting%: %state%' + player: + noMatches: 'No players found with %target%.' + matches: 'Players holding %target%: %detail%' + container: + noMatches: 'No containers found with %target%.' + matches: 'Containers holding %target%: %detail%' + on: 'on' + off: 'off' +container: + player: '%player%''s Inventory' + enderchest: '%Player''s Ender Chest' diff --git a/plugin/src/main/resources/plugin.yml b/plugin/src/main/resources/plugin.yml index 598e14f..61606b4 100644 --- a/plugin/src/main/resources/plugin.yml +++ b/plugin/src/main/resources/plugin.yml @@ -5,7 +5,7 @@ author: lishid authors: [Jikoo, ShadowRanger] description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. -api-version: "1.13" +api-version: "1.14" permissions: OpenInv.any.default: @@ -24,7 +24,7 @@ permissions: OpenInv.silent: true OpenInv.anychest: true OpenInv.searchenchant: true - OpenInv.searchcontainer + OpenInv.searchcontainer: true commands: openinv: diff --git a/pom.xml b/pom.xml index 959b6c3..9e45336 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,6 @@ api - common plugin internal assembly -- 2.49.1 From dcdfac0d3b39501b312c5c03ea0111ffdff79641 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sat, 18 Apr 2020 08:04:38 -0400 Subject: [PATCH 204/253] Bump version to 4.1.0 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- internal/pom.xml | 2 +- internal/v1_14_R1/pom.xml | 4 ++-- internal/v1_15_R1/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- plugin/pom.xml | 4 ++-- pom.xml | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 8659df8..22aa3ce 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.9-SNAPSHOT + 4.1.0 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index c470621..18542bd 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.9-SNAPSHOT + 4.1.0 openinvassembly diff --git a/internal/pom.xml b/internal/pom.xml index 73cf7c1..de37d75 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 4.0.9-SNAPSHOT + 4.1.0 openinvinternal diff --git a/internal/v1_14_R1/pom.xml b/internal/v1_14_R1/pom.xml index 9a7fc9b..dd76b3f 100644 --- a/internal/v1_14_R1/pom.xml +++ b/internal/v1_14_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.0.9-SNAPSHOT + 4.1.0 openinvadapter1_14_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.0.9-SNAPSHOT + 4.1.0 diff --git a/internal/v1_15_R1/pom.xml b/internal/v1_15_R1/pom.xml index 4aef51f..051322c 100644 --- a/internal/v1_15_R1/pom.xml +++ b/internal/v1_15_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.0.9-SNAPSHOT + 4.1.0 openinvadapter1_15_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.0.9-SNAPSHOT + 4.1.0 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index c4e587c..94cf3e1 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.0.9-SNAPSHOT + 4.1.0 openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvplugincore - 4.0.9-SNAPSHOT + 4.1.0 diff --git a/plugin/pom.xml b/plugin/pom.xml index e695d91..772a4ec 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.0.9-SNAPSHOT + 4.1.0 openinvplugincore @@ -31,7 +31,7 @@ com.lishid openinvapi - 4.0.9-SNAPSHOT + 4.1.0 org.spigotmc diff --git a/pom.xml b/pom.xml index 9e45336..0ec04e3 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 4.0.9-SNAPSHOT + 4.1.0 pom -- 2.49.1 From 7210f9153ed3ec9cf66474f71737fab67b7eec5f Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sat, 18 Apr 2020 08:05:09 -0400 Subject: [PATCH 205/253] Bump version to 4.1.1-SNAPSHOT for development --- assembly/pom.xml | 2 +- internal/pom.xml | 2 +- internal/v1_14_R1/pom.xml | 4 ++-- internal/v1_15_R1/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- plugin/pom.xml | 4 ++-- pom.xml | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/assembly/pom.xml b/assembly/pom.xml index 18542bd..fcc3af3 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.0 + 4.1.1-SNAPSHOT openinvassembly diff --git a/internal/pom.xml b/internal/pom.xml index de37d75..ea9dc7f 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 4.1.0 + 4.1.1-SNAPSHOT openinvinternal diff --git a/internal/v1_14_R1/pom.xml b/internal/v1_14_R1/pom.xml index dd76b3f..733e46e 100644 --- a/internal/v1_14_R1/pom.xml +++ b/internal/v1_14_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.0 + 4.1.1-SNAPSHOT openinvadapter1_14_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.0 + 4.1.1-SNAPSHOT diff --git a/internal/v1_15_R1/pom.xml b/internal/v1_15_R1/pom.xml index 051322c..138e839 100644 --- a/internal/v1_15_R1/pom.xml +++ b/internal/v1_15_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.0 + 4.1.1-SNAPSHOT openinvadapter1_15_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.0 + 4.1.1-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 94cf3e1..4377cec 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.1.0 + 4.1.1-SNAPSHOT openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvplugincore - 4.1.0 + 4.1.1-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index 772a4ec..9f29b23 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.0 + 4.1.1-SNAPSHOT openinvplugincore @@ -31,7 +31,7 @@ com.lishid openinvapi - 4.1.0 + 4.1.1-SNAPSHOT org.spigotmc diff --git a/pom.xml b/pom.xml index 0ec04e3..517bd73 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 4.1.0 + 4.1.1-SNAPSHOT pom -- 2.49.1 From a1b2df74cc56e93f3f35e09b22f1530c67794740 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 19 Apr 2020 17:52:44 -0400 Subject: [PATCH 206/253] Save existing vehicles if we had to load player (#22) --- api/pom.xml | 2 +- .../internal/v1_14_R1/PlayerDataManager.java | 86 +++++++++++++++++- .../internal/v1_15_R1/PlayerDataManager.java | 89 ++++++++++++++++++- .../internal/v1_8_R3/PlayerDataManager.java | 87 +++++++++++++++++- .../main/java/com/lishid/openinv/OpenInv.java | 3 + .../openinv/internal/IPlayerDataManager.java | 8 ++ 6 files changed, 269 insertions(+), 6 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 22aa3ce..5149d68 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.0 + 4.1.1-SNAPSHOT openinvapi diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java index 5d6c9d7..96a5d33 100644 --- a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java +++ b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java @@ -20,18 +20,26 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.IPlayerDataManager; import com.lishid.openinv.internal.ISpecialInventory; import com.mojang.authlib.GameProfile; +import java.io.File; +import java.io.FileOutputStream; +import java.lang.reflect.Field; import net.minecraft.server.v1_14_R1.ChatComponentText; import net.minecraft.server.v1_14_R1.ChatMessageType; import net.minecraft.server.v1_14_R1.Container; import net.minecraft.server.v1_14_R1.Containers; import net.minecraft.server.v1_14_R1.DimensionManager; +import net.minecraft.server.v1_14_R1.Entity; import net.minecraft.server.v1_14_R1.EntityHuman; import net.minecraft.server.v1_14_R1.EntityPlayer; import net.minecraft.server.v1_14_R1.MinecraftServer; +import net.minecraft.server.v1_14_R1.NBTCompressedStreamTools; +import net.minecraft.server.v1_14_R1.NBTTagCompound; import net.minecraft.server.v1_14_R1.PacketPlayOutChat; import net.minecraft.server.v1_14_R1.PacketPlayOutOpenWindow; import net.minecraft.server.v1_14_R1.PlayerInteractManager; import net.minecraft.server.v1_14_R1.PlayerInventory; +import net.minecraft.server.v1_14_R1.WorldNBTStorage; +import org.apache.logging.log4j.LogManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.Server; @@ -49,6 +57,18 @@ import org.jetbrains.annotations.Nullable; public class PlayerDataManager implements IPlayerDataManager { + private Field bukkitEntity; + + public PlayerDataManager() { + try { + bukkitEntity = Entity.class.getDeclaredField("bukkitEntity"); + } catch (NoSuchFieldException e) { + System.out.println("Unable to obtain field to inject custom save process - players' mounts may be deleted when loaded."); + e.printStackTrace(); + bukkitEntity = null; + } + } + @NotNull public static EntityPlayer getHandle(final Player player) { if (player instanceof CraftPlayer) { @@ -78,11 +98,18 @@ public class PlayerDataManager implements IPlayerDataManager { } // Create a profile and entity to load the player data - GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); + GameProfile profile = new GameProfile(offline.getUniqueId(), + offline.getName() != null ? offline.getName() : offline.getUniqueId().toString()); MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(DimensionManager.OVERWORLD), profile, new PlayerInteractManager(server.getWorldServer(DimensionManager.OVERWORLD))); + try { + injectPlayer(entity); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + // Get the bukkit entity Player target = entity.getBukkitEntity(); if (target != null) { @@ -93,6 +120,63 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } + void injectPlayer(EntityPlayer player) throws IllegalAccessException { + if (bukkitEntity == null) { + return; + } + + bukkitEntity.setAccessible(true); + + bukkitEntity.set(player, new CraftPlayer(player.server.server, player) { + @Override + public void saveData() { + super.saveData(); + // See net.minecraft.server.WorldNBTStorage#save(EntityPlayer) + try { + WorldNBTStorage worldNBTStorage = (WorldNBTStorage) player.server.getPlayerList().playerFileData; + + NBTTagCompound playerData = player.save(new NBTTagCompound()); + + if (!isOnline()) { + // Special case: save old vehicle data + NBTTagCompound oldData = worldNBTStorage.load(player); + + if (oldData != null && oldData.hasKeyOfType("RootVehicle", 10)) { + // See net.minecraft.server.PlayerList#a(NetworkManager, EntityPlayer) and net.minecraft.server.EntityPlayer#b(NBTTagCompound) + playerData.set("RootVehicle", oldData.getCompound("RootVehicle")); + } + } + + File file = new File(worldNBTStorage.getPlayerDir(), player.getUniqueIDString() + ".dat.tmp"); + File file1 = new File(worldNBTStorage.getPlayerDir(), player.getUniqueIDString() + ".dat"); + + NBTCompressedStreamTools.a(playerData, new FileOutputStream(file)); + + if (file1.exists()) { + file1.delete(); + } + + file.renameTo(file1); + } catch (Exception e) { + LogManager.getLogger().warn("Failed to save player data for {}", player.getDisplayName().getString()); + } + } + }); + } + + @NotNull + @Override + public Player inject(@NotNull Player player) { + try { + EntityPlayer nmsPlayer = getHandle(player); + injectPlayer(nmsPlayer); + return nmsPlayer.getBukkitEntity(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + return player; + } + } + @Nullable @Override public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java index 25e6deb..854a7b7 100644 --- a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java +++ b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java @@ -20,18 +20,26 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.IPlayerDataManager; import com.lishid.openinv.internal.ISpecialInventory; import com.mojang.authlib.GameProfile; +import java.io.File; +import java.io.FileOutputStream; +import java.lang.reflect.Field; import net.minecraft.server.v1_15_R1.ChatComponentText; import net.minecraft.server.v1_15_R1.ChatMessageType; import net.minecraft.server.v1_15_R1.Container; import net.minecraft.server.v1_15_R1.Containers; import net.minecraft.server.v1_15_R1.DimensionManager; +import net.minecraft.server.v1_15_R1.Entity; import net.minecraft.server.v1_15_R1.EntityHuman; import net.minecraft.server.v1_15_R1.EntityPlayer; import net.minecraft.server.v1_15_R1.MinecraftServer; +import net.minecraft.server.v1_15_R1.NBTCompressedStreamTools; +import net.minecraft.server.v1_15_R1.NBTTagCompound; import net.minecraft.server.v1_15_R1.PacketPlayOutChat; import net.minecraft.server.v1_15_R1.PacketPlayOutOpenWindow; import net.minecraft.server.v1_15_R1.PlayerInteractManager; import net.minecraft.server.v1_15_R1.PlayerInventory; +import net.minecraft.server.v1_15_R1.WorldNBTStorage; +import org.apache.logging.log4j.LogManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.Server; @@ -49,6 +57,18 @@ import org.jetbrains.annotations.Nullable; public class PlayerDataManager implements IPlayerDataManager { + private Field bukkitEntity; + + public PlayerDataManager() { + try { + bukkitEntity = Entity.class.getDeclaredField("bukkitEntity"); + } catch (NoSuchFieldException e) { + System.out.println("Unable to obtain field to inject custom save process - players' mounts may be deleted when loaded."); + e.printStackTrace(); + bukkitEntity = null; + } + } + @NotNull public static EntityPlayer getHandle(final Player player) { if (player instanceof CraftPlayer) { @@ -79,11 +99,19 @@ public class PlayerDataManager implements IPlayerDataManager { } // Create a profile and entity to load the player data - GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); + // See net.minecraft.server.PlayerList#attemptLogin + GameProfile profile = new GameProfile(offline.getUniqueId(), + offline.getName() != null ? offline.getName() : offline.getUniqueId().toString()); MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(DimensionManager.OVERWORLD), profile, new PlayerInteractManager(server.getWorldServer(DimensionManager.OVERWORLD))); + try { + injectPlayer(entity); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + // Get the bukkit entity Player target = entity.getBukkitEntity(); if (target != null) { @@ -94,6 +122,63 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } + void injectPlayer(EntityPlayer player) throws IllegalAccessException { + if (bukkitEntity == null) { + return; + } + + bukkitEntity.setAccessible(true); + + bukkitEntity.set(player, new CraftPlayer(player.server.server, player) { + @Override + public void saveData() { + super.saveData(); + // See net.minecraft.server.WorldNBTStorage#save(EntityPlayer) + try { + WorldNBTStorage worldNBTStorage = (WorldNBTStorage) player.server.getPlayerList().playerFileData; + + NBTTagCompound playerData = player.save(new NBTTagCompound()); + + if (!isOnline()) { + // Special case: save old vehicle data + NBTTagCompound oldData = worldNBTStorage.load(player); + + if (oldData != null && oldData.hasKeyOfType("RootVehicle", 10)) { + // See net.minecraft.server.PlayerList#a(NetworkManager, EntityPlayer) and net.minecraft.server.EntityPlayer#b(NBTTagCompound) + playerData.set("RootVehicle", oldData.getCompound("RootVehicle")); + } + } + + File file = new File(worldNBTStorage.getPlayerDir(), player.getUniqueIDString() + ".dat.tmp"); + File file1 = new File(worldNBTStorage.getPlayerDir(), player.getUniqueIDString() + ".dat"); + + NBTCompressedStreamTools.a(playerData, new FileOutputStream(file)); + + if (file1.exists()) { + file1.delete(); + } + + file.renameTo(file1); + } catch (Exception e) { + LogManager.getLogger().warn("Failed to save player data for {}", player.getDisplayName().getString()); + } + } + }); + } + + @NotNull + @Override + public Player inject(@NotNull Player player) { + try { + EntityPlayer nmsPlayer = getHandle(player); + injectPlayer(nmsPlayer); + return nmsPlayer.getBukkitEntity(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + return player; + } + } + @Nullable @Override public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { @@ -111,8 +196,6 @@ public class PlayerDataManager implements IPlayerDataManager { if (title == null) { title = "%player%'s Ender Chest"; } - //noinspection ConstantConditions - owner name can be null if loaded by UUID - title = title.replace("%player%", owner.getName() != null ? owner.getName() : owner.getUniqueId().toString()); } else if (inventory instanceof SpecialPlayerInventory) { EntityHuman owner = ((PlayerInventory) inventory).player; title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.player"); diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java index 7153515..f38240d 100644 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java +++ b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java @@ -19,11 +19,19 @@ package com.lishid.openinv.internal.v1_8_R3; import com.lishid.openinv.internal.IPlayerDataManager; import com.lishid.openinv.internal.ISpecialInventory; import com.mojang.authlib.GameProfile; +import java.io.File; +import java.io.FileOutputStream; +import java.lang.reflect.Field; import net.minecraft.server.v1_8_R3.ChatComponentText; +import net.minecraft.server.v1_8_R3.Entity; import net.minecraft.server.v1_8_R3.EntityPlayer; import net.minecraft.server.v1_8_R3.MinecraftServer; +import net.minecraft.server.v1_8_R3.NBTCompressedStreamTools; +import net.minecraft.server.v1_8_R3.NBTTagCompound; import net.minecraft.server.v1_8_R3.PacketPlayOutChat; import net.minecraft.server.v1_8_R3.PlayerInteractManager; +import net.minecraft.server.v1_8_R3.WorldNBTStorage; +import org.apache.logging.log4j.LogManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.Server; @@ -36,6 +44,18 @@ import org.jetbrains.annotations.Nullable; public class PlayerDataManager implements IPlayerDataManager { + private Field bukkitEntity; + + public PlayerDataManager() { + try { + bukkitEntity = Entity.class.getDeclaredField("bukkitEntity"); + } catch (NoSuchFieldException e) { + System.out.println("Unable to obtain field to inject custom save process - players' mounts may be deleted when loaded."); + e.printStackTrace(); + bukkitEntity = null; + } + } + @NotNull public static EntityPlayer getHandle(Player player) { if (player instanceof CraftPlayer) { @@ -66,11 +86,18 @@ public class PlayerDataManager implements IPlayerDataManager { } // Create a profile and entity to load the player data - GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName()); + GameProfile profile = new GameProfile(offline.getUniqueId(), + offline.getName() != null ? offline.getName() : offline.getUniqueId().toString()); MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, new PlayerInteractManager(server.getWorldServer(0))); + try { + injectPlayer(entity); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + // Get the bukkit entity Player target = entity.getBukkitEntity(); if (target != null) { @@ -81,6 +108,64 @@ public class PlayerDataManager implements IPlayerDataManager { return target; } + void injectPlayer(EntityPlayer player) throws IllegalAccessException { + if (bukkitEntity == null) { + return; + } + + bukkitEntity.setAccessible(true); + + bukkitEntity.set(player, new CraftPlayer(player.server.server, player) { + @Override + public void saveData() { + super.saveData(); + // See net.minecraft.server.WorldNBTStorage#save(EntityHuman) + try { + WorldNBTStorage worldNBTStorage = (WorldNBTStorage) player.server.getPlayerList().playerFileData; + + NBTTagCompound playerData = new NBTTagCompound(); + player.e(playerData); + + if (!isOnline()) { + // Special case: save old vehicle data + NBTTagCompound oldData = worldNBTStorage.load(player); + + if (oldData != null && oldData.hasKeyOfType("Riding", 10)) { + // See net.minecraft.server.PlayerList#a(NetworkManager, EntityPlayer) and net.minecraft.server.EntityPlayer#b(NBTTagCompound) + playerData.set("Riding", oldData.getCompound("Riding")); + } + } + + File file = new File(worldNBTStorage.getPlayerDir(), player.getUniqueID().toString() + ".dat.tmp"); + File file1 = new File(worldNBTStorage.getPlayerDir(), player.getUniqueID().toString() + ".dat"); + + NBTCompressedStreamTools.a(playerData, new FileOutputStream(file)); + + if (file1.exists()) { + file1.delete(); + } + + file.renameTo(file1); + } catch (Exception e) { + LogManager.getLogger().warn("Failed to save player data for {}", player.getName()); + } + } + }); + } + + @NotNull + @Override + public Player inject(@NotNull Player player) { + try { + EntityPlayer nmsPlayer = getHandle(player); + injectPlayer(nmsPlayer); + return nmsPlayer.getBukkitEntity(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + return player; + } + } + @Nullable @Override public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/src/main/java/com/lishid/openinv/OpenInv.java index 151ad67..4f95b7b 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/src/main/java/com/lishid/openinv/OpenInv.java @@ -465,6 +465,9 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return; } + // Replace stored player with our own version + this.playerCache.put(key, this.accessor.getPlayerDataManager().inject(player)); + if (this.inventories.containsKey(key)) { this.inventories.get(key).setPlayerOffline(); } diff --git a/plugin/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java b/plugin/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java index a801490..92c86af 100644 --- a/plugin/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java +++ b/plugin/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java @@ -35,6 +35,14 @@ public interface IPlayerDataManager { @Nullable Player loadPlayer(@NotNull OfflinePlayer offline); + /** + * Creates a new Player from an existing one that will function slightly better offline. + * + * @return the Player + */ + @NotNull + Player inject(@NotNull Player player); + /** * Opens an ISpecialInventory for a Player. * -- 2.49.1 From 34e7252d77b15b111db4f2e91ed01f546ded229f Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 19 Apr 2020 18:04:10 -0400 Subject: [PATCH 207/253] Correct lang + replacement mistake with inventory names --- .../openinv/internal/v1_14_R1/PlayerDataManager.java | 11 ++++------- .../openinv/internal/v1_15_R1/PlayerDataManager.java | 9 ++++----- plugin/src/main/java/com/lishid/openinv/OpenInv.java | 4 ++++ plugin/src/main/resources/en_us.yml | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java index 96a5d33..66bbcd9 100644 --- a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java +++ b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java @@ -190,19 +190,16 @@ public class PlayerDataManager implements IPlayerDataManager { String title; if (inventory instanceof SpecialEnderChest) { HumanEntity owner = (HumanEntity) ((SpecialEnderChest) inventory).getBukkitOwner(); - title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.enderchest"); + title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.enderchest", "%player%", owner.getName()); if (title == null) { - title = "%player%'s Ender Chest"; + title = owner.getName() + "'s Ender Chest"; } - //noinspection ConstantConditions - owner name can be null if loaded by UUID - title = title.replace("%player%", owner.getName() != null ? owner.getName() : owner.getUniqueId().toString()); } else if (inventory instanceof SpecialPlayerInventory) { EntityHuman owner = ((PlayerInventory) inventory).player; - title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.player"); + title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.player", "%player%", owner.getName()); if (title == null) { - title = "%player%'s Inventory"; + title = owner.getName() + "'s Inventory"; } - title = title.replace("%player%", owner.getName() != null ? owner.getName() : owner.getUniqueID().toString()); } else { return player.openInventory(inventory.getBukkitInventory()); } diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java index 854a7b7..23876cf 100644 --- a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java +++ b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java @@ -192,17 +192,16 @@ public class PlayerDataManager implements IPlayerDataManager { String title; if (inventory instanceof SpecialEnderChest) { HumanEntity owner = (HumanEntity) ((SpecialEnderChest) inventory).getBukkitOwner(); - title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.enderchest"); + title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.enderchest", "%player%", owner.getName()); if (title == null) { - title = "%player%'s Ender Chest"; + title = owner.getName() + "'s Ender Chest"; } } else if (inventory instanceof SpecialPlayerInventory) { EntityHuman owner = ((PlayerInventory) inventory).player; - title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.player"); + title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.player", "%player%", owner.getName()); if (title == null) { - title = "%player%'s Inventory"; + title = owner.getName() + "'s Inventory"; } - title = title.replace("%player%", owner.getName() != null ? owner.getName() : owner.getUniqueID().toString()); } else { return player.openInventory(inventory.getBukkitInventory()); } diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/src/main/java/com/lishid/openinv/OpenInv.java index 4f95b7b..5b58523 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/src/main/java/com/lishid/openinv/OpenInv.java @@ -313,6 +313,10 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return this.languageManager.getValue(key, getLocale(sender)); } + public @Nullable String getLocalizedMessage(@NotNull CommandSender sender, @NotNull String key, String... replacements) { + return this.languageManager.getValue(key, getLocale(sender), replacements); + } + @Nullable private String getLocale(@NotNull CommandSender sender) { if (sender instanceof Player) { diff --git a/plugin/src/main/resources/en_us.yml b/plugin/src/main/resources/en_us.yml index 8ea3b42..6d5ef70 100644 --- a/plugin/src/main/resources/en_us.yml +++ b/plugin/src/main/resources/en_us.yml @@ -25,4 +25,4 @@ messages: off: 'off' container: player: '%player%''s Inventory' - enderchest: '%Player''s Ender Chest' + enderchest: '%player%''s Ender Chest' -- 2.49.1 From 723381cb2b5eddda18067b4a121ab5b5afea152b Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 22 Apr 2020 12:07:19 -0400 Subject: [PATCH 208/253] Fix IndexOutOfBounds on no args Closes #128 --- .../lishid/openinv/commands/SearchInvCommand.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/plugin/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java index 86d20d2..c471b30 100644 --- a/plugin/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java +++ b/plugin/src/main/java/com/lishid/openinv/commands/SearchInvCommand.java @@ -40,12 +40,18 @@ public class SearchInvCommand implements TabExecutor { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { Material material = null; - int count = 1; if (args.length >= 1) { material = Material.getMaterial(args[0].toUpperCase()); } + if (material == null) { + plugin.sendMessage(sender, "messages.error.invalidMaterial", "%target%", args.length > 0 ? args[0] : "null"); + return false; + } + + int count = 1; + if (args.length >= 2) { try { count = Integer.parseInt(args[1]); @@ -55,11 +61,6 @@ public class SearchInvCommand implements TabExecutor { } } - if (material == null) { - plugin.sendMessage(sender, "messages.error.invalidMaterial", "%target%", args[0]); - return false; - } - StringBuilder players = new StringBuilder(); boolean searchInv = command.getName().equals("searchinv"); for (Player player : plugin.getServer().getOnlinePlayers()) { -- 2.49.1 From 67131ab9f952c67547ee0be92b56462b0803fc9a Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 24 Apr 2020 10:47:51 -0400 Subject: [PATCH 209/253] Save after adding new keys --- .../main/java/com/lishid/openinv/util/LanguageManager.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/plugin/src/main/java/com/lishid/openinv/util/LanguageManager.java b/plugin/src/main/java/com/lishid/openinv/util/LanguageManager.java index d0a51a5..033c71b 100644 --- a/plugin/src/main/java/com/lishid/openinv/util/LanguageManager.java +++ b/plugin/src/main/java/com/lishid/openinv/util/LanguageManager.java @@ -99,6 +99,11 @@ public class LanguageManager { if (!newKeys.isEmpty()) { plugin.getLogger().info("[LanguageManager] Added new language keys: " + String.join(", ", newKeys)); + try { + localeConfig.save(file); + } catch (IOException e) { + plugin.getLogger().log(Level.WARNING, "[LanguageManager] Unable to save resource " + locale + ".yml", e); + } } } -- 2.49.1 From 34199d12a45b29ef174a4ff514a39dbaf706b8f7 Mon Sep 17 00:00:00 2001 From: 129fc5e32c631b5007cb2cd8d45d416002b42bab <16278483+DarkCeptor44@users.noreply.github.com> Date: Thu, 30 Apr 2020 16:31:58 -0300 Subject: [PATCH 210/253] Add localization for Brazilian Portuguese --- plugin/src/main/resources/pt_br.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 plugin/src/main/resources/pt_br.yml diff --git a/plugin/src/main/resources/pt_br.yml b/plugin/src/main/resources/pt_br.yml new file mode 100644 index 0000000..4dea299 --- /dev/null +++ b/plugin/src/main/resources/pt_br.yml @@ -0,0 +1,28 @@ +messages: + error: + consoleUnsupported: 'Voce nao consegue usar esse comando pelo console.' + lootNotGenerated: '&cPilhagem nao gerada! Por favor desabilite &b/silentcontainer&c.' + invalidMaterial: '&cMaterial invalido: "%target%"' + invalidNumber: '&cNumero invalido: "%target%"' + invalidPlayer: '&cJogador nao encontrado!' + permissionOpenSelf: '&cVoce nao pode abrir seu proprio inventario.' + permissionEnderAll: '&cVoce nao tem permissao para abrir baus de ender de outros jogadores.' + permissionExempt: '&cO inventario de %target% e protegido.' + permissionCrossWorld: '&c%target% nao esta no seu mundo.' + commandException: '&cUm erro ocorreu. Por favor cheque o console para detalhes.' + info: + containerBlocked: 'Voce esta abrindo um recipiente bloqueado.' + containerBlockedSilent: 'Voce esta abrindo um recipiente bloqueado silenciosamente.' + containerSilent: 'Voce esta abrindo um recipiente silenciosamente.' + settingState: '%setting%: %state%' + player: + noMatches: 'Nenhum jogador encontrado com %target%.' + matches: 'Jogadores segurando %target%: %detail%' + container: + noMatches: 'Nenhum recipiente encontrado com %target%.' + matches: 'Recipientes contendo %target%: %detail%' + on: 'ligado' + off: 'desligado' +container: + player: 'Inventario de %player%' + enderchest: 'Bau de Ender de %player%' -- 2.49.1 From 5405b7d7b99f373358a106fafa0736ffe8eb7a99 Mon Sep 17 00:00:00 2001 From: Phoenix616 Date: Fri, 29 May 2020 00:44:34 +0100 Subject: [PATCH 211/253] Add permission for online/offline opening (Resolves #129) --- .../lishid/openinv/commands/OpenInvCommand.java | 16 +++++++++++++--- .../com/lishid/openinv/util/Permissions.java | 4 +++- plugin/src/main/resources/en_us.yml | 2 ++ plugin/src/main/resources/plugin.yml | 2 ++ plugin/src/main/resources/pt_br.yml | 2 ++ 5 files changed, 22 insertions(+), 4 deletions(-) diff --git a/plugin/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java index f8246c5..4571df8 100644 --- a/plugin/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java +++ b/plugin/src/main/java/com/lishid/openinv/commands/OpenInvCommand.java @@ -104,10 +104,20 @@ public class OpenInvCommand implements TabExecutor { boolean online = target.isOnline(); if (!online) { - // Try loading the player's data - onlineTarget = this.plugin.loadPlayer(target); + if (Permissions.OPENOFFLINE.hasPermission(player)) { + // Try loading the player's data + onlineTarget = this.plugin.loadPlayer(target); + } else { + plugin.sendMessage(player, "messages.error.permissionPlayerOffline"); + return; + } } else { - onlineTarget = target.getPlayer(); + if (Permissions.OPENONLINE.hasPermission(player)) { + onlineTarget = target.getPlayer(); + } else { + plugin.sendMessage(player, "messages.error.permissionPlayerOnline"); + return; + } } if (onlineTarget == null) { diff --git a/plugin/src/main/java/com/lishid/openinv/util/Permissions.java b/plugin/src/main/java/com/lishid/openinv/util/Permissions.java index e70ccca..97f695d 100644 --- a/plugin/src/main/java/com/lishid/openinv/util/Permissions.java +++ b/plugin/src/main/java/com/lishid/openinv/util/Permissions.java @@ -33,7 +33,9 @@ public enum Permissions { SEARCH("search"), EDITINV("editinv"), EDITENDER("editender"), - OPENSELF("openself"); + OPENSELF("openself"), + OPENONLINE("openonline"), + OPENOFFLINE("openoffline"); private final String permission; diff --git a/plugin/src/main/resources/en_us.yml b/plugin/src/main/resources/en_us.yml index 6d5ef70..58e66f2 100644 --- a/plugin/src/main/resources/en_us.yml +++ b/plugin/src/main/resources/en_us.yml @@ -9,6 +9,8 @@ messages: permissionEnderAll: '&cYou''re not allowed to access other players'' ender chests.' permissionExempt: '&c%target%''s inventory is protected.' permissionCrossWorld: '&c%target% is not in your world.' + permissionPlayerOnline: '&cYou''re not allowed to open the inventory of online players.' + permissionPlayerOffline: '&cYou''re not allowed to open the inventory of offline players.' commandException: '&cAn error occurred. Please check console for details.' info: containerBlocked: 'You are opening a blocked container.' diff --git a/plugin/src/main/resources/plugin.yml b/plugin/src/main/resources/plugin.yml index 61606b4..e3b52b8 100644 --- a/plugin/src/main/resources/plugin.yml +++ b/plugin/src/main/resources/plugin.yml @@ -25,6 +25,8 @@ permissions: OpenInv.anychest: true OpenInv.searchenchant: true OpenInv.searchcontainer: true + OpenInv.openonline: true + OpenInv.openoffline: true commands: openinv: diff --git a/plugin/src/main/resources/pt_br.yml b/plugin/src/main/resources/pt_br.yml index 4dea299..cd26a2d 100644 --- a/plugin/src/main/resources/pt_br.yml +++ b/plugin/src/main/resources/pt_br.yml @@ -9,6 +9,8 @@ messages: permissionEnderAll: '&cVoce nao tem permissao para abrir baus de ender de outros jogadores.' permissionExempt: '&cO inventario de %target% e protegido.' permissionCrossWorld: '&c%target% nao esta no seu mundo.' + permissionPlayerOnline: '&cVoce nao tem permissao para abrir o inventario de jogadores online.' + permissionPlayerOffline: '&cVoce nao tem permissao para abrir o inventario de jogadores offline.' commandException: '&cUm erro ocorreu. Por favor cheque o console para detalhes.' info: containerBlocked: 'Voce esta abrindo um recipiente bloqueado.' -- 2.49.1 From 4499bb54536358b4ab68efe2940cda2c22578561 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 29 May 2020 10:22:40 -0400 Subject: [PATCH 212/253] Don't break behavior on existing setups Permission to use /openinv and /openender will grant online/offline access so that existing permissions configurations do not have to be redone. Users looking to implement the new permissions will need to deny them. --- plugin/src/main/resources/plugin.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/plugin/src/main/resources/plugin.yml b/plugin/src/main/resources/plugin.yml index e3b52b8..037e634 100644 --- a/plugin/src/main/resources/plugin.yml +++ b/plugin/src/main/resources/plugin.yml @@ -27,6 +27,16 @@ permissions: OpenInv.searchcontainer: true OpenInv.openonline: true OpenInv.openoffline: true + OpenInv.openinv: + default: op + children: + OpenInv.openonline: true + OpenInv.openoffline: true + OpenInv.openender: + default: op + children: + OpenInv.openonline: true + OpenInv.openoffline: true commands: openinv: -- 2.49.1 From abe8fccdb5989a0ce6299bd94d9600b9c6348e57 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 29 May 2020 10:27:50 -0400 Subject: [PATCH 213/253] Document new nodes --- README.MD | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.MD b/README.MD index 33b20e4..d9a590d 100644 --- a/README.MD +++ b/README.MD @@ -80,6 +80,14 @@ OpenInv is a [Bukkit plugin](https://dev.bukkit.org/bukkit-plugins/openinv/) whi OpenInv.editinv Required to make changes to open inventories. + + OpenInv.openonline + Allows users to open online players' inventories. For compatibility reasons this is granted by the nodes OpenInv.openinv and OpenInv.openender. + + + OpenInv.openoffline + Allows users to open offline players' inventories. For compatibility reasons this is granted by the nodes OpenInv.openinv and OpenInv.openender. + OpenInv.openender Required to use /openender. -- 2.49.1 From 9cf471281379725c70e49a9d60f2d87a1d1fa081 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 29 May 2020 10:32:03 -0400 Subject: [PATCH 214/253] Bump version to 4.1.1 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- internal/pom.xml | 2 +- internal/v1_14_R1/pom.xml | 4 ++-- internal/v1_15_R1/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- plugin/pom.xml | 4 ++-- pom.xml | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 5149d68..97eb5c9 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.1-SNAPSHOT + 4.1.1 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index fcc3af3..139e012 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.1-SNAPSHOT + 4.1.1 openinvassembly diff --git a/internal/pom.xml b/internal/pom.xml index ea9dc7f..97e3ad2 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 4.1.1-SNAPSHOT + 4.1.1 openinvinternal diff --git a/internal/v1_14_R1/pom.xml b/internal/v1_14_R1/pom.xml index 733e46e..4d48d09 100644 --- a/internal/v1_14_R1/pom.xml +++ b/internal/v1_14_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.1-SNAPSHOT + 4.1.1 openinvadapter1_14_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.1-SNAPSHOT + 4.1.1 diff --git a/internal/v1_15_R1/pom.xml b/internal/v1_15_R1/pom.xml index 138e839..883856d 100644 --- a/internal/v1_15_R1/pom.xml +++ b/internal/v1_15_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.1-SNAPSHOT + 4.1.1 openinvadapter1_15_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.1-SNAPSHOT + 4.1.1 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 4377cec..97a5eeb 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.1.1-SNAPSHOT + 4.1.1 openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvplugincore - 4.1.1-SNAPSHOT + 4.1.1 diff --git a/plugin/pom.xml b/plugin/pom.xml index 9f29b23..dda0e9e 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.1-SNAPSHOT + 4.1.1 openinvplugincore @@ -31,7 +31,7 @@ com.lishid openinvapi - 4.1.1-SNAPSHOT + 4.1.1 org.spigotmc diff --git a/pom.xml b/pom.xml index 517bd73..9667c8e 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 4.1.1-SNAPSHOT + 4.1.1 pom -- 2.49.1 From 53701da34fff2571d1937849afea9bc22aaa45c7 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Fri, 29 May 2020 10:32:32 -0400 Subject: [PATCH 215/253] Bump version to 4.1.2-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- internal/pom.xml | 2 +- internal/v1_14_R1/pom.xml | 4 ++-- internal/v1_15_R1/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- plugin/pom.xml | 4 ++-- pom.xml | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 97eb5c9..59e057a 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.1 + 4.1.2-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 139e012..f811edb 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.1 + 4.1.2-SNAPSHOT openinvassembly diff --git a/internal/pom.xml b/internal/pom.xml index 97e3ad2..ce9cc25 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 4.1.1 + 4.1.2-SNAPSHOT openinvinternal diff --git a/internal/v1_14_R1/pom.xml b/internal/v1_14_R1/pom.xml index 4d48d09..52f349d 100644 --- a/internal/v1_14_R1/pom.xml +++ b/internal/v1_14_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.1 + 4.1.2-SNAPSHOT openinvadapter1_14_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.1 + 4.1.2-SNAPSHOT diff --git a/internal/v1_15_R1/pom.xml b/internal/v1_15_R1/pom.xml index 883856d..be92964 100644 --- a/internal/v1_15_R1/pom.xml +++ b/internal/v1_15_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.1 + 4.1.2-SNAPSHOT openinvadapter1_15_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.1 + 4.1.2-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 97a5eeb..87a6621 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.1.1 + 4.1.2-SNAPSHOT openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvplugincore - 4.1.1 + 4.1.2-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index dda0e9e..a9656d2 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.1 + 4.1.2-SNAPSHOT openinvplugincore @@ -31,7 +31,7 @@ com.lishid openinvapi - 4.1.1 + 4.1.2-SNAPSHOT org.spigotmc diff --git a/pom.xml b/pom.xml index 9667c8e..ea30078 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 4.1.1 + 4.1.2-SNAPSHOT pom -- 2.49.1 From 80661b946571b78effd1e89c62ba83f55169bca1 Mon Sep 17 00:00:00 2001 From: N0tMyFaultOG Date: Tue, 2 Jun 2020 15:45:44 +0200 Subject: [PATCH 216/253] Add german translation --- plugin/src/main/resources/de_de.yml | 30 +++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 plugin/src/main/resources/de_de.yml diff --git a/plugin/src/main/resources/de_de.yml b/plugin/src/main/resources/de_de.yml new file mode 100644 index 0000000..0be7b79 --- /dev/null +++ b/plugin/src/main/resources/de_de.yml @@ -0,0 +1,30 @@ +messages: + error: + consoleUnsupported: 'Due kannst diesen Befehl nicht von der Konsole ausführen.' + lootNotGenerated: '&cBeute noch nicht erstellt! Bitte schalte &b/silentcontainer&c aus.' + invalidMaterial: '&cUngültiges Material: "%target%"' + invalidNumber: '&cUngültige Nummer: "%target%"' + invalidPlayer: '&cSpieler nicht gefunden.' + permissionOpenSelf: '&cDu darfst dein eigenes Inventar nicht öffnen.' + permissionEnderAll: '&cDu darfst die Endertruhen von anderen Spielern nicht öffnen.' + permissionExempt: '&c%target%''s Inventar ist geschützt.' + permissionCrossWorld: '&c%target% ist nicht in der selben Welt wie du.' + permissionPlayerOnline: '&cDu darfst keine Inventare von Spielern öffnen, die online sind.' + permissionPlayerOffline: '&cDu darfst keine Inventare von Spielern öffnen, die offline sind.' + commandException: '&cAn error occurred. Please check console for details.' + info: + containerBlocked: 'Du öffnest einen gesperrten Container.' + containerBlockedSilent: 'Du öffnest einen gesperrten Container lautlos.' + containerSilent: 'Du öffnest einen Container lautlos.' + settingState: '%setting%: %state%' + player: + noMatches: 'Keine Spieler mit %target% gefunden.' + matches: 'Spieler hält %target%: %detail%' + container: + noMatches: 'Keine Container mit %target% gefunden.' + matches: 'Container hat %target%: %detail%' + on: 'an' + off: 'aus' +container: + player: '%player%''s Inventar' + enderchest: '%player%''s Endertruhe' -- 2.49.1 From 2561e75ae5026f216090d5765871a32abb700495 Mon Sep 17 00:00:00 2001 From: NotMyFault Date: Wed, 3 Jun 2020 00:06:24 +0200 Subject: [PATCH 217/253] Fix typo --- plugin/src/main/resources/de_de.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/src/main/resources/de_de.yml b/plugin/src/main/resources/de_de.yml index 0be7b79..ea1d0dc 100644 --- a/plugin/src/main/resources/de_de.yml +++ b/plugin/src/main/resources/de_de.yml @@ -1,6 +1,6 @@ messages: error: - consoleUnsupported: 'Due kannst diesen Befehl nicht von der Konsole ausführen.' + consoleUnsupported: 'Du kannst diesen Befehl nicht von der Konsole ausführen.' lootNotGenerated: '&cBeute noch nicht erstellt! Bitte schalte &b/silentcontainer&c aus.' invalidMaterial: '&cUngültiges Material: "%target%"' invalidNumber: '&cUngültige Nummer: "%target%"' -- 2.49.1 From 1228fc2de2bba0fd3e6086a9826469ccd4e6846f Mon Sep 17 00:00:00 2001 From: Nathaniel Freeman Date: Tue, 23 Jun 2020 17:03:25 +0200 Subject: [PATCH 218/253] es_ES translation --- plugin/src/main/resources/es_es.yml | 31 +++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 plugin/src/main/resources/es_es.yml diff --git a/plugin/src/main/resources/es_es.yml b/plugin/src/main/resources/es_es.yml new file mode 100644 index 0000000..41541fa --- /dev/null +++ b/plugin/src/main/resources/es_es.yml @@ -0,0 +1,31 @@ +messages: + error: + consoleUnsupported: 'No puedes usar este comando desde la consola.' + lootNotGenerated: '&c¡Botín no generado! Desactiva &b/silentcontainer&c.' + invalidMaterial: '&cMaterial no válido: "%target%"' + invalidNumber: '&cNúmero no válido: "%target%"' + invalidPlayer: '&cJugador no encontrado' + permissionOpenSelf: '&cNo tienes permisos para abrir tu inventario de esa forma.' + permissionEnderAll: '&cNo tienes permiso para abrir cofres de ender de otros jugadores.' + permissionExempt: '&c El inventario de %target% está protegido.' + permissionCrossWorld: '&c%target% no está en tu dimensión.' + permissionPlayerOnline: '&cNo estás autorizado para abrir inventarios de jugadores conectados.' + permissionPlayerOffline: '&cNo estás autorizado para abrir inventarios de jugadores desconectados.' + commandException: '&cSe ha producido un error, lee la consola para mas información.' + info: + containerBlocked: 'Estás abriendo un contenedor protegido.' + containerBlockedSilent: 'Estás abriendo sigilosamente un contenedor protegido.' + containerSilent: 'Estás abriendo un contenedor sigilosamente.' + settingState: '%setting%: %state%' + player: + noMatches: 'No se encontraron jugadores con %target%.' + matches: 'Jugadores con %target%: %detail%' + container: + noMatches: 'No se encontraron contenedores con %target%.' + matches: 'Contenedores con %target%: %detail%' + on: 'activado' + off: 'desactivado' +container: + player: 'Inventario de %player%' + enderchest: 'Cofre de Ender de %player%' + \ No newline at end of file -- 2.49.1 From 201a3578bf1ba6f00ef3773f04a3388f4221b794 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Thu, 25 Jun 2020 19:38:38 -0400 Subject: [PATCH 219/253] Add 1.16 support, drop 1.14 (#141) --- README.MD | 2 +- internal/pom.xml | 2 +- internal/{v1_14_R1 => v1_16_R1}/pom.xml | 6 +- .../v1_16_R1}/AnySilentContainer.java | 68 ++++---- .../internal/v1_16_R1}/PlayerDataManager.java | 61 ++++--- .../internal/v1_16_R1}/SpecialEnderChest.java | 37 ++-- .../v1_16_R1}/SpecialPlayerInventory.java | 160 ++++++++---------- 7 files changed, 160 insertions(+), 176 deletions(-) rename internal/{v1_14_R1 => v1_16_R1}/pom.xml (94%) rename internal/{v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1 => v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1}/AnySilentContainer.java (88%) rename internal/{v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1 => v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1}/PlayerDataManager.java (84%) rename internal/{v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1 => v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1}/SpecialEnderChest.java (87%) rename internal/{v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1 => v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1}/SpecialPlayerInventory.java (82%) diff --git a/README.MD b/README.MD index d9a590d..82a681d 100644 --- a/README.MD +++ b/README.MD @@ -152,7 +152,7 @@ The final file is `target/OpenInv.jar` ## License ``` -Copyright (C) 2011-2019 lishid. All rights reserved. +Copyright (C) 2011-2020 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 diff --git a/internal/pom.xml b/internal/pom.xml index ce9cc25..ab00d02 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -34,8 +34,8 @@ all v1_8_R3 - v1_14_R1 v1_15_R1 + v1_16_R1 diff --git a/internal/v1_14_R1/pom.xml b/internal/v1_16_R1/pom.xml similarity index 94% rename from internal/v1_14_R1/pom.xml rename to internal/v1_16_R1/pom.xml index 52f349d..476bad2 100644 --- a/internal/v1_14_R1/pom.xml +++ b/internal/v1_16_R1/pom.xml @@ -25,14 +25,14 @@ 4.1.2-SNAPSHOT - openinvadapter1_14_R1 - OpenInvAdapter1_14_R1 + openinvadapter1_16_R1 + OpenInvAdapter1_16_R1 org.spigotmc spigot - 1.14.3-R0.1-SNAPSHOT + 1.16.1-R0.1-SNAPSHOT provided diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/AnySilentContainer.java b/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/AnySilentContainer.java similarity index 88% rename from internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/AnySilentContainer.java rename to internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/AnySilentContainer.java index dfa759e..2319810 100644 --- a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/AnySilentContainer.java +++ b/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/AnySilentContainer.java @@ -14,40 +14,40 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_14_R1; +package com.lishid.openinv.internal.v1_16_R1; import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.IAnySilentContainer; import java.lang.reflect.Field; -import net.minecraft.server.v1_14_R1.Block; -import net.minecraft.server.v1_14_R1.BlockBarrel; -import net.minecraft.server.v1_14_R1.BlockChest; -import net.minecraft.server.v1_14_R1.BlockChestTrapped; -import net.minecraft.server.v1_14_R1.BlockEnderChest; -import net.minecraft.server.v1_14_R1.BlockPosition; -import net.minecraft.server.v1_14_R1.BlockPropertyChestType; -import net.minecraft.server.v1_14_R1.BlockShulkerBox; -import net.minecraft.server.v1_14_R1.ChatMessage; -import net.minecraft.server.v1_14_R1.Container; -import net.minecraft.server.v1_14_R1.ContainerChest; -import net.minecraft.server.v1_14_R1.Containers; -import net.minecraft.server.v1_14_R1.EntityHuman; -import net.minecraft.server.v1_14_R1.EntityPlayer; -import net.minecraft.server.v1_14_R1.EnumChatFormat; -import net.minecraft.server.v1_14_R1.EnumGamemode; -import net.minecraft.server.v1_14_R1.IBlockData; -import net.minecraft.server.v1_14_R1.IChatBaseComponent; -import net.minecraft.server.v1_14_R1.ITileInventory; -import net.minecraft.server.v1_14_R1.InventoryEnderChest; -import net.minecraft.server.v1_14_R1.InventoryLargeChest; -import net.minecraft.server.v1_14_R1.PlayerInteractManager; -import net.minecraft.server.v1_14_R1.PlayerInventory; -import net.minecraft.server.v1_14_R1.TileEntity; -import net.minecraft.server.v1_14_R1.TileEntityChest; -import net.minecraft.server.v1_14_R1.TileEntityEnderChest; -import net.minecraft.server.v1_14_R1.TileEntityLootable; -import net.minecraft.server.v1_14_R1.TileInventory; -import net.minecraft.server.v1_14_R1.World; +import net.minecraft.server.v1_16_R1.Block; +import net.minecraft.server.v1_16_R1.BlockBarrel; +import net.minecraft.server.v1_16_R1.BlockChest; +import net.minecraft.server.v1_16_R1.BlockChestTrapped; +import net.minecraft.server.v1_16_R1.BlockEnderChest; +import net.minecraft.server.v1_16_R1.BlockPosition; +import net.minecraft.server.v1_16_R1.BlockPropertyChestType; +import net.minecraft.server.v1_16_R1.BlockShulkerBox; +import net.minecraft.server.v1_16_R1.ChatMessage; +import net.minecraft.server.v1_16_R1.Container; +import net.minecraft.server.v1_16_R1.ContainerChest; +import net.minecraft.server.v1_16_R1.Containers; +import net.minecraft.server.v1_16_R1.EntityHuman; +import net.minecraft.server.v1_16_R1.EntityPlayer; +import net.minecraft.server.v1_16_R1.EnumChatFormat; +import net.minecraft.server.v1_16_R1.EnumGamemode; +import net.minecraft.server.v1_16_R1.IBlockData; +import net.minecraft.server.v1_16_R1.IChatBaseComponent; +import net.minecraft.server.v1_16_R1.ITileInventory; +import net.minecraft.server.v1_16_R1.InventoryEnderChest; +import net.minecraft.server.v1_16_R1.InventoryLargeChest; +import net.minecraft.server.v1_16_R1.PlayerInteractManager; +import net.minecraft.server.v1_16_R1.PlayerInventory; +import net.minecraft.server.v1_16_R1.TileEntity; +import net.minecraft.server.v1_16_R1.TileEntityChest; +import net.minecraft.server.v1_16_R1.TileEntityEnderChest; +import net.minecraft.server.v1_16_R1.TileEntityLootable; +import net.minecraft.server.v1_16_R1.TileInventory; +import net.minecraft.server.v1_16_R1.World; import org.bukkit.Material; import org.bukkit.Statistic; import org.bukkit.block.Barrel; @@ -216,7 +216,7 @@ public class AnySilentContainer implements IAnySilentContainer { break; } return new ContainerChest(containers, containerCounter, playerInventory, enderChest, rows); - }, BlockEnderChest.d)); + }, BlockEnderChest.e)); bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); return true; } @@ -231,16 +231,16 @@ public class AnySilentContainer implements IAnySilentContainer { if (block instanceof BlockChest) { - BlockPropertyChestType chestType = blockData.get(BlockChest.b); + BlockPropertyChestType chestType = blockData.get(BlockChest.c); if (chestType != BlockPropertyChestType.SINGLE) { - BlockPosition adjacentBlockPosition = blockPosition.shift(BlockChest.j(blockData)); + BlockPosition adjacentBlockPosition = blockPosition.shift(BlockChest.h(blockData)); IBlockData adjacentBlockData = world.getType(adjacentBlockPosition); if (adjacentBlockData.getBlock() == block) { - BlockPropertyChestType adjacentChestType = adjacentBlockData.get(BlockChest.b); + BlockPropertyChestType adjacentChestType = adjacentBlockData.get(BlockChest.c); if (adjacentChestType != BlockPropertyChestType.SINGLE && chestType != adjacentChestType && adjacentBlockData.get(BlockChest.FACING) == blockData.get(BlockChest.FACING)) { diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java b/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/PlayerDataManager.java similarity index 84% rename from internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java rename to internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/PlayerDataManager.java index 66bbcd9..b127b43 100644 --- a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/PlayerDataManager.java +++ b/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/PlayerDataManager.java @@ -14,7 +14,7 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_14_R1; +package com.lishid.openinv.internal.v1_16_R1; import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.IPlayerDataManager; @@ -23,30 +23,32 @@ import com.mojang.authlib.GameProfile; import java.io.File; import java.io.FileOutputStream; import java.lang.reflect.Field; -import net.minecraft.server.v1_14_R1.ChatComponentText; -import net.minecraft.server.v1_14_R1.ChatMessageType; -import net.minecraft.server.v1_14_R1.Container; -import net.minecraft.server.v1_14_R1.Containers; -import net.minecraft.server.v1_14_R1.DimensionManager; -import net.minecraft.server.v1_14_R1.Entity; -import net.minecraft.server.v1_14_R1.EntityHuman; -import net.minecraft.server.v1_14_R1.EntityPlayer; -import net.minecraft.server.v1_14_R1.MinecraftServer; -import net.minecraft.server.v1_14_R1.NBTCompressedStreamTools; -import net.minecraft.server.v1_14_R1.NBTTagCompound; -import net.minecraft.server.v1_14_R1.PacketPlayOutChat; -import net.minecraft.server.v1_14_R1.PacketPlayOutOpenWindow; -import net.minecraft.server.v1_14_R1.PlayerInteractManager; -import net.minecraft.server.v1_14_R1.PlayerInventory; -import net.minecraft.server.v1_14_R1.WorldNBTStorage; +import net.minecraft.server.v1_16_R1.ChatComponentText; +import net.minecraft.server.v1_16_R1.ChatMessageType; +import net.minecraft.server.v1_16_R1.Container; +import net.minecraft.server.v1_16_R1.Containers; +import net.minecraft.server.v1_16_R1.Entity; +import net.minecraft.server.v1_16_R1.EntityHuman; +import net.minecraft.server.v1_16_R1.EntityPlayer; +import net.minecraft.server.v1_16_R1.MinecraftServer; +import net.minecraft.server.v1_16_R1.NBTCompressedStreamTools; +import net.minecraft.server.v1_16_R1.NBTTagCompound; +import net.minecraft.server.v1_16_R1.PacketPlayOutChat; +import net.minecraft.server.v1_16_R1.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_16_R1.PlayerInteractManager; +import net.minecraft.server.v1_16_R1.PlayerInventory; +import net.minecraft.server.v1_16_R1.SystemUtils; +import net.minecraft.server.v1_16_R1.World; +import net.minecraft.server.v1_16_R1.WorldNBTStorage; +import net.minecraft.server.v1_16_R1.WorldServer; import org.apache.logging.log4j.LogManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_14_R1.CraftServer; -import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory; -import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftContainer; +import org.bukkit.craftbukkit.v1_16_R1.CraftServer; +import org.bukkit.craftbukkit.v1_16_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_16_R1.event.CraftEventFactory; +import org.bukkit.craftbukkit.v1_16_R1.inventory.CraftContainer; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryType; @@ -57,7 +59,7 @@ import org.jetbrains.annotations.Nullable; public class PlayerDataManager implements IPlayerDataManager { - private Field bukkitEntity; + private @Nullable Field bukkitEntity; public PlayerDataManager() { try { @@ -90,6 +92,7 @@ public class PlayerDataManager implements IPlayerDataManager { return nmsPlayer; } + @Nullable @Override public Player loadPlayer(@NotNull final OfflinePlayer offline) { // Ensure player has data @@ -98,11 +101,17 @@ public class PlayerDataManager implements IPlayerDataManager { } // Create a profile and entity to load the player data + // See net.minecraft.server.PlayerList#attemptLogin GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName() != null ? offline.getName() : offline.getUniqueId().toString()); MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(DimensionManager.OVERWORLD), profile, - new PlayerInteractManager(server.getWorldServer(DimensionManager.OVERWORLD))); + WorldServer worldServer = server.getWorldServer(World.OVERWORLD); + + if (worldServer == null) { + return null; + } + + EntityPlayer entity = new EntityPlayer(server, worldServer, profile, new PlayerInteractManager(worldServer)); try { injectPlayer(entity); @@ -133,7 +142,7 @@ public class PlayerDataManager implements IPlayerDataManager { super.saveData(); // See net.minecraft.server.WorldNBTStorage#save(EntityPlayer) try { - WorldNBTStorage worldNBTStorage = (WorldNBTStorage) player.server.getPlayerList().playerFileData; + WorldNBTStorage worldNBTStorage = player.server.getPlayerList().playerFileData; NBTTagCompound playerData = player.save(new NBTTagCompound()); @@ -280,7 +289,7 @@ public class PlayerDataManager implements IPlayerDataManager { // For action bar chat, color codes are still supported but JSON text color is not allowed. Do not convert text. if (nmsPlayer.playerConnection != null) { - nmsPlayer.playerConnection.sendPacket(new PacketPlayOutChat(new ChatComponentText(message), ChatMessageType.GAME_INFO)); + nmsPlayer.playerConnection.sendPacket(new PacketPlayOutChat(new ChatComponentText(message), ChatMessageType.GAME_INFO, SystemUtils.b)); } } diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialEnderChest.java b/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/SpecialEnderChest.java similarity index 87% rename from internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialEnderChest.java rename to internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/SpecialEnderChest.java index d280d4d..bacfcaa 100644 --- a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialEnderChest.java +++ b/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/SpecialEnderChest.java @@ -14,25 +14,26 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_14_R1; +package com.lishid.openinv.internal.v1_16_R1; import com.lishid.openinv.internal.ISpecialEnderChest; import java.util.List; -import net.minecraft.server.v1_14_R1.AutoRecipeStackManager; -import net.minecraft.server.v1_14_R1.ContainerUtil; -import net.minecraft.server.v1_14_R1.EntityHuman; -import net.minecraft.server.v1_14_R1.EntityPlayer; -import net.minecraft.server.v1_14_R1.IInventoryListener; -import net.minecraft.server.v1_14_R1.InventoryEnderChest; -import net.minecraft.server.v1_14_R1.ItemStack; -import net.minecraft.server.v1_14_R1.NonNullList; +import net.minecraft.server.v1_16_R1.AutoRecipeStackManager; +import net.minecraft.server.v1_16_R1.ContainerUtil; +import net.minecraft.server.v1_16_R1.EntityHuman; +import net.minecraft.server.v1_16_R1.EntityPlayer; +import net.minecraft.server.v1_16_R1.IInventoryListener; +import net.minecraft.server.v1_16_R1.InventoryEnderChest; +import net.minecraft.server.v1_16_R1.ItemStack; +import net.minecraft.server.v1_16_R1.NonNullList; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_14_R1.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftInventory; +import org.bukkit.craftbukkit.v1_16_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_16_R1.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.InventoryHolder; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEnderChest { @@ -115,7 +116,7 @@ public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEn } @Override - public Location getLocation() { + public @Nullable Location getLocation() { return null; } @@ -131,7 +132,7 @@ public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEn @Override public ItemStack getItem(int i) { - return i >= 0 && i < this.items.size() ? this.items.get(i) : ItemStack.a; + return i >= 0 && i < this.items.size() ? this.items.get(i) : ItemStack.b; } @Override @@ -153,7 +154,7 @@ public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEn if (itemstack2.isEmpty()) { this.setItem(i, itemstack1); this.update(); - return ItemStack.a; + return ItemStack.b; } if (ItemStack.c(itemstack2, itemstack1)) { @@ -164,7 +165,7 @@ public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEn itemstack1.subtract(k); if (itemstack1.isEmpty()) { this.update(); - return ItemStack.a; + return ItemStack.b; } } } @@ -181,9 +182,9 @@ public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEn public ItemStack splitWithoutUpdate(int i) { ItemStack itemstack = this.items.get(i); if (itemstack.isEmpty()) { - return ItemStack.a; + return ItemStack.b; } else { - this.items.set(i, ItemStack.a); + this.items.set(i, ItemStack.b); return itemstack; } } @@ -204,7 +205,7 @@ public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEn } @Override - public boolean isNotEmpty() { + public boolean isEmpty() { for (ItemStack itemstack : this.items) { if (!itemstack.isEmpty()) { diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java b/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/SpecialPlayerInventory.java similarity index 82% rename from internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java rename to internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/SpecialPlayerInventory.java index 64fa9f5..0d00da4 100644 --- a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java +++ b/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/SpecialPlayerInventory.java @@ -14,7 +14,7 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_14_R1; +package com.lishid.openinv.internal.v1_16_R1; import com.google.common.collect.ImmutableList; import com.lishid.openinv.internal.ISpecialPlayerInventory; @@ -22,29 +22,31 @@ import java.util.Iterator; import java.util.List; import java.util.function.Predicate; import java.util.stream.Collectors; -import net.minecraft.server.v1_14_R1.AutoRecipeStackManager; -import net.minecraft.server.v1_14_R1.ChatMessage; -import net.minecraft.server.v1_14_R1.ContainerUtil; -import net.minecraft.server.v1_14_R1.CrashReport; -import net.minecraft.server.v1_14_R1.CrashReportSystemDetails; -import net.minecraft.server.v1_14_R1.EntityHuman; -import net.minecraft.server.v1_14_R1.EntityPlayer; -import net.minecraft.server.v1_14_R1.EnumItemSlot; -import net.minecraft.server.v1_14_R1.IBlockData; -import net.minecraft.server.v1_14_R1.IChatBaseComponent; -import net.minecraft.server.v1_14_R1.Item; -import net.minecraft.server.v1_14_R1.ItemArmor; -import net.minecraft.server.v1_14_R1.ItemStack; -import net.minecraft.server.v1_14_R1.NBTTagCompound; -import net.minecraft.server.v1_14_R1.NBTTagList; -import net.minecraft.server.v1_14_R1.NonNullList; -import net.minecraft.server.v1_14_R1.PacketPlayOutSetSlot; -import net.minecraft.server.v1_14_R1.PlayerInventory; -import net.minecraft.server.v1_14_R1.ReportedException; -import net.minecraft.server.v1_14_R1.World; +import net.minecraft.server.v1_16_R1.AutoRecipeStackManager; +import net.minecraft.server.v1_16_R1.ChatMessage; +import net.minecraft.server.v1_16_R1.ContainerUtil; +import net.minecraft.server.v1_16_R1.CrashReport; +import net.minecraft.server.v1_16_R1.CrashReportSystemDetails; +import net.minecraft.server.v1_16_R1.DamageSource; +import net.minecraft.server.v1_16_R1.EntityHuman; +import net.minecraft.server.v1_16_R1.EntityPlayer; +import net.minecraft.server.v1_16_R1.EnumItemSlot; +import net.minecraft.server.v1_16_R1.IBlockData; +import net.minecraft.server.v1_16_R1.IChatBaseComponent; +import net.minecraft.server.v1_16_R1.IInventory; +import net.minecraft.server.v1_16_R1.Item; +import net.minecraft.server.v1_16_R1.ItemArmor; +import net.minecraft.server.v1_16_R1.ItemStack; +import net.minecraft.server.v1_16_R1.NBTTagCompound; +import net.minecraft.server.v1_16_R1.NBTTagList; +import net.minecraft.server.v1_16_R1.NonNullList; +import net.minecraft.server.v1_16_R1.PacketPlayOutSetSlot; +import net.minecraft.server.v1_16_R1.PlayerInventory; +import net.minecraft.server.v1_16_R1.ReportedException; +import net.minecraft.server.v1_16_R1.World; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_14_R1.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftInventory; +import org.bukkit.craftbukkit.v1_16_R1.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_16_R1.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.InventoryHolder; @@ -117,7 +119,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } if (i >= list.size()) { - return ItemStack.a; + return ItemStack.b; } return list.get(i); @@ -133,7 +135,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP i -= next.size(); } - return list == null ? ItemStack.a : list.get(i); + return list == null ? ItemStack.b : list.get(i); } @Override @@ -229,10 +231,10 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } if (i >= list.size()) { - return ItemStack.a; + return ItemStack.b; } - return list.get(i).isEmpty() ? ItemStack.a : ContainerUtil.a(list, i, j); + return list.get(i).isEmpty() ? ItemStack.b : ContainerUtil.a(list, i, j); } @Override @@ -254,17 +256,17 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } if (i >= list.size()) { - return ItemStack.a; + return ItemStack.b; } if (!list.get(i).isEmpty()) { ItemStack itemstack = list.get(i); - list.set(i, ItemStack.a); + list.set(i, ItemStack.b); return itemstack; } - return ItemStack.a; + return ItemStack.b; } @Override @@ -304,10 +306,10 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public ItemStack getItemInHand() { - return d(this.itemInHandIndex) ? this.items.get(this.itemInHandIndex) : ItemStack.a; + return d(this.itemInHandIndex) ? this.items.get(this.itemInHandIndex) : ItemStack.b; } - private boolean a(ItemStack itemstack, ItemStack itemstack1) { + private boolean isSimilarAndNotFull(ItemStack itemstack, ItemStack itemstack1) { return !itemstack.isEmpty() && this.b(itemstack, itemstack1) && itemstack.isStackable() && itemstack.getCount() < itemstack.getMaxStackSize() && itemstack.getCount() < this.getMaxStackSize(); } @@ -325,8 +327,8 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP return itemstack.getCount(); } - if (!this.a(itemstack, itemstack1)) { - remains -= (itemstack1.getMaxStackSize() < this.getMaxStackSize() ? itemstack1.getMaxStackSize() : this.getMaxStackSize()) - itemstack1.getCount(); + if (!this.isSimilarAndNotFull(itemstack, itemstack1)) { + remains -= Math.min(itemstack1.getMaxStackSize(), this.getMaxStackSize()) - itemstack1.getCount(); } if (remains <= 0) { @@ -334,6 +336,11 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } } + ItemStack offhandItemStack = this.getItem(this.items.size() + this.armor.size()); + if (this.isSimilarAndNotFull(offhandItemStack, itemstack)) { + remains -= Math.min(offhandItemStack.getMaxStackSize(), this.getMaxStackSize()) - offhandItemStack.getCount(); + } + return itemstack.getCount() - remains; } @@ -390,41 +397,14 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public int a(Predicate predicate, int i) { - int j = 0; - - int k; - for (k = 0; k < this.getSize(); ++k) { - ItemStack itemstack = this.getItem(k); - if (!itemstack.isEmpty() && predicate.test(itemstack)) { - int l = i <= 0 ? itemstack.getCount() : Math.min(i - j, itemstack.getCount()); - j += l; - if (i != 0) { - itemstack.subtract(l); - if (itemstack.isEmpty()) { - this.setItem(k, ItemStack.a); - } - - if (i > 0 && j >= i) { - return j; - } - } - } - } - - if (!this.getCarried().isEmpty() && predicate.test(this.getCarried())) { - k = i <= 0 ? this.getCarried().getCount() : Math.min(i - j, this.getCarried().getCount()); - j += k; - if (i != 0) { - this.getCarried().subtract(k); - if (this.getCarried().isEmpty()) { - this.setCarried(ItemStack.a); - } - - if (i > 0 && j >= i) { - return j; - } - } + public int a(Predicate predicate, int i, IInventory iinventory) { + byte b0 = 0; + boolean flag = i == 0; + int j = b0 + ContainerUtil.a(this, predicate, i - b0, flag); + j += ContainerUtil.a(iinventory, predicate, i - j, flag); + j += ContainerUtil.a(this.getCarried(), predicate, i - j, flag); + if (this.getCarried().isEmpty()) { + this.setCarried(ItemStack.b); } return j; @@ -445,8 +425,9 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP ItemStack itemstack1 = this.getItem(i); if (itemstack1.isEmpty()) { itemstack1 = new ItemStack(item, 0); - if (itemstack.hasTag()) { - itemstack1.setTag(itemstack.getTag().clone()); + NBTTagCompound tag = itemstack.getTag(); + if (tag != null) { + itemstack1.setTag(tag.clone()); } this.setItem(i, itemstack1); @@ -461,25 +442,23 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP k = this.getMaxStackSize() - itemstack1.getCount(); } - if (k == 0) { - return j; - } else { + if (k != 0) { j -= k; itemstack1.add(k); itemstack1.d(5); - return j; } + return j; } @Override public int firstPartial(ItemStack itemstack) { - if (this.a(this.getItem(this.itemInHandIndex), itemstack)) { + if (this.isSimilarAndNotFull(this.getItem(this.itemInHandIndex), itemstack)) { return this.itemInHandIndex; - } else if (this.a(this.getItem(40), itemstack)) { + } else if (this.isSimilarAndNotFull(this.getItem(40), itemstack)) { return 40; } else { for (int i = 0; i < this.items.size(); ++i) { - if (this.a(this.items.get(i), itemstack)) { + if (this.isSimilarAndNotFull(this.items.get(i), itemstack)) { return i; } } @@ -586,7 +565,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP for (List list : this.f) { for (int i = 0; i < list.size(); ++i) { if (list.get(i) == itemstack) { - list.set(i, ItemStack.a); + list.set(i, ItemStack.b); break; } } @@ -656,12 +635,12 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public boolean isNotEmpty() { - Iterator iterator = this.items.iterator(); + public boolean isEmpty() { + Iterator iterator = this.items.iterator(); ItemStack itemstack; while (iterator.hasNext()) { - itemstack = (ItemStack)iterator.next(); + itemstack = iterator.next(); if (!itemstack.isEmpty()) { return false; } @@ -670,7 +649,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP iterator = this.armor.iterator(); while (iterator.hasNext()) { - itemstack = (ItemStack)iterator.next(); + itemstack = iterator.next(); if (!itemstack.isEmpty()) { return false; } @@ -679,7 +658,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP iterator = this.extraSlots.iterator(); while (iterator.hasNext()) { - itemstack = (ItemStack)iterator.next(); + itemstack = iterator.next(); if (!itemstack.isEmpty()) { return false; } @@ -695,12 +674,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public boolean b(IBlockData iblockdata) { - return this.getItem(this.itemInHandIndex).b(iblockdata); - } - - @Override - public void a(float f) { + public void a(DamageSource damagesource, float f) { if (f > 0.0F) { f /= 4.0F; if (f < 1.0F) { @@ -710,8 +684,8 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP for (int i = 0; i < this.armor.size(); ++i) { ItemStack itemstack = this.armor.get(0); int index = i; - if (itemstack.getItem() instanceof ItemArmor) { - itemstack.damage((int) f, this.player, (entityhuman) -> entityhuman.c(EnumItemSlot.a(EnumItemSlot.Function.ARMOR, index))); + if ((!damagesource.isFire() || !itemstack.getItem().u()) && itemstack.getItem() instanceof ItemArmor) { + itemstack.damage((int) f, this.player, (entityHuman) -> entityHuman.broadcastItemBreak(EnumItemSlot.a(EnumItemSlot.Function.ARMOR, index))); } } } @@ -723,7 +697,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP for (int i = 0; i < itemStacks.size(); ++i) { ItemStack itemstack = itemStacks.get(i); if (!itemstack.isEmpty()) { - itemStacks.set(i, ItemStack.a); + itemStacks.set(i, ItemStack.b); this.player.a(itemstack, true, false); } } -- 2.49.1 From f0a66570d213a7fa2343f71146663b52c58e05cd Mon Sep 17 00:00:00 2001 From: Jikoo Date: Thu, 25 Jun 2020 19:39:38 -0400 Subject: [PATCH 220/253] Bump version to 4.1.2 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- internal/pom.xml | 2 +- internal/v1_15_R1/pom.xml | 4 ++-- internal/v1_16_R1/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- plugin/pom.xml | 4 ++-- pom.xml | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 59e057a..ea8bb2f 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.2-SNAPSHOT + 4.1.2 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index f811edb..733cbd5 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.2-SNAPSHOT + 4.1.2 openinvassembly diff --git a/internal/pom.xml b/internal/pom.xml index ab00d02..dece975 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 4.1.2-SNAPSHOT + 4.1.2 openinvinternal diff --git a/internal/v1_15_R1/pom.xml b/internal/v1_15_R1/pom.xml index be92964..c27a95d 100644 --- a/internal/v1_15_R1/pom.xml +++ b/internal/v1_15_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.2-SNAPSHOT + 4.1.2 openinvadapter1_15_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.2-SNAPSHOT + 4.1.2 diff --git a/internal/v1_16_R1/pom.xml b/internal/v1_16_R1/pom.xml index 476bad2..d0ffe0c 100644 --- a/internal/v1_16_R1/pom.xml +++ b/internal/v1_16_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.2-SNAPSHOT + 4.1.2 openinvadapter1_16_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.2-SNAPSHOT + 4.1.2 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 87a6621..bc81008 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.1.2-SNAPSHOT + 4.1.2 openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvplugincore - 4.1.2-SNAPSHOT + 4.1.2 diff --git a/plugin/pom.xml b/plugin/pom.xml index a9656d2..3fc7aa8 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.2-SNAPSHOT + 4.1.2 openinvplugincore @@ -31,7 +31,7 @@ com.lishid openinvapi - 4.1.2-SNAPSHOT + 4.1.2 org.spigotmc diff --git a/pom.xml b/pom.xml index ea30078..800827a 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 4.1.2-SNAPSHOT + 4.1.2 pom -- 2.49.1 From 56afefc82b2f7f6d32df1d9e1b4f1652594e1e3f Mon Sep 17 00:00:00 2001 From: Jikoo Date: Thu, 25 Jun 2020 19:40:07 -0400 Subject: [PATCH 221/253] Bump version to 4.1.3-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- internal/pom.xml | 2 +- internal/v1_15_R1/pom.xml | 4 ++-- internal/v1_16_R1/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- plugin/pom.xml | 4 ++-- pom.xml | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index ea8bb2f..da6bb03 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.2 + 4.1.3-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 733cbd5..f80b337 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.2 + 4.1.3-SNAPSHOT openinvassembly diff --git a/internal/pom.xml b/internal/pom.xml index dece975..af2c5d2 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 4.1.2 + 4.1.3-SNAPSHOT openinvinternal diff --git a/internal/v1_15_R1/pom.xml b/internal/v1_15_R1/pom.xml index c27a95d..5027c4e 100644 --- a/internal/v1_15_R1/pom.xml +++ b/internal/v1_15_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.2 + 4.1.3-SNAPSHOT openinvadapter1_15_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.2 + 4.1.3-SNAPSHOT diff --git a/internal/v1_16_R1/pom.xml b/internal/v1_16_R1/pom.xml index d0ffe0c..c4f9b82 100644 --- a/internal/v1_16_R1/pom.xml +++ b/internal/v1_16_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.2 + 4.1.3-SNAPSHOT openinvadapter1_16_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.2 + 4.1.3-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index bc81008..9c47ca9 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.1.2 + 4.1.3-SNAPSHOT openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvplugincore - 4.1.2 + 4.1.3-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index 3fc7aa8..b4643b0 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.2 + 4.1.3-SNAPSHOT openinvplugincore @@ -31,7 +31,7 @@ com.lishid openinvapi - 4.1.2 + 4.1.3-SNAPSHOT org.spigotmc diff --git a/pom.xml b/pom.xml index 800827a..24ba0b2 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 4.1.2 + 4.1.3-SNAPSHOT pom -- 2.49.1 From c93464e643d819004eb77650c015529a5803d3da Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 8 Jul 2020 20:44:15 -0400 Subject: [PATCH 222/253] Fix double chest loot generation with AnyContainer (#142) --- .../openinv/internal/v1_15_R1/AnySilentContainer.java | 7 +++---- .../openinv/internal/v1_16_R1/AnySilentContainer.java | 5 ++--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java index e4b58ed..3cceef7 100644 --- a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java +++ b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java @@ -33,7 +33,6 @@ import net.minecraft.server.v1_15_R1.ContainerChest; import net.minecraft.server.v1_15_R1.Containers; import net.minecraft.server.v1_15_R1.EntityHuman; import net.minecraft.server.v1_15_R1.EntityPlayer; -import net.minecraft.server.v1_15_R1.EnumChatFormat; import net.minecraft.server.v1_15_R1.EnumGamemode; import net.minecraft.server.v1_15_R1.IBlockData; import net.minecraft.server.v1_15_R1.IChatBaseComponent; @@ -192,7 +191,7 @@ public class AnySilentContainer implements IAnySilentContainer { InventoryEnderChest enderChest = player.getEnderChest(); enderChest.a((TileEntityEnderChest) tile); player.openContainer(new TileInventory((containerCounter, playerInventory, ignored) -> { - Containers containers; + Containers containers; int rows = enderChest.getSize() / 9; switch (rows) { case 1: @@ -251,8 +250,8 @@ public class AnySilentContainer implements IAnySilentContainer { TileEntityChest rightChest = chestType == BlockPropertyChestType.RIGHT ? ((TileEntityChest) tileInventory) : (TileEntityChest) adjacentTile; TileEntityChest leftChest = chestType == BlockPropertyChestType.RIGHT ? (TileEntityChest) adjacentTile : ((TileEntityChest) tileInventory); - if (rightChest.lootTable != null || leftChest.lootTable != null) { - player.a(new ChatMessage("Loot not generated! Please disable /silentcontainer.").a(EnumChatFormat.RED), true); + if (silentchest && (rightChest.lootTable != null || leftChest.lootTable != null)) { + OpenInv.getPlugin(OpenInv.class).sendSystemMessage(bukkitPlayer, "messages.error.lootNotGenerated"); return false; } diff --git a/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/AnySilentContainer.java b/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/AnySilentContainer.java index 2319810..f5bbd2f 100644 --- a/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/AnySilentContainer.java +++ b/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/AnySilentContainer.java @@ -33,7 +33,6 @@ import net.minecraft.server.v1_16_R1.ContainerChest; import net.minecraft.server.v1_16_R1.Containers; import net.minecraft.server.v1_16_R1.EntityHuman; import net.minecraft.server.v1_16_R1.EntityPlayer; -import net.minecraft.server.v1_16_R1.EnumChatFormat; import net.minecraft.server.v1_16_R1.EnumGamemode; import net.minecraft.server.v1_16_R1.IBlockData; import net.minecraft.server.v1_16_R1.IChatBaseComponent; @@ -251,8 +250,8 @@ public class AnySilentContainer implements IAnySilentContainer { TileEntityChest rightChest = chestType == BlockPropertyChestType.RIGHT ? ((TileEntityChest) tileInventory) : (TileEntityChest) adjacentTile; TileEntityChest leftChest = chestType == BlockPropertyChestType.RIGHT ? (TileEntityChest) adjacentTile : ((TileEntityChest) tileInventory); - if (rightChest.lootTable != null || leftChest.lootTable != null) { - player.a(new ChatMessage("Loot not generated! Please disable /silentcontainer.").a(EnumChatFormat.RED), true); + if (silentchest && (rightChest.lootTable != null || leftChest.lootTable != null)) { + OpenInv.getPlugin(OpenInv.class).sendSystemMessage(bukkitPlayer, "messages.error.lootNotGenerated"); return false; } -- 2.49.1 From d9922377660d9a722cced2859cdbc880d3fc5420 Mon Sep 17 00:00:00 2001 From: mfnalex <1122571+mfnalex@users.noreply.github.com> Date: Thu, 16 Jul 2020 04:38:38 +0200 Subject: [PATCH 223/253] Add support for 3rd party plugins firing PlayerInteractEvent (#146) * Add support for InvUnload * generalize 3rd party plugins' event check --- .../java/com/lishid/openinv/listeners/PlayerListener.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugin/src/main/java/com/lishid/openinv/listeners/PlayerListener.java b/plugin/src/main/java/com/lishid/openinv/listeners/PlayerListener.java index 7bbead2..5f6712a 100644 --- a/plugin/src/main/java/com/lishid/openinv/listeners/PlayerListener.java +++ b/plugin/src/main/java/com/lishid/openinv/listeners/PlayerListener.java @@ -54,6 +54,12 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerInteract(PlayerInteractEvent event) { + + // Do not cancel 3rd party plugins' custom events + if (!PlayerInteractEvent.class.equals(event.getClass())) { + return; + } + if (event.getAction() != Action.RIGHT_CLICK_BLOCK || event.getPlayer().isSneaking() || event.useInteractedBlock() == Result.DENY || event.getClickedBlock() == null || !plugin.getAnySilentContainer().isAnySilentContainer(event.getClickedBlock())) { -- 2.49.1 From 7c1f15974cd76b1026bd6c9cb9b1f8d4a11f65ce Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 15 Jul 2020 23:23:03 -0400 Subject: [PATCH 224/253] Bump version to 4.1.3 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- internal/pom.xml | 2 +- internal/v1_15_R1/pom.xml | 4 ++-- internal/v1_16_R1/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- plugin/pom.xml | 4 ++-- pom.xml | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index da6bb03..6c5fc52 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.3-SNAPSHOT + 4.1.3 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index f80b337..214a5fa 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.3-SNAPSHOT + 4.1.3 openinvassembly diff --git a/internal/pom.xml b/internal/pom.xml index af2c5d2..3fb097e 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 4.1.3-SNAPSHOT + 4.1.3 openinvinternal diff --git a/internal/v1_15_R1/pom.xml b/internal/v1_15_R1/pom.xml index 5027c4e..1450a5f 100644 --- a/internal/v1_15_R1/pom.xml +++ b/internal/v1_15_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.3-SNAPSHOT + 4.1.3 openinvadapter1_15_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.3-SNAPSHOT + 4.1.3 diff --git a/internal/v1_16_R1/pom.xml b/internal/v1_16_R1/pom.xml index c4f9b82..58bf33e 100644 --- a/internal/v1_16_R1/pom.xml +++ b/internal/v1_16_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.3-SNAPSHOT + 4.1.3 openinvadapter1_16_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.3-SNAPSHOT + 4.1.3 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 9c47ca9..95b7525 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.1.3-SNAPSHOT + 4.1.3 openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvplugincore - 4.1.3-SNAPSHOT + 4.1.3 diff --git a/plugin/pom.xml b/plugin/pom.xml index b4643b0..38f8a43 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.3-SNAPSHOT + 4.1.3 openinvplugincore @@ -31,7 +31,7 @@ com.lishid openinvapi - 4.1.3-SNAPSHOT + 4.1.3 org.spigotmc diff --git a/pom.xml b/pom.xml index 24ba0b2..a213c9b 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 4.1.3-SNAPSHOT + 4.1.3 pom -- 2.49.1 From 3e629798e5b274453f8d7bc68734b9fa713573ea Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 15 Jul 2020 23:23:31 -0400 Subject: [PATCH 225/253] Bump version to 4.1.4-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- internal/pom.xml | 2 +- internal/v1_15_R1/pom.xml | 4 ++-- internal/v1_16_R1/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- plugin/pom.xml | 4 ++-- pom.xml | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 6c5fc52..3c57d7a 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.3 + 4.1.4-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 214a5fa..4a953f3 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.3 + 4.1.4-SNAPSHOT openinvassembly diff --git a/internal/pom.xml b/internal/pom.xml index 3fb097e..fe76608 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 4.1.3 + 4.1.4-SNAPSHOT openinvinternal diff --git a/internal/v1_15_R1/pom.xml b/internal/v1_15_R1/pom.xml index 1450a5f..85af8a8 100644 --- a/internal/v1_15_R1/pom.xml +++ b/internal/v1_15_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.3 + 4.1.4-SNAPSHOT openinvadapter1_15_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.3 + 4.1.4-SNAPSHOT diff --git a/internal/v1_16_R1/pom.xml b/internal/v1_16_R1/pom.xml index 58bf33e..5a13897 100644 --- a/internal/v1_16_R1/pom.xml +++ b/internal/v1_16_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.3 + 4.1.4-SNAPSHOT openinvadapter1_16_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.3 + 4.1.4-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 95b7525..73e0d6b 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.1.3 + 4.1.4-SNAPSHOT openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvplugincore - 4.1.3 + 4.1.4-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index 38f8a43..5550117 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.3 + 4.1.4-SNAPSHOT openinvplugincore @@ -31,7 +31,7 @@ com.lishid openinvapi - 4.1.3 + 4.1.4-SNAPSHOT org.spigotmc diff --git a/pom.xml b/pom.xml index a213c9b..46abe69 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 4.1.3 + 4.1.4-SNAPSHOT pom -- 2.49.1 From 100d0e12cd4c392b11435b4ba0ffddfb91118fb0 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 12 Aug 2020 00:06:20 -0400 Subject: [PATCH 226/253] Update to 1.16.2 --- internal/pom.xml | 1 + internal/v1_16_R2/pom.xml | 75 ++ .../internal/v1_16_R2/AnySilentContainer.java | 358 +++++++++ .../internal/v1_16_R2/PlayerDataManager.java | 295 +++++++ .../internal/v1_16_R2/SpecialEnderChest.java | 256 ++++++ .../v1_16_R2/SpecialPlayerInventory.java | 733 ++++++++++++++++++ 6 files changed, 1718 insertions(+) create mode 100644 internal/v1_16_R2/pom.xml create mode 100644 internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/AnySilentContainer.java create mode 100644 internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/PlayerDataManager.java create mode 100644 internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/SpecialEnderChest.java create mode 100644 internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/SpecialPlayerInventory.java diff --git a/internal/pom.xml b/internal/pom.xml index fe76608..d5dc434 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -36,6 +36,7 @@ v1_8_R3 v1_15_R1 v1_16_R1 + v1_16_R2 diff --git a/internal/v1_16_R2/pom.xml b/internal/v1_16_R2/pom.xml new file mode 100644 index 0000000..190e87b --- /dev/null +++ b/internal/v1_16_R2/pom.xml @@ -0,0 +1,75 @@ + + + + + 4.0.0 + + + com.lishid + openinvinternal + 4.1.4-SNAPSHOT + + + openinvadapter1_16_R2 + OpenInvAdapter1_16_R2 + + + + org.spigotmc + spigot + 1.16.2-R0.1-SNAPSHOT + provided + + + com.lishid + openinvplugincore + 4.1.4-SNAPSHOT + + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.2 + + true + + + + package + + shade + + + + + + + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + + + + + + \ No newline at end of file diff --git a/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/AnySilentContainer.java b/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/AnySilentContainer.java new file mode 100644 index 0000000..4040449 --- /dev/null +++ b/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/AnySilentContainer.java @@ -0,0 +1,358 @@ +/* + * Copyright (C) 2011-2020 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_16_R2; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.internal.IAnySilentContainer; +import java.lang.reflect.Field; +import net.minecraft.server.v1_16_R2.Block; +import net.minecraft.server.v1_16_R2.BlockBarrel; +import net.minecraft.server.v1_16_R2.BlockChest; +import net.minecraft.server.v1_16_R2.BlockChestTrapped; +import net.minecraft.server.v1_16_R2.BlockPosition; +import net.minecraft.server.v1_16_R2.BlockPropertyChestType; +import net.minecraft.server.v1_16_R2.BlockShulkerBox; +import net.minecraft.server.v1_16_R2.ChatMessage; +import net.minecraft.server.v1_16_R2.Container; +import net.minecraft.server.v1_16_R2.ContainerChest; +import net.minecraft.server.v1_16_R2.Containers; +import net.minecraft.server.v1_16_R2.EntityHuman; +import net.minecraft.server.v1_16_R2.EntityPlayer; +import net.minecraft.server.v1_16_R2.EnumGamemode; +import net.minecraft.server.v1_16_R2.IBlockData; +import net.minecraft.server.v1_16_R2.IChatBaseComponent; +import net.minecraft.server.v1_16_R2.ITileInventory; +import net.minecraft.server.v1_16_R2.InventoryEnderChest; +import net.minecraft.server.v1_16_R2.InventoryLargeChest; +import net.minecraft.server.v1_16_R2.PlayerInteractManager; +import net.minecraft.server.v1_16_R2.PlayerInventory; +import net.minecraft.server.v1_16_R2.TileEntity; +import net.minecraft.server.v1_16_R2.TileEntityChest; +import net.minecraft.server.v1_16_R2.TileEntityEnderChest; +import net.minecraft.server.v1_16_R2.TileEntityLootable; +import net.minecraft.server.v1_16_R2.TileInventory; +import net.minecraft.server.v1_16_R2.World; +import org.bukkit.Material; +import org.bukkit.Statistic; +import org.bukkit.block.Barrel; +import org.bukkit.block.BlockFace; +import org.bukkit.block.BlockState; +import org.bukkit.block.EnderChest; +import org.bukkit.block.ShulkerBox; +import org.bukkit.block.data.BlockData; +import org.bukkit.block.data.Directional; +import org.bukkit.block.data.type.Chest; +import org.bukkit.entity.Cat; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryView; +import org.bukkit.util.BoundingBox; +import org.jetbrains.annotations.NotNull; + +public class AnySilentContainer implements IAnySilentContainer { + + private Field playerInteractManagerGamemode; + + public AnySilentContainer() { + try { + this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); + this.playerInteractManagerGamemode.setAccessible(true); + } catch (NoSuchFieldException | SecurityException e) { + System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); + e.printStackTrace(); + } + } + + @Override + public boolean isAnySilentContainer(@NotNull final org.bukkit.block.Block bukkitBlock) { + if (bukkitBlock.getType() == Material.ENDER_CHEST) { + return true; + } + BlockState state = bukkitBlock.getState(); + return state instanceof org.bukkit.block.Chest + || state instanceof org.bukkit.block.ShulkerBox + || state instanceof org.bukkit.block.Barrel; + } + + @Override + public boolean isAnyContainerNeeded(@NotNull final Player p, @NotNull final org.bukkit.block.Block block) { + BlockState blockState = block.getState(); + + // Barrels do not require AnyContainer. + if (blockState instanceof Barrel) { + return false; + } + + // Enderchests require a non-occluding block on top to open. + if (blockState instanceof EnderChest) { + return block.getRelative(0, 1, 0).getType().isOccluding(); + } + + // Shulker boxes require 1/2 a block clear in the direction they open. + if (blockState instanceof ShulkerBox) { + BoundingBox boundingBox = block.getBoundingBox(); + if (boundingBox.getVolume() > 1) { + // Shulker box is already open. + return false; + } + + BlockData blockData = block.getBlockData(); + if (!(blockData instanceof Directional)) { + // Shouldn't be possible. Just in case, demand AnyChest. + return true; + } + + Directional directional = (Directional) blockData; + BlockFace face = directional.getFacing(); + boundingBox.shift(face.getDirection()); + // Return whether or not bounding boxes overlap. + return block.getRelative(face, 1).getBoundingBox().overlaps(boundingBox); + } + + if (!(blockState instanceof org.bukkit.block.Chest)) { + return false; + } + + if (isBlockedChest(block)) { + return true; + } + + BlockData blockData = block.getBlockData(); + if (!(blockData instanceof Chest) || ((Chest) blockData).getType() == Chest.Type.SINGLE) { + return false; + } + + Chest chest = (Chest) blockData; + int ordinal = (chest.getFacing().ordinal() + 4 + (chest.getType() == Chest.Type.RIGHT ? -1 : 1)) % 4; + BlockFace relativeFace = BlockFace.values()[ordinal]; + org.bukkit.block.Block relative = block.getRelative(relativeFace); + + if (relative.getType() != block.getType()) { + return false; + } + + BlockData relativeData = relative.getBlockData(); + if (!(relativeData instanceof Chest)) { + return false; + } + + Chest relativeChest = (Chest) relativeData; + if (relativeChest.getFacing() != chest.getFacing() + || relativeChest.getType() != (chest.getType() == Chest.Type.RIGHT ? Chest.Type.LEFT : Chest.Type.RIGHT)) { + return false; + } + + return isBlockedChest(relative); + } + + private boolean isBlockedChest(org.bukkit.block.Block block) { + org.bukkit.block.Block relative = block.getRelative(0, 1, 0); + return relative.getType().isOccluding() + || block.getWorld().getNearbyEntities(BoundingBox.of(relative), entity -> entity instanceof Cat).size() > 0; + } + + @Override + public boolean activateContainer(@NotNull final Player bukkitPlayer, final boolean silentchest, + @NotNull final org.bukkit.block.Block bukkitBlock) { + + // Silent ender chest is API-only + if (silentchest && bukkitBlock.getType() == Material.ENDER_CHEST) { + bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); + bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); + return true; + } + + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + + final World world = player.world; + final BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); + final TileEntity tile = world.getTileEntity(blockPosition); + + if (tile == null) { + return false; + } + + if (tile instanceof TileEntityEnderChest) { + // Anychest ender chest. See net.minecraft.server.BlockEnderChest + InventoryEnderChest enderChest = player.getEnderChest(); + enderChest.a((TileEntityEnderChest) tile); + player.openContainer(new TileInventory((containerCounter, playerInventory, ignored) -> { + Containers containers; + int rows = enderChest.getSize() / 9; + switch (rows) { + case 1: + containers = Containers.GENERIC_9X1; + break; + case 2: + containers = Containers.GENERIC_9X2; + break; + case 3: + default: + containers = Containers.GENERIC_9X3; + break; + case 4: + containers = Containers.GENERIC_9X4; + break; + case 5: + containers = Containers.GENERIC_9X5; + break; + case 6: + containers = Containers.GENERIC_9X6; + break; + } + return new ContainerChest(containers, containerCounter, playerInventory, enderChest, rows); + }, new ChatMessage("container.enderchest"))); + bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); + return true; + } + + if (!(tile instanceof ITileInventory)) { + return false; + } + + ITileInventory tileInventory = (ITileInventory) tile; + IBlockData blockData = world.getType(blockPosition); + Block block = blockData.getBlock(); + + if (block instanceof BlockChest) { + + BlockPropertyChestType chestType = blockData.get(BlockChest.c); + + if (chestType != BlockPropertyChestType.SINGLE) { + + BlockPosition adjacentBlockPosition = blockPosition.shift(BlockChest.h(blockData)); + IBlockData adjacentBlockData = world.getType(adjacentBlockPosition); + + if (adjacentBlockData.getBlock() == block) { + + BlockPropertyChestType adjacentChestType = adjacentBlockData.get(BlockChest.c); + + if (adjacentChestType != BlockPropertyChestType.SINGLE && chestType != adjacentChestType + && adjacentBlockData.get(BlockChest.FACING) == blockData.get(BlockChest.FACING)) { + + TileEntity adjacentTile = world.getTileEntity(adjacentBlockPosition); + + if (adjacentTile instanceof TileEntityChest && tileInventory instanceof TileEntityChest) { + TileEntityChest rightChest = chestType == BlockPropertyChestType.RIGHT ? ((TileEntityChest) tileInventory) : (TileEntityChest) adjacentTile; + TileEntityChest leftChest = chestType == BlockPropertyChestType.RIGHT ? (TileEntityChest) adjacentTile : ((TileEntityChest) tileInventory); + + if (silentchest && (rightChest.lootTable != null || leftChest.lootTable != null)) { + OpenInv.getPlugin(OpenInv.class).sendSystemMessage(bukkitPlayer, "messages.error.lootNotGenerated"); + return false; + } + + tileInventory = new ITileInventory() { + public Container createMenu(int containerCounter, PlayerInventory playerInventory, EntityHuman entityHuman) { + leftChest.d(playerInventory.player); + rightChest.d(playerInventory.player); + return ContainerChest.b(containerCounter, playerInventory, new InventoryLargeChest(rightChest, leftChest)); + } + + public IChatBaseComponent getScoreboardDisplayName() { + return new ChatMessage("container.chestDouble"); + } + }; + } + } + } + } + + if (block instanceof BlockChestTrapped) { + bukkitPlayer.incrementStatistic(Statistic.TRAPPED_CHEST_TRIGGERED); + } else { + bukkitPlayer.incrementStatistic(Statistic.CHEST_OPENED); + } + } + + if (block instanceof BlockShulkerBox) { + bukkitPlayer.incrementStatistic(Statistic.SHULKER_BOX_OPENED); + } + + if (block instanceof BlockBarrel) { + bukkitPlayer.incrementStatistic(Statistic.OPEN_BARREL); + } + + // AnyChest only - SilentChest not active, container unsupported, or unnecessary. + if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { + player.openContainer(tileInventory); + return true; + } + + // SilentChest requires access to setting players' gamemode directly. + if (this.playerInteractManagerGamemode == null) { + return false; + } + + if (tile instanceof TileEntityLootable) { + TileEntityLootable lootable = (TileEntityLootable) tile; + if (lootable.lootTable != null) { + OpenInv.getPlugin(OpenInv.class).sendSystemMessage(bukkitPlayer, "messages.error.lootNotGenerated"); + return false; + } + } + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.openContainer(tileInventory); + this.forceGameMode(player, gamemode); + return true; + } + + @Override + public void deactivateContainer(@NotNull final Player bukkitPlayer) { + if (this.playerInteractManagerGamemode == null) { + return; + } + + InventoryView view = bukkitPlayer.getOpenInventory(); + switch (view.getType()) { + case CHEST: + case ENDER_CHEST: + case SHULKER_BOX: + case BARREL: + break; + default: + return; + } + + EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); + + EnumGamemode gamemode = player.playerInteractManager.getGameMode(); + this.forceGameMode(player, EnumGamemode.SPECTATOR); + player.activeContainer.b(player); + player.activeContainer.a(player, false); + player.activeContainer.transferTo(player.defaultContainer, player.getBukkitEntity()); + player.activeContainer = player.defaultContainer; + this.forceGameMode(player, gamemode); + } + + private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { + if (this.playerInteractManagerGamemode == null) { + // No need to warn repeatedly, error on startup and lack of function should be enough. + return; + } + try { + if (!this.playerInteractManagerGamemode.isAccessible()) { + // Just in case, ensure accessible. + this.playerInteractManagerGamemode.setAccessible(true); + } + this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); + } catch (IllegalArgumentException | IllegalAccessException e) { + e.printStackTrace(); + } + } + +} diff --git a/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/PlayerDataManager.java b/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/PlayerDataManager.java new file mode 100644 index 0000000..79a0743 --- /dev/null +++ b/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/PlayerDataManager.java @@ -0,0 +1,295 @@ +/* + * Copyright (C) 2011-2020 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_16_R2; + +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.internal.IPlayerDataManager; +import com.lishid.openinv.internal.ISpecialInventory; +import com.mojang.authlib.GameProfile; +import java.io.File; +import java.io.FileOutputStream; +import java.lang.reflect.Field; +import net.minecraft.server.v1_16_R2.ChatComponentText; +import net.minecraft.server.v1_16_R2.ChatMessageType; +import net.minecraft.server.v1_16_R2.Container; +import net.minecraft.server.v1_16_R2.Containers; +import net.minecraft.server.v1_16_R2.Entity; +import net.minecraft.server.v1_16_R2.EntityHuman; +import net.minecraft.server.v1_16_R2.EntityPlayer; +import net.minecraft.server.v1_16_R2.MinecraftServer; +import net.minecraft.server.v1_16_R2.NBTCompressedStreamTools; +import net.minecraft.server.v1_16_R2.NBTTagCompound; +import net.minecraft.server.v1_16_R2.PacketPlayOutChat; +import net.minecraft.server.v1_16_R2.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_16_R2.PlayerInteractManager; +import net.minecraft.server.v1_16_R2.PlayerInventory; +import net.minecraft.server.v1_16_R2.SystemUtils; +import net.minecraft.server.v1_16_R2.World; +import net.minecraft.server.v1_16_R2.WorldNBTStorage; +import net.minecraft.server.v1_16_R2.WorldServer; +import org.apache.logging.log4j.LogManager; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; +import org.bukkit.craftbukkit.v1_16_R2.CraftServer; +import org.bukkit.craftbukkit.v1_16_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_16_R2.event.CraftEventFactory; +import org.bukkit.craftbukkit.v1_16_R2.inventory.CraftContainer; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class PlayerDataManager implements IPlayerDataManager { + + private @Nullable Field bukkitEntity; + + public PlayerDataManager() { + try { + bukkitEntity = Entity.class.getDeclaredField("bukkitEntity"); + } catch (NoSuchFieldException e) { + System.out.println("Unable to obtain field to inject custom save process - players' mounts may be deleted when loaded."); + e.printStackTrace(); + bukkitEntity = null; + } + } + + @NotNull + public static EntityPlayer getHandle(final Player player) { + if (player instanceof CraftPlayer) { + return ((CraftPlayer) player).getHandle(); + } + + Server server = player.getServer(); + EntityPlayer nmsPlayer = null; + + if (server instanceof CraftServer) { + nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); + } + + if (nmsPlayer == null) { + // Could use reflection to examine fields, but it's honestly not worth the bother. + throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); + } + + return nmsPlayer; + } + + @Nullable + @Override + public Player loadPlayer(@NotNull final OfflinePlayer offline) { + // Ensure player has data + if (!offline.hasPlayedBefore()) { + return null; + } + + // Create a profile and entity to load the player data + // See net.minecraft.server.PlayerList#attemptLogin + GameProfile profile = new GameProfile(offline.getUniqueId(), + offline.getName() != null ? offline.getName() : offline.getUniqueId().toString()); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + WorldServer worldServer = server.getWorldServer(World.OVERWORLD); + + if (worldServer == null) { + return null; + } + + EntityPlayer entity = new EntityPlayer(server, worldServer, profile, new PlayerInteractManager(worldServer)); + + try { + injectPlayer(entity); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + + // Get the bukkit entity + Player target = entity.getBukkitEntity(); + if (target != null) { + // Load data + target.loadData(); + } + // Return the entity + return target; + } + + void injectPlayer(EntityPlayer player) throws IllegalAccessException { + if (bukkitEntity == null) { + return; + } + + bukkitEntity.setAccessible(true); + + bukkitEntity.set(player, new CraftPlayer(player.server.server, player) { + @Override + public void saveData() { + super.saveData(); + // See net.minecraft.server.WorldNBTStorage#save(EntityPlayer) + try { + WorldNBTStorage worldNBTStorage = player.server.getPlayerList().playerFileData; + + NBTTagCompound playerData = player.save(new NBTTagCompound()); + + if (!isOnline()) { + // Special case: save old vehicle data + NBTTagCompound oldData = worldNBTStorage.load(player); + + if (oldData != null && oldData.hasKeyOfType("RootVehicle", 10)) { + // See net.minecraft.server.PlayerList#a(NetworkManager, EntityPlayer) and net.minecraft.server.EntityPlayer#b(NBTTagCompound) + playerData.set("RootVehicle", oldData.getCompound("RootVehicle")); + } + } + + File file = new File(worldNBTStorage.getPlayerDir(), player.getUniqueIDString() + ".dat.tmp"); + File file1 = new File(worldNBTStorage.getPlayerDir(), player.getUniqueIDString() + ".dat"); + + NBTCompressedStreamTools.a(playerData, new FileOutputStream(file)); + + if (file1.exists() && !file1.delete() || !file.renameTo(file1)) { + LogManager.getLogger().warn("Failed to save player data for {}", player.getDisplayName().getString()); + } + + } catch (Exception e) { + LogManager.getLogger().warn("Failed to save player data for {}", player.getDisplayName().getString()); + } + } + }); + } + + @NotNull + @Override + public Player inject(@NotNull Player player) { + try { + EntityPlayer nmsPlayer = getHandle(player); + injectPlayer(nmsPlayer); + return nmsPlayer.getBukkitEntity(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + return player; + } + } + + @Nullable + @Override + public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { + + EntityPlayer nmsPlayer = getHandle(player); + + if (nmsPlayer.playerConnection == null) { + return null; + } + + String title; + if (inventory instanceof SpecialEnderChest) { + HumanEntity owner = (HumanEntity) ((SpecialEnderChest) inventory).getBukkitOwner(); + title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.enderchest", "%player%", owner.getName()); + if (title == null) { + title = owner.getName() + "'s Ender Chest"; + } + } else if (inventory instanceof SpecialPlayerInventory) { + EntityHuman owner = ((PlayerInventory) inventory).player; + title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.player", "%player%", owner.getName()); + if (title == null) { + title = owner.getName() + "'s Inventory"; + } + } else { + return player.openInventory(inventory.getBukkitInventory()); + } + + String finalTitle = title; + Container container = new CraftContainer(new InventoryView() { + @Override + public @NotNull Inventory getTopInventory() { + return inventory.getBukkitInventory(); + } + @Override + public @NotNull Inventory getBottomInventory() { + return player.getInventory(); + } + @Override + public @NotNull HumanEntity getPlayer() { + return player; + } + @Override + public @NotNull InventoryType getType() { + return inventory.getBukkitInventory().getType(); + } + @Override + public @NotNull String getTitle() { + return finalTitle; + } + }, nmsPlayer, nmsPlayer.nextContainerCounter()) { + @Override + public Containers getType() { + switch (inventory.getBukkitInventory().getSize()) { + case 9: + return Containers.GENERIC_9X1; + case 18: + return Containers.GENERIC_9X2; + case 27: + default: + return Containers.GENERIC_9X3; + case 36: + return Containers.GENERIC_9X4; + case 41: // PLAYER + case 45: + return Containers.GENERIC_9X5; + case 54: + return Containers.GENERIC_9X6; + } + } + }; + + container.setTitle(new ChatComponentText(title)); + container = CraftEventFactory.callInventoryOpenEvent(nmsPlayer, container); + + if (container == null) { + return null; + } + + nmsPlayer.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, container.getType(), + new ChatComponentText(container.getBukkitView().getTitle()))); + nmsPlayer.activeContainer = container; + container.addSlotListener(nmsPlayer); + + return container.getBukkitView(); + + } + + @Override + public void sendSystemMessage(@NotNull Player player, @NotNull String message) { + int newline = message.indexOf('\n'); + if (newline != -1) { + // No newlines in action bar chat. + message = message.substring(0, newline); + } + + if (message.isEmpty()) { + return; + } + + EntityPlayer nmsPlayer = getHandle(player); + + // For action bar chat, color codes are still supported but JSON text color is not allowed. Do not convert text. + if (nmsPlayer.playerConnection != null) { + nmsPlayer.playerConnection.sendPacket(new PacketPlayOutChat(new ChatComponentText(message), ChatMessageType.GAME_INFO, SystemUtils.b)); + } + } + +} diff --git a/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/SpecialEnderChest.java b/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/SpecialEnderChest.java new file mode 100644 index 0000000..f2dc5f6 --- /dev/null +++ b/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/SpecialEnderChest.java @@ -0,0 +1,256 @@ +/* + * Copyright (C) 2011-2020 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_16_R2; + +import com.lishid.openinv.internal.ISpecialEnderChest; +import java.util.List; +import net.minecraft.server.v1_16_R2.AutoRecipeStackManager; +import net.minecraft.server.v1_16_R2.ContainerUtil; +import net.minecraft.server.v1_16_R2.EntityHuman; +import net.minecraft.server.v1_16_R2.EntityPlayer; +import net.minecraft.server.v1_16_R2.IInventoryListener; +import net.minecraft.server.v1_16_R2.InventoryEnderChest; +import net.minecraft.server.v1_16_R2.ItemStack; +import net.minecraft.server.v1_16_R2.NonNullList; +import org.bukkit.Location; +import org.bukkit.craftbukkit.v1_16_R2.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_16_R2.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryHolder; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEnderChest { + + private final CraftInventory inventory; + private EntityPlayer owner; + private NonNullList items; + private boolean playerOnline; + + public SpecialEnderChest(final Player player, final Boolean online) { + super(PlayerDataManager.getHandle(player)); + this.inventory = new CraftInventory(this); + this.owner = PlayerDataManager.getHandle(player); + this.playerOnline = online; + this.items = this.owner.getEnderChest().items; + } + + @Override + public @NotNull CraftInventory getBukkitInventory() { + return inventory; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public void setPlayerOffline() { + this.playerOnline = false; + } + + @Override + public void setPlayerOnline(@NotNull final Player player) { + if (!this.playerOnline) { + try { + this.owner = PlayerDataManager.getHandle(player); + InventoryEnderChest enderChest = owner.getEnderChest(); + for (int i = 0; i < enderChest.getSize(); ++i) { + enderChest.setItem(i, this.items.get(i)); + } + this.items = enderChest.items; + } catch (Exception ignored) {} + this.playerOnline = true; + } + } + + @Override + public void update() { + this.owner.getEnderChest().update(); + } + + @Override + public List getContents() { + return this.items; + } + + @Override + public void onOpen(CraftHumanEntity who) { + this.owner.getEnderChest().onOpen(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + this.owner.getEnderChest().onClose(who); + } + + @Override + public List getViewers() { + return this.owner.getEnderChest().getViewers(); + } + + @Override + public void setMaxStackSize(int i) { + this.owner.getEnderChest().setMaxStackSize(i); + } + + @Override + public InventoryHolder getOwner() { + return this.owner.getEnderChest().getOwner(); + } + + @Override + public @Nullable Location getLocation() { + return null; + } + + @Override + public void a(IInventoryListener iinventorylistener) { + this.owner.getEnderChest().a(iinventorylistener); + } + + @Override + public void b(IInventoryListener iinventorylistener) { + this.owner.getEnderChest().b(iinventorylistener); + } + + @Override + public ItemStack getItem(int i) { + return i >= 0 && i < this.items.size() ? this.items.get(i) : ItemStack.b; + } + + @Override + public ItemStack splitStack(int i, int j) { + ItemStack itemstack = ContainerUtil.a(this.items, i, j); + if (!itemstack.isEmpty()) { + this.update(); + } + + return itemstack; + } + + @Override + public ItemStack a(ItemStack itemstack) { + ItemStack itemstack1 = itemstack.cloneItemStack(); + + for (int i = 0; i < this.getSize(); ++i) { + ItemStack itemstack2 = this.getItem(i); + if (itemstack2.isEmpty()) { + this.setItem(i, itemstack1); + this.update(); + return ItemStack.b; + } + + if (ItemStack.c(itemstack2, itemstack1)) { + int j = Math.min(this.getMaxStackSize(), itemstack2.getMaxStackSize()); + int k = Math.min(itemstack1.getCount(), j - itemstack2.getCount()); + if (k > 0) { + itemstack2.add(k); + itemstack1.subtract(k); + if (itemstack1.isEmpty()) { + this.update(); + return ItemStack.b; + } + } + } + } + + if (itemstack1.getCount() != itemstack.getCount()) { + this.update(); + } + + return itemstack1; + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + ItemStack itemstack = this.items.get(i); + if (itemstack.isEmpty()) { + return ItemStack.b; + } else { + this.items.set(i, ItemStack.b); + return itemstack; + } + } + + @Override + public void setItem(int i, ItemStack itemstack) { + this.items.set(i, itemstack); + if (!itemstack.isEmpty() && itemstack.getCount() > this.getMaxStackSize()) { + itemstack.setCount(this.getMaxStackSize()); + } + + this.update(); + } + + @Override + public int getSize() { + return this.owner.getEnderChest().getSize(); + } + + @Override + public boolean isEmpty() { + + for (ItemStack itemstack : this.items) { + if (!itemstack.isEmpty()) { + return false; + } + } + + return true; + } + + @Override + public int getMaxStackSize() { + return 64; + } + + @Override + public boolean a(EntityHuman entityhuman) { + return true; + } + + @Override + public void startOpen(EntityHuman entityhuman) { + } + + @Override + public void closeContainer(EntityHuman entityhuman) { + } + + @Override + public boolean b(int i, ItemStack itemstack) { + return true; + } + + @Override + public void clear() { + this.items.clear(); + } + + @Override + public void a(AutoRecipeStackManager autorecipestackmanager) { + + for (ItemStack itemstack : this.items) { + autorecipestackmanager.b(itemstack); + } + + } + +} diff --git a/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/SpecialPlayerInventory.java b/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/SpecialPlayerInventory.java new file mode 100644 index 0000000..e1b22cf --- /dev/null +++ b/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/SpecialPlayerInventory.java @@ -0,0 +1,733 @@ +/* + * Copyright (C) 2011-2020 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_16_R2; + +import com.google.common.collect.ImmutableList; +import com.lishid.openinv.internal.ISpecialPlayerInventory; +import java.util.Iterator; +import java.util.List; +import java.util.function.Predicate; +import java.util.stream.Collectors; +import net.minecraft.server.v1_16_R2.AutoRecipeStackManager; +import net.minecraft.server.v1_16_R2.ChatMessage; +import net.minecraft.server.v1_16_R2.ContainerUtil; +import net.minecraft.server.v1_16_R2.CrashReport; +import net.minecraft.server.v1_16_R2.CrashReportSystemDetails; +import net.minecraft.server.v1_16_R2.DamageSource; +import net.minecraft.server.v1_16_R2.EntityHuman; +import net.minecraft.server.v1_16_R2.EntityPlayer; +import net.minecraft.server.v1_16_R2.EnumItemSlot; +import net.minecraft.server.v1_16_R2.IBlockData; +import net.minecraft.server.v1_16_R2.IChatBaseComponent; +import net.minecraft.server.v1_16_R2.IInventory; +import net.minecraft.server.v1_16_R2.Item; +import net.minecraft.server.v1_16_R2.ItemArmor; +import net.minecraft.server.v1_16_R2.ItemStack; +import net.minecraft.server.v1_16_R2.NBTTagCompound; +import net.minecraft.server.v1_16_R2.NBTTagList; +import net.minecraft.server.v1_16_R2.NonNullList; +import net.minecraft.server.v1_16_R2.PacketPlayOutSetSlot; +import net.minecraft.server.v1_16_R2.PlayerInventory; +import net.minecraft.server.v1_16_R2.ReportedException; +import net.minecraft.server.v1_16_R2.World; +import org.bukkit.Location; +import org.bukkit.craftbukkit.v1_16_R2.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_16_R2.inventory.CraftInventory; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.InventoryHolder; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { + + private final CraftInventory inventory; + private boolean playerOnline; + private EntityHuman player; + private NonNullList items, armor, extraSlots; + private List> f; + + public SpecialPlayerInventory(final Player bukkitPlayer, final Boolean online) { + super(PlayerDataManager.getHandle(bukkitPlayer)); + this.inventory = new CraftInventory(this); + this.playerOnline = online; + this.player = super.player; + this.items = this.player.inventory.items; + this.armor = this.player.inventory.armor; + this.extraSlots = this.player.inventory.extraSlots; + this.f = ImmutableList.of(this.items, this.armor, this.extraSlots); + } + + @Override + public void setPlayerOnline(@NotNull final Player player) { + if (!this.playerOnline) { + EntityPlayer entityPlayer = PlayerDataManager.getHandle(player); + entityPlayer.inventory.transaction.addAll(this.transaction); + this.player = entityPlayer; + for (int i = 0; i < getSize(); ++i) { + this.player.inventory.setItem(i, getRawItem(i)); + } + this.player.inventory.itemInHandIndex = this.itemInHandIndex; + this.items = this.player.inventory.items; + this.armor = this.player.inventory.armor; + this.extraSlots = this.player.inventory.extraSlots; + this.f = ImmutableList.of(this.items, this.armor, this.extraSlots); + this.playerOnline = true; + } + } + + @Override + public boolean a(final EntityHuman entityhuman) { + return true; + } + + @Override + public @NotNull CraftInventory getBukkitInventory() { + return this.inventory; + } + + @Override + public ItemStack getItem(int i) { + List list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.b; + } + + return list.get(i); + } + + private ItemStack getRawItem(int i) { + NonNullList list = null; + for (NonNullList next : this.f) { + if (i < next.size()) { + list = next; + break; + } + i -= next.size(); + } + + return list == null ? ItemStack.b : list.get(i); + } + + @Override + public IChatBaseComponent getDisplayName() { + return new ChatMessage(this.player.getName()); + } + + @Override + public boolean hasCustomName() { + return false; + } + + private int getReversedArmorSlotNum(final int i) { + if (i == 0) { + return 3; + } + if (i == 1) { + return 2; + } + if (i == 2) { + return 1; + } + if (i == 3) { + return 0; + } + return i; + } + + private int getReversedItemSlotNum(final int i) { + if (i >= 27) { + return i - 27; + } + return i + 9; + } + + @Override + public int getSize() { + return 45; + } + + @Override + public boolean isInUse() { + return !this.getViewers().isEmpty(); + } + + @Override + public void setItem(int i, final ItemStack itemstack) { + List list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + this.player.drop(itemstack, true); + return; + } + + list.set(i, itemstack); + } + + @Override + public void setPlayerOffline() { + this.playerOnline = false; + } + + @Override + public ItemStack splitStack(int i, final int j) { + List list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.b; + } + + return list.get(i).isEmpty() ? ItemStack.b : ContainerUtil.a(list, i, j); + } + + @Override + public ItemStack splitWithoutUpdate(int i) { + List list = this.items; + + if (i >= list.size()) { + i -= list.size(); + list = this.armor; + } else { + i = this.getReversedItemSlotNum(i); + } + + if (i >= list.size()) { + i -= list.size(); + list = this.extraSlots; + } else if (list == this.armor) { + i = this.getReversedArmorSlotNum(i); + } + + if (i >= list.size()) { + return ItemStack.b; + } + + if (!list.get(i).isEmpty()) { + ItemStack itemstack = list.get(i); + + list.set(i, ItemStack.b); + return itemstack; + } + + return ItemStack.b; + } + + @Override + public List getContents() { + return this.f.stream().flatMap(List::stream).collect(Collectors.toList()); + } + + @Override + public List getArmorContents() { + return this.armor; + } + + @Override + public void onOpen(CraftHumanEntity who) { + this.transaction.add(who); + } + + @Override + public void onClose(CraftHumanEntity who) { + this.transaction.remove(who); + } + + @Override + public List getViewers() { + return this.transaction; + } + + @Override + public InventoryHolder getOwner() { + return this.player.getBukkitEntity(); + } + + @Override + public Location getLocation() { + return this.player.getBukkitEntity().getLocation(); + } + + @Override + public ItemStack getItemInHand() { + return d(this.itemInHandIndex) ? this.items.get(this.itemInHandIndex) : ItemStack.b; + } + + private boolean isSimilarAndNotFull(ItemStack itemstack, ItemStack itemstack1) { + return !itemstack.isEmpty() && this.b(itemstack, itemstack1) && itemstack.isStackable() && itemstack.getCount() < itemstack.getMaxStackSize() && itemstack.getCount() < this.getMaxStackSize(); + } + + private boolean b(ItemStack itemstack, ItemStack itemstack1) { + return itemstack.getItem() == itemstack1.getItem() && ItemStack.equals(itemstack, itemstack1); + } + + @Override + public int canHold(ItemStack itemstack) { + int remains = itemstack.getCount(); + + for (int i = 0; i < this.items.size(); ++i) { + ItemStack itemstack1 = this.getItem(i); + if (itemstack1.isEmpty()) { + return itemstack.getCount(); + } + + if (!this.isSimilarAndNotFull(itemstack, itemstack1)) { + remains -= Math.min(itemstack1.getMaxStackSize(), this.getMaxStackSize()) - itemstack1.getCount(); + } + + if (remains <= 0) { + return itemstack.getCount(); + } + } + + ItemStack offhandItemStack = this.getItem(this.items.size() + this.armor.size()); + if (this.isSimilarAndNotFull(offhandItemStack, itemstack)) { + remains -= Math.min(offhandItemStack.getMaxStackSize(), this.getMaxStackSize()) - offhandItemStack.getCount(); + } + + return itemstack.getCount() - remains; + } + + @Override + public int getFirstEmptySlotIndex() { + for (int i = 0; i < this.items.size(); ++i) { + if (this.items.get(i).isEmpty()) { + return i; + } + } + + return -1; + } + + @Override + public void c(int i) { + this.itemInHandIndex = this.i(); + ItemStack itemstack = this.items.get(this.itemInHandIndex); + this.items.set(this.itemInHandIndex, this.items.get(i)); + this.items.set(i, itemstack); + } + + @Override + public int c(ItemStack itemstack) { + for (int i = 0; i < this.items.size(); ++i) { + ItemStack itemstack1 = this.items.get(i); + if (!this.items.get(i).isEmpty() && this.b(itemstack, this.items.get(i)) && !this.items.get(i).f() && !itemstack1.hasEnchantments() && !itemstack1.hasName()) { + return i; + } + } + + return -1; + } + + @Override + public int i() { + int i; + int j; + for (j = 0; j < 9; ++j) { + i = (this.itemInHandIndex + j) % 9; + if (this.items.get(i).isEmpty()) { + return i; + } + } + + for (j = 0; j < 9; ++j) { + i = (this.itemInHandIndex + j) % 9; + if (!this.items.get(i).hasEnchantments()) { + return i; + } + } + + return this.itemInHandIndex; + } + + @Override + public int a(Predicate predicate, int i, IInventory iinventory) { + byte b0 = 0; + boolean flag = i == 0; + int j = b0 + ContainerUtil.a(this, predicate, i - b0, flag); + j += ContainerUtil.a(iinventory, predicate, i - j, flag); + j += ContainerUtil.a(this.getCarried(), predicate, i - j, flag); + if (this.getCarried().isEmpty()) { + this.setCarried(ItemStack.b); + } + + return j; + } + + private int i(ItemStack itemstack) { + int i = this.firstPartial(itemstack); + if (i == -1) { + i = this.getFirstEmptySlotIndex(); + } + + return i == -1 ? itemstack.getCount() : this.d(i, itemstack); + } + + private int d(int i, ItemStack itemstack) { + Item item = itemstack.getItem(); + int j = itemstack.getCount(); + ItemStack itemstack1 = this.getItem(i); + if (itemstack1.isEmpty()) { + itemstack1 = new ItemStack(item, 0); + NBTTagCompound tag = itemstack.getTag(); + if (tag != null) { + itemstack1.setTag(tag.clone()); + } + + this.setItem(i, itemstack1); + } + + int k = j; + if (j > itemstack1.getMaxStackSize() - itemstack1.getCount()) { + k = itemstack1.getMaxStackSize() - itemstack1.getCount(); + } + + if (k > this.getMaxStackSize() - itemstack1.getCount()) { + k = this.getMaxStackSize() - itemstack1.getCount(); + } + + if (k != 0) { + j -= k; + itemstack1.add(k); + itemstack1.d(5); + } + return j; + } + + @Override + public int firstPartial(ItemStack itemstack) { + if (this.isSimilarAndNotFull(this.getItem(this.itemInHandIndex), itemstack)) { + return this.itemInHandIndex; + } else if (this.isSimilarAndNotFull(this.getItem(40), itemstack)) { + return 40; + } else { + for (int i = 0; i < this.items.size(); ++i) { + if (this.isSimilarAndNotFull(this.items.get(i), itemstack)) { + return i; + } + } + + return -1; + } + } + + @Override + public void j() { + + for (List itemStacks : this.f) { + for (int i = 0; i < itemStacks.size(); ++i) { + if (!itemStacks.get(i).isEmpty()) { + itemStacks.get(i).a(this.player.world, this.player, i, this.itemInHandIndex == i); + } + } + } + + } + + @Override + public boolean pickup(ItemStack itemstack) { + return this.c(-1, itemstack); + } + + @Override + public boolean c(int i, ItemStack itemstack) { + if (itemstack.isEmpty()) { + return false; + } else { + try { + if (itemstack.f()) { + if (i == -1) { + i = this.getFirstEmptySlotIndex(); + } + + if (i >= 0) { + this.items.set(i, itemstack.cloneItemStack()); + this.items.get(i).d(5); + itemstack.setCount(0); + return true; + } else if (this.player.abilities.canInstantlyBuild) { + itemstack.setCount(0); + return true; + } else { + return false; + } + } else { + int j; + do { + j = itemstack.getCount(); + if (i == -1) { + itemstack.setCount(this.i(itemstack)); + } else { + itemstack.setCount(this.d(i, itemstack)); + } + } while(!itemstack.isEmpty() && itemstack.getCount() < j); + + if (itemstack.getCount() == j && this.player.abilities.canInstantlyBuild) { + itemstack.setCount(0); + return true; + } else { + return itemstack.getCount() < j; + } + } + } catch (Throwable var6) { + CrashReport crashreport = CrashReport.a(var6, "Adding item to inventory"); + CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Item being added"); + crashreportsystemdetails.a("Item ID", Item.getId(itemstack.getItem())); + crashreportsystemdetails.a("Item data", itemstack.getDamage()); + crashreportsystemdetails.a("Item name", () -> itemstack.getName().getString()); + throw new ReportedException(crashreport); + } + } + } + + @Override + public void a(World world, ItemStack itemstack) { + if (!world.isClientSide) { + while(!itemstack.isEmpty()) { + int i = this.firstPartial(itemstack); + if (i == -1) { + i = this.getFirstEmptySlotIndex(); + } + + if (i == -1) { + this.player.drop(itemstack, false); + break; + } + + int j = itemstack.getMaxStackSize() - this.getItem(i).getCount(); + if (this.c(i, itemstack.cloneAndSubtract(j))) { + ((EntityPlayer)this.player).playerConnection.sendPacket(new PacketPlayOutSetSlot(-2, i, this.getItem(i))); + } + } + } + + } + + @Override + public void f(ItemStack itemstack) { + + for (List list : this.f) { + for (int i = 0; i < list.size(); ++i) { + if (list.get(i) == itemstack) { + list.set(i, ItemStack.b); + break; + } + } + } + } + + @Override + public float a(IBlockData iblockdata) { + return this.items.get(this.itemInHandIndex).a(iblockdata); + } + + @Override + public NBTTagList a(NBTTagList nbttaglist) { + NBTTagCompound nbttagcompound; + int i; + for (i = 0; i < this.items.size(); ++i) { + if (!this.items.get(i).isEmpty()) { + nbttagcompound = new NBTTagCompound(); + nbttagcompound.setByte("Slot", (byte) i); + this.items.get(i).save(nbttagcompound); + nbttaglist.add(nbttagcompound); + } + } + + for (i = 0; i < this.armor.size(); ++i) { + if (!this.armor.get(i).isEmpty()) { + nbttagcompound = new NBTTagCompound(); + nbttagcompound.setByte("Slot", (byte) (i + 100)); + this.armor.get(i).save(nbttagcompound); + nbttaglist.add(nbttagcompound); + } + } + + for (i = 0; i < this.extraSlots.size(); ++i) { + if (!this.extraSlots.get(i).isEmpty()) { + nbttagcompound = new NBTTagCompound(); + nbttagcompound.setByte("Slot", (byte) (i + 150)); + this.extraSlots.get(i).save(nbttagcompound); + nbttaglist.add(nbttagcompound); + } + } + + return nbttaglist; + } + + @Override + public void b(NBTTagList nbttaglist) { + this.items.clear(); + this.armor.clear(); + this.extraSlots.clear(); + + for(int i = 0; i < nbttaglist.size(); ++i) { + NBTTagCompound nbttagcompound = nbttaglist.getCompound(i); + int j = nbttagcompound.getByte("Slot") & 255; + ItemStack itemstack = ItemStack.a(nbttagcompound); + if (!itemstack.isEmpty()) { + if (j < this.items.size()) { + this.items.set(j, itemstack); + } else if (j >= 100 && j < this.armor.size() + 100) { + this.armor.set(j - 100, itemstack); + } else if (j >= 150 && j < this.extraSlots.size() + 150) { + this.extraSlots.set(j - 150, itemstack); + } + } + } + + } + + @Override + public boolean isEmpty() { + Iterator iterator = this.items.iterator(); + + ItemStack itemstack; + while (iterator.hasNext()) { + itemstack = iterator.next(); + if (!itemstack.isEmpty()) { + return false; + } + } + + iterator = this.armor.iterator(); + + while (iterator.hasNext()) { + itemstack = iterator.next(); + if (!itemstack.isEmpty()) { + return false; + } + } + + iterator = this.extraSlots.iterator(); + + while (iterator.hasNext()) { + itemstack = iterator.next(); + if (!itemstack.isEmpty()) { + return false; + } + } + + return true; + } + + @Nullable + @Override + public IChatBaseComponent getCustomName() { + return null; + } + + @Override + public void a(DamageSource damagesource, float f) { + if (f > 0.0F) { + f /= 4.0F; + if (f < 1.0F) { + f = 1.0F; + } + + for (int i = 0; i < this.armor.size(); ++i) { + ItemStack itemstack = this.armor.get(0); + int index = i; + if ((!damagesource.isFire() || !itemstack.getItem().u()) && itemstack.getItem() instanceof ItemArmor) { + itemstack.damage((int) f, this.player, (entityHuman) -> entityHuman.broadcastItemBreak(EnumItemSlot.a(EnumItemSlot.Function.ARMOR, index))); + } + } + } + } + + @Override + public void dropContents() { + for (List itemStacks : this.f) { + for (int i = 0; i < itemStacks.size(); ++i) { + ItemStack itemstack = itemStacks.get(i); + if (!itemstack.isEmpty()) { + itemStacks.set(i, ItemStack.b); + this.player.a(itemstack, true, false); + } + } + } + } + + @Override + public boolean h(ItemStack itemstack) { + return this.f.stream().flatMap(List::stream).anyMatch(itemStack1 -> !itemStack1.isEmpty() && itemStack1.doMaterialsMatch(itemstack)); + } + + @Override + public void a(PlayerInventory playerinventory) { + for (int i = 0; i < playerinventory.getSize(); ++i) { + this.setItem(i, playerinventory.getItem(i)); + } + + this.itemInHandIndex = playerinventory.itemInHandIndex; + } + + @Override + public void clear() { + this.f.forEach(List::clear); + } + + @Override + public void a(AutoRecipeStackManager autorecipestackmanager) { + for (ItemStack itemstack : this.items) { + autorecipestackmanager.a(itemstack); + } + } + +} -- 2.49.1 From a1f4649a09b1b1afc899a96606b8730e0e1435f1 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sat, 22 Aug 2020 12:00:08 -0400 Subject: [PATCH 227/253] Reword invalid version message, include releases link --- plugin/src/main/java/com/lishid/openinv/OpenInv.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/src/main/java/com/lishid/openinv/OpenInv.java index 5b58523..7321eab 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/src/main/java/com/lishid/openinv/OpenInv.java @@ -405,8 +405,8 @@ public class OpenInv extends JavaPlugin implements IOpenInv { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if (!this.accessor.isSupported()) { - sender.sendMessage("Your version of CraftBukkit (" + this.accessor.getVersion() + ") is not supported."); - sender.sendMessage("If this version is a recent release, check for an update."); + sender.sendMessage("Your server version (" + this.accessor.getVersion() + ") is not supported."); + sender.sendMessage("Please check https://github.com/lishid/OpenInv/releases for an update."); return true; } return false; -- 2.49.1 From 0c3ce2dfb388468c57007b4e6d4615202abfe13f Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sat, 22 Aug 2020 12:21:22 -0400 Subject: [PATCH 228/253] Bump version to 4.1.4 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- internal/pom.xml | 2 +- internal/v1_15_R1/pom.xml | 4 ++-- internal/v1_16_R1/pom.xml | 4 ++-- internal/v1_16_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- plugin/pom.xml | 4 ++-- pom.xml | 2 +- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 3c57d7a..ba752ec 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.4-SNAPSHOT + 4.1.4 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 4a953f3..964568e 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.4-SNAPSHOT + 4.1.4 openinvassembly diff --git a/internal/pom.xml b/internal/pom.xml index d5dc434..15e3e0a 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 4.1.4-SNAPSHOT + 4.1.4 openinvinternal diff --git a/internal/v1_15_R1/pom.xml b/internal/v1_15_R1/pom.xml index 85af8a8..b7ac4cd 100644 --- a/internal/v1_15_R1/pom.xml +++ b/internal/v1_15_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.4-SNAPSHOT + 4.1.4 openinvadapter1_15_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.4-SNAPSHOT + 4.1.4 diff --git a/internal/v1_16_R1/pom.xml b/internal/v1_16_R1/pom.xml index 5a13897..548f66d 100644 --- a/internal/v1_16_R1/pom.xml +++ b/internal/v1_16_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.4-SNAPSHOT + 4.1.4 openinvadapter1_16_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.4-SNAPSHOT + 4.1.4 diff --git a/internal/v1_16_R2/pom.xml b/internal/v1_16_R2/pom.xml index 190e87b..4144f44 100644 --- a/internal/v1_16_R2/pom.xml +++ b/internal/v1_16_R2/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.4-SNAPSHOT + 4.1.4 openinvadapter1_16_R2 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.4-SNAPSHOT + 4.1.4 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 73e0d6b..c87824b 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.1.4-SNAPSHOT + 4.1.4 openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvplugincore - 4.1.4-SNAPSHOT + 4.1.4 diff --git a/plugin/pom.xml b/plugin/pom.xml index 5550117..3e87647 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.4-SNAPSHOT + 4.1.4 openinvplugincore @@ -31,7 +31,7 @@ com.lishid openinvapi - 4.1.4-SNAPSHOT + 4.1.4 org.spigotmc diff --git a/pom.xml b/pom.xml index 46abe69..56c3b4c 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 4.1.4-SNAPSHOT + 4.1.4 pom -- 2.49.1 From a5b02ab26a55accb2e85f67796c650aa8a27be16 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sat, 22 Aug 2020 12:22:00 -0400 Subject: [PATCH 229/253] Bump version to 4.1.5-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- internal/pom.xml | 2 +- internal/v1_15_R1/pom.xml | 4 ++-- internal/v1_16_R1/pom.xml | 4 ++-- internal/v1_16_R2/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- plugin/pom.xml | 4 ++-- pom.xml | 2 +- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index ba752ec..dea82f6 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.4 + 4.1.5-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 964568e..e46ae0d 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.4 + 4.1.5-SNAPSHOT openinvassembly diff --git a/internal/pom.xml b/internal/pom.xml index 15e3e0a..7db019b 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 4.1.4 + 4.1.5-SNAPSHOT openinvinternal diff --git a/internal/v1_15_R1/pom.xml b/internal/v1_15_R1/pom.xml index b7ac4cd..f76072d 100644 --- a/internal/v1_15_R1/pom.xml +++ b/internal/v1_15_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.4 + 4.1.5-SNAPSHOT openinvadapter1_15_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.4 + 4.1.5-SNAPSHOT diff --git a/internal/v1_16_R1/pom.xml b/internal/v1_16_R1/pom.xml index 548f66d..7e6c28a 100644 --- a/internal/v1_16_R1/pom.xml +++ b/internal/v1_16_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.4 + 4.1.5-SNAPSHOT openinvadapter1_16_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.4 + 4.1.5-SNAPSHOT diff --git a/internal/v1_16_R2/pom.xml b/internal/v1_16_R2/pom.xml index 4144f44..a2726c4 100644 --- a/internal/v1_16_R2/pom.xml +++ b/internal/v1_16_R2/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.4 + 4.1.5-SNAPSHOT openinvadapter1_16_R2 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.4 + 4.1.5-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index c87824b..1a298cd 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.1.4 + 4.1.5-SNAPSHOT openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvplugincore - 4.1.4 + 4.1.5-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index 3e87647..9733304 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.4 + 4.1.5-SNAPSHOT openinvplugincore @@ -31,7 +31,7 @@ com.lishid openinvapi - 4.1.4 + 4.1.5-SNAPSHOT org.spigotmc diff --git a/pom.xml b/pom.xml index 56c3b4c..ac7b02c 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 4.1.4 + 4.1.5-SNAPSHOT pom -- 2.49.1 From 1a6d51360300e890dae299452a97118036bd3a93 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 15 Sep 2020 11:43:43 -0400 Subject: [PATCH 230/253] Reduce technical debt * Reduce duplicate code * Use more specific functional interfaces where available * Fix some potential NPEs * Remove some unnecessary/nonfunctional code * Merge inventory listeners - no longer need to keep separate due to event availability * Removed TODO items that probably won't ever be implemented. Good ideas, too drastic changes or too much work to maintain. --- .../lishid/openinv/util/InventoryAccess.java | 61 +++----- .../main/java/com/lishid/openinv/OpenInv.java | 52 ++----- .../commands/ContainerSettingCommand.java | 10 +- .../commands/SearchEnchantCommand.java | 4 +- .../listeners/InventoryClickListener.java | 40 ------ .../listeners/InventoryCloseListener.java | 46 ------ ...agListener.java => InventoryListener.java} | 37 ++++- .../java/com/lishid/openinv/util/Cache.java | 18 +-- .../lishid/openinv/util/ConfigUpdater.java | 134 ++++++++---------- .../lishid/openinv/util/InternalAccessor.java | 1 - .../lishid/openinv/util/LanguageManager.java | 2 +- 11 files changed, 146 insertions(+), 259 deletions(-) delete mode 100644 plugin/src/main/java/com/lishid/openinv/listeners/InventoryClickListener.java delete mode 100644 plugin/src/main/java/com/lishid/openinv/listeners/InventoryCloseListener.java rename plugin/src/main/java/com/lishid/openinv/listeners/{InventoryDragListener.java => InventoryListener.java} (56%) diff --git a/api/src/main/java/com/lishid/openinv/util/InventoryAccess.java b/api/src/main/java/com/lishid/openinv/util/InventoryAccess.java index d1e7b8e..2f65dec 100644 --- a/api/src/main/java/com/lishid/openinv/util/InventoryAccess.java +++ b/api/src/main/java/com/lishid/openinv/util/InventoryAccess.java @@ -18,6 +18,7 @@ package com.lishid.openinv.util; import com.lishid.openinv.internal.IInventoryAccess; import com.lishid.openinv.internal.ISpecialEnderChest; +import com.lishid.openinv.internal.ISpecialInventory; import com.lishid.openinv.internal.ISpecialPlayerInventory; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -33,9 +34,8 @@ public class InventoryAccess implements IInventoryAccess { static { String packageName = Bukkit.getServer().getClass().getPackage().getName(); - String version = packageName.substring(packageName.lastIndexOf('.') + 1); try { - craftInventory = Class.forName("org.bukkit.craftbukkit." + version + ".inventory.CraftInventory"); + craftInventory = Class.forName(packageName + ".inventory.CraftInventory"); } catch (ClassNotFoundException ignored) {} try { getInventory = craftInventory.getDeclaredMethod("getInventory"); @@ -47,62 +47,42 @@ public class InventoryAccess implements IInventoryAccess { } public static boolean isPlayerInventory(@NotNull Inventory inventory) { - if (craftInventory.isAssignableFrom(inventory.getClass())) { - try { - return getInventory.invoke(inventory) instanceof ISpecialPlayerInventory; - } catch (ReflectiveOperationException ignored) {} - } - return grabFieldOfTypeFromObject(ISpecialPlayerInventory.class, inventory) != null; + return getPlayerInventory(inventory) != null; } - public static ISpecialPlayerInventory getPlayerInventory(@NotNull Inventory inventory) { - Object inv = null; - if (craftInventory.isAssignableFrom(inventory.getClass())) { - try { - inv = getInventory.invoke(inventory); - } catch (ReflectiveOperationException ignored) {} - } - - if (inv == null) { - inv = grabFieldOfTypeFromObject(ISpecialPlayerInventory.class, inventory); - } - - if (inv instanceof ISpecialPlayerInventory) { - return (ISpecialPlayerInventory) inv; - } - - return null; + public static @Nullable ISpecialPlayerInventory getPlayerInventory(@NotNull Inventory inventory) { + return getSpecialInventory(ISpecialPlayerInventory.class, inventory); } public static boolean isEnderChest(@NotNull Inventory inventory) { - if (craftInventory.isAssignableFrom(inventory.getClass())) { - try { - return getInventory.invoke(inventory) instanceof ISpecialEnderChest; - } catch (ReflectiveOperationException ignored) {} - } - return grabFieldOfTypeFromObject(ISpecialEnderChest.class, inventory) != null; + return getEnderChest(inventory) != null; } - public static ISpecialEnderChest getEnderChest(@NotNull Inventory inventory) { - Object inv = null; - if (craftInventory.isAssignableFrom(inventory.getClass())) { + public static @Nullable ISpecialEnderChest getEnderChest(@NotNull Inventory inventory) { + return getSpecialInventory(ISpecialEnderChest.class, inventory); + } + + private static @Nullable T getSpecialInventory(@NotNull Class expected, @NotNull Inventory inventory) { + Object inv; + if (craftInventory != null && getInventory != null && craftInventory.isAssignableFrom(inventory.getClass())) { try { inv = getInventory.invoke(inventory); + if (expected.isInstance(inv)) { + return expected.cast(inv); + } } catch (ReflectiveOperationException ignored) {} } - if (inv == null) { - inv = grabFieldOfTypeFromObject(ISpecialEnderChest.class, inventory); - } + inv = grabFieldOfTypeFromObject(ISpecialPlayerInventory.class, inventory); - if (inv instanceof ISpecialEnderChest) { - return (ISpecialEnderChest) inv; + if (expected.isInstance(inv)) { + return expected.cast(inv); } return null; } - private static T grabFieldOfTypeFromObject(final Class type, final Object object) { + private static @Nullable T grabFieldOfTypeFromObject(final Class type, final Object object) { // Use reflection to find the IInventory Class clazz = object.getClass(); T result = null; @@ -142,4 +122,5 @@ public class InventoryAccess implements IInventoryAccess { public boolean isSpecialPlayerInventory(@NotNull Inventory inventory) { return isPlayerInventory(inventory); } + } diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/src/main/java/com/lishid/openinv/OpenInv.java index 7321eab..b0a5a87 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/src/main/java/com/lishid/openinv/OpenInv.java @@ -27,9 +27,7 @@ import com.lishid.openinv.internal.IAnySilentContainer; import com.lishid.openinv.internal.ISpecialEnderChest; import com.lishid.openinv.internal.ISpecialInventory; import com.lishid.openinv.internal.ISpecialPlayerInventory; -import com.lishid.openinv.listeners.InventoryClickListener; -import com.lishid.openinv.listeners.InventoryCloseListener; -import com.lishid.openinv.listeners.InventoryDragListener; +import com.lishid.openinv.listeners.InventoryListener; import com.lishid.openinv.listeners.PlayerListener; import com.lishid.openinv.listeners.PluginListener; import com.lishid.openinv.util.Cache; @@ -105,7 +103,6 @@ public class OpenInv extends JavaPlugin implements IOpenInv { if (!OpenInv.this.disableSaving() && !value.isOnline()) { value.saveData(); } - return true; }); private InternalAccessor accessor; @@ -127,6 +124,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { if (this.inventories.containsKey(key)) { Iterator iterator = this.inventories.get(key).getBukkitInventory().getViewers().iterator(); + //noinspection WhileLoopReplaceableByForEach while (iterator.hasNext()) { HumanEntity human = iterator.next(); // If player has permission or is in the same world, allow continued access @@ -140,6 +138,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { if (this.enderChests.containsKey(key)) { Iterator iterator = this.enderChests.get(key).getBukkitInventory().getViewers().iterator(); + //noinspection WhileLoopReplaceableByForEach while (iterator.hasNext()) { HumanEntity human = iterator.next(); if (Permissions.CROSSWORLD.hasPermission(human) || human.getWorld().equals(player.getWorld())) { @@ -222,22 +221,18 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return this.accessor != null && this.accessor.isSupported(); } - @Nullable @Override - public Player loadPlayer(@NotNull final OfflinePlayer offline) { + public @Nullable Player loadPlayer(@NotNull final OfflinePlayer offline) { String key = this.getPlayerID(offline); if (this.playerCache.containsKey(key)) { return this.playerCache.get(key); } - // TODO: wrap Player to ensure all methods can safely be called offline - Player loaded; - - if (offline.isOnline()) { - loaded = offline.getPlayer(); - this.playerCache.put(key, loaded); - return loaded; + Player player = offline.getPlayer(); + if (player != null) { + this.playerCache.put(key, player); + return player; } if (!this.isSupportedVersion()) { @@ -251,33 +246,18 @@ public class OpenInv extends JavaPlugin implements IOpenInv { Future future = Bukkit.getScheduler().callSyncMethod(this, () -> OpenInv.this.accessor.getPlayerDataManager().loadPlayer(offline)); - int ticks = 0; - while (!future.isDone() && !future.isCancelled() && ticks < 10) { - ++ticks; - try { - Thread.sleep(50L); - } catch (InterruptedException e) { - e.printStackTrace(); - return null; - } - } - - if (!future.isDone() || future.isCancelled()) { - return null; - } - try { - loaded = future.get(); + player = future.get(); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); return null; } - if (loaded != null) { - this.playerCache.put(key, loaded); + if (player != null) { + this.playerCache.put(key, player); } - return loaded; + return player; } @Override @@ -317,8 +297,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { return this.languageManager.getValue(key, getLocale(sender), replacements); } - @Nullable - private String getLocale(@NotNull CommandSender sender) { + private @Nullable String getLocale(@NotNull CommandSender sender) { if (sender instanceof Player) { return this.accessor.getPlayerDataManager().getLocale((Player) sender); } else { @@ -369,10 +348,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { // Register listeners pm.registerEvents(new PlayerListener(this), this); pm.registerEvents(new PluginListener(this), this); - pm.registerEvents(new InventoryClickListener(), this); - pm.registerEvents(new InventoryCloseListener(this), this); - // Bukkit will handle missing events for us, attempt to register InventoryDragEvent without a version check - pm.registerEvents(new InventoryDragListener(), this); + pm.registerEvents(new InventoryListener(this), this); // Register commands to their executors OpenInvCommand openInv = new OpenInvCommand(this); diff --git a/plugin/src/main/java/com/lishid/openinv/commands/ContainerSettingCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/ContainerSettingCommand.java index 09ed34c..1a76543 100644 --- a/plugin/src/main/java/com/lishid/openinv/commands/ContainerSettingCommand.java +++ b/plugin/src/main/java/com/lishid/openinv/commands/ContainerSettingCommand.java @@ -21,7 +21,7 @@ import com.lishid.openinv.util.TabCompleter; import java.util.Collections; import java.util.List; import java.util.function.BiConsumer; -import java.util.function.Function; +import java.util.function.Predicate; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -46,7 +46,7 @@ public class ContainerSettingCommand implements TabExecutor { Player player = (Player) sender; boolean any = command.getName().startsWith("any"); - Function getSetting = any ? plugin::getPlayerAnyChestStatus : plugin::getPlayerSilentChestStatus; + Predicate getSetting = any ? plugin::getPlayerAnyChestStatus : plugin::getPlayerSilentChestStatus; BiConsumer setSetting = any ? plugin::setPlayerAnyChestStatus : plugin::setPlayerSilentChestStatus; if (args.length > 0) { @@ -62,12 +62,12 @@ public class ContainerSettingCommand implements TabExecutor { } } else { - setSetting.accept(player, !getSetting.apply(player)); + setSetting.accept(player, !getSetting.test(player)); } - String onOff = plugin.getLocalizedMessage(player, getSetting.apply(player) ? "messages.info.on" : "messages.info.off"); + String onOff = plugin.getLocalizedMessage(player, getSetting.test(player) ? "messages.info.on" : "messages.info.off"); if (onOff == null) { - onOff = String.valueOf(getSetting.apply(player)); + onOff = String.valueOf(getSetting.test(player)); } plugin.sendMessage(sender, "messages.info.settingState","%setting%", any ? "AnyContainer" : "SilentContainer", "%state%", onOff); diff --git a/plugin/src/main/java/com/lishid/openinv/commands/SearchEnchantCommand.java b/plugin/src/main/java/com/lishid/openinv/commands/SearchEnchantCommand.java index 9e4206d..7f5eca9 100644 --- a/plugin/src/main/java/com/lishid/openinv/commands/SearchEnchantCommand.java +++ b/plugin/src/main/java/com/lishid/openinv/commands/SearchEnchantCommand.java @@ -31,6 +31,7 @@ import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * Command adding the ability to search online players' inventories for enchantments of a specific @@ -124,8 +125,9 @@ public class SearchEnchantCommand implements TabExecutor { return true; } - private boolean containsEnchantment(Inventory inventory, Enchantment enchant, int minLevel) { + private boolean containsEnchantment(Inventory inventory, @Nullable Enchantment enchant, int minLevel) { for (ItemStack item : inventory.getContents()) { + //noinspection ConstantConditions // Spigot improperly annotated, should be ItemStack @NotNull [] if (item == null || item.getType() == Material.AIR) { continue; } diff --git a/plugin/src/main/java/com/lishid/openinv/listeners/InventoryClickListener.java b/plugin/src/main/java/com/lishid/openinv/listeners/InventoryClickListener.java deleted file mode 100644 index ad39592..0000000 --- a/plugin/src/main/java/com/lishid/openinv/listeners/InventoryClickListener.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2011-2020 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.listeners; - -import com.lishid.openinv.util.InventoryAccess; -import com.lishid.openinv.util.Permissions; -import org.bukkit.entity.HumanEntity; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.Inventory; - -public class InventoryClickListener implements Listener { - - @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) - public void onInventoryClick(InventoryClickEvent event) { - HumanEntity entity = event.getWhoClicked(); - Inventory inventory = event.getInventory(); - if (InventoryAccess.isPlayerInventory(inventory) && !Permissions.EDITINV.hasPermission(entity) - || InventoryAccess.isEnderChest(inventory) && !Permissions.EDITENDER.hasPermission(entity)) { - event.setCancelled(true); - } - } - -} diff --git a/plugin/src/main/java/com/lishid/openinv/listeners/InventoryCloseListener.java b/plugin/src/main/java/com/lishid/openinv/listeners/InventoryCloseListener.java deleted file mode 100644 index 3e318ee..0000000 --- a/plugin/src/main/java/com/lishid/openinv/listeners/InventoryCloseListener.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2011-2020 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.listeners; - -import com.lishid.openinv.IOpenInv; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.inventory.InventoryCloseEvent; - -public class InventoryCloseListener implements Listener { - - private final IOpenInv plugin; - - public InventoryCloseListener(final IOpenInv plugin) { - this.plugin = plugin; - } - - @EventHandler - public void onInventoryClose(final InventoryCloseEvent event) { - if (!(event.getPlayer() instanceof Player)) { - return; - } - - Player player = (Player) event.getPlayer(); - - if (this.plugin.getPlayerSilentChestStatus(player)) { - this.plugin.getAnySilentContainer().deactivateContainer(player); - } - } - -} diff --git a/plugin/src/main/java/com/lishid/openinv/listeners/InventoryDragListener.java b/plugin/src/main/java/com/lishid/openinv/listeners/InventoryListener.java similarity index 56% rename from plugin/src/main/java/com/lishid/openinv/listeners/InventoryDragListener.java rename to plugin/src/main/java/com/lishid/openinv/listeners/InventoryListener.java index c61b9d3..40d7b92 100644 --- a/plugin/src/main/java/com/lishid/openinv/listeners/InventoryDragListener.java +++ b/plugin/src/main/java/com/lishid/openinv/listeners/InventoryListener.java @@ -16,24 +16,57 @@ package com.lishid.openinv.listeners; +import com.lishid.openinv.IOpenInv; import com.lishid.openinv.util.InventoryAccess; import com.lishid.openinv.util.Permissions; import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.inventory.InventoryDragEvent; +import org.bukkit.event.inventory.InventoryInteractEvent; import org.bukkit.inventory.Inventory; /** - * Listener for InventoryDragEvents to prevent unpermitted modification of special inventories. + * Listener for inventory-related events to prevent modification of inventories where not allowed. * * @author Jikoo */ -public class InventoryDragListener implements Listener { +public class InventoryListener implements Listener { + + private final IOpenInv plugin; + + public InventoryListener(final IOpenInv plugin) { + this.plugin = plugin; + } + + @EventHandler + public void onInventoryClose(final InventoryCloseEvent event) { + if (!(event.getPlayer() instanceof Player)) { + return; + } + + Player player = (Player) event.getPlayer(); + + if (this.plugin.getPlayerSilentChestStatus(player)) { + this.plugin.getAnySilentContainer().deactivateContainer(player); + } + } + + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + public void onInventoryClick(InventoryClickEvent event) { + onInventoryInteract(event); + } @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) public void onInventoryDrag(InventoryDragEvent event) { + onInventoryInteract(event); + } + + private void onInventoryInteract(InventoryInteractEvent event) { HumanEntity entity = event.getWhoClicked(); Inventory inventory = event.getInventory(); if (InventoryAccess.isPlayerInventory(inventory) && !Permissions.EDITINV.hasPermission(entity) diff --git a/plugin/src/main/java/com/lishid/openinv/util/Cache.java b/plugin/src/main/java/com/lishid/openinv/util/Cache.java index dc627cc..fc8c60e 100644 --- a/plugin/src/main/java/com/lishid/openinv/util/Cache.java +++ b/plugin/src/main/java/com/lishid/openinv/util/Cache.java @@ -24,7 +24,8 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.function.Function; +import java.util.function.Consumer; +import java.util.function.Predicate; /** * A minimal thread-safe time-based cache implementation backed by a HashMap and TreeMultimap. @@ -36,16 +37,17 @@ public class Cache { private final Map internal; private final Multimap expiry; private final long retention; - private final Function inUseCheck, postRemoval; + private final Predicate inUseCheck; + private final Consumer postRemoval; /** * Constructs a Cache with the specified retention duration, in use function, and post-removal function. * * @param retention duration after which keys are automatically invalidated if not in use - * @param inUseCheck Function used to check if a key is considered in use - * @param postRemoval Function used to perform any operations required when a key is invalidated + * @param inUseCheck Predicate used to check if a key is considered in use + * @param postRemoval Consumer used to perform any operations required when a key is invalidated */ - public Cache(final long retention, final Function inUseCheck, final Function postRemoval) { + public Cache(final long retention, final Predicate inUseCheck, final Consumer postRemoval) { this.internal = new HashMap<>(); this.expiry = TreeMultimap.create(Long::compareTo, (k1, k2) -> Objects.equals(k1, k2) ? 0 : 1); @@ -136,7 +138,7 @@ public class Cache { public void invalidateAll() { synchronized (this.internal) { for (V value : this.internal.values()) { - this.postRemoval.apply(value); + this.postRemoval.accept(value); } this.expiry.clear(); this.internal.clear(); @@ -161,7 +163,7 @@ public class Cache { iterator.remove(); - if (this.inUseCheck.apply(this.internal.get(entry.getValue()))) { + if (this.inUseCheck.test(this.internal.get(entry.getValue()))) { inUse.add(entry.getValue()); continue; } @@ -172,7 +174,7 @@ public class Cache { continue; } - this.postRemoval.apply(value); + this.postRemoval.accept(value); } long nextExpiry = now + this.retention; diff --git a/plugin/src/main/java/com/lishid/openinv/util/ConfigUpdater.java b/plugin/src/main/java/com/lishid/openinv/util/ConfigUpdater.java index 082427b..faecfc8 100644 --- a/plugin/src/main/java/com/lishid/openinv/util/ConfigUpdater.java +++ b/plugin/src/main/java/com/lishid/openinv/util/ConfigUpdater.java @@ -24,7 +24,6 @@ import java.util.Map; import java.util.Set; import org.bukkit.OfflinePlayer; import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.scheduler.BukkitRunnable; public class ConfigUpdater { @@ -36,7 +35,8 @@ public class ConfigUpdater { public void checkForUpdates() { final int version = plugin.getConfig().getInt("config-version", 1); - if (version >= plugin.getConfig().getDefaults().getInt("config-version")) { + ConfigurationSection defaults = plugin.getConfig().getDefaults(); + if (defaults == null || version >= defaults.getInt("config-version")) { return; } @@ -50,87 +50,72 @@ public class ConfigUpdater { plugin.getLogger().warning("Could not back up config.yml before updating!"); } - new BukkitRunnable() { - @Override - public void run() { - if (version < 2) { - updateConfig1To2(); - } - if (version < 3) { - updateConfig2To3(); - } - if (version < 4) { - updateConfig3To4(); - } - - new BukkitRunnable() { - @Override - public void run() { - plugin.saveConfig(); - plugin.getLogger().info("Configuration update complete!"); - } - }.runTaskLater(plugin, 1L); // Run on 1 tick delay; on older versions Bukkit's scheduler is not guaranteed FIFO + plugin.getServer().getScheduler().runTaskAsynchronously(plugin, () -> { + if (version < 2) { + updateConfig1To2(); } - }.runTaskAsynchronously(plugin); + if (version < 3) { + updateConfig2To3(); + } + if (version < 4) { + updateConfig3To4(); + } + + plugin.getServer().getScheduler().runTask(plugin, () -> { + plugin.saveConfig(); + plugin.getLogger().info("Configuration update complete!"); + }); + }); } private void updateConfig3To4() { - new BukkitRunnable() { - @Override - public void run() { - plugin.getConfig().set("notify", null); - plugin.getConfig().set("settings.locale", "en_US"); - plugin.getConfig().set("config-version", 4); - } - }.runTask(plugin); + plugin.getServer().getScheduler().runTask(plugin, () -> { + plugin.getConfig().set("notify", null); + plugin.getConfig().set("settings.locale", "en_US"); + plugin.getConfig().set("config-version", 4); + }); } private void updateConfig2To3() { - new BukkitRunnable() { - @Override - public void run() { - plugin.getConfig().set("config-version", 3); - plugin.getConfig().set("items.open-inv", null); - plugin.getConfig().set("ItemOpenInv", null); - plugin.getConfig().set("toggles.items.open-inv", null); - plugin.getConfig().set("settings.disable-saving", - plugin.getConfig().getBoolean("DisableSaving", false)); - plugin.getConfig().set("DisableSaving", null); - } - }.runTask(plugin); + plugin.getServer().getScheduler().runTask(plugin, () -> { + plugin.getConfig().set("config-version", 3); + plugin.getConfig().set("items.open-inv", null); + plugin.getConfig().set("ItemOpenInv", null); + plugin.getConfig().set("toggles.items.open-inv", null); + plugin.getConfig().set("settings.disable-saving", + plugin.getConfig().getBoolean("DisableSaving", false)); + plugin.getConfig().set("DisableSaving", null); + }); } private void updateConfig1To2() { - new BukkitRunnable() { - @Override - public void run() { - // Get the old config settings - boolean notifySilentChest = plugin.getConfig().getBoolean("NotifySilentChest", true); - boolean notifyAnyChest = plugin.getConfig().getBoolean("NotifyAnyChest", true); - plugin.getConfig().set("ItemOpenInvItemID", null); - plugin.getConfig().set("NotifySilentChest", null); - plugin.getConfig().set("NotifyAnyChest", null); - plugin.getConfig().set("config-version", 2); - plugin.getConfig().set("notify.any-chest", notifyAnyChest); - plugin.getConfig().set("notify.silent-chest", notifySilentChest); - } - }.runTask(plugin); + plugin.getServer().getScheduler().runTask(plugin, () -> { + // Get the old config settings + boolean notifySilentChest = plugin.getConfig().getBoolean("NotifySilentChest", true); + boolean notifyAnyChest = plugin.getConfig().getBoolean("NotifyAnyChest", true); + plugin.getConfig().set("ItemOpenInvItemID", null); + plugin.getConfig().set("NotifySilentChest", null); + plugin.getConfig().set("NotifyAnyChest", null); + plugin.getConfig().set("config-version", 2); + plugin.getConfig().set("notify.any-chest", notifyAnyChest); + plugin.getConfig().set("notify.silent-chest", notifySilentChest); + }); updateToggles("AnyChest", "toggles.any-chest"); updateToggles("SilentChest", "toggles.silent-chest"); } private void updateToggles(final String sectionName, final String newSectionName) { + ConfigurationSection section = plugin.getConfig().getConfigurationSection(sectionName); // Ensure section exists - if (!plugin.getConfig().isConfigurationSection(sectionName)) { + if (section == null) { return; } - ConfigurationSection section = plugin.getConfig().getConfigurationSection(sectionName); Set keys = section.getKeys(false); // Ensure section has content - if (keys == null || keys.isEmpty()) { + if (keys.isEmpty()) { return; } @@ -143,25 +128,20 @@ public class ConfigUpdater { } } - new BukkitRunnable() { - @Override - public void run() { - // Wipe old ConfigurationSection - plugin.getConfig().set(sectionName, null); + plugin.getServer().getScheduler().runTask(plugin, () -> { + // Wipe old ConfigurationSection + plugin.getConfig().set(sectionName, null); - // Prepare new ConfigurationSection - ConfigurationSection newSection; - if (plugin.getConfig().isConfigurationSection(newSectionName)) { - newSection = plugin.getConfig().getConfigurationSection(newSectionName); - } else { - newSection = plugin.getConfig().createSection(newSectionName); - } - // Set new values - for (Map.Entry entry : toggles.entrySet()) { - newSection.set(entry.getKey(), entry.getValue()); - } + // Prepare new ConfigurationSection + ConfigurationSection newSection = plugin.getConfig().getConfigurationSection(newSectionName); + if (newSection == null) { + newSection = plugin.getConfig().createSection(newSectionName); } - }.runTask(plugin); + // Set new values + for (Map.Entry entry : toggles.entrySet()) { + newSection.set(entry.getKey(), entry.getValue()); + } + }); } } diff --git a/plugin/src/main/java/com/lishid/openinv/util/InternalAccessor.java b/plugin/src/main/java/com/lishid/openinv/util/InternalAccessor.java index 719f055..bd50289 100644 --- a/plugin/src/main/java/com/lishid/openinv/util/InternalAccessor.java +++ b/plugin/src/main/java/com/lishid/openinv/util/InternalAccessor.java @@ -40,7 +40,6 @@ public class InternalAccessor { this.version = packageName.substring(packageName.lastIndexOf('.') + 1); try { - // TODO: implement support for CraftMagicNumbers#getMappingsVersion Class.forName("com.lishid.openinv.internal." + this.version + ".SpecialPlayerInventory"); Class.forName("com.lishid.openinv.internal." + this.version + ".SpecialEnderChest"); this.playerDataManager = this.createObject(IPlayerDataManager.class, "PlayerDataManager"); diff --git a/plugin/src/main/java/com/lishid/openinv/util/LanguageManager.java b/plugin/src/main/java/com/lishid/openinv/util/LanguageManager.java index 033c71b..8eadcb9 100644 --- a/plugin/src/main/java/com/lishid/openinv/util/LanguageManager.java +++ b/plugin/src/main/java/com/lishid/openinv/util/LanguageManager.java @@ -41,7 +41,7 @@ public class LanguageManager { private final OpenInv plugin; private final String defaultLocale; - private Map locales; + private final Map locales; public LanguageManager(@NotNull OpenInv plugin, @NotNull String defaultLocale) { this.plugin = plugin; -- 2.49.1 From da55790fd2b8746b7451bb266bc846e8d52f335f Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 15 Sep 2020 13:35:04 -0400 Subject: [PATCH 231/253] Allow spectators to edit inventories Requires permission OpenInv.spectate Closes #155 --- README.MD | 4 +++ .../openinv/listeners/InventoryListener.java | 26 +++++++++++++++---- .../com/lishid/openinv/util/Permissions.java | 3 ++- plugin/src/main/resources/plugin.yml | 3 ++- 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/README.MD b/README.MD index 82a681d..66c183f 100644 --- a/README.MD +++ b/README.MD @@ -136,6 +136,10 @@ OpenInv is a [Bukkit plugin](https://dev.bukkit.org/bukkit-plugins/openinv/) whi OpenInv.silent.default Cause SilentContainer to be enabled by default. + + OpenInv.spectate + Allows users in spectate gamemode to edit inventories. + ## For Developers diff --git a/plugin/src/main/java/com/lishid/openinv/listeners/InventoryListener.java b/plugin/src/main/java/com/lishid/openinv/listeners/InventoryListener.java index 40d7b92..33221f2 100644 --- a/plugin/src/main/java/com/lishid/openinv/listeners/InventoryListener.java +++ b/plugin/src/main/java/com/lishid/openinv/listeners/InventoryListener.java @@ -19,6 +19,7 @@ package com.lishid.openinv.listeners; import com.lishid.openinv.IOpenInv; import com.lishid.openinv.util.InventoryAccess; import com.lishid.openinv.util.Permissions; +import org.bukkit.GameMode; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -56,22 +57,37 @@ public class InventoryListener implements Listener { } } - @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + @EventHandler(priority = EventPriority.LOWEST) public void onInventoryClick(InventoryClickEvent event) { onInventoryInteract(event); } - @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + @EventHandler(priority = EventPriority.LOWEST) public void onInventoryDrag(InventoryDragEvent event) { onInventoryInteract(event); } private void onInventoryInteract(InventoryInteractEvent event) { HumanEntity entity = event.getWhoClicked(); + + if (Permissions.SPECTATE.hasPermission(entity) && entity.getGameMode() == GameMode.SPECTATOR) { + event.setCancelled(false); + } + + if (event.isCancelled()) { + return; + } + Inventory inventory = event.getInventory(); - if (InventoryAccess.isPlayerInventory(inventory) && !Permissions.EDITINV.hasPermission(entity) - || InventoryAccess.isEnderChest(inventory) && !Permissions.EDITENDER.hasPermission(entity)) { - event.setCancelled(true); + + if (InventoryAccess.isPlayerInventory(inventory)) { + if (!Permissions.EDITINV.hasPermission(entity)) { + event.setCancelled(true); + } + } else if (InventoryAccess.isEnderChest(inventory)) { + if (!Permissions.EDITENDER.hasPermission(entity)) { + event.setCancelled(true); + } } } diff --git a/plugin/src/main/java/com/lishid/openinv/util/Permissions.java b/plugin/src/main/java/com/lishid/openinv/util/Permissions.java index 97f695d..c1cab7f 100644 --- a/plugin/src/main/java/com/lishid/openinv/util/Permissions.java +++ b/plugin/src/main/java/com/lishid/openinv/util/Permissions.java @@ -35,7 +35,8 @@ public enum Permissions { EDITENDER("editender"), OPENSELF("openself"), OPENONLINE("openonline"), - OPENOFFLINE("openoffline"); + OPENOFFLINE("openoffline"), + SPECTATE("spectate"); private final String permission; diff --git a/plugin/src/main/resources/plugin.yml b/plugin/src/main/resources/plugin.yml index 037e634..ce43adb 100644 --- a/plugin/src/main/resources/plugin.yml +++ b/plugin/src/main/resources/plugin.yml @@ -5,7 +5,7 @@ author: lishid authors: [Jikoo, ShadowRanger] description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. -api-version: "1.14" +api-version: "1.15" permissions: OpenInv.any.default: @@ -27,6 +27,7 @@ permissions: OpenInv.searchcontainer: true OpenInv.openonline: true OpenInv.openoffline: true + OpenInv.spectate: true OpenInv.openinv: default: op children: -- 2.49.1 From 788f022e74dcaee6aad28cd0bb8628d96f4f86b4 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 15 Sep 2020 13:44:50 -0400 Subject: [PATCH 232/253] Mitigate some permissions confusion For some reason, certain permissions plugins seem to not respect our declared default false nodes. To alleviate user confusion, these nodes will not be allowed to be used via wildcard internally. --- .../java/com/lishid/openinv/util/Permissions.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/plugin/src/main/java/com/lishid/openinv/util/Permissions.java b/plugin/src/main/java/com/lishid/openinv/util/Permissions.java index c1cab7f..859ba13 100644 --- a/plugin/src/main/java/com/lishid/openinv/util/Permissions.java +++ b/plugin/src/main/java/com/lishid/openinv/util/Permissions.java @@ -25,9 +25,9 @@ public enum Permissions { EXEMPT("exempt"), CROSSWORLD("crossworld"), SILENT("silent"), - SILENT_DEFAULT("silent.default"), + SILENT_DEFAULT("silent.default", true), ANYCHEST("anychest"), - ANY_DEFAULT("any.default"), + ANY_DEFAULT("any.default", true), ENDERCHEST("openender"), ENDERCHEST_ALL("openenderall"), SEARCH("search"), @@ -39,15 +39,21 @@ public enum Permissions { SPECTATE("spectate"); private final String permission; + private final boolean uninheritable; Permissions(String permission) { + this(permission, false); + } + + Permissions(String permission, boolean uninheritable) { this.permission = "OpenInv." + permission; + this.uninheritable = uninheritable; } public boolean hasPermission(Permissible permissible) { boolean hasPermission = permissible.hasPermission(permission); - if (hasPermission || permissible.isPermissionSet(permission)) { + if (uninheritable || hasPermission || permissible.isPermissionSet(permission)) { return hasPermission; } -- 2.49.1 From 00113cc4d49ff63bbbc3709a92cb4f7f2889a442 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 15 Sep 2020 13:47:12 -0400 Subject: [PATCH 233/253] These are my favorite version bumps --- internal/v1_16_R2/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/v1_16_R2/pom.xml b/internal/v1_16_R2/pom.xml index a2726c4..86ef1b7 100644 --- a/internal/v1_16_R2/pom.xml +++ b/internal/v1_16_R2/pom.xml @@ -32,7 +32,7 @@ org.spigotmc spigot - 1.16.2-R0.1-SNAPSHOT + 1.16.3-R0.1-SNAPSHOT provided -- 2.49.1 From 3fee84fc58b0d156c47b12d82b85cda81f68aaf1 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 3 Nov 2020 18:18:25 -0500 Subject: [PATCH 234/253] Add support for 1.16.4, drop 1.16.1 --- internal/pom.xml | 2 +- internal/{v1_16_R1 => v1_16_R3}/pom.xml | 8 +-- .../v1_16_R3}/AnySilentContainer.java | 67 +++++++++---------- .../internal/v1_16_R3}/PlayerDataManager.java | 53 +++++++-------- .../internal/v1_16_R3}/SpecialEnderChest.java | 22 +++--- .../v1_16_R3}/SpecialPlayerInventory.java | 50 +++++++------- pom.xml | 20 ------ 7 files changed, 100 insertions(+), 122 deletions(-) rename internal/{v1_16_R1 => v1_16_R3}/pom.xml (93%) rename internal/{v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1 => v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3}/AnySilentContainer.java (89%) rename internal/{v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1 => v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3}/PlayerDataManager.java (87%) rename internal/{v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1 => v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3}/SpecialEnderChest.java (91%) rename internal/{v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1 => v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3}/SpecialPlayerInventory.java (94%) diff --git a/internal/pom.xml b/internal/pom.xml index 7db019b..948b922 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -35,8 +35,8 @@ v1_8_R3 v1_15_R1 - v1_16_R1 v1_16_R2 + v1_16_R3 diff --git a/internal/v1_16_R1/pom.xml b/internal/v1_16_R3/pom.xml similarity index 93% rename from internal/v1_16_R1/pom.xml rename to internal/v1_16_R3/pom.xml index 7e6c28a..4661a32 100644 --- a/internal/v1_16_R1/pom.xml +++ b/internal/v1_16_R3/pom.xml @@ -25,14 +25,14 @@ 4.1.5-SNAPSHOT - openinvadapter1_16_R1 - OpenInvAdapter1_16_R1 + openinvadapter1_16_R3 + OpenInvAdapter1_16_R3 org.spigotmc spigot - 1.16.1-R0.1-SNAPSHOT + 1.16.4-R0.1-SNAPSHOT provided @@ -72,4 +72,4 @@ - \ No newline at end of file + diff --git a/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/AnySilentContainer.java b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/AnySilentContainer.java similarity index 89% rename from internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/AnySilentContainer.java rename to internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/AnySilentContainer.java index f5bbd2f..e6a2083 100644 --- a/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/AnySilentContainer.java +++ b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/AnySilentContainer.java @@ -14,39 +14,38 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_16_R1; +package com.lishid.openinv.internal.v1_16_R3; import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.IAnySilentContainer; import java.lang.reflect.Field; -import net.minecraft.server.v1_16_R1.Block; -import net.minecraft.server.v1_16_R1.BlockBarrel; -import net.minecraft.server.v1_16_R1.BlockChest; -import net.minecraft.server.v1_16_R1.BlockChestTrapped; -import net.minecraft.server.v1_16_R1.BlockEnderChest; -import net.minecraft.server.v1_16_R1.BlockPosition; -import net.minecraft.server.v1_16_R1.BlockPropertyChestType; -import net.minecraft.server.v1_16_R1.BlockShulkerBox; -import net.minecraft.server.v1_16_R1.ChatMessage; -import net.minecraft.server.v1_16_R1.Container; -import net.minecraft.server.v1_16_R1.ContainerChest; -import net.minecraft.server.v1_16_R1.Containers; -import net.minecraft.server.v1_16_R1.EntityHuman; -import net.minecraft.server.v1_16_R1.EntityPlayer; -import net.minecraft.server.v1_16_R1.EnumGamemode; -import net.minecraft.server.v1_16_R1.IBlockData; -import net.minecraft.server.v1_16_R1.IChatBaseComponent; -import net.minecraft.server.v1_16_R1.ITileInventory; -import net.minecraft.server.v1_16_R1.InventoryEnderChest; -import net.minecraft.server.v1_16_R1.InventoryLargeChest; -import net.minecraft.server.v1_16_R1.PlayerInteractManager; -import net.minecraft.server.v1_16_R1.PlayerInventory; -import net.minecraft.server.v1_16_R1.TileEntity; -import net.minecraft.server.v1_16_R1.TileEntityChest; -import net.minecraft.server.v1_16_R1.TileEntityEnderChest; -import net.minecraft.server.v1_16_R1.TileEntityLootable; -import net.minecraft.server.v1_16_R1.TileInventory; -import net.minecraft.server.v1_16_R1.World; +import net.minecraft.server.v1_16_R3.Block; +import net.minecraft.server.v1_16_R3.BlockBarrel; +import net.minecraft.server.v1_16_R3.BlockChest; +import net.minecraft.server.v1_16_R3.BlockChestTrapped; +import net.minecraft.server.v1_16_R3.BlockPosition; +import net.minecraft.server.v1_16_R3.BlockPropertyChestType; +import net.minecraft.server.v1_16_R3.BlockShulkerBox; +import net.minecraft.server.v1_16_R3.ChatMessage; +import net.minecraft.server.v1_16_R3.Container; +import net.minecraft.server.v1_16_R3.ContainerChest; +import net.minecraft.server.v1_16_R3.Containers; +import net.minecraft.server.v1_16_R3.EntityHuman; +import net.minecraft.server.v1_16_R3.EntityPlayer; +import net.minecraft.server.v1_16_R3.EnumGamemode; +import net.minecraft.server.v1_16_R3.IBlockData; +import net.minecraft.server.v1_16_R3.IChatBaseComponent; +import net.minecraft.server.v1_16_R3.ITileInventory; +import net.minecraft.server.v1_16_R3.InventoryEnderChest; +import net.minecraft.server.v1_16_R3.InventoryLargeChest; +import net.minecraft.server.v1_16_R3.PlayerInteractManager; +import net.minecraft.server.v1_16_R3.PlayerInventory; +import net.minecraft.server.v1_16_R3.TileEntity; +import net.minecraft.server.v1_16_R3.TileEntityChest; +import net.minecraft.server.v1_16_R3.TileEntityEnderChest; +import net.minecraft.server.v1_16_R3.TileEntityLootable; +import net.minecraft.server.v1_16_R3.TileInventory; +import net.minecraft.server.v1_16_R3.World; import org.bukkit.Material; import org.bukkit.Statistic; import org.bukkit.block.Barrel; @@ -149,7 +148,7 @@ public class AnySilentContainer implements IAnySilentContainer { if (!(relativeData instanceof Chest)) { return false; } - + Chest relativeChest = (Chest) relativeData; if (relativeChest.getFacing() != chest.getFacing() || relativeChest.getType() != (chest.getType() == Chest.Type.RIGHT ? Chest.Type.LEFT : Chest.Type.RIGHT)) { @@ -215,7 +214,7 @@ public class AnySilentContainer implements IAnySilentContainer { break; } return new ContainerChest(containers, containerCounter, playerInventory, enderChest, rows); - }, BlockEnderChest.e)); + }, new ChatMessage("container.enderchest"))); bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); return true; } @@ -324,9 +323,9 @@ public class AnySilentContainer implements IAnySilentContainer { case ENDER_CHEST: case SHULKER_BOX: case BARREL: - break; - default: - return; + break; + default: + return; } EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); diff --git a/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/PlayerDataManager.java b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java similarity index 87% rename from internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/PlayerDataManager.java rename to internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java index b127b43..e0737c5 100644 --- a/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/PlayerDataManager.java +++ b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java @@ -14,7 +14,7 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_16_R1; +package com.lishid.openinv.internal.v1_16_R3; import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.IPlayerDataManager; @@ -23,32 +23,32 @@ import com.mojang.authlib.GameProfile; import java.io.File; import java.io.FileOutputStream; import java.lang.reflect.Field; -import net.minecraft.server.v1_16_R1.ChatComponentText; -import net.minecraft.server.v1_16_R1.ChatMessageType; -import net.minecraft.server.v1_16_R1.Container; -import net.minecraft.server.v1_16_R1.Containers; -import net.minecraft.server.v1_16_R1.Entity; -import net.minecraft.server.v1_16_R1.EntityHuman; -import net.minecraft.server.v1_16_R1.EntityPlayer; -import net.minecraft.server.v1_16_R1.MinecraftServer; -import net.minecraft.server.v1_16_R1.NBTCompressedStreamTools; -import net.minecraft.server.v1_16_R1.NBTTagCompound; -import net.minecraft.server.v1_16_R1.PacketPlayOutChat; -import net.minecraft.server.v1_16_R1.PacketPlayOutOpenWindow; -import net.minecraft.server.v1_16_R1.PlayerInteractManager; -import net.minecraft.server.v1_16_R1.PlayerInventory; -import net.minecraft.server.v1_16_R1.SystemUtils; -import net.minecraft.server.v1_16_R1.World; -import net.minecraft.server.v1_16_R1.WorldNBTStorage; -import net.minecraft.server.v1_16_R1.WorldServer; +import net.minecraft.server.v1_16_R3.ChatComponentText; +import net.minecraft.server.v1_16_R3.ChatMessageType; +import net.minecraft.server.v1_16_R3.Container; +import net.minecraft.server.v1_16_R3.Containers; +import net.minecraft.server.v1_16_R3.Entity; +import net.minecraft.server.v1_16_R3.EntityHuman; +import net.minecraft.server.v1_16_R3.EntityPlayer; +import net.minecraft.server.v1_16_R3.MinecraftServer; +import net.minecraft.server.v1_16_R3.NBTCompressedStreamTools; +import net.minecraft.server.v1_16_R3.NBTTagCompound; +import net.minecraft.server.v1_16_R3.PacketPlayOutChat; +import net.minecraft.server.v1_16_R3.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_16_R3.PlayerInteractManager; +import net.minecraft.server.v1_16_R3.PlayerInventory; +import net.minecraft.server.v1_16_R3.SystemUtils; +import net.minecraft.server.v1_16_R3.World; +import net.minecraft.server.v1_16_R3.WorldNBTStorage; +import net.minecraft.server.v1_16_R3.WorldServer; import org.apache.logging.log4j.LogManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_16_R1.CraftServer; -import org.bukkit.craftbukkit.v1_16_R1.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_16_R1.event.CraftEventFactory; -import org.bukkit.craftbukkit.v1_16_R1.inventory.CraftContainer; +import org.bukkit.craftbukkit.v1_16_R3.CraftServer; +import org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory; +import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftContainer; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryType; @@ -161,11 +161,10 @@ public class PlayerDataManager implements IPlayerDataManager { NBTCompressedStreamTools.a(playerData, new FileOutputStream(file)); - if (file1.exists()) { - file1.delete(); + if (file1.exists() && !file1.delete() || !file.renameTo(file1)) { + LogManager.getLogger().warn("Failed to save player data for {}", player.getDisplayName().getString()); } - file.renameTo(file1); } catch (Exception e) { LogManager.getLogger().warn("Failed to save player data for {}", player.getDisplayName().getString()); } @@ -187,7 +186,7 @@ public class PlayerDataManager implements IPlayerDataManager { } @Nullable - @Override + @Override public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { EntityPlayer nmsPlayer = getHandle(player); diff --git a/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/SpecialEnderChest.java b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/SpecialEnderChest.java similarity index 91% rename from internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/SpecialEnderChest.java rename to internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/SpecialEnderChest.java index bacfcaa..7fe8bee 100644 --- a/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/SpecialEnderChest.java +++ b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/SpecialEnderChest.java @@ -14,21 +14,21 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_16_R1; +package com.lishid.openinv.internal.v1_16_R3; import com.lishid.openinv.internal.ISpecialEnderChest; import java.util.List; -import net.minecraft.server.v1_16_R1.AutoRecipeStackManager; -import net.minecraft.server.v1_16_R1.ContainerUtil; -import net.minecraft.server.v1_16_R1.EntityHuman; -import net.minecraft.server.v1_16_R1.EntityPlayer; -import net.minecraft.server.v1_16_R1.IInventoryListener; -import net.minecraft.server.v1_16_R1.InventoryEnderChest; -import net.minecraft.server.v1_16_R1.ItemStack; -import net.minecraft.server.v1_16_R1.NonNullList; +import net.minecraft.server.v1_16_R3.AutoRecipeStackManager; +import net.minecraft.server.v1_16_R3.ContainerUtil; +import net.minecraft.server.v1_16_R3.EntityHuman; +import net.minecraft.server.v1_16_R3.EntityPlayer; +import net.minecraft.server.v1_16_R3.IInventoryListener; +import net.minecraft.server.v1_16_R3.InventoryEnderChest; +import net.minecraft.server.v1_16_R3.ItemStack; +import net.minecraft.server.v1_16_R3.NonNullList; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_16_R1.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_16_R1.inventory.CraftInventory; +import org.bukkit.craftbukkit.v1_16_R3.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.InventoryHolder; diff --git a/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/SpecialPlayerInventory.java b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/SpecialPlayerInventory.java similarity index 94% rename from internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/SpecialPlayerInventory.java rename to internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/SpecialPlayerInventory.java index 0d00da4..ada345c 100644 --- a/internal/v1_16_R1/src/main/java/com/lishid/openinv/internal/v1_16_R1/SpecialPlayerInventory.java +++ b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/SpecialPlayerInventory.java @@ -14,7 +14,7 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_16_R1; +package com.lishid.openinv.internal.v1_16_R3; import com.google.common.collect.ImmutableList; import com.lishid.openinv.internal.ISpecialPlayerInventory; @@ -22,31 +22,31 @@ import java.util.Iterator; import java.util.List; import java.util.function.Predicate; import java.util.stream.Collectors; -import net.minecraft.server.v1_16_R1.AutoRecipeStackManager; -import net.minecraft.server.v1_16_R1.ChatMessage; -import net.minecraft.server.v1_16_R1.ContainerUtil; -import net.minecraft.server.v1_16_R1.CrashReport; -import net.minecraft.server.v1_16_R1.CrashReportSystemDetails; -import net.minecraft.server.v1_16_R1.DamageSource; -import net.minecraft.server.v1_16_R1.EntityHuman; -import net.minecraft.server.v1_16_R1.EntityPlayer; -import net.minecraft.server.v1_16_R1.EnumItemSlot; -import net.minecraft.server.v1_16_R1.IBlockData; -import net.minecraft.server.v1_16_R1.IChatBaseComponent; -import net.minecraft.server.v1_16_R1.IInventory; -import net.minecraft.server.v1_16_R1.Item; -import net.minecraft.server.v1_16_R1.ItemArmor; -import net.minecraft.server.v1_16_R1.ItemStack; -import net.minecraft.server.v1_16_R1.NBTTagCompound; -import net.minecraft.server.v1_16_R1.NBTTagList; -import net.minecraft.server.v1_16_R1.NonNullList; -import net.minecraft.server.v1_16_R1.PacketPlayOutSetSlot; -import net.minecraft.server.v1_16_R1.PlayerInventory; -import net.minecraft.server.v1_16_R1.ReportedException; -import net.minecraft.server.v1_16_R1.World; +import net.minecraft.server.v1_16_R3.AutoRecipeStackManager; +import net.minecraft.server.v1_16_R3.ChatMessage; +import net.minecraft.server.v1_16_R3.ContainerUtil; +import net.minecraft.server.v1_16_R3.CrashReport; +import net.minecraft.server.v1_16_R3.CrashReportSystemDetails; +import net.minecraft.server.v1_16_R3.DamageSource; +import net.minecraft.server.v1_16_R3.EntityHuman; +import net.minecraft.server.v1_16_R3.EntityPlayer; +import net.minecraft.server.v1_16_R3.EnumItemSlot; +import net.minecraft.server.v1_16_R3.IBlockData; +import net.minecraft.server.v1_16_R3.IChatBaseComponent; +import net.minecraft.server.v1_16_R3.IInventory; +import net.minecraft.server.v1_16_R3.Item; +import net.minecraft.server.v1_16_R3.ItemArmor; +import net.minecraft.server.v1_16_R3.ItemStack; +import net.minecraft.server.v1_16_R3.NBTTagCompound; +import net.minecraft.server.v1_16_R3.NBTTagList; +import net.minecraft.server.v1_16_R3.NonNullList; +import net.minecraft.server.v1_16_R3.PacketPlayOutSetSlot; +import net.minecraft.server.v1_16_R3.PlayerInventory; +import net.minecraft.server.v1_16_R3.ReportedException; +import net.minecraft.server.v1_16_R3.World; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_16_R1.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_16_R1.inventory.CraftInventory; +import org.bukkit.craftbukkit.v1_16_R3.entity.CraftHumanEntity; +import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftInventory; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.InventoryHolder; diff --git a/pom.xml b/pom.xml index ac7b02c..e2f4b06 100644 --- a/pom.xml +++ b/pom.xml @@ -54,26 +54,6 @@ - - latest - - - latest - true - - - - - - recent - - - recent - true - - - - -- 2.49.1 From 1c45ef517f9f29ff3e5b9d411911adad3a17b0cd Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 3 Nov 2020 18:32:11 -0500 Subject: [PATCH 235/253] Bump version to 4.1.5 for release --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- internal/pom.xml | 2 +- internal/v1_15_R1/pom.xml | 4 ++-- internal/v1_16_R2/pom.xml | 4 ++-- internal/v1_16_R3/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- plugin/pom.xml | 4 ++-- pom.xml | 2 +- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index dea82f6..df0e946 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.5-SNAPSHOT + 4.1.5 openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index e46ae0d..9bac477 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.5-SNAPSHOT + 4.1.5 openinvassembly diff --git a/internal/pom.xml b/internal/pom.xml index 948b922..af125ec 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 4.1.5-SNAPSHOT + 4.1.5 openinvinternal diff --git a/internal/v1_15_R1/pom.xml b/internal/v1_15_R1/pom.xml index f76072d..e47f8a1 100644 --- a/internal/v1_15_R1/pom.xml +++ b/internal/v1_15_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.5-SNAPSHOT + 4.1.5 openinvadapter1_15_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.5-SNAPSHOT + 4.1.5 diff --git a/internal/v1_16_R2/pom.xml b/internal/v1_16_R2/pom.xml index 86ef1b7..3910252 100644 --- a/internal/v1_16_R2/pom.xml +++ b/internal/v1_16_R2/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.5-SNAPSHOT + 4.1.5 openinvadapter1_16_R2 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.5-SNAPSHOT + 4.1.5 diff --git a/internal/v1_16_R3/pom.xml b/internal/v1_16_R3/pom.xml index 4661a32..8ffcd79 100644 --- a/internal/v1_16_R3/pom.xml +++ b/internal/v1_16_R3/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.5-SNAPSHOT + 4.1.5 openinvadapter1_16_R3 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.5-SNAPSHOT + 4.1.5 diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 1a298cd..73a6b2f 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.1.5-SNAPSHOT + 4.1.5 openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvplugincore - 4.1.5-SNAPSHOT + 4.1.5 diff --git a/plugin/pom.xml b/plugin/pom.xml index 9733304..143792d 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.5-SNAPSHOT + 4.1.5 openinvplugincore @@ -31,7 +31,7 @@ com.lishid openinvapi - 4.1.5-SNAPSHOT + 4.1.5 org.spigotmc diff --git a/pom.xml b/pom.xml index e2f4b06..f2949d5 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 4.1.5-SNAPSHOT + 4.1.5 pom -- 2.49.1 From 9705cb156bb32e17be4b8579df8c3084c1138e17 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 3 Nov 2020 18:32:43 -0500 Subject: [PATCH 236/253] Bump version to 4.1.6-SNAPSHOT for development --- api/pom.xml | 2 +- assembly/pom.xml | 2 +- internal/pom.xml | 2 +- internal/v1_15_R1/pom.xml | 4 ++-- internal/v1_16_R2/pom.xml | 4 ++-- internal/v1_16_R3/pom.xml | 4 ++-- internal/v1_8_R3/pom.xml | 4 ++-- plugin/pom.xml | 4 ++-- pom.xml | 2 +- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index df0e946..e419bf2 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.5 + 4.1.6-SNAPSHOT openinvapi diff --git a/assembly/pom.xml b/assembly/pom.xml index 9bac477..421f77e 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.5 + 4.1.6-SNAPSHOT openinvassembly diff --git a/internal/pom.xml b/internal/pom.xml index af125ec..e7dc5b0 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -20,7 +20,7 @@ com.lishid openinvparent - 4.1.5 + 4.1.6-SNAPSHOT openinvinternal diff --git a/internal/v1_15_R1/pom.xml b/internal/v1_15_R1/pom.xml index e47f8a1..eddab53 100644 --- a/internal/v1_15_R1/pom.xml +++ b/internal/v1_15_R1/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.5 + 4.1.6-SNAPSHOT openinvadapter1_15_R1 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.5 + 4.1.6-SNAPSHOT diff --git a/internal/v1_16_R2/pom.xml b/internal/v1_16_R2/pom.xml index 3910252..f72ab8f 100644 --- a/internal/v1_16_R2/pom.xml +++ b/internal/v1_16_R2/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.5 + 4.1.6-SNAPSHOT openinvadapter1_16_R2 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.5 + 4.1.6-SNAPSHOT diff --git a/internal/v1_16_R3/pom.xml b/internal/v1_16_R3/pom.xml index 8ffcd79..d7998c9 100644 --- a/internal/v1_16_R3/pom.xml +++ b/internal/v1_16_R3/pom.xml @@ -22,7 +22,7 @@ com.lishid openinvinternal - 4.1.5 + 4.1.6-SNAPSHOT openinvadapter1_16_R3 @@ -38,7 +38,7 @@ com.lishid openinvplugincore - 4.1.5 + 4.1.6-SNAPSHOT diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml index 73a6b2f..6c77d0e 100644 --- a/internal/v1_8_R3/pom.xml +++ b/internal/v1_8_R3/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvinternal - 4.1.5 + 4.1.6-SNAPSHOT openinvadapter1_8_R3 @@ -37,7 +37,7 @@ com.lishid openinvplugincore - 4.1.5 + 4.1.6-SNAPSHOT diff --git a/plugin/pom.xml b/plugin/pom.xml index 143792d..358b396 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -21,7 +21,7 @@ com.lishid openinvparent - 4.1.5 + 4.1.6-SNAPSHOT openinvplugincore @@ -31,7 +31,7 @@ com.lishid openinvapi - 4.1.5 + 4.1.6-SNAPSHOT org.spigotmc diff --git a/pom.xml b/pom.xml index f2949d5..6882a32 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ openinvparent OpenInvParent http://dev.bukkit.org/bukkit-plugins/openinv/ - 4.1.5 + 4.1.6-SNAPSHOT pom -- 2.49.1 From f45d33272787bb3d92840cdc68a331008f443fbf Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 15 Nov 2020 12:22:25 -0500 Subject: [PATCH 237/253] Clarify download locations for older versions Hopefully this will help people figure out where they've gone wrong. Maybe I should be stating supported versions in release notes too. --- .../main/java/com/lishid/openinv/OpenInv.java | 13 ++++--- .../lishid/openinv/util/InternalAccessor.java | 39 +++++++++++++++++++ 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/src/main/java/com/lishid/openinv/OpenInv.java index b0a5a87..b8b524f 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/src/main/java/com/lishid/openinv/OpenInv.java @@ -41,6 +41,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; +import java.util.function.Consumer; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; @@ -364,13 +365,16 @@ public class OpenInv extends JavaPlugin implements IOpenInv { this.setCommandExecutor("anycontainer", settingCommand); } else { - this.getLogger().info("Your version of CraftBukkit (" + this.accessor.getVersion() + ") is not supported."); - this.getLogger().info("If this version is a recent release, check for an update."); - this.getLogger().info("If this is an older version, ensure that you've downloaded the legacy support version."); + this.sendVersionError(this.getLogger()::warning); } } + private void sendVersionError(Consumer messageMethod) { + messageMethod.accept("Your server version (" + this.accessor.getVersion() + ") is not supported."); + messageMethod.accept("Please obtain an appropriate version here: " + accessor.getReleasesLink()); + } + private void setCommandExecutor(String commandName, CommandExecutor executor) { PluginCommand command = this.getCommand(commandName); if (command != null) { @@ -381,8 +385,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if (!this.accessor.isSupported()) { - sender.sendMessage("Your server version (" + this.accessor.getVersion() + ") is not supported."); - sender.sendMessage("Please check https://github.com/lishid/OpenInv/releases for an update."); + this.sendVersionError(sender::sendMessage); return true; } return false; diff --git a/plugin/src/main/java/com/lishid/openinv/util/InternalAccessor.java b/plugin/src/main/java/com/lishid/openinv/util/InternalAccessor.java index bd50289..f7e2648 100644 --- a/plugin/src/main/java/com/lishid/openinv/util/InternalAccessor.java +++ b/plugin/src/main/java/com/lishid/openinv/util/InternalAccessor.java @@ -48,6 +48,45 @@ public class InternalAccessor { } catch (Exception ignored) {} } + public String getReleasesLink() { + switch (version) { + case "1_4_5": + case "1_4_6": + case "v1_4_R1": + case "v1_5_R2": + case "v1_5_R3": + case "v1_6_R1": + case "v1_6_R2": + case "v1_6_R3": + case "v1_7_R1": + case "v1_7_R2": + case "v1_7_R3": + case "v1_7_R4": + case "v1_8_R1": + case "v1_8_R2": + case "v1_9_R1": + case "v1_9_R2": + case "v1_10_R1": + case "v1_11_R1": + case "v1_12_R1": + return "https://github.com/lishid/OpenInv/releases/tag/4.0.0 (OpenInv-legacy)"; + case "v1_13_R1": + return "https://github.com/lishid/OpenInv/releases/tag/4.0.0"; + case "v1_13_R2": + return "https://github.com/lishid/OpenInv/releases/tag/4.0.7"; + case "v1_14_R1": + return "https://github.com/lishid/OpenInv/releases/tag/4.1.1"; + case "v1_16_R1": + return "https://github.com/lishid/OpenInv/releases/tag/4.1.4"; + case "v1_8_R3": + case "v1_15_R1": + case "v1_16_R2": + case "v1_16_R3": + default: + return "https://github.com/lishid/OpenInv/releases"; + } + } + private T createObject(final Class assignableClass, final String className, final Object... params) throws ClassCastException, ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, -- 2.49.1 From 45de49569904273505f0695a8afb5fa5a83a0df3 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 15 Nov 2020 12:26:36 -0500 Subject: [PATCH 238/253] Simplify command executor assignment a little more --- .../main/java/com/lishid/openinv/OpenInv.java | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/src/main/java/com/lishid/openinv/OpenInv.java index b8b524f..ba33e94 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/src/main/java/com/lishid/openinv/OpenInv.java @@ -352,17 +352,11 @@ public class OpenInv extends JavaPlugin implements IOpenInv { pm.registerEvents(new InventoryListener(this), this); // Register commands to their executors - OpenInvCommand openInv = new OpenInvCommand(this); - this.setCommandExecutor("openinv", openInv); - this.setCommandExecutor("openender", openInv); - this.setCommandExecutor("searchcontainer", new SearchContainerCommand(this)); - SearchInvCommand searchInv = new SearchInvCommand(this); - this.setCommandExecutor("searchinv", searchInv); - this.setCommandExecutor("searchender", searchInv); - this.setCommandExecutor("searchenchant", new SearchEnchantCommand(this)); - ContainerSettingCommand settingCommand = new ContainerSettingCommand(this); - this.setCommandExecutor("silentcontainer", settingCommand); - this.setCommandExecutor("anycontainer", settingCommand); + this.setCommandExecutor(new OpenInvCommand(this), "openinv", "openender"); + this.setCommandExecutor(new SearchContainerCommand(this), "searchcontainer"); + this.setCommandExecutor(new SearchInvCommand(this), "searchinv", "searchender"); + this.setCommandExecutor(new SearchEnchantCommand(this), "searchenchant"); + this.setCommandExecutor(new ContainerSettingCommand(this), "silentcontainer", "anycontainer"); } else { this.sendVersionError(this.getLogger()::warning); @@ -375,10 +369,12 @@ public class OpenInv extends JavaPlugin implements IOpenInv { messageMethod.accept("Please obtain an appropriate version here: " + accessor.getReleasesLink()); } - private void setCommandExecutor(String commandName, CommandExecutor executor) { - PluginCommand command = this.getCommand(commandName); - if (command != null) { - command.setExecutor(executor); + private void setCommandExecutor(CommandExecutor executor, String... commands) { + for (String commandName : commands) { + PluginCommand command = this.getCommand(commandName); + if (command != null) { + command.setExecutor(executor); + } } } -- 2.49.1 From b2156edcc791a95c35bb853e5dc52d8e0f6aea90 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 15 Nov 2020 12:59:59 -0500 Subject: [PATCH 239/253] Fix mistake in InventoryAccess grabbing ender chest --- api/src/main/java/com/lishid/openinv/util/InventoryAccess.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/main/java/com/lishid/openinv/util/InventoryAccess.java b/api/src/main/java/com/lishid/openinv/util/InventoryAccess.java index 2f65dec..8a4afe5 100644 --- a/api/src/main/java/com/lishid/openinv/util/InventoryAccess.java +++ b/api/src/main/java/com/lishid/openinv/util/InventoryAccess.java @@ -73,7 +73,7 @@ public class InventoryAccess implements IInventoryAccess { } catch (ReflectiveOperationException ignored) {} } - inv = grabFieldOfTypeFromObject(ISpecialPlayerInventory.class, inventory); + inv = grabFieldOfTypeFromObject(expected, inventory); if (expected.isInstance(inv)) { return expected.cast(inv); -- 2.49.1 From db8b67082ba01ec2688f9e16b9720b505b079e5f Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 15 Nov 2020 13:25:50 -0500 Subject: [PATCH 240/253] Fix up .gitignore a bit --- .gitignore | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index fc1dd97..b48a477 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,10 @@ **/.settings -**/.gitignore **/.project **/.classpath -**/.idea +**/.idea/ **.iml -**/target -**/bin -**/out -**dependency-reduced-pom.xml -**pom.xml.versionsBackup +**/target/ +**/bin/ +**/out/ +**/dependency-reduced-pom.xml +**/pom.xml.versionsBackup -- 2.49.1 From 804d30bcc70d4508642d506f5fc40eb928628ecc Mon Sep 17 00:00:00 2001 From: Jikoo Date: Sun, 15 Nov 2020 13:26:59 -0500 Subject: [PATCH 241/253] tpyo --- .../java/com/lishid/openinv/util/InventoryAccess.java | 8 ++++++++ .../java/com/lishid/openinv/util/InternalAccessor.java | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/api/src/main/java/com/lishid/openinv/util/InventoryAccess.java b/api/src/main/java/com/lishid/openinv/util/InventoryAccess.java index 8a4afe5..9c2ffd7 100644 --- a/api/src/main/java/com/lishid/openinv/util/InventoryAccess.java +++ b/api/src/main/java/com/lishid/openinv/util/InventoryAccess.java @@ -42,7 +42,15 @@ public class InventoryAccess implements IInventoryAccess { } catch (NoSuchMethodException ignored) {} } + /** + * @deprecated use {@link #isUsable()} + */ + @Deprecated public static boolean isUseable() { + return isUsable(); + } + + public static boolean isUsable() { return craftInventory != null && getInventory != null; } diff --git a/plugin/src/main/java/com/lishid/openinv/util/InternalAccessor.java b/plugin/src/main/java/com/lishid/openinv/util/InternalAccessor.java index f7e2648..96f3b7b 100644 --- a/plugin/src/main/java/com/lishid/openinv/util/InternalAccessor.java +++ b/plugin/src/main/java/com/lishid/openinv/util/InternalAccessor.java @@ -44,7 +44,7 @@ public class InternalAccessor { Class.forName("com.lishid.openinv.internal." + this.version + ".SpecialEnderChest"); this.playerDataManager = this.createObject(IPlayerDataManager.class, "PlayerDataManager"); this.anySilentContainer = this.createObject(IAnySilentContainer.class, "AnySilentContainer"); - this.supported = InventoryAccess.isUseable(); + this.supported = InventoryAccess.isUsable(); } catch (Exception ignored) {} } -- 2.49.1 From 502f661be39ee85d300851dd571f3da226f12345 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 25 Nov 2020 15:24:39 -0500 Subject: [PATCH 242/253] fix: Update 1.15 adapter to 1.15.2 --- internal/v1_15_R1/pom.xml | 2 +- .../internal/v1_15_R1/SpecialEnderChest.java | 5 +++-- .../v1_15_R1/SpecialPlayerInventory.java | 20 +++++++++---------- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/internal/v1_15_R1/pom.xml b/internal/v1_15_R1/pom.xml index eddab53..2000c76 100644 --- a/internal/v1_15_R1/pom.xml +++ b/internal/v1_15_R1/pom.xml @@ -32,7 +32,7 @@ org.spigotmc spigot - 1.15.1-R0.1-SNAPSHOT + 1.15.2-R0.1-SNAPSHOT provided diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialEnderChest.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialEnderChest.java index 52a5546..de70b04 100644 --- a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialEnderChest.java +++ b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialEnderChest.java @@ -33,6 +33,7 @@ import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.InventoryHolder; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEnderChest { @@ -115,7 +116,7 @@ public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEn } @Override - public Location getLocation() { + public @Nullable Location getLocation() { return null; } @@ -204,7 +205,7 @@ public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEn } @Override - public boolean isNotEmpty() { + public boolean isEmpty() { for (ItemStack itemstack : this.items) { if (!itemstack.isEmpty()) { diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialPlayerInventory.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialPlayerInventory.java index 19d2de6..ff59d3c 100644 --- a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialPlayerInventory.java +++ b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialPlayerInventory.java @@ -326,7 +326,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } if (!this.a(itemstack, itemstack1)) { - remains -= (itemstack1.getMaxStackSize() < this.getMaxStackSize() ? itemstack1.getMaxStackSize() : this.getMaxStackSize()) - itemstack1.getCount(); + remains -= Math.min(itemstack1.getMaxStackSize(), this.getMaxStackSize()) - itemstack1.getCount(); } if (remains <= 0) { @@ -461,14 +461,12 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP k = this.getMaxStackSize() - itemstack1.getCount(); } - if (k == 0) { - return j; - } else { + if (k != 0) { j -= k; itemstack1.add(k); itemstack1.d(5); - return j; } + return j; } @Override @@ -656,12 +654,12 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP } @Override - public boolean isNotEmpty() { - Iterator iterator = this.items.iterator(); + public boolean isEmpty() { + Iterator iterator = this.items.iterator(); ItemStack itemstack; while (iterator.hasNext()) { - itemstack = (ItemStack)iterator.next(); + itemstack = iterator.next(); if (!itemstack.isEmpty()) { return false; } @@ -670,7 +668,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP iterator = this.armor.iterator(); while (iterator.hasNext()) { - itemstack = (ItemStack)iterator.next(); + itemstack = iterator.next(); if (!itemstack.isEmpty()) { return false; } @@ -679,7 +677,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP iterator = this.extraSlots.iterator(); while (iterator.hasNext()) { - itemstack = (ItemStack)iterator.next(); + itemstack = iterator.next(); if (!itemstack.isEmpty()) { return false; } @@ -711,7 +709,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP ItemStack itemstack = this.armor.get(0); int index = i; if (itemstack.getItem() instanceof ItemArmor) { - itemstack.damage((int) f, this.player, (entityhuman) -> entityhuman.c(EnumItemSlot.a(EnumItemSlot.Function.ARMOR, index))); + itemstack.damage((int) f, this.player, (entityhuman) -> entityhuman.broadcastItemBreak(EnumItemSlot.a(EnumItemSlot.Function.ARMOR, index))); } } } -- 2.49.1 From dad00d2d9c86981e0c24c9fb7af72985b1403412 Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 26 Nov 2020 11:05:45 -0500 Subject: [PATCH 243/253] build: Add action to build and automatically release files (#170) Auto-release is gonna get a nice live test at a later date. --- .github/workflows/ci.yml | 93 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..6489274 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,93 @@ +name: OpenInv CI + +on: + push: + create: + types: [tag] + pull_request_target: + +jobs: + build: + runs-on: ubuntu-latest + strategy: + fail-fast: true + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Set Up Java + uses: actions/setup-java@v1 + with: + java-version: 1.8 + + # Use cache to speed up build + - name: Cache Maven Repo + uses: actions/cache@v2 + id: cache + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + + # If the cache was not present, run BuildTools to install the relevant versions to Maven. + # This will take approximately forever. + - name: Install Spigot Dependencies + if: steps.cache.outputs.cache-hit != 'true' + run: | + mkdir ~/buildtools + cd ~/buildtools + wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar + java -jar BuildTools.jar --rev 1.8.8 + java -jar BuildTools.jar --rev 1.15.2 + java -jar BuildTools.jar --rev 1.16.3 + java -jar BuildTools.jar --rev 1.16.4 + + - name: Build With Maven + run: mvn -e clean package -am -P all + + # Upload artifacts + - name: Upload Distributable Jar + id: upload-final + uses: actions/upload-artifact@v2 + with: + name: dist + path: ./target/OpenInv.jar + - name: Upload API Jar + id: upload-api + uses: actions/upload-artifact@v2 + with: + name: api + path: ./api/target/openinvapi*.jar + + release: + name: Create Github Release + needs: [ build ] + if: github.event_name == 'create' && github.event.ref_type == 'tag' + runs-on: ubuntu-latest + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Download Artifacts + uses: actions/download-artifact@v2 + + - name: Create Release + id: create-release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ github.ref }} + draft: true + prerelease: false + + - name: Upload Release Asset + id: upload-release-asset + uses: actions/upload-release-asset@v1.0.2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create-release.outputs.upload_url }} + asset_path: ./OpenInv.jar + asset_name: OpenInv.jar + asset_content_type: application/java-archive \ No newline at end of file -- 2.49.1 From 1bd7932cc51857731b2ce0c9098388f40278c9ec Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 16 Mar 2021 09:34:41 -0400 Subject: [PATCH 244/253] Drop 1.8/1.15/1.16.3 support (#185) With the recent uptick in requests for support by people running 1.12 who have recently updated past Java 9, I revisited the supported versions. First, the "modern" versions: 1.15 is run by 2.9% of servers, 1.16.3 by 5%. Since all of these versions are supported to ease the transition of updating servers and servers have updated, there's no real reason to keep them around. It's a lot easier if you can update a plugin and just have it work on both versions rather than push all the plugin updates to master with the server update, but none of these versions have any reason for long-term support. Regarding heavily outdated server software: As of the time of writing, 1.8 and 1.12 have market shares of 8.6% and 8.5% of servers respectively. Regarding 1.8: 1.8 support is already a bit wonky - with the changes made to inventory names, it's not (easily) possible to bridge the gap, and future changes will make that more and more difficult. People use 1.8 because they disliked the 1.9 combat changes, but there are plugins that fully rework combat to how it used to be. I have yet to hear a compelling argument that cannot be resolved with plugins. In the interest of my own sanity (handling and backporting the inventory name change in particular was a real humdinger) I will no longer be backporting changes to 1.8. Regarding 1.12: I am honestly not sure why people are not updating. I get it, 1.13 and the flattening was a rough transition, but pretty much every developer active at the time bridged the gap. If your server is heavily dependent on some software only available at that time, you can live with other software available at that time. At the time of 1.12's release, Java 9 was not released. Either update your server, downgrade Java, or fork OpenInv and backport Java 9 support yourself. --- .github/workflows/ci.yml | 3 - api/pom.xml | 2 +- internal/pom.xml | 3 - internal/v1_15_R1/pom.xml | 75 -- .../internal/v1_15_R1/AnySilentContainer.java | 359 --------- .../internal/v1_15_R1/PlayerDataManager.java | 289 ------- .../internal/v1_15_R1/SpecialEnderChest.java | 256 ------ .../v1_15_R1/SpecialPlayerInventory.java | 757 ------------------ internal/v1_16_R2/pom.xml | 75 -- .../internal/v1_16_R2/AnySilentContainer.java | 358 --------- .../internal/v1_16_R2/PlayerDataManager.java | 295 ------- .../internal/v1_16_R2/SpecialEnderChest.java | 256 ------ .../v1_16_R2/SpecialPlayerInventory.java | 733 ----------------- internal/v1_8_R3/pom.xml | 74 -- .../internal/v1_8_R3/AnySilentContainer.java | 250 ------ .../internal/v1_8_R3/PlayerDataManager.java | 201 ----- .../internal/v1_8_R3/SpecialEnderChest.java | 83 -- .../v1_8_R3/SpecialPlayerInventory.java | 230 ------ .../lishid/openinv/util/InternalAccessor.java | 1 + plugin/src/main/resources/plugin.yml | 2 +- 20 files changed, 3 insertions(+), 4299 deletions(-) delete mode 100644 internal/v1_15_R1/pom.xml delete mode 100644 internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java delete mode 100644 internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java delete mode 100644 internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialEnderChest.java delete mode 100644 internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialPlayerInventory.java delete mode 100644 internal/v1_16_R2/pom.xml delete mode 100644 internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/AnySilentContainer.java delete mode 100644 internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/PlayerDataManager.java delete mode 100644 internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/SpecialEnderChest.java delete mode 100644 internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/SpecialPlayerInventory.java delete mode 100644 internal/v1_8_R3/pom.xml delete mode 100644 internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java delete mode 100644 internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java delete mode 100644 internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java delete mode 100644 internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6489274..932d513 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,9 +36,6 @@ jobs: mkdir ~/buildtools cd ~/buildtools wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar - java -jar BuildTools.jar --rev 1.8.8 - java -jar BuildTools.jar --rev 1.15.2 - java -jar BuildTools.jar --rev 1.16.3 java -jar BuildTools.jar --rev 1.16.4 - name: Build With Maven diff --git a/api/pom.xml b/api/pom.xml index e419bf2..cc34012 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -36,7 +36,7 @@ org.spigotmc spigot-api - 1.8.8-R0.1-SNAPSHOT + 1.16.5-R0.1-SNAPSHOT provided diff --git a/internal/pom.xml b/internal/pom.xml index e7dc5b0..fd28dce 100644 --- a/internal/pom.xml +++ b/internal/pom.xml @@ -33,9 +33,6 @@ all - v1_8_R3 - v1_15_R1 - v1_16_R2 v1_16_R3 diff --git a/internal/v1_15_R1/pom.xml b/internal/v1_15_R1/pom.xml deleted file mode 100644 index 2000c76..0000000 --- a/internal/v1_15_R1/pom.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.1.6-SNAPSHOT - - - openinvadapter1_15_R1 - OpenInvAdapter1_15_R1 - - - - org.spigotmc - spigot - 1.15.2-R0.1-SNAPSHOT - provided - - - com.lishid - openinvplugincore - 4.1.6-SNAPSHOT - - - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.2 - - true - - - - package - - shade - - - - - - - maven-compiler-plugin - 3.8.1 - - 1.8 - 1.8 - - - - - - \ No newline at end of file diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java deleted file mode 100644 index 3cceef7..0000000 --- a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/AnySilentContainer.java +++ /dev/null @@ -1,359 +0,0 @@ -/* - * Copyright (C) 2011-2020 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_15_R1; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentContainer; -import java.lang.reflect.Field; -import net.minecraft.server.v1_15_R1.Block; -import net.minecraft.server.v1_15_R1.BlockBarrel; -import net.minecraft.server.v1_15_R1.BlockChest; -import net.minecraft.server.v1_15_R1.BlockChestTrapped; -import net.minecraft.server.v1_15_R1.BlockEnderChest; -import net.minecraft.server.v1_15_R1.BlockPosition; -import net.minecraft.server.v1_15_R1.BlockPropertyChestType; -import net.minecraft.server.v1_15_R1.BlockShulkerBox; -import net.minecraft.server.v1_15_R1.ChatMessage; -import net.minecraft.server.v1_15_R1.Container; -import net.minecraft.server.v1_15_R1.ContainerChest; -import net.minecraft.server.v1_15_R1.Containers; -import net.minecraft.server.v1_15_R1.EntityHuman; -import net.minecraft.server.v1_15_R1.EntityPlayer; -import net.minecraft.server.v1_15_R1.EnumGamemode; -import net.minecraft.server.v1_15_R1.IBlockData; -import net.minecraft.server.v1_15_R1.IChatBaseComponent; -import net.minecraft.server.v1_15_R1.ITileInventory; -import net.minecraft.server.v1_15_R1.InventoryEnderChest; -import net.minecraft.server.v1_15_R1.InventoryLargeChest; -import net.minecraft.server.v1_15_R1.PlayerInteractManager; -import net.minecraft.server.v1_15_R1.PlayerInventory; -import net.minecraft.server.v1_15_R1.TileEntity; -import net.minecraft.server.v1_15_R1.TileEntityChest; -import net.minecraft.server.v1_15_R1.TileEntityEnderChest; -import net.minecraft.server.v1_15_R1.TileEntityLootable; -import net.minecraft.server.v1_15_R1.TileInventory; -import net.minecraft.server.v1_15_R1.World; -import org.bukkit.Material; -import org.bukkit.Statistic; -import org.bukkit.block.Barrel; -import org.bukkit.block.BlockFace; -import org.bukkit.block.BlockState; -import org.bukkit.block.EnderChest; -import org.bukkit.block.ShulkerBox; -import org.bukkit.block.data.BlockData; -import org.bukkit.block.data.Directional; -import org.bukkit.block.data.type.Chest; -import org.bukkit.entity.Cat; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.bukkit.util.BoundingBox; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - private Field playerInteractManagerGamemode; - - public AnySilentContainer() { - try { - this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); - this.playerInteractManagerGamemode.setAccessible(true); - } catch (NoSuchFieldException | SecurityException e) { - System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); - e.printStackTrace(); - } - } - - @Override - public boolean isAnySilentContainer(@NotNull final org.bukkit.block.Block bukkitBlock) { - if (bukkitBlock.getType() == Material.ENDER_CHEST) { - return true; - } - BlockState state = bukkitBlock.getState(); - return state instanceof org.bukkit.block.Chest - || state instanceof org.bukkit.block.ShulkerBox - || state instanceof org.bukkit.block.Barrel; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull final Player p, @NotNull final org.bukkit.block.Block block) { - BlockState blockState = block.getState(); - - // Barrels do not require AnyContainer. - if (blockState instanceof Barrel) { - return false; - } - - // Enderchests require a non-occluding block on top to open. - if (blockState instanceof EnderChest) { - return block.getRelative(0, 1, 0).getType().isOccluding(); - } - - // Shulker boxes require 1/2 a block clear in the direction they open. - if (blockState instanceof ShulkerBox) { - BoundingBox boundingBox = block.getBoundingBox(); - if (boundingBox.getVolume() > 1) { - // Shulker box is already open. - return false; - } - - BlockData blockData = block.getBlockData(); - if (!(blockData instanceof Directional)) { - // Shouldn't be possible. Just in case, demand AnyChest. - return true; - } - - Directional directional = (Directional) blockData; - BlockFace face = directional.getFacing(); - boundingBox.shift(face.getDirection()); - // Return whether or not bounding boxes overlap. - return block.getRelative(face, 1).getBoundingBox().overlaps(boundingBox); - } - - if (!(blockState instanceof org.bukkit.block.Chest)) { - return false; - } - - if (isBlockedChest(block)) { - return true; - } - - BlockData blockData = block.getBlockData(); - if (!(blockData instanceof Chest) || ((Chest) blockData).getType() == Chest.Type.SINGLE) { - return false; - } - - Chest chest = (Chest) blockData; - int ordinal = (chest.getFacing().ordinal() + 4 + (chest.getType() == Chest.Type.RIGHT ? -1 : 1)) % 4; - BlockFace relativeFace = BlockFace.values()[ordinal]; - org.bukkit.block.Block relative = block.getRelative(relativeFace); - - if (relative.getType() != block.getType()) { - return false; - } - - BlockData relativeData = relative.getBlockData(); - if (!(relativeData instanceof Chest)) { - return false; - } - - Chest relativeChest = (Chest) relativeData; - if (relativeChest.getFacing() != chest.getFacing() - || relativeChest.getType() != (chest.getType() == Chest.Type.RIGHT ? Chest.Type.LEFT : Chest.Type.RIGHT)) { - return false; - } - - return isBlockedChest(relative); - } - - private boolean isBlockedChest(org.bukkit.block.Block block) { - org.bukkit.block.Block relative = block.getRelative(0, 1, 0); - return relative.getType().isOccluding() - || block.getWorld().getNearbyEntities(BoundingBox.of(relative), entity -> entity instanceof Cat).size() > 0; - } - - @Override - public boolean activateContainer(@NotNull final Player bukkitPlayer, final boolean silentchest, - @NotNull final org.bukkit.block.Block bukkitBlock) { - - // Silent ender chest is API-only - if (silentchest && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); - return true; - } - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - final World world = player.world; - final BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - final TileEntity tile = world.getTileEntity(blockPosition); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(new TileInventory((containerCounter, playerInventory, ignored) -> { - Containers containers; - int rows = enderChest.getSize() / 9; - switch (rows) { - case 1: - containers = Containers.GENERIC_9X1; - break; - case 2: - containers = Containers.GENERIC_9X2; - break; - case 3: - default: - containers = Containers.GENERIC_9X3; - break; - case 4: - containers = Containers.GENERIC_9X4; - break; - case 5: - containers = Containers.GENERIC_9X5; - break; - case 6: - containers = Containers.GENERIC_9X6; - break; - } - return new ContainerChest(containers, containerCounter, playerInventory, enderChest, rows); - }, BlockEnderChest.e)); - bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); - return true; - } - - if (!(tile instanceof ITileInventory)) { - return false; - } - - ITileInventory tileInventory = (ITileInventory) tile; - IBlockData blockData = world.getType(blockPosition); - Block block = blockData.getBlock(); - - if (block instanceof BlockChest) { - - BlockPropertyChestType chestType = blockData.get(BlockChest.c); - - if (chestType != BlockPropertyChestType.SINGLE) { - - BlockPosition adjacentBlockPosition = blockPosition.shift(BlockChest.i(blockData)); - IBlockData adjacentBlockData = world.getType(adjacentBlockPosition); - - if (adjacentBlockData.getBlock() == block) { - - BlockPropertyChestType adjacentChestType = adjacentBlockData.get(BlockChest.c); - - if (adjacentChestType != BlockPropertyChestType.SINGLE && chestType != adjacentChestType - && adjacentBlockData.get(BlockChest.FACING) == blockData.get(BlockChest.FACING)) { - - TileEntity adjacentTile = world.getTileEntity(adjacentBlockPosition); - - if (adjacentTile instanceof TileEntityChest && tileInventory instanceof TileEntityChest) { - TileEntityChest rightChest = chestType == BlockPropertyChestType.RIGHT ? ((TileEntityChest) tileInventory) : (TileEntityChest) adjacentTile; - TileEntityChest leftChest = chestType == BlockPropertyChestType.RIGHT ? (TileEntityChest) adjacentTile : ((TileEntityChest) tileInventory); - - if (silentchest && (rightChest.lootTable != null || leftChest.lootTable != null)) { - OpenInv.getPlugin(OpenInv.class).sendSystemMessage(bukkitPlayer, "messages.error.lootNotGenerated"); - return false; - } - - tileInventory = new ITileInventory() { - public Container createMenu(int containerCounter, PlayerInventory playerInventory, EntityHuman entityHuman) { - leftChest.d(playerInventory.player); - rightChest.d(playerInventory.player); - return ContainerChest.b(containerCounter, playerInventory, new InventoryLargeChest(rightChest, leftChest)); - } - - public IChatBaseComponent getScoreboardDisplayName() { - return new ChatMessage("container.chestDouble"); - } - }; - } - } - } - } - - if (block instanceof BlockChestTrapped) { - bukkitPlayer.incrementStatistic(Statistic.TRAPPED_CHEST_TRIGGERED); - } else { - bukkitPlayer.incrementStatistic(Statistic.CHEST_OPENED); - } - } - - if (block instanceof BlockShulkerBox) { - bukkitPlayer.incrementStatistic(Statistic.SHULKER_BOX_OPENED); - } - - if (block instanceof BlockBarrel) { - bukkitPlayer.incrementStatistic(Statistic.OPEN_BARREL); - } - - // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { - player.openContainer(tileInventory); - return true; - } - - // SilentChest requires access to setting players' gamemode directly. - if (this.playerInteractManagerGamemode == null) { - return false; - } - - if (tile instanceof TileEntityLootable) { - TileEntityLootable lootable = (TileEntityLootable) tile; - if (lootable.lootTable != null) { - OpenInv.getPlugin(OpenInv.class).sendSystemMessage(bukkitPlayer, "messages.error.lootNotGenerated"); - return false; - } - } - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.openContainer(tileInventory); - this.forceGameMode(player, gamemode); - return true; - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) { - if (this.playerInteractManagerGamemode == null) { - return; - } - - InventoryView view = bukkitPlayer.getOpenInventory(); - switch (view.getType()) { - case CHEST: - case ENDER_CHEST: - case SHULKER_BOX: - case BARREL: - break; - default: - return; - } - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.activeContainer.b(player); - player.activeContainer.a(player, false); - player.activeContainer.transferTo(player.defaultContainer, player.getBukkitEntity()); - player.activeContainer = player.defaultContainer; - this.forceGameMode(player, gamemode); - } - - private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { - if (this.playerInteractManagerGamemode == null) { - // No need to warn repeatedly, error on startup and lack of function should be enough. - return; - } - try { - if (!this.playerInteractManagerGamemode.isAccessible()) { - // Just in case, ensure accessible. - this.playerInteractManagerGamemode.setAccessible(true); - } - this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); - } catch (IllegalArgumentException | IllegalAccessException e) { - e.printStackTrace(); - } - } - -} diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java deleted file mode 100644 index 23876cf..0000000 --- a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/PlayerDataManager.java +++ /dev/null @@ -1,289 +0,0 @@ -/* - * Copyright (C) 2011-2020 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_15_R1; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import com.mojang.authlib.GameProfile; -import java.io.File; -import java.io.FileOutputStream; -import java.lang.reflect.Field; -import net.minecraft.server.v1_15_R1.ChatComponentText; -import net.minecraft.server.v1_15_R1.ChatMessageType; -import net.minecraft.server.v1_15_R1.Container; -import net.minecraft.server.v1_15_R1.Containers; -import net.minecraft.server.v1_15_R1.DimensionManager; -import net.minecraft.server.v1_15_R1.Entity; -import net.minecraft.server.v1_15_R1.EntityHuman; -import net.minecraft.server.v1_15_R1.EntityPlayer; -import net.minecraft.server.v1_15_R1.MinecraftServer; -import net.minecraft.server.v1_15_R1.NBTCompressedStreamTools; -import net.minecraft.server.v1_15_R1.NBTTagCompound; -import net.minecraft.server.v1_15_R1.PacketPlayOutChat; -import net.minecraft.server.v1_15_R1.PacketPlayOutOpenWindow; -import net.minecraft.server.v1_15_R1.PlayerInteractManager; -import net.minecraft.server.v1_15_R1.PlayerInventory; -import net.minecraft.server.v1_15_R1.WorldNBTStorage; -import org.apache.logging.log4j.LogManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_15_R1.CraftServer; -import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_15_R1.event.CraftEventFactory; -import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftContainer; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class PlayerDataManager implements IPlayerDataManager { - - private Field bukkitEntity; - - public PlayerDataManager() { - try { - bukkitEntity = Entity.class.getDeclaredField("bukkitEntity"); - } catch (NoSuchFieldException e) { - System.out.println("Unable to obtain field to inject custom save process - players' mounts may be deleted when loaded."); - e.printStackTrace(); - bukkitEntity = null; - } - } - - @NotNull - public static EntityPlayer getHandle(final Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Nullable - @Override - public Player loadPlayer(@NotNull final OfflinePlayer offline) { - // Ensure player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - // Create a profile and entity to load the player data - // See net.minecraft.server.PlayerList#attemptLogin - GameProfile profile = new GameProfile(offline.getUniqueId(), - offline.getName() != null ? offline.getName() : offline.getUniqueId().toString()); - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(DimensionManager.OVERWORLD), profile, - new PlayerInteractManager(server.getWorldServer(DimensionManager.OVERWORLD))); - - try { - injectPlayer(entity); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - void injectPlayer(EntityPlayer player) throws IllegalAccessException { - if (bukkitEntity == null) { - return; - } - - bukkitEntity.setAccessible(true); - - bukkitEntity.set(player, new CraftPlayer(player.server.server, player) { - @Override - public void saveData() { - super.saveData(); - // See net.minecraft.server.WorldNBTStorage#save(EntityPlayer) - try { - WorldNBTStorage worldNBTStorage = (WorldNBTStorage) player.server.getPlayerList().playerFileData; - - NBTTagCompound playerData = player.save(new NBTTagCompound()); - - if (!isOnline()) { - // Special case: save old vehicle data - NBTTagCompound oldData = worldNBTStorage.load(player); - - if (oldData != null && oldData.hasKeyOfType("RootVehicle", 10)) { - // See net.minecraft.server.PlayerList#a(NetworkManager, EntityPlayer) and net.minecraft.server.EntityPlayer#b(NBTTagCompound) - playerData.set("RootVehicle", oldData.getCompound("RootVehicle")); - } - } - - File file = new File(worldNBTStorage.getPlayerDir(), player.getUniqueIDString() + ".dat.tmp"); - File file1 = new File(worldNBTStorage.getPlayerDir(), player.getUniqueIDString() + ".dat"); - - NBTCompressedStreamTools.a(playerData, new FileOutputStream(file)); - - if (file1.exists()) { - file1.delete(); - } - - file.renameTo(file1); - } catch (Exception e) { - LogManager.getLogger().warn("Failed to save player data for {}", player.getDisplayName().getString()); - } - } - }); - } - - @NotNull - @Override - public Player inject(@NotNull Player player) { - try { - EntityPlayer nmsPlayer = getHandle(player); - injectPlayer(nmsPlayer); - return nmsPlayer.getBukkitEntity(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - return player; - } - } - - @Nullable - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - - EntityPlayer nmsPlayer = getHandle(player); - - if (nmsPlayer.playerConnection == null) { - return null; - } - - String title; - if (inventory instanceof SpecialEnderChest) { - HumanEntity owner = (HumanEntity) ((SpecialEnderChest) inventory).getBukkitOwner(); - title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.enderchest", "%player%", owner.getName()); - if (title == null) { - title = owner.getName() + "'s Ender Chest"; - } - } else if (inventory instanceof SpecialPlayerInventory) { - EntityHuman owner = ((PlayerInventory) inventory).player; - title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.player", "%player%", owner.getName()); - if (title == null) { - title = owner.getName() + "'s Inventory"; - } - } else { - return player.openInventory(inventory.getBukkitInventory()); - } - - String finalTitle = title; - Container container = new CraftContainer(new InventoryView() { - @Override - public @NotNull Inventory getTopInventory() { - return inventory.getBukkitInventory(); - } - @Override - public @NotNull Inventory getBottomInventory() { - return player.getInventory(); - } - @Override - public @NotNull HumanEntity getPlayer() { - return player; - } - @Override - public @NotNull InventoryType getType() { - return inventory.getBukkitInventory().getType(); - } - @Override - public @NotNull String getTitle() { - return finalTitle; - } - }, nmsPlayer, nmsPlayer.nextContainerCounter()) { - @Override - public Containers getType() { - switch (inventory.getBukkitInventory().getSize()) { - case 9: - return Containers.GENERIC_9X1; - case 18: - return Containers.GENERIC_9X2; - case 27: - default: - return Containers.GENERIC_9X3; - case 36: - return Containers.GENERIC_9X4; - case 41: // PLAYER - case 45: - return Containers.GENERIC_9X5; - case 54: - return Containers.GENERIC_9X6; - } - } - }; - - container.setTitle(new ChatComponentText(title)); - container = CraftEventFactory.callInventoryOpenEvent(nmsPlayer, container); - - if (container == null) { - return null; - } - - nmsPlayer.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, container.getType(), - new ChatComponentText(container.getBukkitView().getTitle()))); - nmsPlayer.activeContainer = container; - container.addSlotListener(nmsPlayer); - - return container.getBukkitView(); - - } - - @Override - public void sendSystemMessage(@NotNull Player player, @NotNull String message) { - int newline = message.indexOf('\n'); - if (newline != -1) { - // No newlines in action bar chat. - message = message.substring(0, newline); - } - - if (message.isEmpty()) { - return; - } - - EntityPlayer nmsPlayer = getHandle(player); - - // For action bar chat, color codes are still supported but JSON text color is not allowed. Do not convert text. - if (nmsPlayer.playerConnection != null) { - nmsPlayer.playerConnection.sendPacket(new PacketPlayOutChat(new ChatComponentText(message), ChatMessageType.GAME_INFO)); - } - } - -} diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialEnderChest.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialEnderChest.java deleted file mode 100644 index de70b04..0000000 --- a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialEnderChest.java +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Copyright (C) 2011-2020 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_15_R1; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.util.List; -import net.minecraft.server.v1_15_R1.AutoRecipeStackManager; -import net.minecraft.server.v1_15_R1.ContainerUtil; -import net.minecraft.server.v1_15_R1.EntityHuman; -import net.minecraft.server.v1_15_R1.EntityPlayer; -import net.minecraft.server.v1_15_R1.IInventoryListener; -import net.minecraft.server.v1_15_R1.InventoryEnderChest; -import net.minecraft.server.v1_15_R1.ItemStack; -import net.minecraft.server.v1_15_R1.NonNullList; -import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_15_R1.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryHolder; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEnderChest { - - private final CraftInventory inventory; - private EntityPlayer owner; - private NonNullList items; - private boolean playerOnline; - - public SpecialEnderChest(final Player player, final Boolean online) { - super(PlayerDataManager.getHandle(player)); - this.inventory = new CraftInventory(this); - this.owner = PlayerDataManager.getHandle(player); - this.playerOnline = online; - this.items = this.owner.getEnderChest().items; - } - - @Override - public @NotNull CraftInventory getBukkitInventory() { - return inventory; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public void setPlayerOffline() { - this.playerOnline = false; - } - - @Override - public void setPlayerOnline(@NotNull final Player player) { - if (!this.playerOnline) { - try { - this.owner = PlayerDataManager.getHandle(player); - InventoryEnderChest enderChest = owner.getEnderChest(); - for (int i = 0; i < enderChest.getSize(); ++i) { - enderChest.setItem(i, this.items.get(i)); - } - this.items = enderChest.items; - } catch (Exception ignored) {} - this.playerOnline = true; - } - } - - @Override - public void update() { - this.owner.getEnderChest().update(); - } - - @Override - public List getContents() { - return this.items; - } - - @Override - public void onOpen(CraftHumanEntity who) { - this.owner.getEnderChest().onOpen(who); - } - - @Override - public void onClose(CraftHumanEntity who) { - this.owner.getEnderChest().onClose(who); - } - - @Override - public List getViewers() { - return this.owner.getEnderChest().getViewers(); - } - - @Override - public void setMaxStackSize(int i) { - this.owner.getEnderChest().setMaxStackSize(i); - } - - @Override - public InventoryHolder getOwner() { - return this.owner.getEnderChest().getOwner(); - } - - @Override - public @Nullable Location getLocation() { - return null; - } - - @Override - public void a(IInventoryListener iinventorylistener) { - this.owner.getEnderChest().a(iinventorylistener); - } - - @Override - public void b(IInventoryListener iinventorylistener) { - this.owner.getEnderChest().b(iinventorylistener); - } - - @Override - public ItemStack getItem(int i) { - return i >= 0 && i < this.items.size() ? this.items.get(i) : ItemStack.a; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack itemstack = ContainerUtil.a(this.items, i, j); - if (!itemstack.isEmpty()) { - this.update(); - } - - return itemstack; - } - - @Override - public ItemStack a(ItemStack itemstack) { - ItemStack itemstack1 = itemstack.cloneItemStack(); - - for (int i = 0; i < this.getSize(); ++i) { - ItemStack itemstack2 = this.getItem(i); - if (itemstack2.isEmpty()) { - this.setItem(i, itemstack1); - this.update(); - return ItemStack.a; - } - - if (ItemStack.c(itemstack2, itemstack1)) { - int j = Math.min(this.getMaxStackSize(), itemstack2.getMaxStackSize()); - int k = Math.min(itemstack1.getCount(), j - itemstack2.getCount()); - if (k > 0) { - itemstack2.add(k); - itemstack1.subtract(k); - if (itemstack1.isEmpty()) { - this.update(); - return ItemStack.a; - } - } - } - } - - if (itemstack1.getCount() != itemstack.getCount()) { - this.update(); - } - - return itemstack1; - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack itemstack = this.items.get(i); - if (itemstack.isEmpty()) { - return ItemStack.a; - } else { - this.items.set(i, ItemStack.a); - return itemstack; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - this.items.set(i, itemstack); - if (!itemstack.isEmpty() && itemstack.getCount() > this.getMaxStackSize()) { - itemstack.setCount(this.getMaxStackSize()); - } - - this.update(); - } - - @Override - public int getSize() { - return this.owner.getEnderChest().getSize(); - } - - @Override - public boolean isEmpty() { - - for (ItemStack itemstack : this.items) { - if (!itemstack.isEmpty()) { - return false; - } - } - - return true; - } - - @Override - public int getMaxStackSize() { - return 64; - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } - - @Override - public void startOpen(EntityHuman entityhuman) { - } - - @Override - public void closeContainer(EntityHuman entityhuman) { - } - - @Override - public boolean b(int i, ItemStack itemstack) { - return true; - } - - @Override - public void clear() { - this.items.clear(); - } - - @Override - public void a(AutoRecipeStackManager autorecipestackmanager) { - - for (ItemStack itemstack : this.items) { - autorecipestackmanager.b(itemstack); - } - - } - -} diff --git a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialPlayerInventory.java b/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialPlayerInventory.java deleted file mode 100644 index ff59d3c..0000000 --- a/internal/v1_15_R1/src/main/java/com/lishid/openinv/internal/v1_15_R1/SpecialPlayerInventory.java +++ /dev/null @@ -1,757 +0,0 @@ -/* - * Copyright (C) 2011-2020 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_15_R1; - -import com.google.common.collect.ImmutableList; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import java.util.Iterator; -import java.util.List; -import java.util.function.Predicate; -import java.util.stream.Collectors; -import net.minecraft.server.v1_15_R1.AutoRecipeStackManager; -import net.minecraft.server.v1_15_R1.ChatMessage; -import net.minecraft.server.v1_15_R1.ContainerUtil; -import net.minecraft.server.v1_15_R1.CrashReport; -import net.minecraft.server.v1_15_R1.CrashReportSystemDetails; -import net.minecraft.server.v1_15_R1.EntityHuman; -import net.minecraft.server.v1_15_R1.EntityPlayer; -import net.minecraft.server.v1_15_R1.EnumItemSlot; -import net.minecraft.server.v1_15_R1.IBlockData; -import net.minecraft.server.v1_15_R1.IChatBaseComponent; -import net.minecraft.server.v1_15_R1.Item; -import net.minecraft.server.v1_15_R1.ItemArmor; -import net.minecraft.server.v1_15_R1.ItemStack; -import net.minecraft.server.v1_15_R1.NBTTagCompound; -import net.minecraft.server.v1_15_R1.NBTTagList; -import net.minecraft.server.v1_15_R1.NonNullList; -import net.minecraft.server.v1_15_R1.PacketPlayOutSetSlot; -import net.minecraft.server.v1_15_R1.PlayerInventory; -import net.minecraft.server.v1_15_R1.ReportedException; -import net.minecraft.server.v1_15_R1.World; -import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_15_R1.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryHolder; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final CraftInventory inventory; - private boolean playerOnline; - private EntityHuman player; - private NonNullList items, armor, extraSlots; - private List> f; - - public SpecialPlayerInventory(final Player bukkitPlayer, final Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.inventory = new CraftInventory(this); - this.playerOnline = online; - this.player = super.player; - this.items = this.player.inventory.items; - this.armor = this.player.inventory.armor; - this.extraSlots = this.player.inventory.extraSlots; - this.f = ImmutableList.of(this.items, this.armor, this.extraSlots); - } - - @Override - public void setPlayerOnline(@NotNull final Player player) { - if (!this.playerOnline) { - EntityPlayer entityPlayer = PlayerDataManager.getHandle(player); - entityPlayer.inventory.transaction.addAll(this.transaction); - this.player = entityPlayer; - for (int i = 0; i < getSize(); ++i) { - this.player.inventory.setItem(i, getRawItem(i)); - } - this.player.inventory.itemInHandIndex = this.itemInHandIndex; - this.items = this.player.inventory.items; - this.armor = this.player.inventory.armor; - this.extraSlots = this.player.inventory.extraSlots; - this.f = ImmutableList.of(this.items, this.armor, this.extraSlots); - this.playerOnline = true; - } - } - - @Override - public boolean a(final EntityHuman entityhuman) { - return true; - } - - @Override - public @NotNull CraftInventory getBukkitInventory() { - return this.inventory; - } - - @Override - public ItemStack getItem(int i) { - List list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - return ItemStack.a; - } - - return list.get(i); - } - - private ItemStack getRawItem(int i) { - NonNullList list = null; - for (NonNullList next : this.f) { - if (i < next.size()) { - list = next; - break; - } - i -= next.size(); - } - - return list == null ? ItemStack.a : list.get(i); - } - - @Override - public IChatBaseComponent getDisplayName() { - return new ChatMessage(this.player.getName()); - } - - @Override - public boolean hasCustomName() { - return false; - } - - private int getReversedArmorSlotNum(final int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - private int getReversedItemSlotNum(final int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - @Override - public int getSize() { - return 45; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public void setItem(int i, final ItemStack itemstack) { - List list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - this.player.drop(itemstack, true); - return; - } - - list.set(i, itemstack); - } - - @Override - public void setPlayerOffline() { - this.playerOnline = false; - } - - @Override - public ItemStack splitStack(int i, final int j) { - List list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - return ItemStack.a; - } - - return list.get(i).isEmpty() ? ItemStack.a : ContainerUtil.a(list, i, j); - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - List list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - return ItemStack.a; - } - - if (!list.get(i).isEmpty()) { - ItemStack itemstack = list.get(i); - - list.set(i, ItemStack.a); - return itemstack; - } - - return ItemStack.a; - } - - @Override - public List getContents() { - return this.f.stream().flatMap(List::stream).collect(Collectors.toList()); - } - - @Override - public List getArmorContents() { - return this.armor; - } - - @Override - public void onOpen(CraftHumanEntity who) { - this.transaction.add(who); - } - - @Override - public void onClose(CraftHumanEntity who) { - this.transaction.remove(who); - } - - @Override - public List getViewers() { - return this.transaction; - } - - @Override - public InventoryHolder getOwner() { - return this.player.getBukkitEntity(); - } - - @Override - public Location getLocation() { - return this.player.getBukkitEntity().getLocation(); - } - - @Override - public ItemStack getItemInHand() { - return d(this.itemInHandIndex) ? this.items.get(this.itemInHandIndex) : ItemStack.a; - } - - private boolean a(ItemStack itemstack, ItemStack itemstack1) { - return !itemstack.isEmpty() && this.b(itemstack, itemstack1) && itemstack.isStackable() && itemstack.getCount() < itemstack.getMaxStackSize() && itemstack.getCount() < this.getMaxStackSize(); - } - - private boolean b(ItemStack itemstack, ItemStack itemstack1) { - return itemstack.getItem() == itemstack1.getItem() && ItemStack.equals(itemstack, itemstack1); - } - - @Override - public int canHold(ItemStack itemstack) { - int remains = itemstack.getCount(); - - for (int i = 0; i < this.items.size(); ++i) { - ItemStack itemstack1 = this.getItem(i); - if (itemstack1.isEmpty()) { - return itemstack.getCount(); - } - - if (!this.a(itemstack, itemstack1)) { - remains -= Math.min(itemstack1.getMaxStackSize(), this.getMaxStackSize()) - itemstack1.getCount(); - } - - if (remains <= 0) { - return itemstack.getCount(); - } - } - - return itemstack.getCount() - remains; - } - - @Override - public int getFirstEmptySlotIndex() { - for (int i = 0; i < this.items.size(); ++i) { - if (this.items.get(i).isEmpty()) { - return i; - } - } - - return -1; - } - - @Override - public void c(int i) { - this.itemInHandIndex = this.i(); - ItemStack itemstack = this.items.get(this.itemInHandIndex); - this.items.set(this.itemInHandIndex, this.items.get(i)); - this.items.set(i, itemstack); - } - - @Override - public int c(ItemStack itemstack) { - for (int i = 0; i < this.items.size(); ++i) { - ItemStack itemstack1 = this.items.get(i); - if (!this.items.get(i).isEmpty() && this.b(itemstack, this.items.get(i)) && !this.items.get(i).f() && !itemstack1.hasEnchantments() && !itemstack1.hasName()) { - return i; - } - } - - return -1; - } - - @Override - public int i() { - int i; - int j; - for (j = 0; j < 9; ++j) { - i = (this.itemInHandIndex + j) % 9; - if (this.items.get(i).isEmpty()) { - return i; - } - } - - for (j = 0; j < 9; ++j) { - i = (this.itemInHandIndex + j) % 9; - if (!this.items.get(i).hasEnchantments()) { - return i; - } - } - - return this.itemInHandIndex; - } - - @Override - public int a(Predicate predicate, int i) { - int j = 0; - - int k; - for (k = 0; k < this.getSize(); ++k) { - ItemStack itemstack = this.getItem(k); - if (!itemstack.isEmpty() && predicate.test(itemstack)) { - int l = i <= 0 ? itemstack.getCount() : Math.min(i - j, itemstack.getCount()); - j += l; - if (i != 0) { - itemstack.subtract(l); - if (itemstack.isEmpty()) { - this.setItem(k, ItemStack.a); - } - - if (i > 0 && j >= i) { - return j; - } - } - } - } - - if (!this.getCarried().isEmpty() && predicate.test(this.getCarried())) { - k = i <= 0 ? this.getCarried().getCount() : Math.min(i - j, this.getCarried().getCount()); - j += k; - if (i != 0) { - this.getCarried().subtract(k); - if (this.getCarried().isEmpty()) { - this.setCarried(ItemStack.a); - } - - if (i > 0 && j >= i) { - return j; - } - } - } - - return j; - } - - private int i(ItemStack itemstack) { - int i = this.firstPartial(itemstack); - if (i == -1) { - i = this.getFirstEmptySlotIndex(); - } - - return i == -1 ? itemstack.getCount() : this.d(i, itemstack); - } - - private int d(int i, ItemStack itemstack) { - Item item = itemstack.getItem(); - int j = itemstack.getCount(); - ItemStack itemstack1 = this.getItem(i); - if (itemstack1.isEmpty()) { - itemstack1 = new ItemStack(item, 0); - if (itemstack.hasTag()) { - itemstack1.setTag(itemstack.getTag().clone()); - } - - this.setItem(i, itemstack1); - } - - int k = j; - if (j > itemstack1.getMaxStackSize() - itemstack1.getCount()) { - k = itemstack1.getMaxStackSize() - itemstack1.getCount(); - } - - if (k > this.getMaxStackSize() - itemstack1.getCount()) { - k = this.getMaxStackSize() - itemstack1.getCount(); - } - - if (k != 0) { - j -= k; - itemstack1.add(k); - itemstack1.d(5); - } - return j; - } - - @Override - public int firstPartial(ItemStack itemstack) { - if (this.a(this.getItem(this.itemInHandIndex), itemstack)) { - return this.itemInHandIndex; - } else if (this.a(this.getItem(40), itemstack)) { - return 40; - } else { - for (int i = 0; i < this.items.size(); ++i) { - if (this.a(this.items.get(i), itemstack)) { - return i; - } - } - - return -1; - } - } - - @Override - public void j() { - - for (List itemStacks : this.f) { - for (int i = 0; i < itemStacks.size(); ++i) { - if (!itemStacks.get(i).isEmpty()) { - itemStacks.get(i).a(this.player.world, this.player, i, this.itemInHandIndex == i); - } - } - } - - } - - @Override - public boolean pickup(ItemStack itemstack) { - return this.c(-1, itemstack); - } - - @Override - public boolean c(int i, ItemStack itemstack) { - if (itemstack.isEmpty()) { - return false; - } else { - try { - if (itemstack.f()) { - if (i == -1) { - i = this.getFirstEmptySlotIndex(); - } - - if (i >= 0) { - this.items.set(i, itemstack.cloneItemStack()); - this.items.get(i).d(5); - itemstack.setCount(0); - return true; - } else if (this.player.abilities.canInstantlyBuild) { - itemstack.setCount(0); - return true; - } else { - return false; - } - } else { - int j; - do { - j = itemstack.getCount(); - if (i == -1) { - itemstack.setCount(this.i(itemstack)); - } else { - itemstack.setCount(this.d(i, itemstack)); - } - } while(!itemstack.isEmpty() && itemstack.getCount() < j); - - if (itemstack.getCount() == j && this.player.abilities.canInstantlyBuild) { - itemstack.setCount(0); - return true; - } else { - return itemstack.getCount() < j; - } - } - } catch (Throwable var6) { - CrashReport crashreport = CrashReport.a(var6, "Adding item to inventory"); - CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Item being added"); - crashreportsystemdetails.a("Item ID", Item.getId(itemstack.getItem())); - crashreportsystemdetails.a("Item data", itemstack.getDamage()); - crashreportsystemdetails.a("Item name", () -> itemstack.getName().getString()); - throw new ReportedException(crashreport); - } - } - } - - @Override - public void a(World world, ItemStack itemstack) { - if (!world.isClientSide) { - while(!itemstack.isEmpty()) { - int i = this.firstPartial(itemstack); - if (i == -1) { - i = this.getFirstEmptySlotIndex(); - } - - if (i == -1) { - this.player.drop(itemstack, false); - break; - } - - int j = itemstack.getMaxStackSize() - this.getItem(i).getCount(); - if (this.c(i, itemstack.cloneAndSubtract(j))) { - ((EntityPlayer)this.player).playerConnection.sendPacket(new PacketPlayOutSetSlot(-2, i, this.getItem(i))); - } - } - } - - } - - @Override - public void f(ItemStack itemstack) { - - for (List list : this.f) { - for (int i = 0; i < list.size(); ++i) { - if (list.get(i) == itemstack) { - list.set(i, ItemStack.a); - break; - } - } - } - } - - @Override - public float a(IBlockData iblockdata) { - return this.items.get(this.itemInHandIndex).a(iblockdata); - } - - @Override - public NBTTagList a(NBTTagList nbttaglist) { - NBTTagCompound nbttagcompound; - int i; - for (i = 0; i < this.items.size(); ++i) { - if (!this.items.get(i).isEmpty()) { - nbttagcompound = new NBTTagCompound(); - nbttagcompound.setByte("Slot", (byte) i); - this.items.get(i).save(nbttagcompound); - nbttaglist.add(nbttagcompound); - } - } - - for (i = 0; i < this.armor.size(); ++i) { - if (!this.armor.get(i).isEmpty()) { - nbttagcompound = new NBTTagCompound(); - nbttagcompound.setByte("Slot", (byte) (i + 100)); - this.armor.get(i).save(nbttagcompound); - nbttaglist.add(nbttagcompound); - } - } - - for (i = 0; i < this.extraSlots.size(); ++i) { - if (!this.extraSlots.get(i).isEmpty()) { - nbttagcompound = new NBTTagCompound(); - nbttagcompound.setByte("Slot", (byte) (i + 150)); - this.extraSlots.get(i).save(nbttagcompound); - nbttaglist.add(nbttagcompound); - } - } - - return nbttaglist; - } - - @Override - public void b(NBTTagList nbttaglist) { - this.items.clear(); - this.armor.clear(); - this.extraSlots.clear(); - - for(int i = 0; i < nbttaglist.size(); ++i) { - NBTTagCompound nbttagcompound = nbttaglist.getCompound(i); - int j = nbttagcompound.getByte("Slot") & 255; - ItemStack itemstack = ItemStack.a(nbttagcompound); - if (!itemstack.isEmpty()) { - if (j < this.items.size()) { - this.items.set(j, itemstack); - } else if (j >= 100 && j < this.armor.size() + 100) { - this.armor.set(j - 100, itemstack); - } else if (j >= 150 && j < this.extraSlots.size() + 150) { - this.extraSlots.set(j - 150, itemstack); - } - } - } - - } - - @Override - public boolean isEmpty() { - Iterator iterator = this.items.iterator(); - - ItemStack itemstack; - while (iterator.hasNext()) { - itemstack = iterator.next(); - if (!itemstack.isEmpty()) { - return false; - } - } - - iterator = this.armor.iterator(); - - while (iterator.hasNext()) { - itemstack = iterator.next(); - if (!itemstack.isEmpty()) { - return false; - } - } - - iterator = this.extraSlots.iterator(); - - while (iterator.hasNext()) { - itemstack = iterator.next(); - if (!itemstack.isEmpty()) { - return false; - } - } - - return true; - } - - @Nullable - @Override - public IChatBaseComponent getCustomName() { - return null; - } - - @Override - public boolean b(IBlockData iblockdata) { - return this.getItem(this.itemInHandIndex).canDestroySpecialBlock(iblockdata); - } - - @Override - public void a(float f) { - if (f > 0.0F) { - f /= 4.0F; - if (f < 1.0F) { - f = 1.0F; - } - - for (int i = 0; i < this.armor.size(); ++i) { - ItemStack itemstack = this.armor.get(0); - int index = i; - if (itemstack.getItem() instanceof ItemArmor) { - itemstack.damage((int) f, this.player, (entityhuman) -> entityhuman.broadcastItemBreak(EnumItemSlot.a(EnumItemSlot.Function.ARMOR, index))); - } - } - } - } - - @Override - public void dropContents() { - for (List itemStacks : this.f) { - for (int i = 0; i < itemStacks.size(); ++i) { - ItemStack itemstack = itemStacks.get(i); - if (!itemstack.isEmpty()) { - itemStacks.set(i, ItemStack.a); - this.player.a(itemstack, true, false); - } - } - } - } - - @Override - public boolean h(ItemStack itemstack) { - return this.f.stream().flatMap(List::stream).anyMatch(itemStack1 -> !itemStack1.isEmpty() && itemStack1.doMaterialsMatch(itemstack)); - } - - @Override - public void a(PlayerInventory playerinventory) { - for (int i = 0; i < playerinventory.getSize(); ++i) { - this.setItem(i, playerinventory.getItem(i)); - } - - this.itemInHandIndex = playerinventory.itemInHandIndex; - } - - @Override - public void clear() { - this.f.forEach(List::clear); - } - - @Override - public void a(AutoRecipeStackManager autorecipestackmanager) { - for (ItemStack itemstack : this.items) { - autorecipestackmanager.a(itemstack); - } - } - -} diff --git a/internal/v1_16_R2/pom.xml b/internal/v1_16_R2/pom.xml deleted file mode 100644 index f72ab8f..0000000 --- a/internal/v1_16_R2/pom.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.1.6-SNAPSHOT - - - openinvadapter1_16_R2 - OpenInvAdapter1_16_R2 - - - - org.spigotmc - spigot - 1.16.3-R0.1-SNAPSHOT - provided - - - com.lishid - openinvplugincore - 4.1.6-SNAPSHOT - - - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.2 - - true - - - - package - - shade - - - - - - - maven-compiler-plugin - 3.8.1 - - 1.8 - 1.8 - - - - - - \ No newline at end of file diff --git a/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/AnySilentContainer.java b/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/AnySilentContainer.java deleted file mode 100644 index 4040449..0000000 --- a/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/AnySilentContainer.java +++ /dev/null @@ -1,358 +0,0 @@ -/* - * Copyright (C) 2011-2020 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_16_R2; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IAnySilentContainer; -import java.lang.reflect.Field; -import net.minecraft.server.v1_16_R2.Block; -import net.minecraft.server.v1_16_R2.BlockBarrel; -import net.minecraft.server.v1_16_R2.BlockChest; -import net.minecraft.server.v1_16_R2.BlockChestTrapped; -import net.minecraft.server.v1_16_R2.BlockPosition; -import net.minecraft.server.v1_16_R2.BlockPropertyChestType; -import net.minecraft.server.v1_16_R2.BlockShulkerBox; -import net.minecraft.server.v1_16_R2.ChatMessage; -import net.minecraft.server.v1_16_R2.Container; -import net.minecraft.server.v1_16_R2.ContainerChest; -import net.minecraft.server.v1_16_R2.Containers; -import net.minecraft.server.v1_16_R2.EntityHuman; -import net.minecraft.server.v1_16_R2.EntityPlayer; -import net.minecraft.server.v1_16_R2.EnumGamemode; -import net.minecraft.server.v1_16_R2.IBlockData; -import net.minecraft.server.v1_16_R2.IChatBaseComponent; -import net.minecraft.server.v1_16_R2.ITileInventory; -import net.minecraft.server.v1_16_R2.InventoryEnderChest; -import net.minecraft.server.v1_16_R2.InventoryLargeChest; -import net.minecraft.server.v1_16_R2.PlayerInteractManager; -import net.minecraft.server.v1_16_R2.PlayerInventory; -import net.minecraft.server.v1_16_R2.TileEntity; -import net.minecraft.server.v1_16_R2.TileEntityChest; -import net.minecraft.server.v1_16_R2.TileEntityEnderChest; -import net.minecraft.server.v1_16_R2.TileEntityLootable; -import net.minecraft.server.v1_16_R2.TileInventory; -import net.minecraft.server.v1_16_R2.World; -import org.bukkit.Material; -import org.bukkit.Statistic; -import org.bukkit.block.Barrel; -import org.bukkit.block.BlockFace; -import org.bukkit.block.BlockState; -import org.bukkit.block.EnderChest; -import org.bukkit.block.ShulkerBox; -import org.bukkit.block.data.BlockData; -import org.bukkit.block.data.Directional; -import org.bukkit.block.data.type.Chest; -import org.bukkit.entity.Cat; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.bukkit.util.BoundingBox; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - private Field playerInteractManagerGamemode; - - public AnySilentContainer() { - try { - this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); - this.playerInteractManagerGamemode.setAccessible(true); - } catch (NoSuchFieldException | SecurityException e) { - System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); - e.printStackTrace(); - } - } - - @Override - public boolean isAnySilentContainer(@NotNull final org.bukkit.block.Block bukkitBlock) { - if (bukkitBlock.getType() == Material.ENDER_CHEST) { - return true; - } - BlockState state = bukkitBlock.getState(); - return state instanceof org.bukkit.block.Chest - || state instanceof org.bukkit.block.ShulkerBox - || state instanceof org.bukkit.block.Barrel; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull final Player p, @NotNull final org.bukkit.block.Block block) { - BlockState blockState = block.getState(); - - // Barrels do not require AnyContainer. - if (blockState instanceof Barrel) { - return false; - } - - // Enderchests require a non-occluding block on top to open. - if (blockState instanceof EnderChest) { - return block.getRelative(0, 1, 0).getType().isOccluding(); - } - - // Shulker boxes require 1/2 a block clear in the direction they open. - if (blockState instanceof ShulkerBox) { - BoundingBox boundingBox = block.getBoundingBox(); - if (boundingBox.getVolume() > 1) { - // Shulker box is already open. - return false; - } - - BlockData blockData = block.getBlockData(); - if (!(blockData instanceof Directional)) { - // Shouldn't be possible. Just in case, demand AnyChest. - return true; - } - - Directional directional = (Directional) blockData; - BlockFace face = directional.getFacing(); - boundingBox.shift(face.getDirection()); - // Return whether or not bounding boxes overlap. - return block.getRelative(face, 1).getBoundingBox().overlaps(boundingBox); - } - - if (!(blockState instanceof org.bukkit.block.Chest)) { - return false; - } - - if (isBlockedChest(block)) { - return true; - } - - BlockData blockData = block.getBlockData(); - if (!(blockData instanceof Chest) || ((Chest) blockData).getType() == Chest.Type.SINGLE) { - return false; - } - - Chest chest = (Chest) blockData; - int ordinal = (chest.getFacing().ordinal() + 4 + (chest.getType() == Chest.Type.RIGHT ? -1 : 1)) % 4; - BlockFace relativeFace = BlockFace.values()[ordinal]; - org.bukkit.block.Block relative = block.getRelative(relativeFace); - - if (relative.getType() != block.getType()) { - return false; - } - - BlockData relativeData = relative.getBlockData(); - if (!(relativeData instanceof Chest)) { - return false; - } - - Chest relativeChest = (Chest) relativeData; - if (relativeChest.getFacing() != chest.getFacing() - || relativeChest.getType() != (chest.getType() == Chest.Type.RIGHT ? Chest.Type.LEFT : Chest.Type.RIGHT)) { - return false; - } - - return isBlockedChest(relative); - } - - private boolean isBlockedChest(org.bukkit.block.Block block) { - org.bukkit.block.Block relative = block.getRelative(0, 1, 0); - return relative.getType().isOccluding() - || block.getWorld().getNearbyEntities(BoundingBox.of(relative), entity -> entity instanceof Cat).size() > 0; - } - - @Override - public boolean activateContainer(@NotNull final Player bukkitPlayer, final boolean silentchest, - @NotNull final org.bukkit.block.Block bukkitBlock) { - - // Silent ender chest is API-only - if (silentchest && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); - return true; - } - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - final World world = player.world; - final BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - final TileEntity tile = world.getTileEntity(blockPosition); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(new TileInventory((containerCounter, playerInventory, ignored) -> { - Containers containers; - int rows = enderChest.getSize() / 9; - switch (rows) { - case 1: - containers = Containers.GENERIC_9X1; - break; - case 2: - containers = Containers.GENERIC_9X2; - break; - case 3: - default: - containers = Containers.GENERIC_9X3; - break; - case 4: - containers = Containers.GENERIC_9X4; - break; - case 5: - containers = Containers.GENERIC_9X5; - break; - case 6: - containers = Containers.GENERIC_9X6; - break; - } - return new ContainerChest(containers, containerCounter, playerInventory, enderChest, rows); - }, new ChatMessage("container.enderchest"))); - bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); - return true; - } - - if (!(tile instanceof ITileInventory)) { - return false; - } - - ITileInventory tileInventory = (ITileInventory) tile; - IBlockData blockData = world.getType(blockPosition); - Block block = blockData.getBlock(); - - if (block instanceof BlockChest) { - - BlockPropertyChestType chestType = blockData.get(BlockChest.c); - - if (chestType != BlockPropertyChestType.SINGLE) { - - BlockPosition adjacentBlockPosition = blockPosition.shift(BlockChest.h(blockData)); - IBlockData adjacentBlockData = world.getType(adjacentBlockPosition); - - if (adjacentBlockData.getBlock() == block) { - - BlockPropertyChestType adjacentChestType = adjacentBlockData.get(BlockChest.c); - - if (adjacentChestType != BlockPropertyChestType.SINGLE && chestType != adjacentChestType - && adjacentBlockData.get(BlockChest.FACING) == blockData.get(BlockChest.FACING)) { - - TileEntity adjacentTile = world.getTileEntity(adjacentBlockPosition); - - if (adjacentTile instanceof TileEntityChest && tileInventory instanceof TileEntityChest) { - TileEntityChest rightChest = chestType == BlockPropertyChestType.RIGHT ? ((TileEntityChest) tileInventory) : (TileEntityChest) adjacentTile; - TileEntityChest leftChest = chestType == BlockPropertyChestType.RIGHT ? (TileEntityChest) adjacentTile : ((TileEntityChest) tileInventory); - - if (silentchest && (rightChest.lootTable != null || leftChest.lootTable != null)) { - OpenInv.getPlugin(OpenInv.class).sendSystemMessage(bukkitPlayer, "messages.error.lootNotGenerated"); - return false; - } - - tileInventory = new ITileInventory() { - public Container createMenu(int containerCounter, PlayerInventory playerInventory, EntityHuman entityHuman) { - leftChest.d(playerInventory.player); - rightChest.d(playerInventory.player); - return ContainerChest.b(containerCounter, playerInventory, new InventoryLargeChest(rightChest, leftChest)); - } - - public IChatBaseComponent getScoreboardDisplayName() { - return new ChatMessage("container.chestDouble"); - } - }; - } - } - } - } - - if (block instanceof BlockChestTrapped) { - bukkitPlayer.incrementStatistic(Statistic.TRAPPED_CHEST_TRIGGERED); - } else { - bukkitPlayer.incrementStatistic(Statistic.CHEST_OPENED); - } - } - - if (block instanceof BlockShulkerBox) { - bukkitPlayer.incrementStatistic(Statistic.SHULKER_BOX_OPENED); - } - - if (block instanceof BlockBarrel) { - bukkitPlayer.incrementStatistic(Statistic.OPEN_BARREL); - } - - // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silentchest || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { - player.openContainer(tileInventory); - return true; - } - - // SilentChest requires access to setting players' gamemode directly. - if (this.playerInteractManagerGamemode == null) { - return false; - } - - if (tile instanceof TileEntityLootable) { - TileEntityLootable lootable = (TileEntityLootable) tile; - if (lootable.lootTable != null) { - OpenInv.getPlugin(OpenInv.class).sendSystemMessage(bukkitPlayer, "messages.error.lootNotGenerated"); - return false; - } - } - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.openContainer(tileInventory); - this.forceGameMode(player, gamemode); - return true; - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) { - if (this.playerInteractManagerGamemode == null) { - return; - } - - InventoryView view = bukkitPlayer.getOpenInventory(); - switch (view.getType()) { - case CHEST: - case ENDER_CHEST: - case SHULKER_BOX: - case BARREL: - break; - default: - return; - } - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.activeContainer.b(player); - player.activeContainer.a(player, false); - player.activeContainer.transferTo(player.defaultContainer, player.getBukkitEntity()); - player.activeContainer = player.defaultContainer; - this.forceGameMode(player, gamemode); - } - - private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { - if (this.playerInteractManagerGamemode == null) { - // No need to warn repeatedly, error on startup and lack of function should be enough. - return; - } - try { - if (!this.playerInteractManagerGamemode.isAccessible()) { - // Just in case, ensure accessible. - this.playerInteractManagerGamemode.setAccessible(true); - } - this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); - } catch (IllegalArgumentException | IllegalAccessException e) { - e.printStackTrace(); - } - } - -} diff --git a/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/PlayerDataManager.java b/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/PlayerDataManager.java deleted file mode 100644 index 79a0743..0000000 --- a/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/PlayerDataManager.java +++ /dev/null @@ -1,295 +0,0 @@ -/* - * Copyright (C) 2011-2020 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_16_R2; - -import com.lishid.openinv.OpenInv; -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import com.mojang.authlib.GameProfile; -import java.io.File; -import java.io.FileOutputStream; -import java.lang.reflect.Field; -import net.minecraft.server.v1_16_R2.ChatComponentText; -import net.minecraft.server.v1_16_R2.ChatMessageType; -import net.minecraft.server.v1_16_R2.Container; -import net.minecraft.server.v1_16_R2.Containers; -import net.minecraft.server.v1_16_R2.Entity; -import net.minecraft.server.v1_16_R2.EntityHuman; -import net.minecraft.server.v1_16_R2.EntityPlayer; -import net.minecraft.server.v1_16_R2.MinecraftServer; -import net.minecraft.server.v1_16_R2.NBTCompressedStreamTools; -import net.minecraft.server.v1_16_R2.NBTTagCompound; -import net.minecraft.server.v1_16_R2.PacketPlayOutChat; -import net.minecraft.server.v1_16_R2.PacketPlayOutOpenWindow; -import net.minecraft.server.v1_16_R2.PlayerInteractManager; -import net.minecraft.server.v1_16_R2.PlayerInventory; -import net.minecraft.server.v1_16_R2.SystemUtils; -import net.minecraft.server.v1_16_R2.World; -import net.minecraft.server.v1_16_R2.WorldNBTStorage; -import net.minecraft.server.v1_16_R2.WorldServer; -import org.apache.logging.log4j.LogManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_16_R2.CraftServer; -import org.bukkit.craftbukkit.v1_16_R2.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_16_R2.event.CraftEventFactory; -import org.bukkit.craftbukkit.v1_16_R2.inventory.CraftContainer; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class PlayerDataManager implements IPlayerDataManager { - - private @Nullable Field bukkitEntity; - - public PlayerDataManager() { - try { - bukkitEntity = Entity.class.getDeclaredField("bukkitEntity"); - } catch (NoSuchFieldException e) { - System.out.println("Unable to obtain field to inject custom save process - players' mounts may be deleted when loaded."); - e.printStackTrace(); - bukkitEntity = null; - } - } - - @NotNull - public static EntityPlayer getHandle(final Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Nullable - @Override - public Player loadPlayer(@NotNull final OfflinePlayer offline) { - // Ensure player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - // Create a profile and entity to load the player data - // See net.minecraft.server.PlayerList#attemptLogin - GameProfile profile = new GameProfile(offline.getUniqueId(), - offline.getName() != null ? offline.getName() : offline.getUniqueId().toString()); - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - WorldServer worldServer = server.getWorldServer(World.OVERWORLD); - - if (worldServer == null) { - return null; - } - - EntityPlayer entity = new EntityPlayer(server, worldServer, profile, new PlayerInteractManager(worldServer)); - - try { - injectPlayer(entity); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - void injectPlayer(EntityPlayer player) throws IllegalAccessException { - if (bukkitEntity == null) { - return; - } - - bukkitEntity.setAccessible(true); - - bukkitEntity.set(player, new CraftPlayer(player.server.server, player) { - @Override - public void saveData() { - super.saveData(); - // See net.minecraft.server.WorldNBTStorage#save(EntityPlayer) - try { - WorldNBTStorage worldNBTStorage = player.server.getPlayerList().playerFileData; - - NBTTagCompound playerData = player.save(new NBTTagCompound()); - - if (!isOnline()) { - // Special case: save old vehicle data - NBTTagCompound oldData = worldNBTStorage.load(player); - - if (oldData != null && oldData.hasKeyOfType("RootVehicle", 10)) { - // See net.minecraft.server.PlayerList#a(NetworkManager, EntityPlayer) and net.minecraft.server.EntityPlayer#b(NBTTagCompound) - playerData.set("RootVehicle", oldData.getCompound("RootVehicle")); - } - } - - File file = new File(worldNBTStorage.getPlayerDir(), player.getUniqueIDString() + ".dat.tmp"); - File file1 = new File(worldNBTStorage.getPlayerDir(), player.getUniqueIDString() + ".dat"); - - NBTCompressedStreamTools.a(playerData, new FileOutputStream(file)); - - if (file1.exists() && !file1.delete() || !file.renameTo(file1)) { - LogManager.getLogger().warn("Failed to save player data for {}", player.getDisplayName().getString()); - } - - } catch (Exception e) { - LogManager.getLogger().warn("Failed to save player data for {}", player.getDisplayName().getString()); - } - } - }); - } - - @NotNull - @Override - public Player inject(@NotNull Player player) { - try { - EntityPlayer nmsPlayer = getHandle(player); - injectPlayer(nmsPlayer); - return nmsPlayer.getBukkitEntity(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - return player; - } - } - - @Nullable - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - - EntityPlayer nmsPlayer = getHandle(player); - - if (nmsPlayer.playerConnection == null) { - return null; - } - - String title; - if (inventory instanceof SpecialEnderChest) { - HumanEntity owner = (HumanEntity) ((SpecialEnderChest) inventory).getBukkitOwner(); - title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.enderchest", "%player%", owner.getName()); - if (title == null) { - title = owner.getName() + "'s Ender Chest"; - } - } else if (inventory instanceof SpecialPlayerInventory) { - EntityHuman owner = ((PlayerInventory) inventory).player; - title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.player", "%player%", owner.getName()); - if (title == null) { - title = owner.getName() + "'s Inventory"; - } - } else { - return player.openInventory(inventory.getBukkitInventory()); - } - - String finalTitle = title; - Container container = new CraftContainer(new InventoryView() { - @Override - public @NotNull Inventory getTopInventory() { - return inventory.getBukkitInventory(); - } - @Override - public @NotNull Inventory getBottomInventory() { - return player.getInventory(); - } - @Override - public @NotNull HumanEntity getPlayer() { - return player; - } - @Override - public @NotNull InventoryType getType() { - return inventory.getBukkitInventory().getType(); - } - @Override - public @NotNull String getTitle() { - return finalTitle; - } - }, nmsPlayer, nmsPlayer.nextContainerCounter()) { - @Override - public Containers getType() { - switch (inventory.getBukkitInventory().getSize()) { - case 9: - return Containers.GENERIC_9X1; - case 18: - return Containers.GENERIC_9X2; - case 27: - default: - return Containers.GENERIC_9X3; - case 36: - return Containers.GENERIC_9X4; - case 41: // PLAYER - case 45: - return Containers.GENERIC_9X5; - case 54: - return Containers.GENERIC_9X6; - } - } - }; - - container.setTitle(new ChatComponentText(title)); - container = CraftEventFactory.callInventoryOpenEvent(nmsPlayer, container); - - if (container == null) { - return null; - } - - nmsPlayer.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, container.getType(), - new ChatComponentText(container.getBukkitView().getTitle()))); - nmsPlayer.activeContainer = container; - container.addSlotListener(nmsPlayer); - - return container.getBukkitView(); - - } - - @Override - public void sendSystemMessage(@NotNull Player player, @NotNull String message) { - int newline = message.indexOf('\n'); - if (newline != -1) { - // No newlines in action bar chat. - message = message.substring(0, newline); - } - - if (message.isEmpty()) { - return; - } - - EntityPlayer nmsPlayer = getHandle(player); - - // For action bar chat, color codes are still supported but JSON text color is not allowed. Do not convert text. - if (nmsPlayer.playerConnection != null) { - nmsPlayer.playerConnection.sendPacket(new PacketPlayOutChat(new ChatComponentText(message), ChatMessageType.GAME_INFO, SystemUtils.b)); - } - } - -} diff --git a/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/SpecialEnderChest.java b/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/SpecialEnderChest.java deleted file mode 100644 index f2dc5f6..0000000 --- a/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/SpecialEnderChest.java +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Copyright (C) 2011-2020 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_16_R2; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.util.List; -import net.minecraft.server.v1_16_R2.AutoRecipeStackManager; -import net.minecraft.server.v1_16_R2.ContainerUtil; -import net.minecraft.server.v1_16_R2.EntityHuman; -import net.minecraft.server.v1_16_R2.EntityPlayer; -import net.minecraft.server.v1_16_R2.IInventoryListener; -import net.minecraft.server.v1_16_R2.InventoryEnderChest; -import net.minecraft.server.v1_16_R2.ItemStack; -import net.minecraft.server.v1_16_R2.NonNullList; -import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_16_R2.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_16_R2.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryHolder; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class SpecialEnderChest extends InventoryEnderChest implements ISpecialEnderChest { - - private final CraftInventory inventory; - private EntityPlayer owner; - private NonNullList items; - private boolean playerOnline; - - public SpecialEnderChest(final Player player, final Boolean online) { - super(PlayerDataManager.getHandle(player)); - this.inventory = new CraftInventory(this); - this.owner = PlayerDataManager.getHandle(player); - this.playerOnline = online; - this.items = this.owner.getEnderChest().items; - } - - @Override - public @NotNull CraftInventory getBukkitInventory() { - return inventory; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public void setPlayerOffline() { - this.playerOnline = false; - } - - @Override - public void setPlayerOnline(@NotNull final Player player) { - if (!this.playerOnline) { - try { - this.owner = PlayerDataManager.getHandle(player); - InventoryEnderChest enderChest = owner.getEnderChest(); - for (int i = 0; i < enderChest.getSize(); ++i) { - enderChest.setItem(i, this.items.get(i)); - } - this.items = enderChest.items; - } catch (Exception ignored) {} - this.playerOnline = true; - } - } - - @Override - public void update() { - this.owner.getEnderChest().update(); - } - - @Override - public List getContents() { - return this.items; - } - - @Override - public void onOpen(CraftHumanEntity who) { - this.owner.getEnderChest().onOpen(who); - } - - @Override - public void onClose(CraftHumanEntity who) { - this.owner.getEnderChest().onClose(who); - } - - @Override - public List getViewers() { - return this.owner.getEnderChest().getViewers(); - } - - @Override - public void setMaxStackSize(int i) { - this.owner.getEnderChest().setMaxStackSize(i); - } - - @Override - public InventoryHolder getOwner() { - return this.owner.getEnderChest().getOwner(); - } - - @Override - public @Nullable Location getLocation() { - return null; - } - - @Override - public void a(IInventoryListener iinventorylistener) { - this.owner.getEnderChest().a(iinventorylistener); - } - - @Override - public void b(IInventoryListener iinventorylistener) { - this.owner.getEnderChest().b(iinventorylistener); - } - - @Override - public ItemStack getItem(int i) { - return i >= 0 && i < this.items.size() ? this.items.get(i) : ItemStack.b; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack itemstack = ContainerUtil.a(this.items, i, j); - if (!itemstack.isEmpty()) { - this.update(); - } - - return itemstack; - } - - @Override - public ItemStack a(ItemStack itemstack) { - ItemStack itemstack1 = itemstack.cloneItemStack(); - - for (int i = 0; i < this.getSize(); ++i) { - ItemStack itemstack2 = this.getItem(i); - if (itemstack2.isEmpty()) { - this.setItem(i, itemstack1); - this.update(); - return ItemStack.b; - } - - if (ItemStack.c(itemstack2, itemstack1)) { - int j = Math.min(this.getMaxStackSize(), itemstack2.getMaxStackSize()); - int k = Math.min(itemstack1.getCount(), j - itemstack2.getCount()); - if (k > 0) { - itemstack2.add(k); - itemstack1.subtract(k); - if (itemstack1.isEmpty()) { - this.update(); - return ItemStack.b; - } - } - } - } - - if (itemstack1.getCount() != itemstack.getCount()) { - this.update(); - } - - return itemstack1; - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack itemstack = this.items.get(i); - if (itemstack.isEmpty()) { - return ItemStack.b; - } else { - this.items.set(i, ItemStack.b); - return itemstack; - } - } - - @Override - public void setItem(int i, ItemStack itemstack) { - this.items.set(i, itemstack); - if (!itemstack.isEmpty() && itemstack.getCount() > this.getMaxStackSize()) { - itemstack.setCount(this.getMaxStackSize()); - } - - this.update(); - } - - @Override - public int getSize() { - return this.owner.getEnderChest().getSize(); - } - - @Override - public boolean isEmpty() { - - for (ItemStack itemstack : this.items) { - if (!itemstack.isEmpty()) { - return false; - } - } - - return true; - } - - @Override - public int getMaxStackSize() { - return 64; - } - - @Override - public boolean a(EntityHuman entityhuman) { - return true; - } - - @Override - public void startOpen(EntityHuman entityhuman) { - } - - @Override - public void closeContainer(EntityHuman entityhuman) { - } - - @Override - public boolean b(int i, ItemStack itemstack) { - return true; - } - - @Override - public void clear() { - this.items.clear(); - } - - @Override - public void a(AutoRecipeStackManager autorecipestackmanager) { - - for (ItemStack itemstack : this.items) { - autorecipestackmanager.b(itemstack); - } - - } - -} diff --git a/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/SpecialPlayerInventory.java b/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/SpecialPlayerInventory.java deleted file mode 100644 index e1b22cf..0000000 --- a/internal/v1_16_R2/src/main/java/com/lishid/openinv/internal/v1_16_R2/SpecialPlayerInventory.java +++ /dev/null @@ -1,733 +0,0 @@ -/* - * Copyright (C) 2011-2020 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_16_R2; - -import com.google.common.collect.ImmutableList; -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import java.util.Iterator; -import java.util.List; -import java.util.function.Predicate; -import java.util.stream.Collectors; -import net.minecraft.server.v1_16_R2.AutoRecipeStackManager; -import net.minecraft.server.v1_16_R2.ChatMessage; -import net.minecraft.server.v1_16_R2.ContainerUtil; -import net.minecraft.server.v1_16_R2.CrashReport; -import net.minecraft.server.v1_16_R2.CrashReportSystemDetails; -import net.minecraft.server.v1_16_R2.DamageSource; -import net.minecraft.server.v1_16_R2.EntityHuman; -import net.minecraft.server.v1_16_R2.EntityPlayer; -import net.minecraft.server.v1_16_R2.EnumItemSlot; -import net.minecraft.server.v1_16_R2.IBlockData; -import net.minecraft.server.v1_16_R2.IChatBaseComponent; -import net.minecraft.server.v1_16_R2.IInventory; -import net.minecraft.server.v1_16_R2.Item; -import net.minecraft.server.v1_16_R2.ItemArmor; -import net.minecraft.server.v1_16_R2.ItemStack; -import net.minecraft.server.v1_16_R2.NBTTagCompound; -import net.minecraft.server.v1_16_R2.NBTTagList; -import net.minecraft.server.v1_16_R2.NonNullList; -import net.minecraft.server.v1_16_R2.PacketPlayOutSetSlot; -import net.minecraft.server.v1_16_R2.PlayerInventory; -import net.minecraft.server.v1_16_R2.ReportedException; -import net.minecraft.server.v1_16_R2.World; -import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_16_R2.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_16_R2.inventory.CraftInventory; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryHolder; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final CraftInventory inventory; - private boolean playerOnline; - private EntityHuman player; - private NonNullList items, armor, extraSlots; - private List> f; - - public SpecialPlayerInventory(final Player bukkitPlayer, final Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.inventory = new CraftInventory(this); - this.playerOnline = online; - this.player = super.player; - this.items = this.player.inventory.items; - this.armor = this.player.inventory.armor; - this.extraSlots = this.player.inventory.extraSlots; - this.f = ImmutableList.of(this.items, this.armor, this.extraSlots); - } - - @Override - public void setPlayerOnline(@NotNull final Player player) { - if (!this.playerOnline) { - EntityPlayer entityPlayer = PlayerDataManager.getHandle(player); - entityPlayer.inventory.transaction.addAll(this.transaction); - this.player = entityPlayer; - for (int i = 0; i < getSize(); ++i) { - this.player.inventory.setItem(i, getRawItem(i)); - } - this.player.inventory.itemInHandIndex = this.itemInHandIndex; - this.items = this.player.inventory.items; - this.armor = this.player.inventory.armor; - this.extraSlots = this.player.inventory.extraSlots; - this.f = ImmutableList.of(this.items, this.armor, this.extraSlots); - this.playerOnline = true; - } - } - - @Override - public boolean a(final EntityHuman entityhuman) { - return true; - } - - @Override - public @NotNull CraftInventory getBukkitInventory() { - return this.inventory; - } - - @Override - public ItemStack getItem(int i) { - List list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - return ItemStack.b; - } - - return list.get(i); - } - - private ItemStack getRawItem(int i) { - NonNullList list = null; - for (NonNullList next : this.f) { - if (i < next.size()) { - list = next; - break; - } - i -= next.size(); - } - - return list == null ? ItemStack.b : list.get(i); - } - - @Override - public IChatBaseComponent getDisplayName() { - return new ChatMessage(this.player.getName()); - } - - @Override - public boolean hasCustomName() { - return false; - } - - private int getReversedArmorSlotNum(final int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - private int getReversedItemSlotNum(final int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - @Override - public int getSize() { - return 45; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public void setItem(int i, final ItemStack itemstack) { - List list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - this.player.drop(itemstack, true); - return; - } - - list.set(i, itemstack); - } - - @Override - public void setPlayerOffline() { - this.playerOnline = false; - } - - @Override - public ItemStack splitStack(int i, final int j) { - List list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - return ItemStack.b; - } - - return list.get(i).isEmpty() ? ItemStack.b : ContainerUtil.a(list, i, j); - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - List list = this.items; - - if (i >= list.size()) { - i -= list.size(); - list = this.armor; - } else { - i = this.getReversedItemSlotNum(i); - } - - if (i >= list.size()) { - i -= list.size(); - list = this.extraSlots; - } else if (list == this.armor) { - i = this.getReversedArmorSlotNum(i); - } - - if (i >= list.size()) { - return ItemStack.b; - } - - if (!list.get(i).isEmpty()) { - ItemStack itemstack = list.get(i); - - list.set(i, ItemStack.b); - return itemstack; - } - - return ItemStack.b; - } - - @Override - public List getContents() { - return this.f.stream().flatMap(List::stream).collect(Collectors.toList()); - } - - @Override - public List getArmorContents() { - return this.armor; - } - - @Override - public void onOpen(CraftHumanEntity who) { - this.transaction.add(who); - } - - @Override - public void onClose(CraftHumanEntity who) { - this.transaction.remove(who); - } - - @Override - public List getViewers() { - return this.transaction; - } - - @Override - public InventoryHolder getOwner() { - return this.player.getBukkitEntity(); - } - - @Override - public Location getLocation() { - return this.player.getBukkitEntity().getLocation(); - } - - @Override - public ItemStack getItemInHand() { - return d(this.itemInHandIndex) ? this.items.get(this.itemInHandIndex) : ItemStack.b; - } - - private boolean isSimilarAndNotFull(ItemStack itemstack, ItemStack itemstack1) { - return !itemstack.isEmpty() && this.b(itemstack, itemstack1) && itemstack.isStackable() && itemstack.getCount() < itemstack.getMaxStackSize() && itemstack.getCount() < this.getMaxStackSize(); - } - - private boolean b(ItemStack itemstack, ItemStack itemstack1) { - return itemstack.getItem() == itemstack1.getItem() && ItemStack.equals(itemstack, itemstack1); - } - - @Override - public int canHold(ItemStack itemstack) { - int remains = itemstack.getCount(); - - for (int i = 0; i < this.items.size(); ++i) { - ItemStack itemstack1 = this.getItem(i); - if (itemstack1.isEmpty()) { - return itemstack.getCount(); - } - - if (!this.isSimilarAndNotFull(itemstack, itemstack1)) { - remains -= Math.min(itemstack1.getMaxStackSize(), this.getMaxStackSize()) - itemstack1.getCount(); - } - - if (remains <= 0) { - return itemstack.getCount(); - } - } - - ItemStack offhandItemStack = this.getItem(this.items.size() + this.armor.size()); - if (this.isSimilarAndNotFull(offhandItemStack, itemstack)) { - remains -= Math.min(offhandItemStack.getMaxStackSize(), this.getMaxStackSize()) - offhandItemStack.getCount(); - } - - return itemstack.getCount() - remains; - } - - @Override - public int getFirstEmptySlotIndex() { - for (int i = 0; i < this.items.size(); ++i) { - if (this.items.get(i).isEmpty()) { - return i; - } - } - - return -1; - } - - @Override - public void c(int i) { - this.itemInHandIndex = this.i(); - ItemStack itemstack = this.items.get(this.itemInHandIndex); - this.items.set(this.itemInHandIndex, this.items.get(i)); - this.items.set(i, itemstack); - } - - @Override - public int c(ItemStack itemstack) { - for (int i = 0; i < this.items.size(); ++i) { - ItemStack itemstack1 = this.items.get(i); - if (!this.items.get(i).isEmpty() && this.b(itemstack, this.items.get(i)) && !this.items.get(i).f() && !itemstack1.hasEnchantments() && !itemstack1.hasName()) { - return i; - } - } - - return -1; - } - - @Override - public int i() { - int i; - int j; - for (j = 0; j < 9; ++j) { - i = (this.itemInHandIndex + j) % 9; - if (this.items.get(i).isEmpty()) { - return i; - } - } - - for (j = 0; j < 9; ++j) { - i = (this.itemInHandIndex + j) % 9; - if (!this.items.get(i).hasEnchantments()) { - return i; - } - } - - return this.itemInHandIndex; - } - - @Override - public int a(Predicate predicate, int i, IInventory iinventory) { - byte b0 = 0; - boolean flag = i == 0; - int j = b0 + ContainerUtil.a(this, predicate, i - b0, flag); - j += ContainerUtil.a(iinventory, predicate, i - j, flag); - j += ContainerUtil.a(this.getCarried(), predicate, i - j, flag); - if (this.getCarried().isEmpty()) { - this.setCarried(ItemStack.b); - } - - return j; - } - - private int i(ItemStack itemstack) { - int i = this.firstPartial(itemstack); - if (i == -1) { - i = this.getFirstEmptySlotIndex(); - } - - return i == -1 ? itemstack.getCount() : this.d(i, itemstack); - } - - private int d(int i, ItemStack itemstack) { - Item item = itemstack.getItem(); - int j = itemstack.getCount(); - ItemStack itemstack1 = this.getItem(i); - if (itemstack1.isEmpty()) { - itemstack1 = new ItemStack(item, 0); - NBTTagCompound tag = itemstack.getTag(); - if (tag != null) { - itemstack1.setTag(tag.clone()); - } - - this.setItem(i, itemstack1); - } - - int k = j; - if (j > itemstack1.getMaxStackSize() - itemstack1.getCount()) { - k = itemstack1.getMaxStackSize() - itemstack1.getCount(); - } - - if (k > this.getMaxStackSize() - itemstack1.getCount()) { - k = this.getMaxStackSize() - itemstack1.getCount(); - } - - if (k != 0) { - j -= k; - itemstack1.add(k); - itemstack1.d(5); - } - return j; - } - - @Override - public int firstPartial(ItemStack itemstack) { - if (this.isSimilarAndNotFull(this.getItem(this.itemInHandIndex), itemstack)) { - return this.itemInHandIndex; - } else if (this.isSimilarAndNotFull(this.getItem(40), itemstack)) { - return 40; - } else { - for (int i = 0; i < this.items.size(); ++i) { - if (this.isSimilarAndNotFull(this.items.get(i), itemstack)) { - return i; - } - } - - return -1; - } - } - - @Override - public void j() { - - for (List itemStacks : this.f) { - for (int i = 0; i < itemStacks.size(); ++i) { - if (!itemStacks.get(i).isEmpty()) { - itemStacks.get(i).a(this.player.world, this.player, i, this.itemInHandIndex == i); - } - } - } - - } - - @Override - public boolean pickup(ItemStack itemstack) { - return this.c(-1, itemstack); - } - - @Override - public boolean c(int i, ItemStack itemstack) { - if (itemstack.isEmpty()) { - return false; - } else { - try { - if (itemstack.f()) { - if (i == -1) { - i = this.getFirstEmptySlotIndex(); - } - - if (i >= 0) { - this.items.set(i, itemstack.cloneItemStack()); - this.items.get(i).d(5); - itemstack.setCount(0); - return true; - } else if (this.player.abilities.canInstantlyBuild) { - itemstack.setCount(0); - return true; - } else { - return false; - } - } else { - int j; - do { - j = itemstack.getCount(); - if (i == -1) { - itemstack.setCount(this.i(itemstack)); - } else { - itemstack.setCount(this.d(i, itemstack)); - } - } while(!itemstack.isEmpty() && itemstack.getCount() < j); - - if (itemstack.getCount() == j && this.player.abilities.canInstantlyBuild) { - itemstack.setCount(0); - return true; - } else { - return itemstack.getCount() < j; - } - } - } catch (Throwable var6) { - CrashReport crashreport = CrashReport.a(var6, "Adding item to inventory"); - CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Item being added"); - crashreportsystemdetails.a("Item ID", Item.getId(itemstack.getItem())); - crashreportsystemdetails.a("Item data", itemstack.getDamage()); - crashreportsystemdetails.a("Item name", () -> itemstack.getName().getString()); - throw new ReportedException(crashreport); - } - } - } - - @Override - public void a(World world, ItemStack itemstack) { - if (!world.isClientSide) { - while(!itemstack.isEmpty()) { - int i = this.firstPartial(itemstack); - if (i == -1) { - i = this.getFirstEmptySlotIndex(); - } - - if (i == -1) { - this.player.drop(itemstack, false); - break; - } - - int j = itemstack.getMaxStackSize() - this.getItem(i).getCount(); - if (this.c(i, itemstack.cloneAndSubtract(j))) { - ((EntityPlayer)this.player).playerConnection.sendPacket(new PacketPlayOutSetSlot(-2, i, this.getItem(i))); - } - } - } - - } - - @Override - public void f(ItemStack itemstack) { - - for (List list : this.f) { - for (int i = 0; i < list.size(); ++i) { - if (list.get(i) == itemstack) { - list.set(i, ItemStack.b); - break; - } - } - } - } - - @Override - public float a(IBlockData iblockdata) { - return this.items.get(this.itemInHandIndex).a(iblockdata); - } - - @Override - public NBTTagList a(NBTTagList nbttaglist) { - NBTTagCompound nbttagcompound; - int i; - for (i = 0; i < this.items.size(); ++i) { - if (!this.items.get(i).isEmpty()) { - nbttagcompound = new NBTTagCompound(); - nbttagcompound.setByte("Slot", (byte) i); - this.items.get(i).save(nbttagcompound); - nbttaglist.add(nbttagcompound); - } - } - - for (i = 0; i < this.armor.size(); ++i) { - if (!this.armor.get(i).isEmpty()) { - nbttagcompound = new NBTTagCompound(); - nbttagcompound.setByte("Slot", (byte) (i + 100)); - this.armor.get(i).save(nbttagcompound); - nbttaglist.add(nbttagcompound); - } - } - - for (i = 0; i < this.extraSlots.size(); ++i) { - if (!this.extraSlots.get(i).isEmpty()) { - nbttagcompound = new NBTTagCompound(); - nbttagcompound.setByte("Slot", (byte) (i + 150)); - this.extraSlots.get(i).save(nbttagcompound); - nbttaglist.add(nbttagcompound); - } - } - - return nbttaglist; - } - - @Override - public void b(NBTTagList nbttaglist) { - this.items.clear(); - this.armor.clear(); - this.extraSlots.clear(); - - for(int i = 0; i < nbttaglist.size(); ++i) { - NBTTagCompound nbttagcompound = nbttaglist.getCompound(i); - int j = nbttagcompound.getByte("Slot") & 255; - ItemStack itemstack = ItemStack.a(nbttagcompound); - if (!itemstack.isEmpty()) { - if (j < this.items.size()) { - this.items.set(j, itemstack); - } else if (j >= 100 && j < this.armor.size() + 100) { - this.armor.set(j - 100, itemstack); - } else if (j >= 150 && j < this.extraSlots.size() + 150) { - this.extraSlots.set(j - 150, itemstack); - } - } - } - - } - - @Override - public boolean isEmpty() { - Iterator iterator = this.items.iterator(); - - ItemStack itemstack; - while (iterator.hasNext()) { - itemstack = iterator.next(); - if (!itemstack.isEmpty()) { - return false; - } - } - - iterator = this.armor.iterator(); - - while (iterator.hasNext()) { - itemstack = iterator.next(); - if (!itemstack.isEmpty()) { - return false; - } - } - - iterator = this.extraSlots.iterator(); - - while (iterator.hasNext()) { - itemstack = iterator.next(); - if (!itemstack.isEmpty()) { - return false; - } - } - - return true; - } - - @Nullable - @Override - public IChatBaseComponent getCustomName() { - return null; - } - - @Override - public void a(DamageSource damagesource, float f) { - if (f > 0.0F) { - f /= 4.0F; - if (f < 1.0F) { - f = 1.0F; - } - - for (int i = 0; i < this.armor.size(); ++i) { - ItemStack itemstack = this.armor.get(0); - int index = i; - if ((!damagesource.isFire() || !itemstack.getItem().u()) && itemstack.getItem() instanceof ItemArmor) { - itemstack.damage((int) f, this.player, (entityHuman) -> entityHuman.broadcastItemBreak(EnumItemSlot.a(EnumItemSlot.Function.ARMOR, index))); - } - } - } - } - - @Override - public void dropContents() { - for (List itemStacks : this.f) { - for (int i = 0; i < itemStacks.size(); ++i) { - ItemStack itemstack = itemStacks.get(i); - if (!itemstack.isEmpty()) { - itemStacks.set(i, ItemStack.b); - this.player.a(itemstack, true, false); - } - } - } - } - - @Override - public boolean h(ItemStack itemstack) { - return this.f.stream().flatMap(List::stream).anyMatch(itemStack1 -> !itemStack1.isEmpty() && itemStack1.doMaterialsMatch(itemstack)); - } - - @Override - public void a(PlayerInventory playerinventory) { - for (int i = 0; i < playerinventory.getSize(); ++i) { - this.setItem(i, playerinventory.getItem(i)); - } - - this.itemInHandIndex = playerinventory.itemInHandIndex; - } - - @Override - public void clear() { - this.f.forEach(List::clear); - } - - @Override - public void a(AutoRecipeStackManager autorecipestackmanager) { - for (ItemStack itemstack : this.items) { - autorecipestackmanager.a(itemstack); - } - } - -} diff --git a/internal/v1_8_R3/pom.xml b/internal/v1_8_R3/pom.xml deleted file mode 100644 index 6c77d0e..0000000 --- a/internal/v1_8_R3/pom.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - 4.0.0 - - - com.lishid - openinvinternal - 4.1.6-SNAPSHOT - - - openinvadapter1_8_R3 - OpenInvAdapter1_8_R3 - - - - org.spigotmc - spigot - 1.8.8-R0.1-SNAPSHOT - provided - - - com.lishid - openinvplugincore - 4.1.6-SNAPSHOT - - - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.2 - - true - - - - package - - shade - - - - - - - maven-compiler-plugin - 3.8.1 - - 1.8 - 1.8 - - - - - - diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java deleted file mode 100644 index e671037..0000000 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/AnySilentContainer.java +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright (C) 2011-2020 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_8_R3; - -import com.lishid.openinv.internal.IAnySilentContainer; -import java.lang.reflect.Field; -import net.minecraft.server.v1_8_R3.AxisAlignedBB; -import net.minecraft.server.v1_8_R3.Block; -import net.minecraft.server.v1_8_R3.BlockChest; -import net.minecraft.server.v1_8_R3.BlockEnderChest; -import net.minecraft.server.v1_8_R3.BlockPosition; -import net.minecraft.server.v1_8_R3.Entity; -import net.minecraft.server.v1_8_R3.EntityOcelot; -import net.minecraft.server.v1_8_R3.EntityPlayer; -import net.minecraft.server.v1_8_R3.EnumDirection; -import net.minecraft.server.v1_8_R3.ITileInventory; -import net.minecraft.server.v1_8_R3.InventoryEnderChest; -import net.minecraft.server.v1_8_R3.InventoryLargeChest; -import net.minecraft.server.v1_8_R3.PlayerInteractManager; -import net.minecraft.server.v1_8_R3.StatisticList; -import net.minecraft.server.v1_8_R3.TileEntity; -import net.minecraft.server.v1_8_R3.TileEntityChest; -import net.minecraft.server.v1_8_R3.TileEntityEnderChest; -import net.minecraft.server.v1_8_R3.World; -import net.minecraft.server.v1_8_R3.WorldSettings.EnumGamemode; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; - -public class AnySilentContainer implements IAnySilentContainer { - - private Field playerInteractManagerGamemode; - - public AnySilentContainer() { - try { - this.playerInteractManagerGamemode = PlayerInteractManager.class.getDeclaredField("gamemode"); - this.playerInteractManagerGamemode.setAccessible(true); - } catch (Exception e) { - System.err.println("[OpenInv] Unable to directly write player gamemode! SilentChest will fail."); - e.printStackTrace(); - } - } - - @Override - public boolean isAnySilentContainer(@NotNull org.bukkit.block.Block bukkitBlock) { - return bukkitBlock.getType() == Material.ENDER_CHEST || bukkitBlock.getState() instanceof org.bukkit.block.Chest; - } - - @Override - public boolean isAnyContainerNeeded(@NotNull Player bukkitPlayer, @NotNull org.bukkit.block.Block bukkitBlock) { - - World world = PlayerDataManager.getHandle(bukkitPlayer).world; - BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - Block block = world.getType(blockPosition).getBlock(); - - if (block instanceof BlockEnderChest) { - // Ender chests are not blocked by ocelots. - return world.getType(blockPosition.up()).getBlock().c(); - } - - // Check if chest is blocked or has an ocelot on top - if (isBlockedChest(world, blockPosition)) { - return true; - } - - // Check for matching adjacent chests that are blocked or have an ocelot on top - for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); - - if (localBlock != block) { - continue; - } - - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } - - if (isBlockedChest(world, localBlockPosition)) { - return true; - } - } - - return false; - } - - private boolean isBlockedChest(World world, BlockPosition blockPosition) { - // For reference, loot at net.minecraft.server.BlockChest - return world.getType(blockPosition.up()).getBlock().c() || hasOcelotOnTop(world, blockPosition); - } - - private boolean hasOcelotOnTop(World world, BlockPosition blockPosition) { - for (Entity localEntity : world.a(EntityOcelot.class, - new AxisAlignedBB(blockPosition.getX(), blockPosition.getY() + 1, - blockPosition.getZ(), blockPosition.getX() + 1, blockPosition.getY() + 2, - blockPosition.getZ() + 1))) { - EntityOcelot localEntityOcelot = (EntityOcelot) localEntity; - if (localEntityOcelot.isSitting()) { - return true; - } - } - - return false; - } - - @Override - public boolean activateContainer(@NotNull Player bukkitPlayer, boolean silent, @NotNull org.bukkit.block.Block bukkitBlock) { - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - // Silent ender chest is pretty much API-only - if (silent && bukkitBlock.getType() == Material.ENDER_CHEST) { - bukkitPlayer.openInventory(bukkitPlayer.getEnderChest()); - player.b(StatisticList.V); - return true; - } - - World world = player.world; - BlockPosition blockPosition = new BlockPosition(bukkitBlock.getX(), bukkitBlock.getY(), bukkitBlock.getZ()); - Object tile = world.getTileEntity(blockPosition); - - if (tile == null) { - return false; - } - - if (tile instanceof TileEntityEnderChest) { - // Anychest ender chest. See net.minecraft.server.BlockEnderChest - InventoryEnderChest enderChest = player.getEnderChest(); - enderChest.a((TileEntityEnderChest) tile); - player.openContainer(enderChest); - player.b(StatisticList.V); - return true; - } - - if (!(tile instanceof ITileInventory)) { - return false; - } - - ITileInventory tileInventory = (ITileInventory) tile; - Block block = world.getType(blockPosition).getBlock(); - - if (block instanceof BlockChest) { - for (EnumDirection localEnumDirection : EnumDirection.EnumDirectionLimit.HORIZONTAL) { - BlockPosition localBlockPosition = blockPosition.shift(localEnumDirection); - Block localBlock = world.getType(localBlockPosition).getBlock(); - - if (localBlock != block) { - continue; - } - - TileEntity localTileEntity = world.getTileEntity(localBlockPosition); - if (!(localTileEntity instanceof TileEntityChest)) { - continue; - } - - if ((localEnumDirection == EnumDirection.WEST) || (localEnumDirection == EnumDirection.NORTH)) { - tileInventory = new InventoryLargeChest("container.chestDouble", - (TileEntityChest) localTileEntity, tileInventory); - } else { - tileInventory = new InventoryLargeChest("container.chestDouble", - tileInventory, (TileEntityChest) localTileEntity); - } - break; - } - - BlockChest blockChest = (BlockChest) block; - if (blockChest.b == 0) { - player.b(StatisticList.aa); - } else if (blockChest.b == 1) { - player.b(StatisticList.U); - } - } - - // AnyChest only - SilentChest not active, container unsupported, or unnecessary. - if (!silent || player.playerInteractManager.getGameMode() == EnumGamemode.SPECTATOR) { - player.openContainer(tileInventory); - return true; - } - - // SilentChest requires access to setting players' gamemode directly. - if (this.playerInteractManagerGamemode == null) { - return false; - } - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.openContainer(tileInventory); - this.forceGameMode(player, gamemode); - return true; - } - - @Override - public void deactivateContainer(@NotNull final Player bukkitPlayer) { - if (this.playerInteractManagerGamemode == null) { - return; - } - - InventoryView view = bukkitPlayer.getOpenInventory(); - switch (view.getType()) { - case CHEST: - case ENDER_CHEST: - break; - default: - return; - } - - EntityPlayer player = PlayerDataManager.getHandle(bukkitPlayer); - - EnumGamemode gamemode = player.playerInteractManager.getGameMode(); - this.forceGameMode(player, EnumGamemode.SPECTATOR); - player.activeContainer.b(player); - player.activeContainer.a(player, false); - player.activeContainer.transferTo(player.defaultContainer, player.getBukkitEntity()); - player.activeContainer = player.defaultContainer; - this.forceGameMode(player, gamemode); - } - - private void forceGameMode(final EntityPlayer player, final EnumGamemode gameMode) { - if (this.playerInteractManagerGamemode == null) { - // No need to warn repeatedly, error on startup and lack of function should be enough. - return; - } - try { - if (!this.playerInteractManagerGamemode.isAccessible()) { - // Just in case, ensure accessible. - this.playerInteractManagerGamemode.setAccessible(true); - } - this.playerInteractManagerGamemode.set(player.playerInteractManager, gameMode); - } catch (Exception e) { - e.printStackTrace(); - } - } - -} diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java deleted file mode 100644 index f38240d..0000000 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright (C) 2011-2020 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_8_R3; - -import com.lishid.openinv.internal.IPlayerDataManager; -import com.lishid.openinv.internal.ISpecialInventory; -import com.mojang.authlib.GameProfile; -import java.io.File; -import java.io.FileOutputStream; -import java.lang.reflect.Field; -import net.minecraft.server.v1_8_R3.ChatComponentText; -import net.minecraft.server.v1_8_R3.Entity; -import net.minecraft.server.v1_8_R3.EntityPlayer; -import net.minecraft.server.v1_8_R3.MinecraftServer; -import net.minecraft.server.v1_8_R3.NBTCompressedStreamTools; -import net.minecraft.server.v1_8_R3.NBTTagCompound; -import net.minecraft.server.v1_8_R3.PacketPlayOutChat; -import net.minecraft.server.v1_8_R3.PlayerInteractManager; -import net.minecraft.server.v1_8_R3.WorldNBTStorage; -import org.apache.logging.log4j.LogManager; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_8_R3.CraftServer; -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class PlayerDataManager implements IPlayerDataManager { - - private Field bukkitEntity; - - public PlayerDataManager() { - try { - bukkitEntity = Entity.class.getDeclaredField("bukkitEntity"); - } catch (NoSuchFieldException e) { - System.out.println("Unable to obtain field to inject custom save process - players' mounts may be deleted when loaded."); - e.printStackTrace(); - bukkitEntity = null; - } - } - - @NotNull - public static EntityPlayer getHandle(Player player) { - if (player instanceof CraftPlayer) { - return ((CraftPlayer) player).getHandle(); - } - - Server server = player.getServer(); - EntityPlayer nmsPlayer = null; - - if (server instanceof CraftServer) { - nmsPlayer = ((CraftServer) server).getHandle().getPlayer(player.getName()); - } - - if (nmsPlayer == null) { - // Could use reflection to examine fields, but it's honestly not worth the bother. - throw new RuntimeException("Unable to fetch EntityPlayer from provided Player implementation"); - } - - return nmsPlayer; - } - - @Nullable - @Override - public Player loadPlayer(@NotNull OfflinePlayer offline) { - // Ensure the player has data - if (!offline.hasPlayedBefore()) { - return null; - } - - // Create a profile and entity to load the player data - GameProfile profile = new GameProfile(offline.getUniqueId(), - offline.getName() != null ? offline.getName() : offline.getUniqueId().toString()); - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, - new PlayerInteractManager(server.getWorldServer(0))); - - try { - injectPlayer(entity); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - - // Get the bukkit entity - Player target = entity.getBukkitEntity(); - if (target != null) { - // Load data - target.loadData(); - } - // Return the entity - return target; - } - - void injectPlayer(EntityPlayer player) throws IllegalAccessException { - if (bukkitEntity == null) { - return; - } - - bukkitEntity.setAccessible(true); - - bukkitEntity.set(player, new CraftPlayer(player.server.server, player) { - @Override - public void saveData() { - super.saveData(); - // See net.minecraft.server.WorldNBTStorage#save(EntityHuman) - try { - WorldNBTStorage worldNBTStorage = (WorldNBTStorage) player.server.getPlayerList().playerFileData; - - NBTTagCompound playerData = new NBTTagCompound(); - player.e(playerData); - - if (!isOnline()) { - // Special case: save old vehicle data - NBTTagCompound oldData = worldNBTStorage.load(player); - - if (oldData != null && oldData.hasKeyOfType("Riding", 10)) { - // See net.minecraft.server.PlayerList#a(NetworkManager, EntityPlayer) and net.minecraft.server.EntityPlayer#b(NBTTagCompound) - playerData.set("Riding", oldData.getCompound("Riding")); - } - } - - File file = new File(worldNBTStorage.getPlayerDir(), player.getUniqueID().toString() + ".dat.tmp"); - File file1 = new File(worldNBTStorage.getPlayerDir(), player.getUniqueID().toString() + ".dat"); - - NBTCompressedStreamTools.a(playerData, new FileOutputStream(file)); - - if (file1.exists()) { - file1.delete(); - } - - file.renameTo(file1); - } catch (Exception e) { - LogManager.getLogger().warn("Failed to save player data for {}", player.getName()); - } - } - }); - } - - @NotNull - @Override - public Player inject(@NotNull Player player) { - try { - EntityPlayer nmsPlayer = getHandle(player); - injectPlayer(nmsPlayer); - return nmsPlayer.getBukkitEntity(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - return player; - } - } - - @Nullable - @Override - public InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory) { - return player.openInventory(inventory.getBukkitInventory()); - } - - @Override - public void sendSystemMessage(@NotNull Player player, @NotNull String message) { - int newline = message.indexOf('\n'); - if (newline != -1) { - // No newlines in action bar chat. - message = message.substring(0, newline); - } - - if (message.isEmpty()) { - return; - } - - EntityPlayer nmsPlayer = getHandle(player); - - // For action bar chat, color codes are still supported but JSON text color is not allowed. Do not convert text. - if (nmsPlayer.playerConnection != null) { - nmsPlayer.playerConnection.sendPacket(new PacketPlayOutChat(new ChatComponentText(message), (byte) 2)); - } - } - - @NotNull - @Override - public String getLocale(Player player) { - return getHandle(player).locale; - } - -} diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java deleted file mode 100644 index dda4e17..0000000 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2011-2020 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_8_R3; - -import com.lishid.openinv.internal.ISpecialEnderChest; -import java.lang.reflect.Field; -import net.minecraft.server.v1_8_R3.EntityPlayer; -import net.minecraft.server.v1_8_R3.IInventory; -import net.minecraft.server.v1_8_R3.InventoryEnderChest; -import net.minecraft.server.v1_8_R3.InventorySubcontainer; -import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { - - private final InventoryEnderChest enderChest; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialEnderChest(Player player, Boolean online) { - super(PlayerDataManager.getHandle(player).getEnderChest().getName(), - PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(), - PlayerDataManager.getHandle(player).getEnderChest().getSize()); - this.playerOnline = online; - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.enderChest = nmsPlayer.getEnderChest(); - this.bukkitOwner = nmsPlayer.getBukkitEntity(); - this.items = enderChest.getContents(); - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - try { - EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player); - this.bukkitOwner = nmsPlayer.getBukkitEntity(); - InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest(); - Field field = playerEnderChest.getClass().getField("items"); - field.setAccessible(true); - field.set(playerEnderChest, this.items); - } catch (Exception ignored) {} - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public void update() { - super.update(); - enderChest.update(); - } - -} diff --git a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java b/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java deleted file mode 100644 index 46f0a3b..0000000 --- a/internal/v1_8_R3/src/main/java/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright (C) 2011-2020 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_8_R3; - -import com.lishid.openinv.internal.ISpecialPlayerInventory; -import net.minecraft.server.v1_8_R3.ItemStack; -import net.minecraft.server.v1_8_R3.PlayerInventory; -import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; - -public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory { - - private final ItemStack[] extra = new ItemStack[5]; - private final CraftInventory inventory = new CraftInventory(this); - private boolean playerOnline; - - public SpecialPlayerInventory(Player bukkitPlayer, Boolean online) { - super(PlayerDataManager.getHandle(bukkitPlayer)); - this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; - } - - @Override - public @NotNull Inventory getBukkitInventory() { - return inventory; - } - - @Override - public void setPlayerOnline(@NotNull Player player) { - if (!playerOnline) { - this.player = PlayerDataManager.getHandle(player); - this.player.inventory.items = this.items; - this.player.inventory.armor = this.armor; - playerOnline = true; - } - } - - @Override - public void setPlayerOffline() { - playerOnline = false; - } - - @Override - public boolean isInUse() { - return !this.getViewers().isEmpty(); - } - - @Override - public ItemStack[] getContents() { - ItemStack[] contents = new ItemStack[getSize()]; - System.arraycopy(items, 0, contents, 0, items.length); - System.arraycopy(armor, 0, contents, items.length, armor.length); - return contents; - } - - @Override - public int getSize() { - return super.getSize() + 5; - } - - @Override - public ItemStack getItem(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - return is[i]; - } - - @Override - public ItemStack splitStack(int i, int j) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack; - - if (is[i].count <= j) { - itemstack = is[i]; - is[i] = null; - return itemstack; - } else { - itemstack = is[i].cloneAndSubtract(j); - if (is[i].count == 0) { - is[i] = null; - } - - return itemstack; - } - } - - return null; - } - - @Override - public ItemStack splitWithoutUpdate(int i) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - if (is[i] != null) { - ItemStack itemstack = is[i]; - - is[i] = null; - return itemstack; - } - - return null; - } - - @Override - public void setItem(int i, ItemStack itemstack) { - ItemStack[] is = this.items; - - if (i >= is.length) { - i -= is.length; - is = this.armor; - } else { - i = getReversedItemSlotNum(i); - } - - if (i >= is.length) { - i -= is.length; - is = this.extra; - } else if (is == this.armor) { - i = getReversedArmorSlotNum(i); - } - - // Effects - if (is == this.extra) { - player.drop(itemstack, true); - itemstack = null; - } - - is[i] = itemstack; - - player.defaultContainer.b(); - } - - private int getReversedItemSlotNum(int i) { - if (i >= 27) { - return i - 27; - } - return i + 9; - } - - private int getReversedArmorSlotNum(int i) { - if (i == 0) { - return 3; - } - if (i == 1) { - return 2; - } - if (i == 2) { - return 1; - } - if (i == 3) { - return 0; - } - return i; - } - - @Override - public String getName() { - if (player.getName().length() > 16) { - return player.getName().substring(0, 16); - } - return player.getName(); - } - - @Override - public boolean hasCustomName() { - return true; - } - -} diff --git a/plugin/src/main/java/com/lishid/openinv/util/InternalAccessor.java b/plugin/src/main/java/com/lishid/openinv/util/InternalAccessor.java index 96f3b7b..fb24552 100644 --- a/plugin/src/main/java/com/lishid/openinv/util/InternalAccessor.java +++ b/plugin/src/main/java/com/lishid/openinv/util/InternalAccessor.java @@ -81,6 +81,7 @@ public class InternalAccessor { case "v1_8_R3": case "v1_15_R1": case "v1_16_R2": + return "https://github.com/lishid/OpenInv/releases/tag/4.1.5"; case "v1_16_R3": default: return "https://github.com/lishid/OpenInv/releases"; diff --git a/plugin/src/main/resources/plugin.yml b/plugin/src/main/resources/plugin.yml index ce43adb..767b886 100644 --- a/plugin/src/main/resources/plugin.yml +++ b/plugin/src/main/resources/plugin.yml @@ -5,7 +5,7 @@ author: lishid authors: [Jikoo, ShadowRanger] description: > This plugin allows you to open a player's inventory as a chest and interact with it in real time. -api-version: "1.15" +api-version: "1.16" permissions: OpenInv.any.default: -- 2.49.1 From 519dd7da333228fc3de9709b79cd048a2c533fb3 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 16 Mar 2021 09:45:04 -0400 Subject: [PATCH 245/253] Fix cache breaking build on Spigot version change --- .github/workflows/ci.yml | 13 ++--- internal/v1_16_R3/pom.xml | 2 +- scripts/install_spigot_dependencies.sh | 75 ++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 11 deletions(-) create mode 100644 scripts/install_spigot_dependencies.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 932d513..e65f0f6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,8 +9,6 @@ on: jobs: build: runs-on: ubuntu-latest - strategy: - fail-fast: true steps: - name: Checkout Code uses: actions/checkout@v2 @@ -28,15 +26,10 @@ jobs: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} - # If the cache was not present, run BuildTools to install the relevant versions to Maven. - # This will take approximately forever. + # Install Spigot dependencies. + # This script uses Maven to check all required installations and ensure that they are present. - name: Install Spigot Dependencies - if: steps.cache.outputs.cache-hit != 'true' - run: | - mkdir ~/buildtools - cd ~/buildtools - wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar - java -jar BuildTools.jar --rev 1.16.4 + run: . scripts/install_spigot_dependencies.sh - name: Build With Maven run: mvn -e clean package -am -P all diff --git a/internal/v1_16_R3/pom.xml b/internal/v1_16_R3/pom.xml index d7998c9..74905ed 100644 --- a/internal/v1_16_R3/pom.xml +++ b/internal/v1_16_R3/pom.xml @@ -32,7 +32,7 @@ org.spigotmc spigot - 1.16.4-R0.1-SNAPSHOT + 1.16.5-R0.1-SNAPSHOT provided diff --git a/scripts/install_spigot_dependencies.sh b/scripts/install_spigot_dependencies.sh new file mode 100644 index 0000000..09e93e1 --- /dev/null +++ b/scripts/install_spigot_dependencies.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# +# Copyright (C) 2011-2021 lishid. All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# A script for installing required Spigot versions. +# +# Note that this script is designed for use in GitHub Actions, and is +# not particularly robust nor configurable. +# In its current state, the script must be run from OpenInv's parent +# project directory and will always install BuildTools to ~/buildtools. + +buildtools_dir=~/buildtools +buildtools=$buildtools_dir/BuildTools.jar + +get_spigot_versions () { + # Get all submodules of internal module + modules=$(mvn help:evaluate -Dexpression=project.modules -q -DforceStdout -P all -pl internal | grep -oP '(?<=)(.*)(?=<\/string>)') + for module in "${modules[@]}"; do + + # Get number of dependencies declared in pom of specified internal module + max_index=$(mvn help:evaluate -Dexpression=project.dependencies -q -DforceStdout -P all -pl internal/"$module" | grep -c "") + + for ((i=0; i < max_index; i++)); do + # Get artifactId of dependency + artifact_id=$(mvn help:evaluate -Dexpression=project.dependencies["$i"].artifactId -q -DforceStdout -P all -pl internal/"$module") + + # Ensure dependency is spigot + if [[ "$artifact_id" == spigot ]]; then + # Get spigot version + spigot_version=$(mvn help:evaluate -Dexpression=project.dependencies["$i"].version -q -DforceStdout -P all -pl internal/"$module") + echo "$spigot_version" + break + fi + done + done +} + +get_buildtools () { + if [[ -d $buildtools_dir && -f $buildtools ]]; then + return + fi + + mkdir $buildtools_dir + wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar -O $buildtools +} + +versions=$(get_spigot_versions) +echo Found Spigot dependencies: "$versions" + +for version in "${versions[@]}"; do + set -e + exit_code=0 + mvn dependency:get -Dartifact=org.spigotmc:spigot:"$version" -q -o || exit_code=$? + if [ $exit_code -ne 0 ]; then + echo Installing missing Spigot version "$version" + revision=$(echo "$version" | grep -oP '(\d+\.\d+(\.\d+)?)(?=-R[0-9\.]+-SNAPSHOT)') + get_buildtools + java -jar $buildtools -rev "$revision" + else + echo Spigot "$version" is already installed + fi +done -- 2.49.1 From dad1e16c188f51f4ca193094e9d76cd91da319bb Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 16 Mar 2021 11:59:07 -0400 Subject: [PATCH 246/253] Fix item dupe in own inventory Reduce desync for other actions in own inventory Closes #182 --- .../openinv/listeners/InventoryListener.java | 91 +++++++++++++++---- 1 file changed, 75 insertions(+), 16 deletions(-) diff --git a/plugin/src/main/java/com/lishid/openinv/listeners/InventoryListener.java b/plugin/src/main/java/com/lishid/openinv/listeners/InventoryListener.java index 33221f2..676635a 100644 --- a/plugin/src/main/java/com/lishid/openinv/listeners/InventoryListener.java +++ b/plugin/src/main/java/com/lishid/openinv/listeners/InventoryListener.java @@ -16,7 +16,8 @@ package com.lishid.openinv.listeners; -import com.lishid.openinv.IOpenInv; +import com.lishid.openinv.OpenInv; +import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InventoryAccess; import com.lishid.openinv.util.Permissions; import org.bukkit.GameMode; @@ -25,11 +26,14 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryAction; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.inventory.InventoryDragEvent; import org.bukkit.event.inventory.InventoryInteractEvent; import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; /** * Listener for inventory-related events to prevent modification of inventories where not allowed. @@ -38,14 +42,14 @@ import org.bukkit.inventory.Inventory; */ public class InventoryListener implements Listener { - private final IOpenInv plugin; + private final OpenInv plugin; - public InventoryListener(final IOpenInv plugin) { + public InventoryListener(final OpenInv plugin) { this.plugin = plugin; } @EventHandler - public void onInventoryClose(final InventoryCloseEvent event) { + public void onInventoryClose(@NotNull final InventoryCloseEvent event) { if (!(event.getPlayer() instanceof Player)) { return; } @@ -58,37 +62,92 @@ public class InventoryListener implements Listener { } @EventHandler(priority = EventPriority.LOWEST) - public void onInventoryClick(InventoryClickEvent event) { - onInventoryInteract(event); + public void onInventoryClick(@NotNull final InventoryClickEvent event) { + if (handleInventoryInteract(event)) { + return; + } + + // Only specially handle actions in the player's own inventory. + if (!event.getWhoClicked().equals(event.getView().getTopInventory().getHolder())) { + return; + } + + // Safe cast - has to be a player to be the holder of a special player inventory. + Player player = (Player) event.getWhoClicked(); + + if (event.getAction() != InventoryAction.MOVE_TO_OTHER_INVENTORY) { + // All own-inventory interactions require updates to display properly. + // Update in same tick after event completion. + this.plugin.getServer().getScheduler().runTask(this.plugin, player::updateInventory); + return; + } + + // Extra handling for MOVE_TO_OTHER_INVENTORY - apparently Mojang no longer removes the item from the target + // inventory prior to adding it to existing stacks. + ItemStack currentItem = event.getCurrentItem(); + if (currentItem == null) { + // Other plugin doing some sort of handling (would be NOTHING for null item otherwise), ignore. + return; + } + + ItemStack clone = currentItem.clone(); + event.setCurrentItem(null); + + // Complete add action in same tick after event completion. + this.plugin.getServer().getScheduler().runTask(this.plugin, () -> { + player.getInventory().addItem(clone); + player.updateInventory(); + }); } @EventHandler(priority = EventPriority.LOWEST) - public void onInventoryDrag(InventoryDragEvent event) { - onInventoryInteract(event); + public void onInventoryDrag(@NotNull final InventoryDragEvent event) { + handleInventoryInteract(event); } - private void onInventoryInteract(InventoryInteractEvent event) { + /** + * Handle common InventoryInteractEvent functions. + * + * @param event the InventoryInteractEvent + * @return true unless the top inventory is an opened player inventory + */ + private boolean handleInventoryInteract(@NotNull final InventoryInteractEvent event) { HumanEntity entity = event.getWhoClicked(); + // Un-cancel spectator interactions. if (Permissions.SPECTATE.hasPermission(entity) && entity.getGameMode() == GameMode.SPECTATOR) { event.setCancelled(false); } if (event.isCancelled()) { - return; + return true; } - Inventory inventory = event.getInventory(); + Inventory inventory = event.getView().getTopInventory(); - if (InventoryAccess.isPlayerInventory(inventory)) { - if (!Permissions.EDITINV.hasPermission(entity)) { - event.setCancelled(true); - } - } else if (InventoryAccess.isEnderChest(inventory)) { + // Is the inventory a special ender chest? + if (InventoryAccess.isEnderChest(inventory)) { + // Disallow ender chest interaction for users without edit permission. if (!Permissions.EDITENDER.hasPermission(entity)) { event.setCancelled(true); } + return true; } + + ISpecialPlayerInventory playerInventory = InventoryAccess.getPlayerInventory(inventory); + + // Ignore inventories other than special player inventories. + if (playerInventory == null) { + return true; + } + + // Disallow player inventory interaction for users without edit permission. + if (!Permissions.EDITINV.hasPermission(entity)) { + event.setCancelled(true); + return true; + } + + return false; } } -- 2.49.1 From 1c9d133ed1e0865c03edab477aa5899112d8c5c7 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 16 Mar 2021 23:49:10 -0400 Subject: [PATCH 247/253] Fix item delete in own inventory Dragging items across top and bottom inventories with own inventory open resulted in the overlapping content being deleted. --- .../internal/v1_16_R3/PlayerDataManager.java | 124 +++++++++--------- .../main/java/com/lishid/openinv/OpenInv.java | 14 ++ .../openinv/internal/IPlayerDataManager.java | 12 ++ .../openinv/internal/OpenInventoryView.java | 83 ++++++++++++ .../openinv/listeners/InventoryListener.java | 68 ++++++++-- 5 files changed, 233 insertions(+), 68 deletions(-) create mode 100644 plugin/src/main/java/com/lishid/openinv/internal/OpenInventoryView.java diff --git a/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java index e0737c5..4c029db 100644 --- a/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java +++ b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java @@ -16,9 +16,9 @@ package com.lishid.openinv.internal.v1_16_R3; -import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.IPlayerDataManager; import com.lishid.openinv.internal.ISpecialInventory; +import com.lishid.openinv.internal.OpenInventoryView; import com.mojang.authlib.GameProfile; import java.io.File; import java.io.FileOutputStream; @@ -28,7 +28,6 @@ import net.minecraft.server.v1_16_R3.ChatMessageType; import net.minecraft.server.v1_16_R3.Container; import net.minecraft.server.v1_16_R3.Containers; import net.minecraft.server.v1_16_R3.Entity; -import net.minecraft.server.v1_16_R3.EntityHuman; import net.minecraft.server.v1_16_R3.EntityPlayer; import net.minecraft.server.v1_16_R3.MinecraftServer; import net.minecraft.server.v1_16_R3.NBTCompressedStreamTools; @@ -36,7 +35,6 @@ import net.minecraft.server.v1_16_R3.NBTTagCompound; import net.minecraft.server.v1_16_R3.PacketPlayOutChat; import net.minecraft.server.v1_16_R3.PacketPlayOutOpenWindow; import net.minecraft.server.v1_16_R3.PlayerInteractManager; -import net.minecraft.server.v1_16_R3.PlayerInventory; import net.minecraft.server.v1_16_R3.SystemUtils; import net.minecraft.server.v1_16_R3.World; import net.minecraft.server.v1_16_R3.WorldNBTStorage; @@ -49,10 +47,7 @@ import org.bukkit.craftbukkit.v1_16_R3.CraftServer; import org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory; import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftContainer; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; -import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryView; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -195,68 +190,20 @@ public class PlayerDataManager implements IPlayerDataManager { return null; } - String title; - if (inventory instanceof SpecialEnderChest) { - HumanEntity owner = (HumanEntity) ((SpecialEnderChest) inventory).getBukkitOwner(); - title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.enderchest", "%player%", owner.getName()); - if (title == null) { - title = owner.getName() + "'s Ender Chest"; - } - } else if (inventory instanceof SpecialPlayerInventory) { - EntityHuman owner = ((PlayerInventory) inventory).player; - title = OpenInv.getPlugin(OpenInv.class).getLocalizedMessage(player, "container.player", "%player%", owner.getName()); - if (title == null) { - title = owner.getName() + "'s Inventory"; - } - } else { + InventoryView view = getView(player, inventory); + + if (view == null) { return player.openInventory(inventory.getBukkitInventory()); } - String finalTitle = title; - Container container = new CraftContainer(new InventoryView() { - @Override - public @NotNull Inventory getTopInventory() { - return inventory.getBukkitInventory(); - } - @Override - public @NotNull Inventory getBottomInventory() { - return player.getInventory(); - } - @Override - public @NotNull HumanEntity getPlayer() { - return player; - } - @Override - public @NotNull InventoryType getType() { - return inventory.getBukkitInventory().getType(); - } - @Override - public @NotNull String getTitle() { - return finalTitle; - } - }, nmsPlayer, nmsPlayer.nextContainerCounter()) { + Container container = new CraftContainer(view, nmsPlayer, nmsPlayer.nextContainerCounter()) { @Override public Containers getType() { - switch (inventory.getBukkitInventory().getSize()) { - case 9: - return Containers.GENERIC_9X1; - case 18: - return Containers.GENERIC_9X2; - case 27: - default: - return Containers.GENERIC_9X3; - case 36: - return Containers.GENERIC_9X4; - case 41: // PLAYER - case 45: - return Containers.GENERIC_9X5; - case 54: - return Containers.GENERIC_9X6; - } + return getContainers(inventory.getBukkitInventory().getSize()); } }; - container.setTitle(new ChatComponentText(title)); + container.setTitle(new ChatComponentText(view.getTitle())); container = CraftEventFactory.callInventoryOpenEvent(nmsPlayer, container); if (container == null) { @@ -272,6 +219,63 @@ public class PlayerDataManager implements IPlayerDataManager { } + private @Nullable InventoryView getView(Player player, ISpecialInventory inventory) { + if (inventory instanceof SpecialEnderChest) { + return new OpenInventoryView(player, inventory, "container.enderchest", "'s Ender Chest"); + } else if (inventory instanceof SpecialPlayerInventory) { + return new OpenInventoryView(player, inventory, "container.player", "'s Inventory"); + } else { + return null; + } + } + + private @NotNull Containers getContainers(int inventorySize) { + switch (inventorySize) { + case 9: + return Containers.GENERIC_9X1; + case 18: + return Containers.GENERIC_9X2; + case 36: + return Containers.GENERIC_9X4; + case 41: // PLAYER + case 45: + return Containers.GENERIC_9X5; + case 54: + return Containers.GENERIC_9X6; + case 27: + default: + return Containers.GENERIC_9X3; + } + } + + @Override + public int convertToPlayerSlot(InventoryView view, int rawSlot) { + int topSize = view.getTopInventory().getSize(); + if (topSize <= rawSlot) { + // Slot is not inside special inventory, use Bukkit logic. + return view.convertSlot(rawSlot); + } + + // Main inventory, slots 0-26 -> 9-35 + if (rawSlot < 27) { + return rawSlot + 9; + } + // Hotbar, slots 27-35 -> 0-8 + if (rawSlot < 36) { + return rawSlot - 27; + } + // Armor, slots 36-39 -> 39-36 + if (rawSlot < 40) { + return 36 + (39 - rawSlot); + } + // Off hand + if (rawSlot == 40) { + return 40; + } + // Drop slots, "out of inventory" + return -1; + } + @Override public void sendSystemMessage(@NotNull Player player, @NotNull String message) { int newline = message.indexOf('\n'); diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/src/main/java/com/lishid/openinv/OpenInv.java index ba33e94..24cd9b0 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/src/main/java/com/lishid/openinv/OpenInv.java @@ -150,6 +150,20 @@ public class OpenInv extends JavaPlugin implements IOpenInv { } } + /** + * Convert a raw slot number into a player inventory slot number. + * + *

          Note that this method is specifically for converting an ISpecialPlayerInventory slot number into a regular + * player inventory slot number. + * + * @param view the open inventory view + * @param rawSlot the raw slot in the view + * @return the converted slot number + */ + public int convertToPlayerSlot(InventoryView view, int rawSlot) { + return this.accessor.getPlayerDataManager().convertToPlayerSlot(view, rawSlot); + } + @Override public boolean disableSaving() { return this.getConfig().getBoolean("settings.disable-saving", false); diff --git a/plugin/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java b/plugin/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java index 92c86af..b217479 100644 --- a/plugin/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java +++ b/plugin/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java @@ -54,6 +54,18 @@ public interface IPlayerDataManager { @Nullable InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory); + /** + * Convert a raw slot number into a player inventory slot number. + * + *

          Note that this method is specifically for converting an ISpecialPlayerInventory slot number into a regular + * player inventory slot number. + * + * @param view the open inventory view + * @param rawSlot the raw slot in the view + * @return the converted slot number + */ + int convertToPlayerSlot(InventoryView view, int rawSlot); + void sendSystemMessage(@NotNull Player player, @NotNull String message); @NotNull diff --git a/plugin/src/main/java/com/lishid/openinv/internal/OpenInventoryView.java b/plugin/src/main/java/com/lishid/openinv/internal/OpenInventoryView.java new file mode 100644 index 0000000..8fc6f09 --- /dev/null +++ b/plugin/src/main/java/com/lishid/openinv/internal/OpenInventoryView.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2011-2021 lishid. All rights reserved. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.lishid.openinv.internal; + +import com.lishid.openinv.OpenInv; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.jetbrains.annotations.NotNull; + +public class OpenInventoryView extends InventoryView { + + private final Player player; + private final ISpecialInventory inventory; + private final String titleKey; + private final String titleDefaultSuffix; + private String title; + + public OpenInventoryView(Player player, ISpecialInventory inventory, String titleKey, String titleDefaultSuffix) { + this.player = player; + this.inventory = inventory; + this.titleKey = titleKey; + this.titleDefaultSuffix = titleDefaultSuffix; + } + + @Override + public @NotNull Inventory getTopInventory() { + return inventory.getBukkitInventory(); + } + + @Override + public @NotNull Inventory getBottomInventory() { + return getPlayer().getInventory(); + } + + @Override + public @NotNull HumanEntity getPlayer() { + return player; + } + + @Override + public @NotNull InventoryType getType() { + return inventory.getBukkitInventory().getType(); + } + + @Override + public @NotNull String getTitle() { + if (title == null) { + HumanEntity owner = getPlayer(); + + String localTitle = OpenInv.getPlugin(OpenInv.class) + .getLocalizedMessage( + owner, + titleKey, + "%player%", + owner.getName()); + if (localTitle != null) { + title = localTitle; + } else { + title = owner.getName() + titleDefaultSuffix; + } + } + + return title; + } + +} diff --git a/plugin/src/main/java/com/lishid/openinv/listeners/InventoryListener.java b/plugin/src/main/java/com/lishid/openinv/listeners/InventoryListener.java index 676635a..eee6686 100644 --- a/plugin/src/main/java/com/lishid/openinv/listeners/InventoryListener.java +++ b/plugin/src/main/java/com/lishid/openinv/listeners/InventoryListener.java @@ -20,6 +20,9 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.ISpecialPlayerInventory; import com.lishid.openinv.util.InventoryAccess; import com.lishid.openinv.util.Permissions; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; import org.bukkit.GameMode; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; @@ -32,8 +35,10 @@ import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.inventory.InventoryDragEvent; import org.bukkit.event.inventory.InventoryInteractEvent; import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * Listener for inventory-related events to prevent modification of inventories where not allowed. @@ -67,11 +72,6 @@ public class InventoryListener implements Listener { return; } - // Only specially handle actions in the player's own inventory. - if (!event.getWhoClicked().equals(event.getView().getTopInventory().getHolder())) { - return; - } - // Safe cast - has to be a player to be the holder of a special player inventory. Player player = (Player) event.getWhoClicked(); @@ -102,14 +102,65 @@ public class InventoryListener implements Listener { @EventHandler(priority = EventPriority.LOWEST) public void onInventoryDrag(@NotNull final InventoryDragEvent event) { - handleInventoryInteract(event); + if (handleInventoryInteract(event)) { + return; + } + + InventoryView view = event.getView(); + int topSize = view.getTopInventory().getSize(); + + // Get bottom inventory active slots as player inventory slots. + Set slots = event.getRawSlots().stream() + .filter(slot -> slot >= topSize) + .map(slot -> plugin.convertToPlayerSlot(view, slot)).collect(Collectors.toSet()); + + int overlapLosses = 0; + + // Count overlapping slots. + for (Map.Entry newItem : event.getNewItems().entrySet()) { + int rawSlot = newItem.getKey(); + + // Skip bottom inventory slots. + if (rawSlot >= topSize) { + continue; + } + + int convertedSlot = plugin.convertToPlayerSlot(view, rawSlot); + + if (slots.contains(convertedSlot)) { + overlapLosses += getCountDiff(view.getItem(rawSlot), newItem.getValue()); + } + } + + // Allow no overlap to proceed as usual. + if (overlapLosses < 1) { + return; + } + + ItemStack cursor = event.getCursor(); + if (cursor != null) { + cursor.setAmount(cursor.getAmount() + overlapLosses); + } else { + cursor = event.getOldCursor().clone(); + cursor.setAmount(overlapLosses); + } + + event.setCursor(cursor); + } + + private int getCountDiff(@Nullable ItemStack original, @NotNull ItemStack result) { + if (original == null || original.getType() != result.getType()) { + return result.getAmount(); + } + + return result.getAmount() - original.getAmount(); } /** * Handle common InventoryInteractEvent functions. * * @param event the InventoryInteractEvent - * @return true unless the top inventory is an opened player inventory + * @return true unless the top inventory is the holder's own inventory */ private boolean handleInventoryInteract(@NotNull final InventoryInteractEvent event) { HumanEntity entity = event.getWhoClicked(); @@ -147,7 +198,8 @@ public class InventoryListener implements Listener { return true; } - return false; + // Only specially handle actions in the player's own inventory. + return !event.getWhoClicked().equals(event.getView().getTopInventory().getHolder()); } } -- 2.49.1 From 6e5c332272d053aaac96616b9d951ece34e1a02e Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 16 Mar 2021 23:42:30 -0400 Subject: [PATCH 248/253] Extract player implementation --- .../openinv/internal/v1_16_R3/OpenPlayer.java | 69 +++++++++++++++++++ .../internal/v1_16_R3/PlayerDataManager.java | 41 +---------- 2 files changed, 70 insertions(+), 40 deletions(-) create mode 100644 internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/OpenPlayer.java diff --git a/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/OpenPlayer.java b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/OpenPlayer.java new file mode 100644 index 0000000..def3f96 --- /dev/null +++ b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/OpenPlayer.java @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2011-2021 lishid. All rights reserved. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.lishid.openinv.internal.v1_16_R3; + +import java.io.File; +import java.io.FileOutputStream; +import net.minecraft.server.v1_16_R3.EntityPlayer; +import net.minecraft.server.v1_16_R3.NBTCompressedStreamTools; +import net.minecraft.server.v1_16_R3.NBTTagCompound; +import net.minecraft.server.v1_16_R3.WorldNBTStorage; +import org.apache.logging.log4j.LogManager; +import org.bukkit.craftbukkit.v1_16_R3.CraftServer; +import org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer; + +public class OpenPlayer extends CraftPlayer { + + public OpenPlayer(CraftServer server, EntityPlayer entity) { + super(server, entity); + } + + @Override + public void saveData() { + super.saveData(); + EntityPlayer player = this.getHandle(); + // See net.minecraft.server.WorldNBTStorage#save(EntityPlayer) + try { + WorldNBTStorage worldNBTStorage = player.server.getPlayerList().playerFileData; + + NBTTagCompound playerData = player.save(new NBTTagCompound()); + + if (!isOnline()) { + // Special case: save old vehicle data + NBTTagCompound oldData = worldNBTStorage.load(player); + + if (oldData != null && oldData.hasKeyOfType("RootVehicle", 10)) { + // See net.minecraft.server.PlayerList#a(NetworkManager, EntityPlayer) and net.minecraft.server.EntityPlayer#b(NBTTagCompound) + playerData.set("RootVehicle", oldData.getCompound("RootVehicle")); + } + } + + File file = new File(worldNBTStorage.getPlayerDir(), player.getUniqueIDString() + ".dat.tmp"); + File file1 = new File(worldNBTStorage.getPlayerDir(), player.getUniqueIDString() + ".dat"); + + NBTCompressedStreamTools.a(playerData, new FileOutputStream(file)); + + if (file1.exists() && !file1.delete() || !file.renameTo(file1)) { + LogManager.getLogger().warn("Failed to save player data for {}", player.getDisplayName().getString()); + } + + } catch (Exception e) { + LogManager.getLogger().warn("Failed to save player data for {}", player.getDisplayName().getString()); + } + } + +} diff --git a/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java index 4c029db..3871520 100644 --- a/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java +++ b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java @@ -20,8 +20,6 @@ import com.lishid.openinv.internal.IPlayerDataManager; import com.lishid.openinv.internal.ISpecialInventory; import com.lishid.openinv.internal.OpenInventoryView; import com.mojang.authlib.GameProfile; -import java.io.File; -import java.io.FileOutputStream; import java.lang.reflect.Field; import net.minecraft.server.v1_16_R3.ChatComponentText; import net.minecraft.server.v1_16_R3.ChatMessageType; @@ -30,16 +28,12 @@ import net.minecraft.server.v1_16_R3.Containers; import net.minecraft.server.v1_16_R3.Entity; import net.minecraft.server.v1_16_R3.EntityPlayer; import net.minecraft.server.v1_16_R3.MinecraftServer; -import net.minecraft.server.v1_16_R3.NBTCompressedStreamTools; -import net.minecraft.server.v1_16_R3.NBTTagCompound; import net.minecraft.server.v1_16_R3.PacketPlayOutChat; import net.minecraft.server.v1_16_R3.PacketPlayOutOpenWindow; import net.minecraft.server.v1_16_R3.PlayerInteractManager; import net.minecraft.server.v1_16_R3.SystemUtils; import net.minecraft.server.v1_16_R3.World; -import net.minecraft.server.v1_16_R3.WorldNBTStorage; import net.minecraft.server.v1_16_R3.WorldServer; -import org.apache.logging.log4j.LogManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.Server; @@ -131,40 +125,7 @@ public class PlayerDataManager implements IPlayerDataManager { bukkitEntity.setAccessible(true); - bukkitEntity.set(player, new CraftPlayer(player.server.server, player) { - @Override - public void saveData() { - super.saveData(); - // See net.minecraft.server.WorldNBTStorage#save(EntityPlayer) - try { - WorldNBTStorage worldNBTStorage = player.server.getPlayerList().playerFileData; - - NBTTagCompound playerData = player.save(new NBTTagCompound()); - - if (!isOnline()) { - // Special case: save old vehicle data - NBTTagCompound oldData = worldNBTStorage.load(player); - - if (oldData != null && oldData.hasKeyOfType("RootVehicle", 10)) { - // See net.minecraft.server.PlayerList#a(NetworkManager, EntityPlayer) and net.minecraft.server.EntityPlayer#b(NBTTagCompound) - playerData.set("RootVehicle", oldData.getCompound("RootVehicle")); - } - } - - File file = new File(worldNBTStorage.getPlayerDir(), player.getUniqueIDString() + ".dat.tmp"); - File file1 = new File(worldNBTStorage.getPlayerDir(), player.getUniqueIDString() + ".dat"); - - NBTCompressedStreamTools.a(playerData, new FileOutputStream(file)); - - if (file1.exists() && !file1.delete() || !file.renameTo(file1)) { - LogManager.getLogger().warn("Failed to save player data for {}", player.getDisplayName().getString()); - } - - } catch (Exception e) { - LogManager.getLogger().warn("Failed to save player data for {}", player.getDisplayName().getString()); - } - } - }); + bukkitEntity.set(player, new OpenPlayer(player.server.server, player)); } @NotNull -- 2.49.1 From 3ba82683ecb839cdae92cc0c203c043486492555 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 17 Mar 2021 00:09:10 -0400 Subject: [PATCH 249/253] Fix double chest custom names not displaying Closes #175 --- .../internal/v1_16_R3/AnySilentContainer.java | 29 +++++-------------- .../internal/v1_16_R3/PlayerDataManager.java | 2 +- 2 files changed, 8 insertions(+), 23 deletions(-) diff --git a/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/AnySilentContainer.java b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/AnySilentContainer.java index e6a2083..5d78617 100644 --- a/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/AnySilentContainer.java +++ b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/AnySilentContainer.java @@ -190,29 +190,8 @@ public class AnySilentContainer implements IAnySilentContainer { InventoryEnderChest enderChest = player.getEnderChest(); enderChest.a((TileEntityEnderChest) tile); player.openContainer(new TileInventory((containerCounter, playerInventory, ignored) -> { - Containers containers; + Containers containers = PlayerDataManager.getContainers(enderChest.getSize()); int rows = enderChest.getSize() / 9; - switch (rows) { - case 1: - containers = Containers.GENERIC_9X1; - break; - case 2: - containers = Containers.GENERIC_9X2; - break; - case 3: - default: - containers = Containers.GENERIC_9X3; - break; - case 4: - containers = Containers.GENERIC_9X4; - break; - case 5: - containers = Containers.GENERIC_9X5; - break; - case 6: - containers = Containers.GENERIC_9X6; - break; - } return new ContainerChest(containers, containerCounter, playerInventory, enderChest, rows); }, new ChatMessage("container.enderchest"))); bukkitPlayer.incrementStatistic(Statistic.ENDERCHEST_OPENED); @@ -262,6 +241,12 @@ public class AnySilentContainer implements IAnySilentContainer { } public IChatBaseComponent getScoreboardDisplayName() { + if (leftChest.hasCustomName()) { + return leftChest.getScoreboardDisplayName(); + } + if (rightChest.hasCustomName()) { + return rightChest.getScoreboardDisplayName(); + } return new ChatMessage("container.chestDouble"); } }; diff --git a/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java index 3871520..701fdba 100644 --- a/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java +++ b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java @@ -190,7 +190,7 @@ public class PlayerDataManager implements IPlayerDataManager { } } - private @NotNull Containers getContainers(int inventorySize) { + static @NotNull Containers getContainers(int inventorySize) { switch (inventorySize) { case 9: return Containers.GENERIC_9X1; -- 2.49.1 From 1d5a836fd0b558c02b3f0fc44907e2ce3417f0c7 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Thu, 18 Mar 2021 16:38:41 -0400 Subject: [PATCH 250/253] Partially automate release changelog --- .github/workflows/ci.yml | 4 +++ scripts/generate_changelog.sh | 67 +++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 scripts/generate_changelog.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e65f0f6..a73e107 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -60,6 +60,9 @@ jobs: - name: Download Artifacts uses: actions/download-artifact@v2 + - name: Generate changelog + run: . scripts/generate_changelog.sh + - name: Create Release id: create-release uses: actions/create-release@v1 @@ -68,6 +71,7 @@ jobs: with: tag_name: ${{ github.ref }} release_name: Release ${{ github.ref }} + body: ${{ env.GENERATED_CHANGELOG }} draft: true prerelease: false diff --git a/scripts/generate_changelog.sh b/scripts/generate_changelog.sh new file mode 100644 index 0000000..72c823d --- /dev/null +++ b/scripts/generate_changelog.sh @@ -0,0 +1,67 @@ +#!/bin/bash +# +# Copyright (C) 2011-2021 lishid. All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# A script for generating a changelog from Git. +# +# Note that this script is designed for use in GitHub Actions, and is not +# particularly robust nor configurable. Run from project parent directory. + +# Query GitHub for the username of the given email address. +# Falls through to the given author name. +lookup_email_username() { + lookup=$(curl -G --data-urlencode "q=$1 in:email" https://api.github.com/search/users -H 'Accept: application/vnd.github.v3+json' | grep '"login":' | sed -e 's/^.*": "//g' -e 's/",.*$//g') + + if [[ $lookup ]]; then + echo -n "@$lookup" + else + echo "$2" + fi +} + +# Use formatted log to pull authors list +authors_raw=$(git log --pretty=format:"%ae|%an" "$(git describe --tags --abbrev=0 @^)"..@) +readarray -t authors <<<"$authors_raw" + +declare -A author_data + +for author in "${authors[@]}"; do + # Match author email + author_email=${author%|*} + # Convert to lower case + author_email=${author_email,,} + # Match author name + author_name=${author##*|} + if [[ -n ${author_data[$author_email]} ]]; then + # Skip emails we already have data for + continue + fi + + # Fetch and store author GitHub username by email + author_data[$author_email]=$(lookup_email_username "$author_email" "$author_name") +done + +# Fetch actual formatted changelog +changelog=$(git log --pretty=format:"%s (%h) - %ae" "$(git describe --tags --abbrev=0 @^)"..@) + +for author_email in "${!author_data[@]}"; do + # Ignore case when matching + shopt -s nocasematch + # Match and replace email + changelog=${changelog//$author_email/${author_data[$author_email]}} +done + +echo "GENERATED_CHANGELOG<> "$GITHUB_ENV" -- 2.49.1 From 6563b4f6cef3741f67b7df7156cca47241ebc8e8 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Thu, 18 Mar 2021 20:31:45 -0400 Subject: [PATCH 251/253] Migrate API-only functions out of PlayerDataManager With the update to 1.16 there's no need to maintain multiple copies of the same code. Additionally, in 1.16 the action bar now supports JSON text. --- .../internal/v1_16_R3/PlayerDataManager.java | 23 ------------------- .../main/java/com/lishid/openinv/OpenInv.java | 20 +++++++++++++--- .../openinv/internal/IPlayerDataManager.java | 16 +++---------- 3 files changed, 20 insertions(+), 39 deletions(-) diff --git a/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java index 701fdba..5a29ceb 100644 --- a/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java +++ b/internal/v1_16_R3/src/main/java/com/lishid/openinv/internal/v1_16_R3/PlayerDataManager.java @@ -22,16 +22,13 @@ import com.lishid.openinv.internal.OpenInventoryView; import com.mojang.authlib.GameProfile; import java.lang.reflect.Field; import net.minecraft.server.v1_16_R3.ChatComponentText; -import net.minecraft.server.v1_16_R3.ChatMessageType; import net.minecraft.server.v1_16_R3.Container; import net.minecraft.server.v1_16_R3.Containers; import net.minecraft.server.v1_16_R3.Entity; import net.minecraft.server.v1_16_R3.EntityPlayer; import net.minecraft.server.v1_16_R3.MinecraftServer; -import net.minecraft.server.v1_16_R3.PacketPlayOutChat; import net.minecraft.server.v1_16_R3.PacketPlayOutOpenWindow; import net.minecraft.server.v1_16_R3.PlayerInteractManager; -import net.minecraft.server.v1_16_R3.SystemUtils; import net.minecraft.server.v1_16_R3.World; import net.minecraft.server.v1_16_R3.WorldServer; import org.bukkit.Bukkit; @@ -237,24 +234,4 @@ public class PlayerDataManager implements IPlayerDataManager { return -1; } - @Override - public void sendSystemMessage(@NotNull Player player, @NotNull String message) { - int newline = message.indexOf('\n'); - if (newline != -1) { - // No newlines in action bar chat. - message = message.substring(0, newline); - } - - if (message.isEmpty()) { - return; - } - - EntityPlayer nmsPlayer = getHandle(player); - - // For action bar chat, color codes are still supported but JSON text color is not allowed. Do not convert text. - if (nmsPlayer.playerConnection != null) { - nmsPlayer.playerConnection.sendPacket(new PacketPlayOutChat(new ChatComponentText(message), ChatMessageType.GAME_INFO, SystemUtils.b)); - } - } - } diff --git a/plugin/src/main/java/com/lishid/openinv/OpenInv.java b/plugin/src/main/java/com/lishid/openinv/OpenInv.java index 24cd9b0..8137584 100644 --- a/plugin/src/main/java/com/lishid/openinv/OpenInv.java +++ b/plugin/src/main/java/com/lishid/openinv/OpenInv.java @@ -42,6 +42,8 @@ import java.util.Map; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.function.Consumer; +import net.md_5.bungee.api.ChatMessageType; +import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; @@ -299,9 +301,21 @@ public class OpenInv extends JavaPlugin implements IOpenInv { public void sendSystemMessage(@NotNull Player player, @NotNull String key) { String message = this.languageManager.getValue(key, getLocale(player)); - if (message != null) { - this.accessor.getPlayerDataManager().sendSystemMessage(player, message); + if (message == null) { + return; } + + int newline = message.indexOf('\n'); + if (newline != -1) { + // No newlines in action bar chat. + message = message.substring(0, newline); + } + + if (message.isEmpty()) { + return; + } + + player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message)); } public @Nullable String getLocalizedMessage(@NotNull CommandSender sender, @NotNull String key) { @@ -314,7 +328,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv { private @Nullable String getLocale(@NotNull CommandSender sender) { if (sender instanceof Player) { - return this.accessor.getPlayerDataManager().getLocale((Player) sender); + return ((Player) sender).getLocale(); } else { return this.getConfig().getString("settings.locale", "en_us"); } diff --git a/plugin/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java b/plugin/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java index b217479..1a81491 100644 --- a/plugin/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java +++ b/plugin/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java @@ -32,16 +32,14 @@ public interface IPlayerDataManager { * @param offline the OfflinePlayer * @return the Player loaded */ - @Nullable - Player loadPlayer(@NotNull OfflinePlayer offline); + @Nullable Player loadPlayer(@NotNull OfflinePlayer offline); /** * Creates a new Player from an existing one that will function slightly better offline. * * @return the Player */ - @NotNull - Player inject(@NotNull Player player); + @NotNull Player inject(@NotNull Player player); /** * Opens an ISpecialInventory for a Player. @@ -51,8 +49,7 @@ public interface IPlayerDataManager { *` * @return the InventoryView opened */ - @Nullable - InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory); + @Nullable InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory); /** * Convert a raw slot number into a player inventory slot number. @@ -66,11 +63,4 @@ public interface IPlayerDataManager { */ int convertToPlayerSlot(InventoryView view, int rawSlot); - void sendSystemMessage(@NotNull Player player, @NotNull String message); - - @NotNull - default String getLocale(Player player) { - return player.getLocale(); - } - } -- 2.49.1 From eae402113869cad95c98096bd2761f49c48cd17c Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 11 Apr 2021 18:29:37 -0400 Subject: [PATCH 252/253] Add relocation notice --- README.MD | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.MD b/README.MD index 66c183f..4fdab3e 100644 --- a/README.MD +++ b/README.MD @@ -1,3 +1,6 @@ +## Notice +I am now maintaining OpenInv over at [Jikoo/OpenInv](https://github.com/Jikoo/OpenInv) because I needed higher levels of access to add secrets to the repository for Github Actions. It feels ruder to send an email saying what amounts to "pls op" than to redirect people to my fork, though neither option is polite. Existing issues will remain open here until resolved (you can't transfer issues across organizations/users), but any new issues in this repo will be closed without resolution. + ## About OpenInv is a [Bukkit plugin](https://dev.bukkit.org/bukkit-plugins/openinv/) which allows users to open and edit anyone's inventory or ender chest - online or not! -- 2.49.1 From 1c579564bc39da0b6c6bd52d1bc164d7b4d9b2d9 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Mon, 12 Jul 2021 21:07:45 -0400 Subject: [PATCH 253/253] Add reading assistant --- .github/workflows/ci.yml | 87 ------------------------------- .github/workflows/close-issue.yml | 13 +++++ .github/workflows/close-pr.yml | 13 +++++ 3 files changed, 26 insertions(+), 87 deletions(-) delete mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/close-issue.yml create mode 100644 .github/workflows/close-pr.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index a73e107..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,87 +0,0 @@ -name: OpenInv CI - -on: - push: - create: - types: [tag] - pull_request_target: - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout Code - uses: actions/checkout@v2 - - - name: Set Up Java - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - # Use cache to speed up build - - name: Cache Maven Repo - uses: actions/cache@v2 - id: cache - with: - path: ~/.m2/repository - key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} - - # Install Spigot dependencies. - # This script uses Maven to check all required installations and ensure that they are present. - - name: Install Spigot Dependencies - run: . scripts/install_spigot_dependencies.sh - - - name: Build With Maven - run: mvn -e clean package -am -P all - - # Upload artifacts - - name: Upload Distributable Jar - id: upload-final - uses: actions/upload-artifact@v2 - with: - name: dist - path: ./target/OpenInv.jar - - name: Upload API Jar - id: upload-api - uses: actions/upload-artifact@v2 - with: - name: api - path: ./api/target/openinvapi*.jar - - release: - name: Create Github Release - needs: [ build ] - if: github.event_name == 'create' && github.event.ref_type == 'tag' - runs-on: ubuntu-latest - steps: - - name: Checkout Code - uses: actions/checkout@v2 - - - name: Download Artifacts - uses: actions/download-artifact@v2 - - - name: Generate changelog - run: . scripts/generate_changelog.sh - - - name: Create Release - id: create-release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ github.ref }} - release_name: Release ${{ github.ref }} - body: ${{ env.GENERATED_CHANGELOG }} - draft: true - prerelease: false - - - name: Upload Release Asset - id: upload-release-asset - uses: actions/upload-release-asset@v1.0.2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create-release.outputs.upload_url }} - asset_path: ./OpenInv.jar - asset_name: OpenInv.jar - asset_content_type: application/java-archive \ No newline at end of file diff --git a/.github/workflows/close-issue.yml b/.github/workflows/close-issue.yml new file mode 100644 index 0000000..af9c023 --- /dev/null +++ b/.github/workflows/close-issue.yml @@ -0,0 +1,13 @@ +name: Close Issue + +on: + issues: + types: [opened] + +jobs: + run: + runs-on: ubuntu-latest + steps: + - uses: peter-evans/close-issue@v1.0.3 + with: + comment: "Per the notice in the readme, OpenInv is now being maintained at [Jikoo/OpenInv](https://github.com/Jikoo/OpenInv)." diff --git a/.github/workflows/close-pr.yml b/.github/workflows/close-pr.yml new file mode 100644 index 0000000..69d1173 --- /dev/null +++ b/.github/workflows/close-pr.yml @@ -0,0 +1,13 @@ +name: Close Pull Request + +on: + pull_request_target: + types: [opened] + +jobs: + run: + runs-on: ubuntu-latest + steps: + - uses: superbrothers/close-pull-request@v3.1.0 + with: + comment: "Per the notice in the readme, OpenInv is now being maintained at [Jikoo/OpenInv](https://github.com/Jikoo/OpenInv)." -- 2.49.1

        V^{H91-l zr~yfMDdK=$vd-TNJvKn)lPuds?2p}e~ve1SS=T#`y!sm1NvUJ&P^ zI?FbLWrG`7O>m3iA%+VYE|mNY2?#4|yeu{T8ur{xZ5*W`F~9P!cn_>?+7k)%zA1{^ z6dtR>9MIn^-N1EUe~lUO;hH<#`DPYw|1GmX`5yv_f41oGQpa9G`GRHYXy}lZcBh7{ zjVOhr9zX=rT;!(*L2Qr|hoL~IWf{1JNT68|wb3lFaqy|C zTjsr#vbySM*0ZweIgWXXS^wr3q-VOAsIltJ17rTtO&qu9n_$q^^*kw~{)zhD7Xidu-H8INB6D z^+5%1W&cX}9eMPqdt{&cW=PEemi1c(qbX?OZ{m3(hc2qL#o~6wF41wsTw!S?IoFXU zWl6a)cR_xW8eR)wqyh;W!^u#~yX(Q1z~seBVa1Zl;zItK-^)J$-op3unBX`1zK1HORR6@?csKlS&SV@0*VX}ONC#MYGELBJN4T8WQl4gefjgq0cSs)xw&${4{jzLP<-& zkH#VemOkORl*%A31EDR~$c%f!z;#HCvW*TjAayTTMyHAQq{J~xCq-=ZOSdham*~>U zn9UDnF*zVqk6e>V_rziK5R4dtaZ0>MPc`I67tfeY5XUSCE*lzyy-Y0Lf(&LvKHsXk zT1r1i=UCsgBaz_e+T-#_NG$rT{UZsLFjj0{l)IQrZZsxIAvK z5cfOE4|{^q>|)HOfDk4gXM`x*3afRs|gY=7a{tnY7em7N=e@bZduW~{tp zOrL;q;#*@H0IF;!myyg+EjIbBS^7&8%t*<@Fa;oXl=75~9s$SDHTCYHG{bAv_`g&! zVS!hRbH5AJ_%i~`ZYu+R7^75*r9_?}V-Gz*bqAptdu#Q{c9!bH(~ZAG z2i)v?0lkArM_|>hZ@Oq|b%e*#XrWtU?3nHA8TR|~pV5z;X!8sg@sFTLkHMv_<3axX zc@(h;7W_N{C&K;x6BvJ);(j91bi$B!i_1X}I`NCl3r-tj%}gkNbES}_#Z(FzHv zQwU5DbbZtt%bar7eLHH~h~$z+^$hBXOs=rTPfSgZ?P&E?$^dyFa}?!o#AJpW=ir9ME$z_^fICT#}?p z%YrwfJKX-qJF_BaVV09cNt!7opM9Aezi(th=7?^Cw-d{Bi9#J@E$S7sSDAUWQ>s>2 zdngb11>@~xzn44U*DJR#9H#@|Nr~shZB3AHkFXBfcyCLr7uQMkF6QQHZ`)dVhN=j0 z2{;xGM+O8=0aRi^>-Dr3zElW)n9GrR{9CJS-fy@g1L(tAoBp8a$qmS~kYmrL8j20l zFdN#Q3A!nLk%XNk$8N8n4&N^wdx?+|o&LN7yYPp7DhQa`kYn}$^b)r>T+bA_?;6y? z&VWUF7u$S3=nMpZ@rwlqgf^x81_0V(lmvwsT~1Iv8-gFGzL zK)mo)+I4grl#v6nJf9*(HM?>X{ltOf9rQ6RS1y0}7m%4=fM3RIYBBB^W&?>82 zL0U=M^|S~@8(B9STFIt1@+D4%buqeRDID$R*Z~)@#%*U@B0O5?z?q zW4YE$F~d6-cvFBC`@x-&B<`Rjzcb4QE7*S>dv*@@Eyd3>COX+m`}_i~4g|P4+0>W_q31hGdMyMP|rZI$$$hAnbXI-*N`lkqg ztEg7bQs<()+S$a-MOrFwPyLbU9<@$Mhe}0qjWuQU_(=)G%wDwU(5U5sU(5?Oek|&q{JW)np1~mGD$U?X=bDmF3sTKI)R_h~9&!bf`dp5H z3BH@W2_8r$FpCz?FA_@^eKoKp;oNDjLuOJXa-kymXw|-)2)whgBUiY5Yyz#J7tp7= zkk(&TvwbSV`32zy?R6lb%5MYEOCb1=0*MeT9+uvS5eZAiS^8wjz z*D?$c4;81BWo!@35;#`V6bd7`Tvw@91?#jS3@(z6&OZa^)YFCc!%yyrc+fNZl^*gg zhk6iJyNH^*NSbxR=0ZvKwA0AbzbG?fSkt)zpE?zr2~!qy7PI%UUD2MAKKP{n@cl@5 zUIk&PCj7zG`vE2%V??q*J*mcEKvjLH9zPftaAe=fpRR7x#_xk$@grBACtRhWlq;V% z%oDIHYR$#p?2y-23W%xH@?I*+Sz(ky3?W@)z|~jfbAB)}%)?X{QbXLZELJqAHl^PO zC7_@9Jg~xncIqO~$_cbO`Spf`I|~wIesvAfwpy0%Wl*rE_t%u%-k43tNBx4gmCz%lAuO3K#?#00II6phDwZ{O@~zUkSfI z{>5XA>}-u(934$;o&QHqWd4tyXm4O-WngAPV_|D*_cv~rk!7$2Vt~gM+66*Mrx)-&@fCGEk!b zGQ_Ex>Ko4?KjlQ_)nk4t4%P5XJlEXWkX419LddJwsLL62bezm#@rv|_1!~FRcskx& zqf5;3?5+Ed9Unmz6m(Zr-Bp8gA-&-ppYM_uAwf_p{P6`DG*%_Z6|ZSm5iElZ1jX|% z3-|Hn+lzld&$agX7r)VHF#OT>{l|~L-~U?J{Qr??1Pq;=9Sw|}r7fJCO>7Om2@g>h zXBS74zr|Ffs3Qd=fXs7XmTsb!{~%AMl3_41+o-)Q%U|S?QA7DuRgQ|s7#@iV;3w9t zf6RhxvNXd)$vb$EF)H9=!Yp~5o!rHEzu~n{WiOb=x#v-ZgpWWB=q!|N5b^FMk1Wl4 zp2h@PVOEi}Pg6qsqea7zAZ$ol3`8wb zMy@bmIj9O+N3c#xAIcHF@U_Xwyt+C*^YNCc;$TIxbj#A+$Z^j zQ#)5ywsEbb;#o(g*Noef)5(qB=L=FV(+h6|&usna01O-pt|`hW46R9=Xx6h6_bIpb zw%`B?s3~;%#=oGbksv z#YH*;iH%sxg+V#Rb~ zN~OTwWz?qpytK#tv$To&;~(=^kX^Qx)n*Gp zhlj{YhmYyn_7Xz=R}9Hx92@P$Q|R&6jWB1$*SKWK-d~CQmW$~mpHJboFSJDK$dIFMLd?~(L`aMg^CTw5iS$uSoPu)9uw4_)wZ+i zl^)GBGA-=f2d&MjPIB&*&k2!2oLAci5I&R;F6)pW&8O3;CX#%zh0+z*k(Q=1m|#|^&OkP-M)x{( zqw$cbY;u_o(rP&=O6>&+ax>=5taLgSa2drS@#-r6x_GCa3K5}0h>UilCIJc!$O)dq>KFWLr|&#cSJm zIJjLwNwis|U!R-uxQ*32RUd0}jJD>Km+ET|nMHabwJ4vvhk!nPH=Wi=VTn;7au0sd z9sP@-y=pGhJ^+#nIGt#$m%CDWnmXJegN(Clw|dyRyr zf#XZzLb|o9m1EV8x+L7!p1eTzooF zKWn|*4}R;O99~MKb+nHUg4fbT^Qw61cz6F{)SMT%=ogqz zQ0yW6DIwUzl$X6>hfeH%nT5>Uwx-(1L7hUSXT)d1S=Mv{&fHL&Rl;`fTb#Z}_)N8$ z7uCuLi>N^uBVuHyP_@}=M009E*H%o;%Ay$77~_IN(cit)A=1Vs$&#L17w}Y+@~AKLD?{-U=<4K zDnZ#AD{c_{;tFg9qTvUPypxdZINq7wDv-4iL?x zGcT7hwX=+Wpm23TBmpIgAYCdyP0`(0lexInL8DSfA$A}VMoQWmqrvc`97ZgdY9JvN zTdUR?@;vrC`$A9FNoU}w{GtXIckU`}GSNovC=w=wsX1xP%QV_ZYKAM?z$0y2V#SGh z3v1HLV`Pn@bp77i($KQryZz0@Ez4)={W<< z0v9Pk+;wWMmyc`mprx4f1p3sBH0E?GYubV2R%n$~8{`zj5Vy9p=K`rwz2B1Uto?#w zZ_t{^>{5s;18x|_F9r5kT->(GDT@i(s0^lI49<-$gv%3VD@rHF`}({H{!!ePD{jC- z1JC3W0muy8U&I0!sVh+$2=e8mbVjnnERa_*C;ZchnDZuW%EiB~C>O3;Xa@W;oe-B( zZF5Y|L}|^8+sfXI9A$ElI-;1?`(uwVq7!l+gK4wAGe9h4=5Vf;QX{Yq(!GMjHCd@Z z^ySyT=foQk5Axi>Zyn)4{5Im+5~L~94xE$!5wIC3jE6Y_5sBNre}%a)F+kv5k-6aL zp%-M5uX2QL%R90WhHq}+x<9Xa4+9EvY&OEM*?OfR*EVY4yorP`R#^IUiA9Qkvvzw9Mch(R2>jY)VU(GfTNALD7VpQuXU;-5SNp9L8Y$FcLe(v zL^4bH(brO|H}Eto)ZvXzTzLs2Jn&r|4~QyqN}HcbP1p8+rQ=?sqo(m`HzSj(mz7=~ z*~(c~$8iiT)>c(wkp3)}!+K3p*g&G7HV|vGRBV0%$5SL~3-Uuq?>jv73*gM7jm|m# zih;7;&#d25Kf)B5aOE=NM8pQH%5o!c`TQB);1<{Vi#Q|+TXoCdJ7WW~v7t&R-Ue?& zV9^kQ#{DM_0Wm=>lEo8_lq%<%)Zz)PA;d2?AC_Z9 z%QUI7)GSKFo0v-MV_qiuNUN|UmKMp%$*R$C;`ui2e9dropPfbI?i zc3Bmv&r&>KZk@&=;YJO9AxN6rK>kuR{|id}kGW=iL#vH&1nBr9Da?=X^Uk2h7f#bo zUPj#*Bxw>~e+$c02IxreyGpny@DknddJhn~hLj+DQ6JmNO#^IR$hM}p&2FJBpGCA; zc!tYY&?vUJ^Y)nGoDIpHXR+c(xki^5mqWGn*C@J2uSgfK!FHUQU1pi(c#Aj}`1+?< zmtQYG;xcoSV4GCYEUU;CSJ#*4Lq8;{K1B+9%If?K*UO=8O8VJ{npDs3A`qS?L1tWjCnyqJ8Jt#=H8RK*I&ZZ@n&RQ`E~K*SxXK{0sd1~Yt2<7R~bYgRz+aL(c&&3 zMNmajAzl;~9uYU?s8FYVi)4f51?wGB7x#DH1d(WX${^lu4CD0L_nfey)R$VO2B+?{ zKgW}opRXSuWIrjW$4`gNK@_x6_BFZo#l^+P(Ffc?kWv$4;}M3<(Jk^y0$Xv1Ve{<9 zTZ1ehTSztyAh=W}=9gurXO&hLo0}5LG=>%xw=xJo{H7nvt+-$Yc=OLOO(k1sy3W}* z9hLrY{_M433N~rg2tIRfu=Wd+t7Hsxd;*I*qeMsbQ>3YJG8-yEqgrh@t+tFN*uI#K z)ncR+?o!B$J5Mu(*E5-`Z%trok_)fSZ|MuhvI@ z%>dIVOGQwi57vNK4|RP2D6|9UzUBf`!LG(K2`j4>$BkQgofsN%?j|VSR0lD*PjDPK zI)}c9GeA=og_7IgaY#Zbh>;K8m{V=%xMhOQ>7rD+Q2a&`9QP_F%Zw$n z;!(sHFI!>}eK(j#!*XR9M@y!HKQ(mvmY#WMV>^FNccS(n`=V&iv$!UwTxt;2Hm{`jA)M(HhSG@C7%Z1GhHE7=|F8PNG{7 zq-HLR4IMw`JY)}u7ATu!oPGu|NI1qvzBivKRw8gLZ~! zsn*LOlM8L&*8MRAn7HIKYDvCZflb;g%{D z9VILkbl+rR;=m#hC>CVO#(7LcV)-UKkbt9#e2OB_U!_$#tY-bm#wlyo{9pc@o_Pl{ zTn8?8LvWHV!<>#MaJP6bY>Ow>sPTw{XOUkst>e^GmXAD#=D@V7c@J&Lj zgU*PlKwu{((Md|a$k)r5Zy+I82pypkpOKlPF^cyJDF|3&Rd#dg9f@bt8KfEXXse;T zB=X74XVlwOM=hHPp0np}Dlrn7?mI8V2TG1ccNHu18*>>{-V&8q&M)Apxkx;MpBl!X za6lb$7Yyq>zpF?E2BpTe>&P90kKva`u#f{whJtCFr>4}<_HYWw>qWyhL|3vd@3@-SA>7On|5>8vmWz1%!>(nT12qvY+)!oMzmfqzzi zv>dao-bQO5P%Q&rsuJ`!lL+ezZ%Q?cs4>zxEEEv?bU}hd=?d(xyGH>kiNJC#=-= z76KR8N>f`7_wY#&Qw_?{UaZK7DKsPTtDVmn9gflSicsC_u90Ut-YW#(-A}j@lM%-y z+Bf9)7ssuiwx6r@+HCW~uE(n*TQ2J;(>8Y_=Ak$J&qVJIKm2XjE-RrAPuPd=T$m5a z-!FPOG#4fDbp`p%g1X%MfIol%b%BkMuA(|1XyKYe4iBY9{C@hGEPi2~^a?qTUCo$l zO2F`nzCfm9)xJXj`n6B=JVQ(s08Z=pmzd$^KK5FHpR;<1{83|_#u{cgn?@-XIs~Wo zmjfnyAtbcEAitKs)N$+ynNS~sS*8d7g?mvQ-daI>Q5IW~g5Z>7!qB?__D3ufMCqi! zC05;6?Vw^)qK4laoMy>5hyysodA(dhvG^MS7_SszG{E%6gr&iDfvd)_VqC)I^2Xit7vnCI{3oDC32MS&KrvQjR$ zhW9P-z!`$UJ0wq^@k}4lnwd3zz1YDN*Wv@-7-Y=X)I~@!& z9tB0q(6k*im+c2@j#lR3Jc(CA1VqHHV?}NlS+=5o7|HX1_x`qMDUk2%cHiBU zmLUF}MPvGpESivkwe>&v04L&a&feO<$tg+EMh-~;-nV)4as44NflWjJ)ao+nRD#~u z|F={Dq(l%L^GA2r_gL-bj>6FX@kZWPSBu-u+>&vKN>;?b%=N!oZCAb3~aD((?^#z`Q#H7C^~6ElGl zA%UHRlNP#6d|4vRL=ep(hRS5%uu8}9Sl)T4c0T&}&Nh2g`5}Ljylf*H47lDW&84&c zoo)`WuN~yKoOBw=enuk+cU#`wTtM0H8cqe$6wVLY@GuN7cO-r24Z!nTAm-cTy@6ll zMi4iQCaaw(lmpYiit>Jp0#kFs=>~S&E89C5mg9n4nEObuNkTnm0YQ0HDW+AT9sZ;m zKJmN>wluzGCur&?Y?geKIbzPsW8m%~Kc{o!eYiy-xbWoagmqa3rPF4%3;QWVCiFP=gvpQuf)f2oaG3<%fd#`D~|;+D+_QF0W8N)LtdzZ^2&* z2G^>BmnrADR==13IPK*4=`DtC2f+HkHyG8nur)2upNnEyanr>7IZ45{H}*FxDa=%! z4;cok==kVXd!{5Cs*=p;{phivT%Z!cCn)QOe>pmCl%v*t|GJ=*tgQuXP1pQkMyIPR z=1hp-#jNrby>sU8CZ=&@7&*@ZAqVPK)Z*Qmk`TscE-bRy9`evU7iwo5l`Jb$bsnn6 zfjPUjF?a0Zo3efgME=o+&zCcgaDf=8FQR-o5@16uKP{{pNe+c1!j~xf{6yXMlVNqb z&iY_fXDY|86GO23Ezc*0wd^V#TD|gI2jAw>k-U-!R>k#OP}Fz*3_zGIwPA6##r$$( z6!U8aYn`9L26r<<^p)>db~2}qEN8YsB?5F5#ebZT9qNg}s-|Z2a}3*s%(w!qMo%xZ zk#`Y2axYCLiNdDnMuW9as4(AzW4#OUIYe%6kp;k^)rmWt!8Ay{NTR#KQR*#X8!-K? z?mDA4jF|+n6h1fQ{-F#I16769-^xJyZJS=tggr$7anHU(!q8$bk$|d2cYMpQt;JphKThG?i0W-(ZRKh zK$NI}Hs+oEPnjS%5MWpf-g|(;~HHI&^DO zgA44T!s(;mSv&67j21jwi&m9Ad=m_EwbEl(DE*i!X!U|QVy8j=l&8d%tZH{8cSdHc zbpfMlBc6dK8B_USGk3%0H$Quej|7Lg8a{)l%mHYt9n!C~NYP9`7bnRU9mu}z=sbxl zS)Kdw+}uic@Lab50nVroP-jO)^3D> zm+Z)mBfhi)zsKJ}noPY)t~okTZ~xJ z7w?4)bV#@R-RdK^;<1JYCJ0&xYjQO{6hQi+uG2%=h3 zo4~N+NCv_3KPbZjh`w>g>HYpK~*w zXpfN8J0d3uyc_%eMTwrB3cV?RqjQt*^Xy-vbGiQu#Z@w}F;O;mG%+y#r!p&%WJ@Q zED6?PN-I`c!zA-i6@#?$_s~l1BFYWpILS#juV7Oc5F^Tnwv%nHlkA7A8}8Q;zMePS zUI1L-xjP=aRb3?(xdxsZQj^&JXIqoi?)npO148rq8PS<7l;Oh z$-QLm?dsu?7vXDO6^9ZiPh{BCloSk<;P4rc#LTQVvf1qR3c8E10JCF6jE!+*?2+2e z!1o22!qy+q%3i?(lbWlN+fAFs9C`t>j&}ljknK%3v7Z*Fh5bYup`kZ#?F=n4Z{Vbehx4as(8*-RrdOCDTCw}XZ#>1fF>^Tj3|)s z3d$Sln0S#*s~%B{Yi#RvM#kohxsgX-n_2=*gI~y^HJQgRpHvNbR8UVow;sI zW3#1K8$irEzcWVTCUuDPAive!y|u!H3Z&VpPYXU>T8gYA#%ZTSMUT2TizcfOj<+;9 zk{!wi014i=%WMG5`4hh6>#y{+$8cA46_CJCo#uPib^is4Q4svYIsS!bU4MLcdyYoV zH8vQvv#Nj59*w(kKQ?&4d|@`42$MEnNkmo%Hw%+?tVo15S$qA+uQ`|`Q_(^17qHp@ zJeaaOCe;0G450sDwRmx4hiGsZZ2;K@;FWcHRp|Qf%*tzU8!ZvCUs}txggiA+#9uAZ z2(9m)S}Dgm^T~I{7+8+3m-LS29nA@-C-F+^_eL;+Sndaj4X%1jz-yezb%>MAJ#1Uq zO7zVQ7;9(PQP_T<73_gn%{Ec%ZP*K>8Nad&4pTb8<6-=lc{Ze2i+D6H=}35&r@AlS z*#I=IK9R|JY{+wrEoKbB-fhEM9d{3Dj~pwT*@)3?-eFiCoJ#OXx%@j)t%1g&*1)@s zspLi5jO^-eV(tqcoJI+L8u84?&plx0t(nO$BV3<(1l)pAf-dJh1uiR)q>LKv$fK=@ z2DWwQ4&*3A=$+pGFV@~MO0X?k6U_`}*tTukwyg}?wr$(CZQHgoY`f!B)qUf2zjsep z_2_^5|DJQMwLVQ1_GhSJmvSU2{3z{_pYy@{M9xoS0tr$MC>NW&jX#{%(DM-FA1%3y zTmw5Cnz8NYE`@8R5>~m`!Q@(9!*5tQ39}3Zuj62?mHyimFYB_@}G`hCz5J?J8ih z67|RS%%bxQ_2w=c^R`(&>Ra6yq5f04qkX7^qR#NkaUyGkpRtNRo z?4m4gh^)opD?g^}r$-&IM>iI~c^@Dz$;;sIdL}!Sp;(vA!heLNGc2LES(AM!kqh;B zVfvk`V%@5OkqC7Tv)fSjcpGeQc5NNsCdTP#z$rwdRe?(;LVGffzlUuHIt!t6pDRt6 z66s~M4_Qy=v%g39+KL0`FDi$9_ka}2S~AV{y`__of;2%DXhOOL7-A zNZ>uNqXAwf4a`%Iz`1)=(5mV_1Lnqgsv&#=N1fIaWwmq=P&eJHzfY8?_#jfz4mx1l zly2NRP&7jdqCc83ErOvbn+|vZzn6@}4<4GIn5!Vi`=eEFiNg~naraPOzSSH$cCn6Cp=grvcP7xW$kLLQDel@vrC#$-fYw8oJu*oKLp{wRhD zgqQ|o5#=p^c-k+|x`#Q(R@HlLV+?^sY*&}dUm^aw{Ycc&zK(puJJyhYcZmEYQv2WQ z(*Eb$&p(l8Q!8UZLw)Q2mmR$DFR+vk@v}%Vsfj{J@CKX|X&qk?5s4~qLlU({!bv(#R1!^gf?Q(`Tuz$(tb18P&(9G8}mvrC(*F>U4L1{h;-2 zC3P^!YY78`TE-9Ab%Vr8QS66e+EDDLVv;QV4neI5G7YMNZ+2O|X6+ZX+FW6z?;@#) zFqN2h#-#3?*kfk#oOS}=SVbhBrgxBrAnQO2QoOanD^&`*?$F93yvc~+yiy6fo#KBblxDm|Ne4~-hl0HAX(ltJ2RIy67;v6tan{z^jH;HC6w5} z>ssqfD0tIV%DeBcvW{w?eR5tAOfV=0_RC#vfj!#Ff_>69$BaHxEP276A5fHBZT>Sd4jw|!2&??Zg|+F}s5L0R>XSq2Ram8);@jzt1$ba55Scg8lqA*^ zM#g{5gC3vI{DO&6vL%dghFXxm1$M{EfhvU@sEaDvhny<&Ov~(dUBk+8O`-I^SIA#z zkpV&TEg6#)A~EmvM%X!P*Jko4YOCP#TMD~wq5^0%fzmVM;YaDuvXd)>caQ${HiI1K z)={+h6B{ll8q~$Z%HM|VS}ZP-T0C;vqcV#wkWpQTae?0iR8HBFT)zU(12VsbpBFCz zm~Q_dH}BZC4=aQB{vTU&*S7QN-vpFhk?vH@zg; z@3cb<^OpIh5T^3=tE=;^@7_llTny`1-8>#ZwBd!n@I{4fuI4P_z#bueNh;24GOxv~`5-&f%)3^}RY^?3J9j#5V zJ2ydP7Nho=_S0_w2SFfMRz)76`k}S+u54B4-7r;W98Co!v6L3mn4hJk&SMI^KXUk6 zjh4_tE)vxX4<07zAtkq3aiE7Xlr&R?bD$}dE3!&yPo6rlsWn{WjgD5@tu~=+YBpkN z-&N6f1+x#XYuyB+VZXtprzuHtUsFoBq_)j-LSYD}@)SrG?!6V54%%~x7%0PSnJN3` zcB2L330_I98|pffGGUuCKwbeFAFHv1B@x3y%6#enI2iz#4WkOf&rdZnu3xNti=&E{ zHKvDr*U)O$XavXDb~kk+NQT$z6g{f?NNjU|k*aDh4fOP@th$tS^OS*J9-?vx**)tCyy($Z6J$P)b z5W3lLzja{sb!J680T+c>C6Nn=22L!HnFRFt*+odfBszp`>UG0xK$ zBydT^m^w*8Y&9d|nF0{vkO##w@?87n^#tpLJ(Wvik*ez2K7W6he1~YCAXnJdDS2B! z8jqCCO~(nj_Z1)I&HxXT-TUt7K64=!;w@#z@sMyuF22;dRnQH1dPQ__;(bJj$@FnM z$NiDIn7pt$_%!q9Sn$K>X=pIA3CQv^c+kcEfc5VF6U%?_kGB12@abm#Zrix;m6-qi z!|UIpMgFHV^Ix=xs)h=t5bP&AB^s)5YYI>dEWq!&_8<#he{eA34ag@#iJ3wDiJEma z5F_KbRWtxIM)Yc#tbL77A6F$DpZ%=;SrzZV?g9OWbIKYOr?_(gYiAiHPaWq)MaOBL zua6rNAFp@PeWnS~ltfz~hP>2xx@h3pcIq^Y-!2Nmh~e~ZHWEW|E^P^!Z@fdnA!4dY z*Rc`A9+dfT&4ULdjU%7TXSSeaGg@#`n*99294!Iu@Nw|Uh7SDkHN^Q4XYdYSWMCiy zB8**Q2vJiA_3CSXf{X}2<5k zfYx|0SQKIlOo<(_bFIc0@uMnF7FhP83~l?PCQ^~7eT#!b72?(r($l0Q!&x_Brm9LY z%wi+Y;j7Y%vJ}v=s0m67pQ+TBZA$L%07Ul`hC9iE=-G*8Of@X53K<0&ndV`0iu4(3 zOzVu@5mDQqcSmpw?Im~=sJ5fhqwsKxBA}=$V_B-ugG}2wM+iEJIP)$c1ch5G<6^Ts zNzQ@QVp*`0Z-%ml!tEv4-~}Cfc))@}tWyxo@ad);9m7fT%A+!AaZr~f?KAbtCa4k9 zSRD@U<2FmUyUL@spBY?6yHV8Vgi-_a2vN)Mf1VQ+!7D$&i&4lO2Jw(MY5ARTmaZWl zV+337+ViQbD6yHbD`&`;WRCmaD20P_W)g20H3w;9Pt#$PU#L`>6IH z&3Y8>m~$pwNBUXQmEih8fCt%zZqal*jW03!-eL96)CU6#WLNX*rrb<+c}StWcN?QV znAbHF;-C&`^CrksKa7&lxFIVqxnzjzd8V!Jlam+*?e5qy(a4s@6gmH~NJL98k&PW^ z;8$W+tsQc=3z$owp6k@2b3Ibb);DaV$djO`fDSnwEe#8e?&#N6&SMD&n~yzgVILAN&Q$xUBA%!?DUaZfJ$fW? zV;jOI|Fj-vfL+T4tNml<0?UO!XE`236Bvhw3w|q@_cqWO{<0oIt!ATd#50&d)uy-a z(j(*q?e)2vLq z=bU{qRCBU`_1(-J9YM>fo;IN%-ZCtAkbd|60JZuPO1k4M4QR&3&V~E#R8$hvva$)a zg6^eVY%5)ad++i^RrnuzljvHk4)Tavz@bl~8?dmrif8!H@KyWW?%5k4yJs2)&OuZ3 zOb@?5knH-5_I9AfS$TN=Rj7gYCjf4go<3V_9amN*JuQFqG#_ZyN6nm(^VgY{$tE(% z8K35V+E*G_4R~@NHqE0Zz z$lSsH-BAAbL^DcOrdAGyc6N?74yJz*JpY=@${O|>DoCGA4uopAV)7(O^23fB#8DJ% z(ugdfnIm;;&+zan%4utkc!fQ+9%kc7Q?`fsnk~r3z-u}``ga{+dpc%S6*qHX}F&`<9yzu{CK^dgr(lC zg{9uNeMy1TB@ZB>#p;WHHi)s#jssCSSW}pMX3R>8o({NH^N?Ocn@r(T<~BMkM(g9| zMCj4{aR*R2#6)n!sdq>@Oo=S<%?J>C3*e$l(V(hCx{Qt`KbqKT$Yi>m7p5cW-W2QYejD$)3t~d) zRt+_uiqe`+i?G)42k7d!{|;mpp#@5_H}^t42)jX69{#pxN)r(JuN^hdQ-Tig3qWxeCnTV!)r*0@P@CrCzS<)QF~i!F~UV@q4o=f6Ng^)%x;S@`Scnm>at)> z%IwayeMDL6mefu@07YrInjw2X)`2{;5#okzJ!?GuUY>MCIdk}-cG7S)Cf=zug=zZ8 z03w(L9W%KHXbtBmR*Vs)vb@!>)n=;BVp!Ia@h+2yw9E!Ai zx^#P{D&wQc^WQ^G^o1VUIUH*{oTdldr0Yga9=;;zSod}QFqYmiBg{v()0mW_+vvN( zHz%XT(xG;ZMKArfG~Oqp-grQ>VYI*ebhiJL*q+}KyDQ_ZbqDTPx+w2GBVWesdtI9McADLn7_)c+lDshWJRs_GNru-)Wa>`vtrghd99gxdQdojW&B#KXb#j?`N3|JP}PYEdh$scw4hpa2kU?qSB_8+ zm-|3?Q3boB(2&tb_vy#&YnriZeZ@BgWB;8_@AG3h4XF{=`7!n!@Y>cp!X0O)>|VWy zVjJ3Cx}=#JQ;(5`YXs3`V>1#IBZ>UEHo+`O=T5UZ)GibmVxZ-Fv4*KW!uA|-VOZSg ztNa5kfp*|sQ8o_lB#4Z=Q!QbjC!h1`7|GQ4?n_ycRVL!xyn@{x<5H@fkws;#N3{0*DZ9|FIs zdt&DJEi6WJ(S@*TDi?eI=PfhRE@}Swy|aSzo~Pi&<4U+~=jR74?DU?MPNbP2Jw&nswpL4hhZ=<=%UFodEC*8?MqIKkl zUf=*NQc=z(Hw@>!(`;W7Yh7Z(-GvX;BZtd^9~fCe);34!sJk9S8pGwQYyA}o^^Msa z6szLxcFER>7KNJ@OmtU?%3K0hSs+w3Z~ErG+x8DI9`5N8+qr`{Xctts&j?i8#JA4O zroI90B}`_%0b>TOX#)3|dEn!eTRX@5sCUp0n4SJy*c;8tjSsW&{x|VRR}b-uYLs!+O?bPdN!C#6)FifZxeOd6j!vQRu$R zrllb|Ckh&^Z_9!;`9-rtN65d=BWKj9or%v5w&{VndG=(rI-+MBwlZJyZ$m1s&5~(wk<*h)~5rYqPu* z*VejT$6!TL=vJ!a9~Qm^Er=sC^FD%;BbH|#^K_JQ%Cx0BcmfWyq~MivS)W6{!6gDr zWtNZ@6DnGC7TINF4fd{*XLFL2%(%sR$jCfq?JP5=(dv@Rwxjh@gPeG!kBgLw%6N{Z z+8WDr#RnO&OG5;dW+R5dvr3K!gpgEXWM=~d{LqlUFaZD#Mel)3nO+t{pX#Rtfc?alUVJca`qpW-ZaE9 zvrB(zIHPLgbjL7Ybz0=_Ep+(9wbA7}JPh=xYaCV;gfmKZ8)XofLrf0A=Fq@Oz<7a5 zeDUs3Z~@Pp3e9x}0!+=9xZR+tOPH%g3VtM^pIPXQI-Eosxcti5p1(1EJws82-ee+e|mN@^*`Dt zUL^DT880qQ7JW-f6x~Fvse!K~M~+u`KSS=9zh4nY^=M_lQQ|?-A`3>iGXWNQ<)0!& znKP)=8`rs?dSgBGwfgb8-%s)*dN)C~#}fhuT$K#ZKNwkAqUL&pf02KZKa;keDlsBG zz@l-9=s>-V=2tyd>A;=s48m^i`rWF+rOEU|yA|oA``*N$02&-`O*R=(U(%IutnRei z@Vqa>jN1-G@FXvVF{VVe!XoubEKK}(`*i5}^oG?s~Z^9Z{3s#y4{>`%cgNgVN>=v_p*8?-WyhJ!YrXqu(CKfeZQl~^ z-oj2MRT0<<&hroD0tHdL8pe0!>HV#8;XkW9hJRI_!avz1Y3uPNA@UIXJeSfHh&EJD zI{Z*m6GpPvAEq9e->~+MQ`0I$uXkZ+@&M?5{kP-NrKkeL41+N}lkF(ozKd-;H8p$q zTWI4F;E3V6L7nHrfqaR)N~Y0btT)-`*>~=HJ$^eA->(XsRi1!NWhWtIVbrD(JV|cESafSc2P*W(Q@{gRqLiGV zrhjL-n>s3a-)+KuXESDpliQ7yv5wmf+8!dl0W?d*78nJGw?9IFlOUm5=HtYlbOee$ zzowMx77W5%lJqggc`=OJ8NzEg3-f6h{6cpQ`b$tP2qaLY1{A%(*09Tdplcajh+9SK}w?;2V*>?{c?0LMy86-F6Eeh9$ zKzL#SbR-}Y$y0-F7{+dO27v9=R^9v{y(1P*v-ujUM?4H@{ME3fh;0JGIoS!?L)a$z zH65&|MbLtZ&(VTBE)b6URc~)dU&h3E(<~~4r~^@1W>q9;Qmn|Rj$PGbw93DDA0h1a z6GVzhFL)A|tMpQr?a59YDrt*KW z-WdN`Z<&hg((AmiT&)8hhCU`F7 zmMeYwj)CybHRCBft=Pv$!VknBZ{JT{WiaMsc>8!-w*G;9^BYxd0x_n)9{;ukQC7H- zw@v-~@@Hh9qHhz`s>2W#7EkQI1F3?Ip z)7~~5qqg|wr`JH1xDv)r1$Ta%B$HNK^w`op3~1VoU^s+17V}fkQh*Gu;*}E;*!0gU zPn6fq^5Ip*ntnf;D#8JAJL=-gbj@ySIYGl@;T8o7CBLlm&&AEt)d9K?`)Dp`SWlO==g} z<8BJOny!oeDt$@RxZw5LJ7s@gR1|s`Z(ZFsvE5)sqmDX+4~(r3U4^Phx3X_?UBBxTaua zZa(~#pFb-e!AhO)6Z?Kus;%67_{zmq^0?*(q}MP=EfUa#=a@976t20~yrL8+tYmyd zOsHX+6LJf|t;is*R->Ai9cAmPnF2I})ra71d}D|01(_kPYU`c$>z;F5Aun8%opqfF z1~>Gh_!{Nj12bydkZvxkcO`0)LvjpYdx%B*A9PtWS-BjKWJA9n9f$@7O-RsPv_PAcFXHPGm#K)(;kBRtcoBAORp;-lR^tgx}Enqf$`) z;y!p^wT~^ibHcNBuDg_HC6yiWLh_^2Td~-hWm$BW&{2}O{pzvvqhq@BX?0S^`|Fd$ z=j<6T82@r~cbrqWR@Eo;%}zD0zYeo&EdI&dlnGq57Z6JdtK1b;b-uQ09|LQf{vdmG z>s}gj@TYOhjE5Od{h957o8vHwG$xRy;Dg~|mOiapZ(pdU4y~pIyI1kn<44mlS=aoH zkmoowo8@ufOwz8aO3N%jKi8SywXbZVRM2@|w-lpDdex4(t#LRgmHT*pVr|jY%2p9p z%PpJQgmAmn$dA2ESU=G4EUcgmWg~^S!g=sw>rrPLi(Q*&*h-Q_lJ5!JxeN;jDC7 zYQ0qDMg>E*LN!yJYwHJ9h?{5rwo<1!QL<>o`V0Z*N(QeKIe63`n^Zog`VDSC3d1{B z+iPQL!!Km9ap~0AsjM4rGYrG-B!in=xo;s4M!%=PeqeF|@+ngnet=;oq#}Gq#)n6zb*rRz-jqCELX4hdv?dGfSBNwG!rqzf+hNH-ecUl$MUtj zHAKdH2rST9Bk2J5S@m-Qt{^4zEOrDu40P3@lWkUehFkC|)1t1RIESFh^v2#8G{uNo z?=v`RDeZI^>5)t;ACc#bXrq?`cHhB-^in)JbG-qcow9+z{zRJLePD%^zguTP7IVHG zEwBB4zR{|V`?-vnsorKW2B<5VDt-@XT&Z}X%xoK3wIkQ&BWY4Zru1`0vM)zMvsecV z;lMMxg5!GyplgG=JD75&D_CV)^h9+-!7gQFKcXn{RIH_Fy3h77@W@-_ePYi>AuKq5 z?kmR13!nkhyB!dIIWDoA9#}v_kxlHoZJQ>J6ZZaHt;0i z$H%;T0~U<$7wZ4eR{xo<&G~(~2jP*UN;^i)L-6&Flg%1_SFrh;inRM%Kf`}E6`21u z6_hosF@z95jV@de+-)~!0*Y9Q3sBa@P7(RZEKSHt1r+RjhoA^^dyMLBnYFHj&m3vs zL)wA-P_$iqaAr`j!xl=wMHTblVctmxSoD`$BI6NrM;MHcGG4mAwL2W?-JhQi&Ob98+Nz*NWV8!$`r*vcTU$#JuMs?IOLyZ=`XJm0MR&Iaks> z!00T+n#H9=MYF~?tLb2=#=K3xsm5S)VDCwXUd4*^llIDXy53)IxkAyR3bF~;JX85_ zgiP%#uHq|8vPsE)FValefwE30wZd$~=8xSOAWCMPXCf2ZI=nQ@$zyrlcCu>#IUw*H z2kuD?P}HSl3A{PO^3ujSz%YIKi$)Ql>NucO6orxu@oGihrqm@r?6Yr$y6zU@u~!E} z^D?$0i9DvUtb33GRdtG?ThhhtOzI0|iyywf*9b>EJy9ef=j7&G z^2FgKpGA(q4)>ljMhV@?q91XB0oGx_t=Wiuq04KV`+5@BVCJQD}HPK zfkDeyW9B@=F=$781ahU10^tH$I-F%Mr?%~G@)gfq42pU08|*wS2#WnEh!cZ9YE^U- zk#;93GYlD4Ky~}|lTBn{cWMUag5Y><*kY7~HODiw;gQU(ahjHwquMhH?*byiL}%CU zk%`)LTUY)KS?Gd8DF!puP3@L}Rbl|oFtP-niZQIgM9eD{?Qa54mkBYz+n`4dM1LS}?z$s#SjhBhM zOh;~SZ6$2hX2i7uM1aYMiS_h31rBj6eFvp7No*x*LILj-8ihMamK)u+mHVDE`NI8g6Bhme4V z{c1~PQ3{PM!UuKVXtK4s;JWZm+s0#K-O0cjv%Ya<0`UeEj>Yph@X)8C@~K7BAzDP=*FIgG)qE)#|UtQEHz+dd78pe z42MLXN<6#eIqM+Jl$$JA?JY*vNPID_rw$K$=q!HwZL?$~Hc;GVVE_r6=dS@=jV&e^ zN&9k1`x`nA$cPR(3cXB>WFdG}IcS;mSrn*(+Px5vWGvpWD@cSyt!=_hgk}z^pqjz9 z+3;H-Y=>vPmM|Hb&RXKO2)olu*7*!Dl8u1Jon(35&|d0v3oIEiMOpaOu9)-ITRc?R zn7gJ8yewqZ8*A)BnA{$KsNpOGoI{un1T_0pL(C8F6~~=J1FCGQhEN8xWavN(iB0tl=D@)oeMNj^*9vdAaB2jAw`(IdOOC$%oR}^ zgvx^_l-MD24G*&zxMKP1N$pZCulrXP-|63ihyR{#_=Z1Txa>n7sv)KNDB3x2$9MsZKu^3z`qiWQp zvaJ81K0}VYaVp=gnoPcEU*YW%rTjI!ch%*J22Zb6K726Iyy4#6?)kKJ)x}_q?T+3< z|4xT7e#6ZZ{Pbpvbh%)gjKh77a1H9+%8|F zPMpulzGad*Q*c6lh929~@nxw^snE0pUYfP95lejFchZI8Qt*D1VLBC@xjw&(O0t!u zdSlubxLu!ZDR8?dM>l0|l6MC*vpW_gwO*Fq0^ z>t>P;O{%q({JFYro{R>aw|`ELmsF(&B8I8tm!x^C z4`y9%Oe9Z2)%p`pPS6!gKD&Fm)A)`C#{l=)Un`H67w-5kCCuwFff)da1b$bR8a5-@ zm2`OvIFFpdGwriSk&paJkR?@Mts(Oqv4nC~UuGCmE;LMrbDlsgBuhs;h89B`j_?J7 zAtgl*Cg}I@D6Miz#hZr~BYy?pkZ>YzA++q1huT91nybIZH!N-;wNFL~PmU5R*Zov| zKFt9Vyh*tY7(#MIOGE^BAyeNIi4X}=H6#wK6#rE3+Z-xJVl&6f(1iZX z%yl;uWPs`b)Z_4b?^az01H4c&LZw#?Ke!CeAncromSyG_!hVner#WD*<44 zuUHe9HJ3zK@~G#R^6(X8N7y#TGvE|?Ns17(jg6(wf(m97B8 zMF;*QS4WhzSMq8R781S+!rVb-u_ zC~Yn}zmxwH85T$k+9zB5A8nU$V0{O6#Ni?PfEGjjW_?p@4h}|D z#}ixnN;(AF+ib3iLaD-{^(xh=m|s~4q7umw8CBGB6eO5WFdNOkkN93FLMPSh zbXosqLq}4W8?i$Vvk`p~T@0xjVPWS5()LOT`M?;->c4twpHkfA6L=cV_=iZbq`Dx2 z&L;KfBXGp_qY9eN=8m?EiLA_#jGXS;?UNpCHApB+Z(Xb3N))}w;*XReoR`X6P1Y?5 z?LMC5zN+F@aH@H$38KEr>#b+8ETfM^)!4`rQX{XD0d-NCcV6*l1m}aJ+X)S+>{k%* z>2|HECt%?zk4@pLOohrtLz$Dh_%A)8oAM73vV^WfkkA7%(Ob#5aQ zd$|%M-B{%iqBYLt6*aLTG6HekyujZ=j{QtU0}2X>%uC^yq|Wf0tr5o=bA9pnzQ*0VUxaWCD=fWa$ zV(Qp5Ln1Shwj)1~7jOo`f^wFE1K0h-5`ICujy6zm&%sij_3v?0iuogmpi9pCfGa0t zc239+xs7&~kRo)$;JUyUdg=}(&6}~6MHt9CVIpz(8Ge*t_RQt07U=;^@;NMkjvn7O zm|+U~hf9T*p<^+%+XB_R55Tc2`%wm$(%91pKv8xE%MLmQa#Ra#WIpM2b3lADR@vOp zLuecIj#EC@x6BQWQ@W%A)70-w+ah*M_$8}dA8o*IpG_6NL=xVqbzDvzp&}f~=Q>0b z=O!|Eso;u~>#{28wKZYXH$o5Dk%To;piYm=@vR&NRN`7xHo;G-GdY=^rEWAzUTz)} zUpnnQnl9_|Jb|`&$GnL!Vgxs6*r>K6bq3%NyaVkP|Kh1kWzBEgW9!Q%c{l9SA$qSc z+GVPQsz&%!>D$JA*9pj;ccMU358hj5PefB+fO@04Z}Mde$%+5j@e5dURnu_S%1AC* zL*2Yn-ZSNp+s_%^DM$^2FQR;TLrD`}DAkn@Pv+J}o^yl$Ql8GW$QRhWT7_3qo`EF? zR01vT^hI(Kap*L^s;rk#j9kFc!F@V63j2y`_J(@nj}mi#KhdD!?qdUz%Q}i z>G135|Mxg_mVe%NI~CXEzmp`m;wddem3>KbP=$c;z>IfqpvPR9VLBm_*+@Zb9BF=a2_tI0rd9e+ z6Ty8?vqfDXS_?Hwmv${@HblPBU8Bu1zCSUYWPg)+&`TPgH*~_EEqQYoJqK#FzT0H9 ziu>-E7MD@UL_RV$$GAeD8AQ~mRs1DmJrEW%eJG--ts4(Q?+Zy!ijx1jwCixT}EQbOYn3=dL@>I zdTUX}p+gFn*6fZ*5a^fsa{Y!5=Er>1L4@+;NsOF5bzw+Qb&~TIJB-g*&xhU!*!dWSU=Pk^`qSwp!k|`E`v;(8&`~{+UDj_5(j1uLmqk>ZQ=mDak zO>sB1UG(Q2w?>kvgLut@41;Ah8}C!aQpt->pcan_x&uUIqC3WZOgf~WWJb>Lgi;`O ziZ20F<}*4Q55x4xEMHhbh+ zAt6OdBiI)?4%xx#q}n|NTp$=IAaKNlR!Lr02E|JyRJw#bl5+^O|7ja0%I*65r;vzb zs<3>jKz5u!cib@TYW^7HPy&FR0ZIaX*chd9!b^<%PplBQF{uswsgH#;ybWUW2oHf4 z0cE;|%OG?W4fJ4*vUCoSk+41Om2|l^F~JyNkmb=Z1EPy1@I5XRmJ7723sys|do`(D3uY&1m6@64I#+0tw)APA2J*ok+7> zB#di-ss#E2qDV%}NgZ-S z;-ZRE7HA6zKo$BMg3zF*QR|R2*33e433OHrM6264{Bn!UByPA(76P7Pmoe)$D%y~p znOlv6&sI{D-J7O=fb3T$^l3P@TtU=HDpNJ??hV&qL}1eg+7@B=admOtO6## z4&Z5$H5$1#nrAaenN)dt`N@JseO5%`gr!GjznIu{3n0;|-D+d{)p*A4Hx6qxZj^&6 zyq1F&q#kX%!pSjq{4gVK8#>bp)lTgyny%LcwFnzK;j~9@*V!b~gFL-55cA53h0LvI z{8dJmyT^11L0;dGa4{zC-UepTuW*K8wWIcX68g+wV3`@|RX)EXHfjI0siGUfYIicTjfD=m0VDh&1GQWM()51tLF%E`;$!H7i`QE< z791WwOW5qDncgv>eAs%N9~3duBC=eET`}a^PiKJIE{Xk^ZShk%$$5(0c~$4x^f^A9 zP14FXF$S@@0Rn}0@W;ReM7QH?sK`{dd*P{Az*kzIYs;K;f@;|JP=hc7?-SHg1c!Tq z52#c`=@_msdaVHU5Pqo4w&7g<3uLSL&&)f<+(T;9Cw%fJcNNl2n+Zoc>12u|FMbZ; zBRTx-dBWB^LN?BxUl+yuIWRY*arrKi^pUlsRCxf0_<~3O@GErj#h-_NSGxD#^11*2 zTYLZ4kk9`DQ2s(K|M~r2cxC2y_RM$DbM;#_TTsnx;_k8Zk++A-i$%@>aG>oUu8UIxnFiN@OXK>LF)p-q}kZa z3jj8!nd~)bC24Nh)}H?k%*}Rqhv1@JJILtWPKrB9$EOC@rsa%+PYfg| z6!r@~FcJ?EF81?CP2oI}4>ryfGUmUFfajDkEYqRoyim?RzMxxRS>!fN3zr|&NwpZc z+jJrQWhz1*I;fpd?4;x8sDS{8nx!bdx{A9Afs!h-^lU%v!|WZ1BC6Xlz!Z3TCk@+FkX54r+TC64}#X_HK3y97t&V>DNHr0 zZ@Hf!%f##tkehx%!(m&?^mU0iG`c?)XTKc_`rRj5-9r|MaJdKP&X6r-1ebAdYc>^{ z<0Ka=f${N2{zE9d-$L-Zno&cdrtrh324m837~^q6i!PsTyCjQo*cRFZJiEx2&m;29 zt9h~RM|H}pWIH;5x+P%-Lc_>YB@B$^M0}^mPchP%mZ&E(YGWW#^|0=|BZS8gfgC#b|qdvGrqi>c`938_bXNm5SUj zrp=AnNd4XcEeOXA2HS1Hal!Olr(+Rm(%`)i-v`uFH_SjW@&cX^p#FZZoS`kzQaM6S z`eAW5HFRNvaoliyJcVlS4sRBTdR0!nlA<@gJqM`@230rDroJ9``7jrb+jv1j$ml7b zY%Hk^U||jy^f6k`AzY0?*iQVuweL(MOD00RNH5aCa0^b@n{~C4G*6`G*({u3H_mLz zGhSMsUE5rDb`3(O7si+VH=g_76H!L!w#22DreaGNiG#i?P)zaDFb>e~0@)6iBe?Qn zq$1NoZPh`TFg3llKT+7sYFMZI?HOywW_?A_sEXoxmp(g2k_oO3cX)xwgdFG|*yCOC zB^^ph!=H0BkK^=I%^&P9w?&+y1Y-)xr|K@<5bQF8cl+(;^4-l<23NBHgCztBjEf?!vjv*2`>x1`ygx#W~vDl=p zkzWWO5+sfOSu3hnu}SmF!)w!oq5B~hy7og40 zV5{j95UT@pt2pJE$+H$Ib9K2;3lu1P*|Hd)I% zEG1Ks;9tN{EWkPYNk6(mXi8&gC^|31uap-*#L3ETl$aiwpmdgPG=3o1x|5M3USn?1 zfo%WM1$9dLoqW21)}z&;ak7!GeLqR}oRs$26y%Qd&JFbhN{g^9mw9D&JbTSWakeBNscvT~MI9kGpJ_4yqlvA*vx>I*rU%Z8BD{qlqE*I3l$X zaUU#Qiqc3pW39-A^8yv)w^4nf-6^p6T7~qwY#0Dm;3-wbn7<^4azq`L7|H)2?H$7_ zVYY4Ij&0kvZQJGwJGPCEZJQn2NyoNr+v=om-n}o*J>Nd>v(I;bueE-xsyS!P8a3t^ zi6xf{)Oi*($)?rDFcs?6)pk1)hFM6FO+_m5I^4)ilV$#z5()`s8((JVSEyx{Ti>mj z#nV``L^mQ9*xTh2FVnKk5{@D`u<9DM-B%HtCf=xHFtty(g|dHmC(jek;8JsHpWk^k zIY(ki@r0XvR4xL4l7&->aCNWNPcAuo2c_$lKY)#8q9BnpuSshE%*A@((L?`$r@Yrs z0(~G~XHS$d5~nU+YRvOj^!iyo)^FC@SD%*ojV1k2!End{osiL?HC3mhA!jLeEZVx! zj-GRbLR}loRFX`8=Rpxj6L7me06OSshngk;jerGWv8v<*bC07!q@S``=~8G=BWN+^ zOkY2_`12D?9)|7EKxGJ`iFlKp!@$wK5bCGev4*zM3K9!C3oZ?SVH26DBU!O# z2bgEFe+agt;VGfc!%z|dTiW!!$E^lllFC{LJ?zS zCeZqNn)H>*xv5*?3T4B-I5#$>%^O!6LZrwe=%0s@e)4gZ6eb!c?as3y(HjkC+2CzF z$v?9=%wq(-x8bC=#kQR>DeTn$s5lq*oLBs{j>A!uRfIH(tg=;9eh9vX zd}=bFYgS%WZSI{@HN(ARlpQnJDm*-V;{fNw{l=6BP#nhRt={L&swu>WX_J8F?@sEX zaHbUwia~2l^A^YuRA=T_Eb*<}mBLd1)WnqDqTo&MXyFMA^5aeKdf*AD#KLzHGF}%h z4}AB@EXDQu8a8uRH>~Es+^{YRoDH@C=SahYdTP@MRBBi!l~_X>mj$!v;W2Y``u@@u zlX@Ewq5*bPDXVS9dO{j#(w*mZ1;LXL?p{k`+&muP3|6H&BhOjw16Omp5(`584Z@`} z2569$b|Y`zbfuT8ccY5Ln7CN~DMYZq4EtY1BbaUwD@_yYR#o57NXvHViRj3l;3 ziO+-PB>N$s^Mz6_OJQq$c`}AhIm`$#a54#;HKVfGWkit_juMR%9;9gd#0Z*A%&wxj z(RaNZvAMGa<19}wrF-fUo`ym??#i>!=j7eOiKUIg4TlDp35>lBG>f$P*SP&cv)~J< zplDa;HtC-NjZ<*i1Ex|n(^)b3b}~`UW4Mlb*bY6jTIeFJr%8(XSyoeH8{VqH=7&8< z$+5VmSZ-M5>Q0f43$B@3U>GQYzstM6`R5woe-a8PQVZjaEyOFd$>QxP`gKAa9O2~G z=|zzxG2}gbqoc%W=>MRE*0>B|&|QT1^XlsZ^G%!H=;GVZBf$HG>E%ta8O0P3F$lt0j&OL{ z)h#yPiS?%|EsuPFP@Z1+{ZXvoc;gliCFq#-xaG3fdEkmzmFMJg~?!NglIb?>j5*BwC>Q{i3VrQ5XUo1>Xt9J6)tnA z*Q&b(7y40g@L`+B-)k7c2$z}{9odPRSc_bN**VSxRKZ1#Riy2Kf8K0%sgYIX#5U0kqBx^r+|}idK$OqygED5N1X_m`P1twaYKN1y*&$6=iBblgsR1 z-nAH%Hl&;*-)3g{_)Q*f0G4143i5%d^_RhJ4@yQ4gs;J?#enLI8z980%8UR-IdN17 z!76MC!rn7BZ1FYuHJcKO<%?5kbk8$c56 z!d#)JtHi6@@xr;5c&O3^X$XBp9K*8V`i(`6Mzy!R8LnZ&6#|Adref3e8^cfa??wsh z&Eb!>9U>Qw$D0KhK=n`uAaQp>Nu!}!FI{QEPia)|Od8!$+^^7)pK6U`%bG9mv-Ajr z#0JCSujqS@-=Mg{S)4j z5*fnO?#SwLI1@QTTdM~2L^fOoY$(2{waa6SKldt-q)@yzwmnq&OagE>zf1X zQot^0K?)9;Z}Go0E05V9_Cq#S@UsT$6jZp=@KDGWv}4C9!JLdMT8WmO?%#i;<8&~P zpjA|5kbRSmzz?RuTKPpsH|Q%m^4^V$=Kit-yCujPYI#sOTt#kk(>>YEje}ZDnX)8R z0r0JODtL>>T?Ipx8Fw4`ecgV(#AiKJngSp>tJ3?8u40Z)Gwqc*$lxdB4oZ52LdVrD zUT5#L$gg`5Kl9^Y4Lbn6e%d-9yR1-=Mo{0j3JcUP`dXL_>~qihn(M(g+pqpl`9%Nv zug|R<5xZwx&yrN%+{p=Aqv8rzCO)N0NB%A}HbY*G2MP7NT+LBGam{XpvrinF7ZKV7 zzhRF%0!`XKQrLemQpWune*OtUyX$Gy{6x4M6yt&xh<)1VbkLKIP_h)JD&{O^6acr_ zl(6I{V5bqycC})5NSrWk@zOWHKiXYxP3j>>kwI`FQ_{P_^G|K87k?C?b^6I+#!P|L z_Zq6AUI~6!EHXzXQ6v*1tFek%wBrszfBB-T(Rj0P<{PHZktl(U;E7no0+AFVr|+Y@ zcClpMyw_}4v93P|8322*-*qGrRq$35`phwF_4yBI7~v#qCjSc>mcsfwXjt^W)dg{@EV?&z4wK#}4_+f&xBuGo`w*n4>DSIRfqbrM8U`ZSeQ7BJwbD zvZ9)CN8uKF^HKc;{+C?VS$7XcpC<{de3T6CKO$!AmnmF(B0KADPR^dH6*JF zo=R*1wm@09W2kJ%gVWyTM{x)d&VfYn_+Sxfb!dOOJ~t8RY` zv|c~S1#@L|T4{&{DJyTv$`2q*HC_OvylVw!PRuHkY0RVaNJSj}+^bHiisgL5<}86W z3mIVXwj#iW#oCPin#qf60I^j3QYGXf**wU_Goyo8`CHtU;lC5?|BUNR z9Vl;9wTwUAMG?}}VvqsBpo$rogb+-Q)KXC)f~0XEiHMM8`Saz$A^b)JM4X}fQBip; zQ+y<6ocm1uC%U)Ly_7pqV<%H}=k3F-4Z|0wF<#dbmBW=+&-!W_8fqG)Ja{kBJ&Ob% zKeuo3{#?6ndo6k#c9~Co`-RQRAi{Pu&WQj+n#BOfhXtljs)LLq(ITZJ4wE74Q}^p?i}#Of#zykdrPj)Z2zSa3IqLR$s!O*@hZt3kfMC&RDI^CkGSdz% zA}@{9qB59gHzDg2^)q+s_OUTn54teZ4nJO4fZ%LV?j|!=4pfkCkQ(DH9UBG(Yp|r_ z+}~h#s`rs&aTv3_uk@)~C)bLFG`Zuw*UR;(W3e0ZXLjiI;UPCmt`XQ}q*fUE*~R^Eu2N^{cKu;((sG0F zm*DFW*dRhRd1(9LdE;cpJDKqZM3@`%6odsp_zC; z33dpFBp=)qdsqOV!^>m<=gVI#&lA2ph;CMrwTPIqD!?Dx@~N#Kz!pW=;?WX@y0EygwLQ1CxEZ9lbp-Wh6&lnF$kmpK z{WSE)&Q*96wd4^AvJ5*}Bsp;P3I(x^UTJ1cVQs{7j%~N{x%y>qBZ;?XJlQMAi5%fc z+^Z;}X6!=}pFJ-KEP;(wPebj66nwNp$dtBx1XqTq^v56j44_Sj+6=~LYf!^;V7mP% zPvrPZ22+(M3?zNmU|j05eCEJKU&A0B z90o_uhpe2lXniNaLW>Yp$Ay;}dA`BA{RbRh7p{~?Bsa1$-&GiQ7~|56jybd7@h_pi zo^A(iGB#l>E9}I=MjGre_Ycb&jtTHg-~ht`yxWA+^bm*iy}h{tZ?mMsC7XA<X-ZbF?u#;3f)qYcG33$A z7Wa{o#7kcepYAFK9?_P{aVt6AfjQA+RK5|e3txw=nIOm8;Rmt`#eA@^0B}__EPcRF9g$qu06P{9Ttdg-#4ggXoy@5@{YsL6@W&)Q> zPBh_FO=+WML*GC*6VJ@X6FxXFwCxj%Tho?QJb;rMSsXLNwY1}#<3N^SxtwVx9-RZ4 z1UHJx(a*X=^`?DQt)h$3UngE>rp~kdKW&3MeEoPrRM79h#S4&vvxu@4OK^l~G#m*{ zORDqJPgTEYr=5k*0cceS zP*jQiYiYq;g6U3kXT}n<0pYUiV1)fyg8kU3AAjsyA`REmIF7`HuLRvGG4FVC>+x7; zHM)QI_NK_N;-DVk!QbwyM8-?Kt2mMmVL6%bZol~Nx*=s-S5Nzl$LF*bZgQT3+&wJQ zQrW6Beq42@@8l+IMd7+=TVk8YJdAa)F`n6v?>QG@F!b~{WiEzgg0-w4TS2o_C=ROD zF(lFv_WOv;*$zl9z+u&il}(%AnaWm~`4CDu@WK>ef%%UvSj*Csr~9u@syWf%m76)~ zYMzL~?0SY?g}`zYq-`h^^SkI`s$-yE1==s{EA{W@mmwi~T=n*vLB|2L93uuk3#*w< z0q~4fr>lQC@q({A)5BP!B35VI5|8m~>u#h^cw^jnQqU=3!ed+j(}Nk6yRw@htNjtL zMsA21O5ZHc*pIw(6pXEr5TGSuu)rrp)V5Y8OOb@;{ZF$ zd(F!+$(%1LpgL-M9qP@!7fZ_}jCfoGzP6f)J+2puPzR@fxojj^md5S~HxPrBjXiZe zp2c5VcLVE;XJs--&XQ)tW)h(iYviw=cjfL83zwL?|8l+R+r+?bPCv5=b)lje%>)km z4L@$UiM56eT}N5v+3tIl#uC#vJYDfg$&Cp>|dusi+}}&RT9t0}qf}q^$KruXIe5>{^m+K=!fzUJ@rp*fBFjac0}Px$f|2d31zI zZ!|1;1L?^!pbN3I^RU>jN*$%;&HJo&eHj%y=8Xz{f?m^XH6o2eywmm_T;)hG5+nFX ziVgm3=9T7T_rP<5D8l{TdlfMQR=af?FrLwGK64W2Bd^UMYhO(L8ABA1w6tyP0#Ulg zQ;t;XFr5V+tMDg0WCJfMgx4}MwaZ=cA+mXVRT=CzV%$wwV9QP@VzsPZIp=5aw|wpo zm~J*mLGRmsWM9$V*uE;r=+he4H-~6o(I4@o%2ww3#ZoU!V0QhnG%rw{KH@(s)ppoh zMS2Tgq`GZUteuK|T zwA%&U8SzY{%k48uxBCI@i$T7;_$HFuUb-+X!~$CEW}a2n~BU{u*0zf2j&ZA zNBttlOSRjA>WxaEvP0*t(`QHXg7>>Rcw6P>owIspANE$JM6L?D6Q-x|;Hp-P<^_~r z>RtYf4i=!~ouE!&9pmW}bg|P`LUK~TiVhtUyz;J*T2AW-H`~*i2o}mJpmIayo#7)( zNbBYSLVq`mq+Q%jEQH|~T@F8#O63ksfi+Z$cGD*Wm8)bAovU`k#cS*!Ax953UEkUA z3&5asgUhdQ+^6bQ=Mu3mFAKyS3Cu(&3Uponrn0Q91ELZ8vdtWY56%bnxnZdTWE5{C;Vj8r(-KJMos-J z=Xbyox6hj?O!SPT%`sfn^QyUfu>iG<@VbQWx?X57ONgqGhLKin3ytE1R0MKmAIgos z>jx?rLkjwms_S~OK-a*%im;qD$rjpGgAn&&MUAXi%bYJ$Q+8%^kJoJc{yR%j@w~nx zV+tmJOenDE+0Jy7gzd=<%^4N}LPT|iLj}2h5uqebfpOXU4s{#k9{6lmeIMFxku?V3;uZcUKP)qqW8RctJ~wrwS1|RfWD(QW=%Q4hUn0KMoES6udi`x>bP&@J~+IR@!S?@$bmu>_oXTVm@LST1o!)H&f} z?dllmL6e$>oPT`>_Y_mEwtoXD78J;ICMV5}MQf%ukYm`iIc?VJig|S1G**@XfuLLPB!204&_e*FOQ?mjo840=>NM{iM_0tr%DPqLbg4t|yv$9R(h} z(eP)mu8Dt6Oo(Z}$o2iEqBH@t`~nW1Nbi)J*k%F~M)HR1wuJ&+y3gD7K|rbq9Zh6Y z_u)QiQ(H`|wMUMyt`5nReLLvmaMl?AVYj9m9i7cO)NT6xiPHQzZR(01IfY1_6>QLF zQOzA1-9>e=k{^z2RneG*>5T{>sP>ygE2P?*ut+em9_Z79%?mu!2#F|u$n~5yc}ir5 zR6LP-JbeoLxfknCs23k(dtNI1Vpm@Lx*aBNIQ&9#UVM%l_rQk8{rIYKwMkk&u*i4H zjZ{WS+LD=@7p|}u?t^^>I`=5@K@tK|_k_1f_o$2;LnDiZ9OfJM4A3lp6;H*thp5K5 zjsp6_xo&FYd*lx9>v-?$AldnSL^{^`gFeu(m6akU^w1Ml-ok#q!Cf2*i$+qP4thB* z8>u@e#h;qKS-~>HlXGSe>J*Y%Jo$tbFcJ0b00;G0sWC^9u{%(zaX6}R z7plp&-;HFc1fk};TzGBldt;SCZQfktho-<>3skKWM~bTwa&DJTNUud1ZsM>6$TD#)vY}@SdeTza5 zqMKoB_Z(_TH!ciB+j9K)*Wb?H55;W%fUfJ0$W>R?J$=r1r5Hw3N^ z(;78Ku+Tm--;NCHiR}fYpd~))9s4)ca`_-^hef^KE#gKCA;2z zPi@;^#SIJ`n66NlQ&~-Jp<J%3@Xs4H#w(3LCHV59N3wWr~a(QQ=Zm z#{NXP8C@aM&%;iezzX+{et!$Pa=1Pe(D_6{7zHF*QE5)N^I&tsL`E>VzJ?juzzf7F z!47+LSD0f?lXc4JnnKx0LX`Y;=(yz_hST!wtcU;#=0n(6Z4RnqYwLD`DV@gqg{9zFfYW&~v`KzLVAq?$KE82s@8f#$82V)#W6#p&0%bR+!Mmui+LmWEo^6^f0ax)Hc;&Nwb=nM%iGpV90w%0<`vJ zd0`cv!JDJ`nW!0|txm9Vc6|v1op@w7nQTRBMH2%z_+};rU#N&Qo|YVlHdWHH=4*Pi zVTJBLW2hG=nStzqm0h*Qz}(>vQ+?;B0N{4YNtfZvF&6)mK-@Z5^@!A7>^fZb2%0=4 zT_~MF=oNDHUii9<^BGCU>Hx7DJJpMb#(LOKyw4zw=gb{}-JaI|x7N!50VcipEMLS= z9ACM$m{Tp$!rMHdeGcBlx7JvH{y#0O1`T6>5Vh@;Myn1l=@yttopSu~=PXlgM39#= zW~O$%C!eNvlZ>ByLn(V;dgeP3NEVoRU=dfho)*n1Yn)B&P$PmD&G7@<7sdLtLtcPa z_<+3R1%2h>1^u60a)XhVI#QpH>h#Z$9e%q4ef?Dg=%0C^3_uh3itDNU zC&b`EIx$YSs%TAiL2Ihb2!Oqh7H*<2G6LmLX&by#NR>c zeE$~8_@6X>|09VyWFyO+B%*D%FXkqmeTa1xKPK`~$&#L8lOx}JO5c*uuOG}1)zbz) zDzKsEz^P#|{;(86Zyw#)suVO~Nvofq%-AOuX#-?@%0V*SbYnfsl+p6t5x-kH9^8UG zP$v-`kmQ1HG^6?%mvw&6A6c5o4*BIpR8(Kk%b4WHspU|%q$TT#+yJ`fF`d$VDtYRj z_4}o;e`J;b#i&(wqWO4ZDZlv8IIrUUajQsOMmHva zNX#!IM~}KcPAFxHi`$ga(vT*KguoQqfn1^@;F7aNBx=wW!)vxZmbmYlu#Xvc&J*=o z=GQ+aNVj&eaE-obYKLF2@qaBp_wT9b|BDBaWMw&pFN<>@H50HNL`4LBwtz^SXbK`y z%YpBbQGvmUqsp00t?L=ZGA}mxzk$AZz8CaBXt18&OR_!YpO2cZ32N-V!PglR+2tGN zkHj4+1PVkB%K$JViX97&VR6@;lB~9!y#h0#0rVldotWin+kNOFB~*HcX^e=C49Pl| zVbNJY&tGYD!-~oz5wo(QgG#1n>)h)G?_B=f-Mz45_ZA93R9YESJ2W!6^ zK>nf@I<EG@d`@fZd|IE0*OjL~k##aAC`%Pmer3V;Me<+v@#jt$Bg%P&8 zC~=6lPzOST^!XcxUdZK?O>nmJ8#dAA*R`*n5$aSmHYZ8AN9 zlIPTyHCbQ>1Uc6!TajfKDD$Jz6!srVP05cYxwkMLsZbv{|QbUSR`u2 zt`Q#Uorzrwp(hclWOJjBeL8p)ZwKYC#XY`JE`R-6y2!5u{;v~4@ZVb8|84v7FAe;f zRLA9knNYjb3_%TEmVQ+0=8?;9Fry%g5K1$W1M_h7uS5;X%Sg+-fC&s5*nc_uC=E>+ ze#=%ubY_xLu)F4Z-q<=lU%!X>merdBqyuh^QyWCMs3eyw2^y{2bm)wyA|))B%Ax@k zkj@$jUo4+!bY6Dmxc$KSOt}Q%o!c<7OMNOi5x8$kmi!An&^g+D0_q#E>GHh~+8N_? zr)_gBO;sPJX@`Cbw94o+3zDiM$xn`mIxSee53F<_TvRulaSWUJq{FR0EBDg{?RpK3 zTymPJ0y|F9NC)B!O(Rr`KZ98&1vcQ_owZ9AoE&(`S+{%9edvJ-c2G^FS)HJ!sF z6+q}gU!^F>$NUN3n@Awxjb)-t@L^dP(g%dgng`s1w4{jy8B2RSK90yxAd%x1D2r!t zF^TjscbvmmKsw8Ak!jBtBZi>5dft#mL*kp#M%wl5f-5H7{@Q(ia0ceMubsF2TRynd ze{c8yw++z041;8OA!$%1#7cdaf{H-5nmxH74Zdvo1!Slz&*q*)#Ot1i?S9Q|z`8X58tV!=Pn^a|tRrM8$x~ojXYt2o# z-A{^&?_p?>3|tLmA1nyFCfOt66xrDf>KDoObzC-HAGQu3v4lE%A%bZOTfOv4Y`t4% z?2IlPj~xi!|6rf8gy1+#f31k;SHx%n>bJP6UN8r7?!~SOZ+V9&7;}4|n(lV=PhgI!c9h1*D#Gs`^^y&EFN2(pd~4k(q4^JmMw^%7b1iOsZAcOh zl;f{>K!xb6#lK$L&&S^#yfi}KiV@SwA!05sSMn>~M)Qy^+w=l-P~3IaFU9jOMVt6e zc@rlGihr$^JeZ8fw5~_bgVHf_;I1lU_n$1udKm zism_HL_M%8TZ}eePQAfMxDs>RfT>r#sl2!8Jy`dsUBsr|8%uzp$HXTp5$-?CT#rfa z6tJ}p2W^(lg_j|bj=;%Uzs1A$x1x+5<>fBsn4ngey~jN8>Xd^YzTVzFV$6k0G^P8N zS``d6G~MxLU9hrV)$ z>%#ASBy?Q2?dTtX*o}2vasF8P&QuG@?qd+bHhtwvX16J1TKYh}oH)0lt3g58v+u)@ zjjCItOmX9|!8dLV;czknr=hp;qpszyeGj?yf$~Z1i2dW(cG(ovs+&Nxz15vk#@MJf z7Ibi(xqe(LtN&c9(pYKdPC%n6Jeu}u@0^ysE_slwlSDDCa||qnqS66virL^wgmQHj_z!-^=P*^iPNtz6r|b z`UM{CR|X0b-GDc_Be4U7#$JR9NEOcMtrqLjl@e&09^v1@=dkoQJcSbXY2rY3Ga2XQ zj6qt0IvBU)Zdo`PUKIk*?8iqI3V>cl)yK#8>$&zQu{WhpKl$Is(C=xUT7Te%_)B1D z-X%Y@2rSDq>J%t0VP!X`_N|d`y&C=BRe23Tx8oj()M7EO+121^ck0Ng?A0O~xO4%e z4UJB^;~f=M&lXG>!78(+?<5hnQeLKHq^tzrGY*4~1SKFfe+*i^OZL!WLCtjLV@eN| z4wh2yyt*MDi2AbqiN{_6wQ_}?nA;&zU107sL5B^9J%VPkJ?`d@$HpRG=ls@0cKI4WPF zb%R`cb6xYTjdnDfRIeD47zzlRGLkT=GO#aVx^>9p!ld=;1@$Kln8AzC?~7RE>nk%D z3)-cHdd6p_uij^aheyEA=N*0ro!x0hX#xOu&RuO5-`j*sM~1iTV$C@5{DZ{$3MPby zZX7S8`Ft&gaTKq84A%QJuBP(Weem663ht}$Z4OB@h`^0#G|_r|^B&-ry&rhkn|#X> zVV0~O^(hDDRkAsf@+tFoxfTWL6m8{jSH=q{I||<3+6_m#E9W+fe)p_}-vPKxl`aSN zv4*BBquz$)eju}XJP>5>y9o_r#~j;iCPQhSVFqE zQ@gfp%ic0A z=|HQftKN?=nlAS=$^vnppqC(rbD9M%@wByKYO$2I#0pA8)x8##-{LWxD&;TGo}SU4 zUZ<78CcjT~i+PB)-Ngg#RBy_n(njr8@pK z*@MbA&*^|4l7c*z*@#F;1qlL!P8tymoE%3SCz*_gjACw5;yAQ8aC8gd4R0-2y94q< zIe^DwVUhTg3b5biVXLJLOayYzyJdicAust3r*{gvs3G8QW_a3PMchR)oy3 z2QWCXNt~!%gW|(~XiYH_0Ixc!B8^rbh6$}E2=OJFBH3b4S)=uCPDUAt(Yd_DjX2jc#9|{vHqPnQj~#A06XU=oEgZ? z^Bd0%q}uygtui54JOWSM`$@>%0rf0|tK7S`R4Io{sFWmZT9HdU3Ugsvc1r*G5Q^m1 zeRUg2U-YKb?E03~xBmR**&aR3vJPix4Mk^8H*;*(Z7+vvSqO;?!d%JK9v=fUBT|%U}- z%enl17~IXEYPj4__%H}0QbMLTND>Ng)3<(X^ieDf9{j1wT*hRbdZe7X4m*^8g?w!( zLOl!nj<=h87b7vEEyA;59hAve01pmIhaQ*g&+FF9|9~dqtEZ}O8^fp_`>2up5PU<4LI^Id zlRk&m%9GP#81W0o_4q*wp-~4v&>>19;Gm9~OBefCqXI4mDEkby7kACSLmGOoJ1~On zjwr4qHKa_=6(kM_elokFn%yc$lvVnTm*nH>53kD|!@ zy&LAQfE51QE7QMc`SqUz@}H$JTUGDN1_YIFJ)}ggkPz56&wE5e=f{^9NL3z)bBU~k zL@z&Mcd&C6V6G^U9Qw~FgwJd*grC2_*sX0w${adn_eNKn*K=0K^TtJPPmeE%=70s4{dL?DQ-r5(d8pmJRe3!q9MhttG*c!^XLSEnl6W&J& zqYeXYHRep$=`(rdYzLd?zI;{>blQ(OHyr0Lf0&dFG{g-rf?u5Z?U+7Cq`Lq|r?ifa zXUH(_hnwswzE`^B*r+0|vyG*wUynZwuEPBetJdP?IK2x0INQ zzNd|}G%{?&;IPc}Z61~J4WdG4veao7^WJ54!wSK!EHO)-w}XdoyF!kv_bIynX| z6#yAlMkALgMD;oqfZ4Uf4*ObhuaNt!5S!iH#TD7PkVO>IR$XjO;IN4TMfX)Dq~-eO zClbj|sUiXv@{XyXrC77N!B5W7s-l*<7Zhr*4}u+ntOpQE7$w!KD0aw0zT@$uU;&Xz zNlL`?pu+6ZdlVUc`;$UUq`hBG02!S_h}*Z!o-oWmD#=Gjh_vMsHTy}W*C{W-KPmAo z7v`r1=x->}rGV}^N3i03XlWFuJKl+I`H3ccCJWC~U5p9H{ucI$=p4q;a-cMLFB zh+j*&OTu5)!_B?Y$+?vv(_Fwm`C+W!vn>3ASw) z$&>n3e?}4BsPc9YZY07RQi~4OpxGceSXx-_d8a2Fd;a`>0o$Rn^w^*a+|@^F3vaWV z4C2LSKJcb%MS`8SdW<1}-xR`x2i{fYgiXf5!cwgKEoqe>wT?D)<4f2~jAAisIMN9( zp!Do0L0yLj_b&Wwos&P43^Hhg)-ONrwYYj5x&haU-OBUfvzsYy1vF$fZPggYzMLeT zfiBXn{){P|J#!o|+|*dC0*2K~>Z`qqNYR0BmxIY>eExHRI1h4J)%gkm>;IA`c z+R%YczPrHyImXJ#inGhp8z)`!QE0O#slDk+BX_r_j~rvQ%g>STSD6PtBQ_c5x>piX z8nbkdjmP_M4*Y6*d&P7e?ZGPGZFi2^5EIT$Gzw(=eV8c;W66p}KyVH&8y--s-J%va zA}k>5x$XqfFh)vtW@Ly@CS03F*R5Thq8{9!=bY$VXcJw?!8ChK?}`VcxXAMz%BK4~ zKy6JA*a@QJUp;}Z#iBIQRb_9jReROOQjy#49BiW=e#~=m-w&)N z4%mGPdBe1n4kX5#4U|*uf?o}EzhV5<)d~_i3ZZ<3-SFSe3QPb0>T17kX8#iOs!HBg z{wnE1JvJi1#n8li2B4^9je?YA7>z2!K%Tp*c*Tx`a@elYjB;75Lf$l8y}d95zd{{( zGlSO>=9c;pSb$}(pA;z(Lb~mtI=*`R&s^iTwByrnJ5$+-?4uj!|UrgAH4kD8lh$p zeG#GC#-PM0FCZ5ivhG;R%aqOoSrj+gWFwF|lzuKUQnv6!zj9E4=+t% zyg2sqTx<9!t1Un}%>rPC)m**jVLb8&fjp&)>BWk2a<(uRxX=%HhB92*!Zq6rJ34A8 ze*)pFK9e$vtHYxoGs?5$f$xBmf0IJSE8s$rEBFrNpysAQq@*+NO0wWEl zr~=RogYH~!73tZw84FAHI@m;Lz9WoFk1^5DNsJdxU&3QBpuDez%7)5oKyr?4PDi~1 zay~^B8C^MA20pXKTrMgh`FV466XyPB43Q?*f=o4wz)vhfp&-RhB0`$H!x{M18wx>Z zAgLrRurxj`5R3?&a1pW%$whq1L?O?aJVY)&Q60||P|!uSum1q_rkH(& zKN@2#RYzsYjbEcK@qX{)^;G$=yzTcJ>YGLY#V)CLVldQ-bT5^=V1aOf^d3>T4f1w^ zyXYPda;y|DQJu)17qSA%jRp{(7qiZRUWs2NMrN<4^#Q%T*W+oHvCqmr5p zPD4I9y1l@LrbPPrs=(y(rw#b{Vf*YD8(d-eE$&Y`k?GZxpZV3xHuDGV$uw9;0Y>bq zU0S>cF6+z_&>YW;+|w+WR`$^xXfPyZ%ua{LW8HiA&t7tr5D}JYZL7*IgUWE(y|QK` zD;+mu*uj2p{x)@5nN$97&IGQ-(n=0dRGh zTxF7tQDrXlVrEQk$;sr#$C^`AiUCv!lVyZZ^AE$81UbwY`>Ie>yA%Dl$oKp8yvKG< z@uJO3f)BEwi`$QVvP6IGAPGCu_nR@p{YlqC0?VM@-9PnYfzrx08m=}K0NfL!?%mbY zMOQZ?dr*$0D?SC6MY;WN!+PX-9n9T>fuXA)I?GUnD;uB~_s|M!r?PQylWU;S(qa;r zi9+O@nd`1qV*TYc+CZkGp|EnLhj*-H4ky9zZTgtt7!u_IL8bj1Yzyz2m7Ac;ffek* zN72jA)FxDVOf$37_L%;yqwCFPv*&Zik#v;pj^`_Dk0gSj@ndZ1P@KN*->5@umOP}2 zmxotpG;YuwlXvyfl6FB}6hmTnjIrqZ$dF-}bpvq2#jyB;aG1U2jl!dP{4<$R4YfiT zcG1I;!(G5%IbH~VS)4pq^N{rIAI1&D;2k;vtr8?3=h!;TH$K|~Kj@#rn#G0(f#Z+M zhHkS$I>@m)%fKrLI$itxo^Y-Q>ru;1JsFN z{*5%e8SEPC5>{I!4i1(o-t@^WOxEB^P&Lp1+=wnh^O%sDI6_mH2WEb+Eoypde;%ex zrjW0xK|W|xf)IfsYDg%JJzP#2A>A<(-$mF4n?H2Op=Sp0z$A;uXpX1vTeH54)S zJsjf?*e$2_^siFeu?pftBhJU*T+dg50{##ss8KeIaTnd;!pr7kmlnRn;9?NtiDeC) z9DKQUPRz+4JCOUIkm~_RDV`E0;$jxURs3JF1S;Bi~|BQP3Xu+|dzx z%cby_?Hk+Nm%z1!V_v>Fbbeyaq0_81fr1Se!PwLeZ{0qpVIyC#7o1+#t=mJeLAWUu zQMFm9L(CPCbR(bSTc~>pT}R}d+s@zxQ;A1Fw$B8hC=tB4j+{6YB)B3-Xby-3sdx9G zQ5bvd!NYge_@JP$z$2$UD#$Ky{8;?>ry)-H24PpuSK}av@ONmg-hZQ?I7J;3&v?Zn_SK6>*kOM@7I5 zf%rHwcZ*El?3&=djWR1v@XX%TufL{N76T_aPALx_4OBH+uSpJW8JB@4ng?4xl8^Ud zzR}6cuc+^>ttGK?kvP!%f^x@{)!N;$Cg_TTQ=Qxki70>$L^F3XFzSrwDsIELtK2@geL2}Od} zKs)!aFj&dh@oavn#n?U{VBcOXs4lKxJ`d{A9wsy9slHw%W(X2W6Cn3xn=w!GI;Ekr zGLpd?2`R#{qdc_4R~0GD>Sc=yjJ!1{&U#@7O5=eUK?SBffmUlo|d^gGjo z?$dz!^i+(S&uO>#aqP|wieNo6Qr^IKqb?->f<c-kRe$u7!>%3 z)@YpP<@nL)l1jxV1aqmx@c+&2~NkSBJPFEo;Ndm@ov}0CquTab^Yn>Y0rU z$OEmvdVt`+y{ZZPzl8n&f`R{MV9PA0sKqfPBfvnf71R=cFR;O`Qv|VKm9FB&Of==8 zid@&K-xT|h>OPGGC-?`GCVNv^T4p|w_hKU3>pIKncw+PQ{x54Y8Fy3>&}XBQ{tw?W z&A9#oXuUxYG?}l7Vp$ulWS`7q+~>sI6k4UJE5~~hhC}aZH?E*&B2c%6W~Hh-Y7tT! zsPS>e2l6lQgX}zs(t^+q>T|BfN=!s#CSr?^XA@u8DihF~(fv%kbW6z)?`C8%NlvAMJ&B2q%pPee|EkP({kvc|2r< zQVse|f~!>0TY(pZoAbOv8g{5eDAWNGAC4Nllm%(xaN!i%64txtP>aiGf}LcUgU&`LcQJRv27zzOktIT#M>5Vqi2otv>YJ_h;O= z_gMq1J9;neb4a)3JAwZKL3}Aqg7Nksj>$^E zHH*@mi*FdK7A;JfpC7rq-d2tHU})@&<8#y%1L7twX2}T2Wt76c6*nlXTfbh*<1s zz_}NXkktv{S;*)!hFYce%7o)NS;4L&?nW-HltAWiCe-&nT=cMLPAwX1SB;4;FsH;F zi}rrAy)@hrrGtqsgp2V3cMISUm_Q^P2UjEI^8`@vl?(s*SEt-UG8)(V6(!JryBCS$ z|1wIHOdMS;j71BcxyXAO-41@xj4$zK93Xf>TYT;4I=P>@^?sDuaCi3fg#RsEosHoq2XYF1&cF|A z8$3&;c~gN55u0S^P#Z%`DopNKS%!ciOzsi=q&znn@w`RMHm4UKFr%>=$Kam&SZ}&= z{Oj!^r|p?Z`xQ4_yDiAT$Bc|%P85PZ$CZaO*NG=9yk-lHry^X6of*wG1qA!Db6h_6 zD^L{zD^xrj=#&(U*Yfo}7BNH%+LWtrj_Iq&lw|TSRJaF8BBd?!>28Fm-?66k5Lr&l zL-bKmBWhiX_Ir|#0trg2!l3JxIDZdWd)r!cdf?L-+;F>?A1dJs9{eWya8O`1d1xXk zW!32P+I@()79l2K`EmJx9jpMAqGBm|kkc49caeOrfaJQ5!v#1RPXBn{4s8#YWu@{( zY4H|2cEFHg_RuY%m!2MxoPVk2M$5}pw2?eXaNUtAzq1~V%9{K3hN&hy(u+W=)e>%n zHt4X?OS2B3FH)QHWGR@SzBJ~~vvMER&uNHOeus`^5F$uBc+D1jun4n7i6q#nD~&e9 zCK6+5wAAj5za((m`pPp5OXjMc-V{YigD5;OAh~)ucq!B{I<~jLBMm2G$7@Q@z>i^Q zIv50N*mkl8iIocw-Kdd3!Fg-KymMLk=CB%;g5$kr&OSnHeM79X8))$>KfcU%TP3{a zFN-r-vVOVR9zI7elrG zjrsJmi)~kG_Dn2+yOrVdUjSdk9|82TuXv#Q+p6);$d>HQB#$y37(u$q-&Dq4_**e;=*oR ze_6ya6cEr}cLn?UH(-H*@=nu}+spRFc1MPL1d9{Ah33t`RCb$AJ7unY{<5;MTU&!c zeyLYuq0CluunAZ%ABxi4ZrQ(coOrUq!zjMEVmIL;P!ne|H)Uv09Y;;ZoNsy%6!5%v zG;vXBt21=HFsP2DFh$4AmrB#tWw$gWO3<51he?Q;nr3b@YGuiDr%dCN>a5@9$-7y* zg=>axIxW6HuaZgGEOp#TDuG!s_8nWTgIU@|?St_SQJXDeYCIkHG8x;b^%ir6SR-FA zUnP8$gHE>@+>xapoA&zkOWQJ_JirWYV$+xt)%H6}j%qlu2!94eyTMIw+$wdAikU2p zPjX|wbj@MP1&LVbV&8L%dYXZL)gVZT<z664`yjCo#sItA3G7 zCOZCOZS;5Q@?l1d66G=?e-d1Z$lzjdAI{z0duXN~dN~9r}VvBFb_9R=*Wxm72JFa zCpTwTwGXQFO%1LPA7!^;TS0tLL(RjFqUU67i8;R1JD`h6tiV8Cb&xsK4heRs50T`Z zCf@boF$cLr<4dG&PpfNxtOsNCUR+`BPohD zZJ1XVi_i#PoH0$F=j0rZR~1WX1qZx&RZJ!*Z=-5nr$_I=%6y~yn1PKAN|(Ce|epB(r%9wTK~@p|_aRdatkfcj^y7ys|tB0nYxB7jgiVl^QY zWjA02H!>gqN{7e*<AXWg*NFTX<4%NB+bZrMxs^t z9rfJ)!7_V|gp3l;xKH*;7r&1ok|Gd9s$ZOT<+WLULr|DY346ZZh?iE-H4x7xRp0BB zs^&*l@Bp@33Nof7=;+2~UkH9raroV%L@ws+QT$;4p+;p0DXb{%h^(n)9%yvha7HWM zOfP%i5Ns&56Q-24(-FGEsTIGjRgJow-2pP_szHr3D#@)Y=N!XXf}e9P=?{59_oi@u zSj0URQIdH~wrNoI=33qTD3Z;0h9x+k#5xscKppb4yJ3n`QbCVPT7jd>J=|YyGE8!6 zHt!b+FyrfZ{&%hq(?4nelr3ybq%CYLoJ}16UHYTs|H~~0;^XJ=eE12z;f^YpFN_Qu zCb}4FU(YI?1_0c@x&QsJZF)QL6rEOI@S?5W&D$9>!E=!m{4np zV4n__RB$e8<{`(0D8hcfW?+*V6;ebVWy_+^0UpzOadaTo7&e#iz7UNX93J(9VrweI z%YGtDSO`yWh~E1<%_pB#Kw7ipRB>Hwisam%g?dXhk(J{(!;_l+ z2Dslx+3I0LMtKs+DV4H!k~~ZjE*F_s2jMzJ%2oX3{yLu2Q-_GZj;HHykLRCx)c((1 zZOR5t|Dlr?saXB%-FyyhwOXXe67`x!l43X<-n(%dgdm+cR5JZ~pv78Dd;K#0qI%|w zHXxZF#@CH+(&6U10+7e+4ar){@|sNZx|)1{dAno#DKTDh!ymw(mJuFIL|(#Bl?TqG zq3JP9g__N~d+2~AH=BxjoRCw9`J8;FTvbd*ufehr+;!Sk0hqT~w#UsHXN|&Ty5>H4 ze${T5(#T!9FWiyxKQMHecs93oN@cNLQ?E1eaK=A|p~T(f#eeoEONl%LCzP0IbIE5{ zZNh0qU{)<`?)L({Ras&_Pv7}szo9Xi3RBn{z{>y!$p%iHWsvu^x2q;w9$?;1bpcdy z1Dc?`tLO0obpbn-r*x`|g(oRyj}X$K&eO-%r|w$TM!u-*mRcU|=|aW?dm^>KWbJVZ z4DR)q%e+S>*meBzg;2}wU}ea0IB?i0W1xpxuo?~NXg2C!ibevT6CPKbCAOB>3}B(~ z_XOMih*v>`6mh!&M{2*|+DGaetcCJFn}ow&;4ydi1TmF7NoU#2CpDGOk>@q9;?MkM zg`B|3=3}zZSuMeYB}bD(w6=XZva{h1N`8bs0sNv*TJ437_CtaMdx&3pZ6YEb|1ur@ zFC9>Ii9VxiWZW*57m32_Oplo@8dB zC7J~EqPw`Ia@88pHE{YIh^OTmIEY8UjQs?tQ&?l41rvyE4x_AF!jR_=du7HiDT$d0K;vR4q3^wIf{iB1{5XI>Q}}Y#Qz)K{G>X(C#8J zH6ZKAloy>(zfBgRA=VbrpbV1Jh~f z;(AjXw=wY!x@^tRiMYRLV0l5yoZZzSUV* z`uOnsE4Bk!nid?tXqK#hOS5GAN2yoTz{=$RlYYOP{J&Tk7(8oez(wk|yWfFO6M+SV z-RohP!Wlv46vPO}ulJFb>SJv=Pr!EcP7(^>Kfn1U?lrHe=h7(S)pNX5A91y>Z29?q z0@ns6Q8T8V^>JsjtJ~KecbgpRCP|*M1UnnJh7dI1`69u*#4GR0e0k@@4LyO>!z2mj zfOB!jA9696-uqWFP^Y}t?k4xu;y|S6lPKF(n((W?IG{ilZNT~xb88@yXvAp>iv;75 zbah1ZCMX4O2%f~^JF#t-pLcEWp>)w^H&lXms8ZQ3&`bo$%)m1XIslr$qDnlJ(N?eR z_AXMwTf7guu4OBjr}U+i;suog=of2tL#;3=!2ko(De5w2!6R_<7@~BeVjD=1bJ=Da zGEr(H9iq{jHX5qhLx@416`Oa96pK(OtGt~Bh5)zh(C_Vv`0fvJr3!gIyPVIC4k znl>Wv_(py!*NTD|4p3#7I_0;N7fl#=!OW>0eJIhqz4oK4G-$Da%VF~B=CA)zKI5)X zVQ9x4jH6>M%;TJOUPYII46b{sV>~id!W~P;JPlIJ1C*4Tnp%BCJZt=XQ#98d&%=%m zD8k7$NHaKD<-_aaZ$N;7&KlDuXYf|d&tvX;PO_Y}F?h`Br)cEBb>=HN@iaWnZ>N;8 z!%A4hdv!dSINo4+!ac|KNAa|{01Q$XTTCo~Op8GTzBvTsOFJ$k=V!ju0IoF-BPX=$ zV3j0_1w3HX{h$Ic@)vRqBIT@ z?2$rwm&6?Yy#Ur#TqxzIM={_gBCl%DWU$pzI}y*~`aEu_(t5^P#1%=#5*Lli*1E~> zyl{jW!F5dz`GS&4R=vF^fsV+i8pV;&ax%=SGw?3F^JVoxZ|_WsDbbqe(2Y-E=(m!= zVayKhyNouwyllvYlv5_>a(_a8)ZWOm;+Q?Ax8II>5=Ue@U!=kKZ$=^?rL)Lc$BCRq z9LBXffqM+SqG_rdyHC~*)>2IWiFrdjUT1skq>p~QVyz3{?BwM$1_#QP*UnY>E;CPF zq6?9uNK!~nzUYMX#H#mJ{DL-0W?*+3u_Uq=q-K@)!+q=tbDm3qqjjQv&2;? zqfrE6R$=}Ya6)P7p@Q#q!`|-Hu~?_zX_KrwR5}X}+8NM{Jdc;rNjigV2jD5%Nc(PL zlv!spu!Uct_x>+GevnNgtfsGC$Mh>F{_m~mKYL3MaJI9tFmn3OjZpsgjS#YsvPz;W zgYpHoluG)Jh;OZ=B*PLL4l0h^JLil$7JE^-GMWEQJS(b(xjM=jZncRvW1%K^z;gr-39ioVMeE6Cok|6|fZ12kg4^{ZNV$I>w>K^(w(T zZkJ{~^qO&!*3VJt*RJjp1XIETO|41?+00vcPU=@Z7yQ!%r-6mno(5$ zdqyGA4r{@72SY*9WfMmCYn|0WJ7=DpH#CW zv2uk*&te5ZWhD{CG{LKbpz&H#vNhf6gz|Jpy8C@&*QTUthbwv{f_#w6OZAr9x4$-B z1DibSo2WK}SZUj)nZ6ZFMv$XkRZ1@Hc_K(FKBJeK^`1qs!lokUN=Pj0AH46z%U%5b z8l4@X`+zeqfIHm;Ks+eKY^GMBqSv>&tWQ;}9gAb@h(4R8$)XcA{YXiC7YlbCXqG7! zHMmFs6?0vRsglw7&s(-W##t3bpYrcJ3tF00TH{$CY`vl}`@l=VJK+;7;+@?1*%Xmv z%&T6=W%zWM9nPq_ZjKOa=3-4geH0^OWQ-xu50h^Ak#w_t^k7#x1dd{kv+g5$O!`e2 zd8JU$QpT@-jh-Be%UVAUZrM_78FaQqCz7UUON_^c!=kNh~ZT+RuNL zdmLB?w_jf=u<>tG;6K|0`(Me`-^&*V)c<4u&&cFv>c}MVBTQRZKo~NC-y10l)Y?6% z5P=%<2g*D_D-1|N8a+H{m5tB5S(SMnWmird6j~LDaJhNKc10Iemwcn4nofn)Lrle3 zQ(L<4(R#)hC@C?&h7R;4kJIJm*5@Rz*Hwd@?%Pzu6bL)A-kU;H#>ew_+Z!WbUkb5i zG<{s#yFJ%;$v#g$X6xx|D?aa*z8Eftl=qIhZ*F^duur2WZ&3Dpc(DcGKJF0kV>3ip zcn<~2hHuyEK*0q{k`$doEY|T%zh|xkgC~3=yU{E@Bw&9(7$weoKxnaW9}JbXtgy1- z$XPvS^-f<$zJGX?HOTO`?HjcR+rmy+E)#5*MGO|4i~zr&?j1t66qBw>`{!%Sw5%jr z=vk6#^-39KVlqBlNH=H^PEW1#T0`UPgu${s)-?miH}zv*76|MOcoX}MDJCl z8P7(RRGg(0&yLtzd8#revF^>d8^2;Tuq4P5XH4v$npbE@QI?I*KALOh))_8_U!U5$ zP~*fXPfhgi&1zn>2&mUh7d=Nxb0#E~Ry(sdDdsYx7yk50dwA(6_-2Z|^J%|i18XfpEiur@;^ooF~F zT6)%I4a~4GX-+O_I!?T?I<&dvDPXKOGPambk<0Iv77<+V$I{xxihKuC0*LBP+{vsz zUU=UyA|RDxe`D`6_4Fn92ej9HZOifa$;){wu zq?qbS(V`WW?$Qm|XXTzuN70TA?$x#qD_V%l&*(e*fZ!+Rj+o!a&)>Y5y-W9qv`PKE z$64UZVa}dGy_~(n-CWKG%z(-82CF!Ehj>+=1prjQeQ$P3`=h_78K4`!2je1C$Q6wj z3QCY7OW^A5)&P^?KW`?64bVyp?~Qj;m(~#9ZEstly}bzusdyUvc0PN#Wf0*tg_7oY zd?Q>d3`pSr!MuFPg07n^gjGltpBCM?lHAl0CgvuxgE*be+-H&Aa?h^Yc)nI@TJAEl z4B1)%NB069GXy&b&`YoQyk(XWp<`RX$6O|l;Xv`RU^h|KOJ%mmr72Hm^6yi%nE9bs@TMVr)m5HkIv{?hd23?^O^0n)5k!W)$=0Fpwr_Bx%RoC6 zro4u|;$td7Y+FrGH5;A@E1P?zAYiq_`uJ&r$^poD0#XwbWJM>U0xR!nrBc5_9MDo% z@|nv#JW)Dgma#%>$=wy7Y}9_#KDm}WsR)&@xA9}d1j&PdP=P-R6XMsYNht&=Lc6>_bY<9D>f-|Dg)6BK} z{RRcxgFQqpCcUz|RZ;*_pV0Cdt)5pwk}|{l=uStS0zhQvT5E}YTLEw+)bj_OANtWl zsqmBXJL{-oZO=Y=pyn^n+&s7h2=*0LiwW)Sv?~hDhtYeKwR_Djol$308Mg03bN9~y zGC2aVOct-yCYNxw&qDN~mLnM6Le%X4$gdy)F`|6{x;i|5E6Hw>0 zPFvs;3y^A`uI{e1Q{vdj`9;ggP$aztAxCCgQf4W{bzlLr z5}b#|-vgIOdoH*lt5^z|sfb7Zly;bS%O6#P>}ye~J$fN{_a&QBSdKy-rqy?EV~7kO z3^0Z9Z@16Kp;+q^8W63kz$TmZG@C*f)u%cDA+RG07xKr&sGEjx-ZB2XEMw_tS0FD5 zOlRoe5+doG7K$W*yGH=`EM;JZZZjqWv4nq%`zBiY1j!yI0FcX^l7R@-d;x%LOPGFZ zvCtKDz%+7437`xmjU2+Uy$H&*7!+*OXE@wJ(hf9vZ$gTg_Qxj}SjngbJ+o(Ey*|ro zL3#QSDN8+I+PI5ZY{15%D-23!#GxyIVn;AoU71yhv>ZY;6Oa>Y5<)&msSwVbMjGUw zh!L=0NWB|RaX(vNCge_Dco>U^7f?^<&QWze6QZAj#0VFI4MVzKGAU=r7gao zHPcG&*>>VNV4I$B(`Qfc1$_yzXM-N*;fB668QvUHZq1pw{WgO~xLF|Vn_72I9*5sU z<6YCY*Mgf7dJ9@+QykMgJ&N3MYBR`&GiLJ}S)`wuaFaM#D3ojxl{;h|qi>O)v>+n1 zJ4Qp8yFanO1E-1*KdsT0^rjV{osu<-$8AnlpP^dGfj<_)7LFOd=7Ns)swKuV@8oX%>&y0nias zqpfl&2%vjW1J5~n!r^_$KKYktYrA%em;vk-OP6D_-A5+`rY5=k;l}XxV)XvE^K*@@ zid^irs_S1kD^NkV#ww7r9@fc`y^d^hPqv^sj6bNj|>An>GX>#`aulwK~8ygQtT$_6s}whBRsE=^~$eQ4Sx@+qAU+0 zTo^)@m~fAgdVwos8_n`eDcy<`_l?2q>cHG=w4|Htcy@%Zm9_%aFg)9UC`y42Z;(ugqF z)RA1NAa94u35Wgiw;D3rHSngz>q9q0?n2QbzhgGp%p2#8{uBJ+fwyXUgV2{249g8- zJaWwxC#yzrNz}Y)yEC$B>wlJ7X_G#c-Stl%sLhui)qAQ=#?o6Ti~iqC7?Kg3%PUq#Bd^@Pi!DXx-BbA#3>I8I{M< ze%@7FBy{X5t^So>QHS3w&|)Qir?Eg3=nUfz{=bvvq>#%Ggo#YzXr+T^%T#vXyFY1lBLi-R6?r*{S1Dqxi1>-sTfm z$Fj%iEs4L()MLW1?+z=PI)3$j-4J6L?xY&^waYnRxA^Ec!$;c%>m^6_L;QY$d~iK6 zJxl0&^@51ro9FVaYf+=*a>(gy94yn1M(7v8i=da)NCB85r{}s2`-va-6y^?vxwKlv zml=Te3&_mTr=TjYXrij_$92Ufc~k^6^el7qVb+OeR58}DKu)S*AJUno4wSe_5+xB= z5%x|wR_lxpYj&@~&JCRtXzd7Y+&LQ*{L79XL$j)mZh(v8_pHHk<>vrP`8j0hBG>Qx zhe1HC)-%*WDEu!tKg9zi(;$zNnv<;^%4--)Z|-Iv$WP2^C>6IYKlzUeGpF!zif5&o zTB=6^lW&rvoa!ra?o1LygTGd+Sf?f9b|^)tA1pBHDejTphFKKe;ie;l+^uA7CxA4A z>>VUgHShkcfXpy;>3wCbv|IeGPjNq_d#vR+cbJsDVy2gZIo0hpjG5Z|1SY$~jDH6< zxzph<)ndJErp;oH%LcRFAKpEx=7$RkMYKdk?`K~HZ1(7>=>l@{W@ zfUh^5Gnh16Lv(*eDdL2-Y%^sl9Yjj8vk6Sa6y`&xU zR=JxU(~=W!d{wz?D})`PprmwG$Uoa>>ifM zeWbN!^GAb}O{CQ`eWIL4&Z84r*4MYJE945`m-+^E(nx~%lp}O86=`7Cxbto#`qjkR$V@ zssLNrgaQ!X&nRtgo0z0*e_#jQd^@pSx-GlXTvxuI^{)x7-1U#WtS`h;{BNf?|BNvt zV`ppOZ0ATU=JI8k@o((%uWig7VfWs**skz`$N93tD=mqi|phbv6iPlo#6<@ z$S(90DRN0IMBoJDvZ4Z3w67XgQ)A6xNKvU4_!Oz+2?JuXwEsx?M18`>m6U6$&~-yj zGHN*EAYMG-qbL8gKVwuv1g1ebrbjUFnNAW)pFGm_gJsub*oF{ioSD+r$!x=2apg-Z zN(1D;RthP1=&qldS2FmaDTF$saM6Uyb}xN19S?PH3jCcTfnbB+;F0oq@E62$W3++v z$??$7@OI8i|9s;ZY85d$+2hn6AJhiU!)tyqd_~Sdh8}&K24k4Ak94A}#>A5VWzE`h+SVRL^EDVHT+8*m(=5s=hdGq499pypn5meiJ2)(<3;wXMN*THpDt(MQqy-KMj~t^_}RX5$iXB9}v(o$v`ipz4=xpuhirU;_OoTKq$jnLF%DV?`u;U)Z~f>1Zu46s`ASy`>#005j_ zayD$*+kbD_o_)ccUrukv{JFp19j984vhVn|{=E4e`F;J;2Vd7a6L8$bbnxvC5L?cBh~8rZV+HjW3~XIdLk9JOr{JHndx4{TQ6qdPjNsyfNmy2z}yQks6praWam`y=~N z=<6+@N4i0|r{~Yuchr%kiU%SC1G3eRHT}yEaeH)nR=bP~OIT4Nf?s!U?3p#F@JTI~ zLNsE)3r0*gX$!;j$uU<@RlzKJGgw_Mxbe>IqKV_r4=p2{MFK{;+|~760K5_DLUo&~ z)#{ZMWaAoMUPdzt5Q~HPamLiVGBSW#e^cBDLTgKeX(~##S^q(GGBR@WXyHB@pU$=3 z8`vHj9%~B1RsE?!eQv_52~n+jF2Ui2BVH!6MiuAMGyph}1JH~B;|jsJXB=h5KFMY? z6Xwd|9No5V9U01@4E1PQv1;Xr>_xD+-80l=ZEgHxrZFWNJQMeU=vB6UW5r@U_GP2A zB)bG0Ni<94G%!%`Z3hcCneF?c>3{;+DI`D3zJU z9ezPOOcrE@DYqS+TsWwyY7U$JiQaAT8#l|gM6{dC&1{9~VQZTvrGU#0v)m7N$!6d^ znik^ydwUypzxyL3MK!|INMe8(v6rk6=^9-mB^I_B*08cBCFN|RlN)`!Hl|S^Y2{VK zC<2>^n+Vc5rY=_0V7!1*923ejPm@3egO4qXS&Ng#Z(={S+LD+a3Raq!{K-vZxJ$zj zK}MQ4umn{_dtoH11xE)lq^dmmEm@I3yM0p)zXAr5K3uq44FfgyG|!ey!z)!qt9;%U zeI30Px^bl&?I~WNI&KNGfh>M`bCTSkT#bK)^JI3~T;3@k4 z;IQfhbW)km-2uOQ^}G>x9z)-eUAYDLz(u*=JDe8J{a&PHpK_2*KZV%VRF%2|H$P{EblQn zXU`ICKiy^{#!f5;S`ZRqSje1MnM6icy>v5kZF@$%h$rF72IdAP6i2Mq{~TUC%9MFB zC@y1MdE0oh_KG}WPZtBNkWI{5Y6RuP4o`_Z)n>rhL~L}p)2CV|3O8({u{yg7$ggWM z@yPJTxw2CQU+5h#q=`l6^dZ7jQ%Iv};__1R_8fG7HQU7xW~rz`NwCFybkr&ao=gxwExS z?v8B|-uIMX6&tOpq42R3Le8{bZ8esg)hCwo2vkTa;;B6AnH-l{XslpWu?1uBK&k~N zQ6Kz~%Cgj^(h$z9H+*E*byz1;>#Te-l!vS0 zlYDz>3dsQGst{<>@r2Pi9eO}r6ogtFG*LU!b*+LMqHE#>2|zcf;e;GIgdE!OMl|d< zM{E~N>?U2m4u!;^lT5lX{IW3DUQ{(iow$P?0zOrH;+I{3Mi`1sfOLV%G_=H;$APv) zwlQC^Zeg@ho)uL=!?t?1Gm^>^bWZaRUB(?gN{E`({2ASTcEOSmP0+llabD?m@~NFu zwfw-%JrsNNgI4>dOBy~)~ zq&1#t;^3T$W*ms4JryJ*HA0&KUc`_$JP4l`vD>*0Ma2;FFgz%g4s8di4kIcbh-#%P z`C@jcVmn{?b|$jvKE+r4-A))<6BPv8fnyOdETAYc0k-wtk0)mpbK=0-x=0>$b5wsUFZRtyxbF~m5jml&LI*z`EhZQ8_W)buDbj*Y)FAS z^w-a*<~<*nR=a0%nj{0Plm(H)%!Xs0ewJZGEd_Ew50xM}Viq~_8iUMvH_S|sJR6-(j3a945}SCcye{il_ape=%w z%sDfdi*^Eg(w$S*bsIz9rb#b{ zOmDscLV>JN;R&hn6rHWfP+IHk(x3+>@L53Ox{Q)YCNEVE1B22t7- zD-YoegD$7!tga8E_5tsC{9O|{ZkkVZ{=XW%^m@LMnH)WHDVpqmq#su%D-&~N)K9x$DtO)B@C>)l zFp}XH?h49r2HVTuW5I9Wt0En-%R(>;>9fB+#q`;E^ugqjW@!%aM#=7QF1uVPLlRJX z7@8Wcp-&D`&p>ShQp*IgxhXbY{Zz|iw?ExsL3U}liFJp*jF0e;?RF_{Sm7ev>=XB* z9oB2z;qAh%c62s>Prbow_>L=vTjAf<27K*6y79(g98lrUL8H(Z#yw3WX;4ZYm(^h8 zG8s7skutr~VDy?x)IgOjx4tqIWv?!zPV*HodE?ex4~|Xq+bmQ`^Fzy|__ME!-`5`; zInJa&Gn7`ga9mJMrd2UBMe)N|`pXw>md_OFm7=*dhY9inDq(<*Ud6jt_+F}dT#5M4 zlC*G6zOJ_^NkN&#h`GPWATSlC3{!#vCMo%>G2>~W&}u8kej9&?uULq$T*zkz+y^}F zs~+b)2kt8$=RG**z1TcGzYEq>Z+f)n#3LDdVm1z-C?15@L@Qd_Z6!e{NwUg>vPlyE z1FlsyYf#gryyo=UKe742Y^U3zA)K#)qL>98P%B(*@M zn`Bj(dU3Q?m}%s;Uabd?pn zR56)|H0PS=316OS6t8580K7Yy})gEY|^Yil$E;1qqBRTev9?Kgiw$+do>U~J&ifCrM#{`x z1k<~1@s`zz8&${Z0r|pWo^<=KF1x{jRng$itWP_`VXp0^YUAaaK|-4dl8bO=3pRCM zHuc$R<{};zn=0F*9Wk|Rogqa>#k2{gOK0#o&2k&=$*2yH#8_JM4N!c7XDfyL2l)~O z;OL^xB4y23N*Qq?6t_B3xvq`(7~)VRdX^Hnw4;bhV&oND!Zjh|CFB)d!gl}RE^k$1 zjce;8Li*IUAZ;nw`D|#sJ!5`lWYNjR0ml|VPN^+P`C3@`5Yfd?LFJ-eH7kPhCSxtD z5x`>N1^RW0W+QrVGc)qlw;Md-&5+P1gWZoqkG+Xsx0+|DPJB`?NJ<0>ENW)kNJ9)^ zHhbVZx>RFn-1b%&Llb#8w-09Zl&~#I#^JMI220t2VqQ>tjRen)eW|59LnxjYOpQbq zJvH=sV^spxF_k@6b(_U+GO5T)^iGpMCk9Y2OvLDpZZwxija6rLNdXD=7F!}+tdWEl zEY(j2)lW-v_A-rMo(~R?FAnr?5n3LD5gCuRi|EbAX@hc;IDZ5dZ|az$o=l_vC@kJ^ zwI(-2=frb-nrRFTO)>jg9zIXiN6TeG{%IV)`8~nO8^-JOZupq2;5c#v^Lj50;wKJW zG^UA5d){ly@_=V0)tcqAk5xX^#qG50eM7)*6Ht2+5e2v@5~4A!GEMEH+pQ}KCbevN zTFC6Ob|G`T$3Z!@)h_g+mzk0SQMCiAU`wgW?XF?--!KN|655pSo`fhxnd5NgY;HNh z{OJvL?VO;mKE0KQ`ei8gSX{VS|i6@GDIhkDF3g zsE9jAnXg9;i)&{E4@mCEz-?pC1)Cl~C5ykQd&Y;A;rXRKpcHo5`S*rZNmPBBZo5U_ zj#Fti)Az@fm79clsjfjD*EG*H8|E!fmxEO-l$oZ8)~BhTS~dOZolqv8ESC2gsa1FK zMN0;0yx>vZi-mN;4ZQd?ZTJ_SJb;sw+>nPByly<7xQDQ^$ax8*bM9N(-jwHAlRcpM zs#P56(gc-^EDONs>eCwy@Y{`vNN!g72NSjOu+cM=*zt3Dnay6>{B3Eb8xeM*KpG=5`?U{W#Bs5SS*k4r*L?FGD3J9vmg2)7w1c8UpA@7UB*G+$Xrg zS|>kS5tUW&)u4;Ziw;3ep<(i=^%J5Jz!*sN+4Pz(6lHkVYH@h3U&L-bHh$a!!>QbH zlrm!zBss}Z7DAP`l+*3f*8i$0-}bAZgay~4Pll@wP|}Oh?u?Sv1*+MMM(PAP@Ptr$ zpkmPZjiurlYq|bQ^8;&qso5~E3l`RsO!auJPV}l*Gx@?(IBt&LXCWS{jFRii36n@44P16%K=Va!Pg=2PmNUPrZ3PCiBYt zuX{tVp3z8!lF`N*J5M@`u=r#Qi`M8yVsR;aiggvY z*uc*N!)|AW3QoAx)7TJPbgq7wAwu1+4K~1!j!T{JM0!uy3{RZTvdX@|PHA$5rZ~x_ znZ>5_XUIhcu{X&gqR|4PleIRX){ED$9zbDw;yZHoiRKhyE0M^?0_P3SXqNha=2M^jZx+NVO9>!w6rPtXGHg zX*v2zI-}-KsIGAbwv)b=v;!R+Kl~wl!x#3kzE`fr<~17AW1f49^4IC)u>{EwC?B{K zoA#Hz5b&6EzNlyWoL72Mr!zz;3^8g09EF@&W)-HuIEs*79Pg-p46#(ryHvB3kOZO< z{F!UlRm`dAnu=EE^(xPeg7Z<|r}DYDcLI^?2YbAC)}=onf1zR$`z*4pNZ-EoQT*LB zN$?*j0sc!3{IB{{+0nq($>RS(k5<|G0+bOx0gY}4+_{9MKY=ODy&#rG;ZZGtUgG$% ze8}UU-Fa9aYCDORczSb!!e)h$A6EE=&>sfaz2*fA2LWBzjdea9fiZlqHq)-B30f@JqzxO=-m)YxI1bB#4GGEDU zGb|AhsQQ-qX7edo=*uaSm5nhEHCtp_^Z@JeFC8sYHeo0nl2QUy_kln#HC!GSaGNB^ zfMIX3IGBy^CHtC$*JaBcu#pq|gT`yVisSgksXK~E!?V}%#ecK^P^WgDi;=i!?y+c{4VFcPsjPdiA! zx5%s=7I+Rjn;$x?n&%)D%Oa*4s5+7A84{`>w1izx*dnc%$JDKMpD-_^(}${^WPaOv zk|{>hif=}gxq?n^Y~_UjW-5d*YP z$*>QDAnMzhv0}S_2EibND1&I-Ug3~Mr$}fsaz*{h*@?A$Wuz)a7P2!wTjzwkcnvFr zvh+NpvNS6}EF{?(sumeHW)+4KOYPwT=YSg4Gt|yg;2YFVi6AIZWM=P&eb(TQs=oac zzj>hB{_Af`YQgp?*2KHNzv$v$h99SsKNh~A<*2`vZvQhYgZ~*s4F4I%M9Dw_Gr$Dt zy<_8kH`@WyZUMk#^9%O`wOoTX1v?Z1rd_!+q2agl`a`+gNQph*@$|B5-az=n6oRRR zWQXCqAcNVOOnQwyA}P!h;Bai4c3wobm<>8y2Vd3OEr(9dkohbRkcg+XtjcM6$YhqSOMf0$Xt((_TTs9I=D>3mxG{n2K&`En)a z2b7DbCfI@ui5ozGLZA?iL5(X!kf^VYM#Q*Wv>d9C7Bv!!vY2?zK|niKkF#`BOU+oH zh3cSY%7HmK+7k$KBqTP$L98^{AhR%+*hGUV_0j5xI^hMeV_M`v3j@daU>nUO#h$CCtk5_O^k^(u|1hM6JzJE=Xq=6-gniztJb&mwYz_3_tj?~gIRBSolqR;Qoj<= z-gobaFDp-)3Fz|V5VXD-xDt=&(wcCjj84Te*aoug#IGzaH2W;>we&YPMskkP3tWh# z#~n$(!K!(zX)n7BeNNP~CnBd?0?60o`NjzlI1KPpO4;zw2*!)4!g6Cv1n%oiJEKQ? zE7tGpc=4gU9f_-gG$w~B9Ls_9j_!~zU$Y6Vbdu!5cNx*ny$KE#)>eSan%SNdS?@E%K@0zMZ=y(BEQ(|18oe)om)8gN_@_-TsSrOBA> zP!lfJAA;S84KjrH^QAVWglb5N4H_R_TowL~S&X1s2^qME#F+NM0-W2e^htD64xW8} z-*0X|nO8xe1#>JA87&T`@tf&;xDJ&-)HSlJNnqhGZshu1I#{{kF%d4reg(jaasU$= zNO14A-eFa+rG^z6qV$fg@mz9VR^o9Sp9@x|>kp|mbY@=pqLFVChdV;bH5cu;m%UUD z+rz!}bF}c{)c*Y9JaT(RGS9Vp#TGj#&zVCvxU8FTGK34j@Q|5;-GFL3pNUI05!m_WDE_8GXVo?i?@HZG*Vs(MaIP9q z*@k{K6YN9uo^^P)kg}e!N5I^qQB7xxGEi{-z$pfdE!*^B{I;m{@JUg>#)<74aA_C0 zv|uls!1fxH{9fAAQlv_XZw9^S8V%82URNcLtE5~%JOd};^Lx>2K02F*u09Q^jqi!w z_Moa(Hj9C%P<@^bW3$XE>2ou9l}Tn|e1>!S8d>w0dVHB6tB7s3u!;ItzQ{EPI5)#- zf(@INE5h@D1hWrD$ue?ua@FtXdEdJwjpXbAbuTT%yi&qY! zcx#_01#nvnk)Vfpt@{@#HQu6|Gn*NnF+mrYrA50vP;I?^J2nKTDtN0h2kdj_0M^wL zbrT7X3%QQ2g@&cdya<(IC52OJdQxcFX)F)azk=IiC_zWZ-9wJnJ!g}MB+5cojzoq~N_Z6XrH%`%QHa*UMXlDMYh(-N%%)2l zdJ`53gmMQ66Po-`@d`nnxAv><5p8=0ac9Jq@*+5^XT?Nj#9)e3BT%^&UsT3ueFzii zetA>J|G}3U>~4F{ zmtARX`6Bi#ANpR320yU-!EXk1UXWnqu?}<{^4bJO#bw-%)F?|S(vP*U8m0mA%+>95 z42DxC%F87kd#&CT0%hP+VobCGV3M@$F7k(K=nK~?9r8yodA><{;p$pmkuX6cII@Xy z7!*tx+)NsQFZ*0qU+?#lD`;8);{`1UAB76aEnV5M6P-yPn8xj`)th z7*M8bo~&xp_$EEQ;8HNLy3`%}6BQk>So9RgAI;q#&b^OI@pVJn|Do78q|yhuu)hpl zSG?Ns3)%i+#WjKODpXPq<;E2X(mlRF_bTI?mV3x>-)#G}^XxZ;5O9({=H4+p9>%STy9RwvIwP`U{vf~f zJ$S|P-qtnR3HGzUh53!QatKy)>zd?+la%{)tWrNYEo`Q`dTokFwW?Ze35N z{nz&C@({FMkom5(v|)Ii*gRNPE0+5-QadxUjlj#1e;t;(khcg&`8+Cx_Sx3_pH;`- z15EvkdGP!F!0zn#w+JXs5Z?K&&Lgng#q z$B7dkyJ1C>6uiI6!VMnC;A{k0wBt`s=>&A2!BXhPAt_g8?1|cmw`fxc5UT8stn-#h zz%d8D!+i5$hXo%x;*@^Z`O5~vRHv0akDo-dmwdDM*xT>sA${ap=n42Zy$tNK2n-bI zfHV?=>z_P>M)K{i?p-Y-Zy2^yz+APdCI-u;n{d5L#}V@#_}fkIGLu-e%E83x!y?v+ zNHbQ_NORBZ4Vdub+S%c&`seW@T^AY7=YG=J`o6^S7=UfKeSUorX)%g_e?Ea_iztx zy>qpE(bGdSMQ1QQpv|G|ppK=7dJ7+1Yp`Dcy=_8?UK#TbPVX6_GD(VSf>N?ibHxNA zCwO7)6_0>Ze)*)0K6&$$P0L=1z#NZ8_AQOPt^W38o`WTAT!_Z>&vR9`I0V=KJn>C9 z^V4$pvwKPXOLrjO-x>k@Z}R0|N%3=2)aiG z6delWk8hzj@Erg1V_)}CnY{s(;~MM{7~AB@0m^{9ZsvJk%J#kE+tbum-S&1MDE5d8 z!7rA=HszkU)AQP`5j1A!nZ7r0_^*qmsH!lHfksAaePUn<*r;8t*?0C#6aIkGLwnz4 zg|61gQbPwj*U@}4D@1zn_^J>g-77mo>hZpGY(~PT;}&%ASsYMwzui&-irkQ6=hHGa zvmylO8u=IKQ`Z@~-;XAPhcg}DOE_=AJ%_x*ZTH*1Q{0S`02<7t4(GK?8X2i}^c2P$ ziRnn&_FV{Uv=6``X1}P03@EVS7gvf>*Nx8e;N*<~J<~{di#R(J6s6w_6W4bPMoPQg zJJL+Ms#>Y;TxD>Uc-Vsa^-`04*=loVT<2poQ$$>}G)2br{{+`-svN=)%z3@`$W^+n zB#pNnj`XBKqblRAqmyHKvAE^LORu6VP-h&$uE4jbA#ha>(1>Tz;3PVqUGEY6er4Dh zTdh?+Oe%w6WNEv+BA7bw4j#ShE`-e+JPrrgF;txuKmzloWk%J#Nt%oSka?Mz{nb$# zdMwT$Sn}+9$x)Q-+3m5IX!e;!1{zC04(dJfxvmz6Kr!X%cX6g9)wST`sLuLkRku1M z3ggixUqcwU^e>ce-?hzK`CBw;eKG1p7&81W)5`9VuzyZdS~5c&#~Yf5l-^-mRCR({ z1-(0pQmYI$@Co1Q$ZTUKM{cW-jBmM?IzM<7qi6lCUTUYk`gAaK(W4HKjk&REg}Z+ea?Z|IDP)H-h< zE!6Psj?8qAd_3;Er9F4P0pHriJ-2YW7;x8ljz1egXq;~+g5i*4{R1|FR~5K}+=8Zj z2B+1vMb_LL`zKILAEB4@I?9d=B!JXwP<}u|Bz6wD3|%bWhguOcC%GL*tIP?mZG4;j zv-+ZhtNU~*El6br%!|vg344T!a9YDdbQ*7nP~~PxYbIP-hV3E!V~BuzKrKo5xy_mO z|6qvlzog;6lTZuB4}FQ?ozi!*5eE?sRcoN3KQddMIjGz|1SL{SObi??3S^ykl^{83 zGuO?76U4p+%HF=m#|z!IWxi6~dbpBAnqp<*=hnmKTGxH=rOo#TkCo6(e29R_ZvV@` zfRFvR2unk+8|txNO- zLwklj{djs5#C7s$<*8Vy2`v>Oxw-CRLk>KkZ7FHUs@{7NuPTZU0cJAxPwF%MuO ze#l6bUed#Zw1|)>BM~81LlL1~;1NT=5~HO;AE60VS*SUQG_S*=8;B82^{53&(FL@l ziXN?y6?ZdNvXz|qBg?K?uJ`w81%Z1hu%IJ^Wa-ZIy8Y3$Rd*;o6#JP`>6vNK=637S zJPg@-A%ug3ET)p#pdY+!=Dg>yxMXam)*H2b>&C+f5UyR5sdKq9h}a%=f{8l{>KPad zXzT9l=-)Tx>)6anF>)3#nvxkp(>XGk%Za}=t5E##nLJ>Ank=3(r<5P9w+2#?szIuZ zoM^1CHED|E+ggh%BDCtUI;EkwuEBcnqWbV|wsv%LiQbvJwbwMLLH0Yj`OZ3p5t%Dk zX4B|2%O&9S_(q&ATT{rwM2SIYjC3%Yp2b_2pi^gKsC9OUHieikWR@EBE}B^a2vVRO zSU#uVd6-_uIKJ>A<%p*hUIRvbGt|r@oE{WbE^?MOVY|o{dN~wiQufYaCy{s*ijH;s zg5zcG8xF@Jstp(J=8NX%sf$fMll`d|W_GX_`pfG&u$I1IAro}joNn{;9d2ZEmb_v; z+IAII$?zA%z$<5+e!d@+;i5zX5Ky^PCZpolz(c!aw5z9fNPf~OzAPUfuLeFeo`}0K!$KtV0Ns_AqTT4 zbbQVnw}a*tYvou2TF$$z~hsU>ArdT;H^9+To&zC0|Nz zwLryDuZ`tLB6t{Xgv4O|11q)}#IRvrx|eHi>+fA$+{K=r`aM~#-s(oy>}<)tOGIRI znkEWWGFn`=ECe$s}XN@%4MBnEXa0h1ZGn@#*-9k^UAx?MhNl;VXkn`)-KzQBl?3|F;IOEky|8Ig&_ zX#=arWcwJpyPmEKOCAL}b7O{u%AO0*iH!l(N{rT=r&HGp!Ms*aKykKl&gqU5!5JIZ zAOud$Pj-;)ksZg971oLy>$u`E7GQa;O|nx0i;1q0U|$N!WictPr>E2eb?3Fx1Eo8N zD;O~oGm6FThhjK?W$q_2sCmu7Ia+ATnKN0OdliK8Q+0PkWMwxB0G|1AoHL*{C+r6l zKKoh%uPZqv4F}a*Yb;<;Wz=A6sqj>v#!28hWQC9~qIH~`14-Kp+|7PWciLaa?G3%G ze9Qw}?nC{iR^7(O4TwBedzBtcxJKg@8k7sedXKF|hOl4Qch#olG#m23yH4qVpcGoV zVtdsaW@3LuonhNAJxQPqDA`?pj00@%dBRpsG|O(OKy%kGPn0U(X33NP26(o|y_{yb}<2DZKdvp-)rad6yF0N=6E9b$2KU@%L$^wV!eFR$H z)ZO&%W=00uy_d=S11Y;DN%e&}`m`dmU;I|mBhsq+n~W;WbENSv zjk%CL{eVgP>>=CbD%D00V`GcsV}>Uj8N3Y|XA$Le%y{!9^VV;@W>cR00chg5Wq6pH zsRQUus4lo;xLy6Ne|oHgnfw=U@@u8PvC}lE^WvwI6i%I*WS^0#X44bv@OI46L*wFo zj=i)Lk^V%6Rnq+8zi7?0iPUh&)K`I59|z~{DnH7s^5JI`tr+#VPwzfQ@~an+2& zCYo==OT)uDj{J&z#weEoCRACko!K-R5g&q|WocwJzP1RR*YkzF3dOSCJ2A3d!f?NYJh?B$NTBC+7+Jrd?9>TR@b`r9^eQAD-*4&aL$OI7|%!}Pa1qWNO80*FC z406Y^s@$gb#Nmn8q@G}Y4={tzS;J%pXfw~+ZCeOSFJHRzilFa^Mye}!uxZam3*wCL zxsTWrj2)Kv8?Z;MYu<~>ejZtl6i=dA6jCc#EI>!z@zVs*$jE%~6{L=RH-9eCYcuy72=}-LP7( zR;O<3rIf5yuyi5gtPA77VOUJHh=1t@yq z!}*LfFh6tq$x9)V7QW+d2hbxv4U$}<(BJGSRpH*acC>@~lemi##+pX0Xmlu1!cHfU zZV;&;6$OMK=8i(!ixd33+Ds_XGi2P}d-#$*zP*siQMzhP$%kSB5dp zRJeI6aGi#PAg#YVkq!mEPEWtT{@H4fvKzIIbaJyJ2Qx=Ana#KK)-I^a;DWugKaxe{ zQR2YjgyfmptTrLu_$mF!awkS%@qCo@X!~@-rhEivU&|Ta(u1oGU#$4an*Bnm;E5ZT zsy*Ifc`oWiyq0&GRI<;$`O@Rr4=V7SD!{Xl&=aMjs{!?4w$oR;AL``XA2pZSzMN{5 z5&lQ2j^bAUIqI45yk@wieLHMd1=*#dk{?M&0RHj%%)^>9yZhYL5yRBzn!vG-ZMPgE z@rK^M{=zS`k~SBi=F-GV=xGy$-?y|#-H&>zy|I`wI7lk*Vw3R^&b)|)-_AI^#Mf4* zZ+UY7==3`5F`V%GON-TWY}ph?z_PNzU0I_}jr7!d4-8g%q7q_-Jv(yG);P=6lh}E> z0Md4W6NQV%M+1=rozATI+)Hc2#>X$1oDA9vzYx5uls$#~wnAU{@AkcC`g4d{lFwKs zN71xmSuE~Nt@=<-2X*qM%F?T>vop@j?{;y2!6m9ZD)l!>%tN6>VN80)TspMPnDa=D z;h=9PGd_3GNGUNDv|+t6)m7u05B8NuX9?`u5ZUP+y4Jw&*SpJe1z!DjUm)p@E;%-mp9q$yG( z#b`TSn6g-UZ%;n>7H{r>CI|lO{IL^TNoMA!k;xP1uckJFf2#{svvM&vHk14WgFCu- zi@ICenVGx%*VsnG-gR9ZIe;;}MoUm-Ssqv#o^BGdU(B*w(kxFyZavS-%|vc(r9wS+ zGps?I&)cYWl3*MZ92~q0#=L@Vv4i*2mteAzB4I#~HNv)~pMSr)zP|2X{r%(VP4P=n zqD)R-wyd7YUL&ezDz@rgWia`cERbl~t=oQwAQmsPulUox%E}yv2kB5)T#W;ESy)}I zO>yKld8TE={in~(1!JMpa$?P86V1YXt=VtccPx?4F%xOhWM^Gr&ZPvyD=#s?Ib#`H zEI*of3Xtj112|hfh_a zsmA=B!bP&(szP?PR?|%wt<=KW>@@I!jH@kQEr;*y{_yE6zIMt(fDWcL9&$!=EZ6Xa z%sb4!y?yjkfv#7;GI3S?kt#HA_*f0#i`Dqz5H9#2`+a&&Si}OkkT=7LB&OU3 z@#GwKv`yADP#QNI@sz16M^c;d+hj7>=w3T@mm0F@?_+^e0s6V`b(cz!xbjY8oQ?bXI7a0>z|iUy2|uq>u*_nMZThM4MGEX_kx%Z0z}LxX%D5By9?#ASs%5gZ?woC* z7tbHQc;=dCjt#axm*+~f^1CxAbZj}lQMCv@9t8)8E34e9G2G*?GHuxt(0}<1_3H%K zBXOEwW(ny&ueYO$MLWUi4pkq@!Fp$XF7W3jy`rI@8vq0Q$*<*wP*0n2g@V}SjmoW| z#pGSFZE%N`7TD*%+ame9dPU8GnK8^d=H3Y#mqTb^I{?d^fZ!6TBiAIpf zjcf501nVOz*(0puj;)XUBP7=q1Lie>#G+2cD{l0*R3$BH<&dL%OmoS85VsK`!yBRmZW$Qy4{?R9T z#U{GzzYf-PcRLw7c^ry;SB^j42;;O@g|;V}-t6+dxO~0f`R?oRd>I({3b6w|04~Y= z=gByDL9rjxBVsqWopoEKpE^B)lwMF#pjT+)wqfR}Jw zV>LH>2uSO-1bRxyG9{K6g{zdgcg=ygoM=6Z45%9{_e>LIfIFS2uMG8mDBYJ#Zdbeh6dM={F|OHzG0d+PPS!0fSe{a;5WO*i7M|=Vh$s?l&>u*@iN-Io z9!Tqlj&P$p(3`2UcgbCzf*Tng(U9UCdY0Q2+L_p~b6y)BJhQ)ukoiK=#w%~&cRJzo zMGhO}6qj2jf)G(fMbgL5mhVtM{VbA~%j?Ulex^coO&UXWAEB`8`Zn%zke@N=Mk0ET z+Q}mMeQt!}_r>!(B)!lz;Ixn&cN7mqay+8v?&}9C{MHz3DdTs&GVre)yQdRgyc8E< zLwr%5cwUCYls(aJzY=B_sg%fia+Sw>@;hcKZ2aN$-!`8WnfP1lZccvUF;2=Hch@@o zDiH_utS6#8|0xP`Na-+a?jRw1Of!BikmKNlXZyQ_Ek$4SVf$p)re^a(%&y3x6Lhr$ zewD_(Khe_318mHo@{My3Q{K^*J!oXtS_oj@Ty`ik}OPsc4Y z;=3i%r`z@p{;wpR>fe%dvSzmbqScC+89RMmd3PoMpKpr)`;Y(Vyc+d?yVo_A8Dmm) zMWUd!TAJ4w3cY9ykaZzig;S0E^jcFIwLHc>G_R+mh`J@v{t!KWEey&UOJRDa-v4F~ zlS(SNAn(Cw+3PyZwVkv1^mKOS`6V z8jBnrZdL*(!%2Gp1I8ML3?6C|q6uAIrhR0#;u}SV?z3N#rNFZ5qm_Z7N5^16tS+YK zNVHGIkQ_YERDH%`h&@)cUde8I@JwQRY+=KU}PR8Dp{#{=a3Pl z#_|}LD||l--waL`$HJcK);zzb1w7^j!v`0TT(5idsTr2{wQYQ!$p0Z?!l?oLHpg zjAjY#SeBD#cmR--XtVD;)9%duT`Hm+IuE{A|d&g83TD6 z9k9E_10&R;fm+9ku9vUo$Z1*+f)i@15DF%(qma#;sAW}VWhqBKdB6%(BU^)W?bc+= zv5iW$$~P_h-?@eGu*!KqbyL4f(d8p!v_XsJECsq5C$e1IgQ^ZiyC3pNlhHd{EPl7kdr! zozskZ3VoIM%JB|k2Nui(&ARa+?Wtj+x*pUF5ZgxfNz{tyu1I6~ft#fYD@YANOVLQ_9egWry`I_WJWkC!=NQkF3kUl z(^D`f69{HAmA?2R9hCcU!X208SEw5qk`lbqw(zC;5Biku_glPw$e=+@#$bd`8FccO z-xrks-)7^#v{8-br6#&LdVmF1ra5+)67UMjrivk^J*b2-j7GYG4iy=~{15AGXYBO! z&hKg~ZS7T_ceuP>H-!&jo1i0}T)_t^_fAib&!Lv~Pei}WhhzVXTfxg7Ps8`8hneqR z?)Htz5KVG~mLJ)GbH`)|`k87hCBWcyYXla*$q6=G!TvH@3-!tCN4BkN9wtM_ka#Aq z$CBte_TM9ZXj#V0c@?5ICw*q{TgoO$V;@FY`jY zo=e-wRJ^wvRRL$%-ZLrj`B?_vZIwj2XdENE&-1y43z>RiJWGb#ZZYo45V*2`v^$KXgC|dQPGbfEVSvBjNJsTgrJ2eK%2*M0yR;{ybCI&( zYHj6q6P+hhTPL9nX}OhFo#-!*1!Q#b%Bo|@yb5-tTYAJ6*g^-*W|_@+(uJyblnQCx z9%4f}QI^R!(wh&*uKhd=d=^Z$O24%>+d}(FdSNCEj`Ifg7Z!P-$4|LJlwT=Gr^q2z zu$aW?Da?;lag6z_cB?}s$2bO0vnVP2+A>L6IZ)uG{pHnM=@+hFz1#7N)e$W(mRTpX z4A-a=b#r}4rTaO4Z~QYuF~xNID-v@Va=zNIUV=w24NzHRFyE_%6a?+@7cY_47`?5% z%3C`DtOuCQ7_lzT&Qy)4JlHc^RcSwuWW@;!p?TFWfE)B23<2QzCeN)xFap@wT|Jsy z204TiI<}IpzD|s%Lag2c@MctFaqNFg`2z5pxQW)ePMt!ue{loa+{ovO_T`7%bNaO3 z^)wQFBskFBmh~K0hd)Jfr~1av-C)^;UfN|vjt(2AGwvS;{y7UtqXYzU?N$4PMEk!G z0n*)uAek@A@b3s`oZ_qPJrRxh({SDsoIDUnj=QC8SH2s*i;K=g+rJ(Wx6im^$!G~r z9zldEA7%Q}2>3HYf;Ew5vtl`Ui(ykT_r;?eTXV5^zGYpJf6K;o-cpqJkN*?yLA zY_HqjFm!ZKsZ~*^#(b(SG8PjOf10V9Oxi5S!nG_QB{Zhtu;^}<*vzg5mw<$;_}fVa z80w)$|Fe5OC*{3;Ocs@sE>hp;ZJK7Ati+a9Hmxv*ygdJy(Y95>dh@Y>Pm5#pgw=!3 z#aeteE)!w_=Eo7o+R|>@j*@tO@)p6w4sYO1pxzh6xvo~YyS~CUC#o{oo+iGILgn?5 zVG^r~pAZa7xdkPSQk1g#ko=YRO~;3RqTe(dX0`1%M){gqJ~>^k(CI z{a^m9!QnZhmIW1Pei77f^(bxrsq6CWuybQ~a-+GJ1Z70r5&e81$39srst*v|T%lLC z(gURb_Kq+84rC%r<|lN^&SLXVmpjA>Sn)ONZ;SaS$k8v#ows|O`oyJ7l` z^h^sW_4C(2NbXkYM{;({K6C$PTnPE8N4%IMQx7)hS2zN2VZog3cfpqz!YPD(e1Dw# zHl8q~Hx~D#4%WB9E%ZXN-EQAtV#4@L*3Ny`L%J2Mx zv(c5VfVoe+-jd_bc3qggVqmr1M1@W*^y|IJow?Shzd;pFtg-3&&os!u*SZ1Gk}SjG zU%T#ei5fBEbZVDvHu!R!la?(E4ri|>GZxKG&!=O-plzN_2}puI!}f-BZQDJO*PLGl z7h&Mx9iJ~I0+9n}TNhmoZRQRrI_UUCcFk$hTAP)UM|^g%&CZznt6OcNf7CcB!mSby zS&2vkv2Y;SR%zp^w$Q`eE|J&;D;zyv%?W|S%W0Qu-P9qqxp>mC-^9ycCmNA1j zpI!u6_|L_>p1F=CK{K2e`f9+Bj3KAbcUZ=q+K^BI4Mht>%>D!4#Q2ggjw-bYxt8@5 zAl&D+Uc!3D&(GCMH2p`7GpF2U99n&&j8C@%hG=sqA#?ltIU=h!dgII>VH2P-{eEci~sB2h*% z=<@?EzNF=-siY7R{IkiPp0@UJ9`@sB46m4qNnSf(kJLkx77`@#Nm_DjTl=o@qoyB^ zPv?9=R443neFTV}Ja$ei@J>v9>3yQ5IqBol9ba{Cov$Q?yU{Y&+bD16ACtbis7pP; zup8JEz2ynFycm%yt+!Fh8U>Wc`Q(?4{va6N4@)co#*Jwt^SoskP38akx^v3hXpOCl zM@3s~Z6lxQn>)K9-r@S=@oFa~8oKGIkLTFy+N>)daJ=q=~(7_29#cuQIo@M~o_t9QieGp2G=R#P#naTn1$}M$>Mk z6)<(N4F;@nxD5hDC^tFCy&4Ahx>m;VV%dY75ig(#A8p}oGOCuyCvROmQf1QtN7-}= zU28pNFxlk`DSOKefG?WVh9%!&v&!cRe!+A|N=s`i)jo_M8^ZnIAC?61s26VFATdIb zOV!?B9QGZmW$tQYlRVVhq@UHF=cmW7Rn#g0n@Mj_vD+wYiCX@mjw?L7zDiKUYkwar zJ_FYj2Xo%0t(0~B8&V@`s+G$!O)J~OUxebGi6*HB9B3PELD2T2bptZspNLT?MthI# zPw&a-r|kVdZ-V~4yZ4{y4`X*rtN%uRNE{yA~naYAN`g>~)Lfmcu zRCr{8eZPh{1U(iIU4(8@$!z3W6Iu=?#UY0s!az>VEN2et3Wz^Lsb0|hZp=G%k$0PW zsdu0A_UGkA@k`2z8p`k>w%X7k6^a<@zI>+Am9zw`HAVtU#U4y4I=|{Q{(=f?(GG;z zqDQpE1uOgkQXCnX{xv-xgLyi2>1{9LU_m>^t~SN=EKZ+Y=%Q|L;@upNoYoeom|}Ol zV8bBtIIpkSR#qGMc6q8tN0y73TS{SWbMz6O4roL0tvGJY9d zlj{!T%TgJ673Pkt*V6G(z#Vu8s@oZ{44!kD<7BVu9T zVu3x%Ntu&rqUih?>}GA3?G&Lp=Jzg+5NneWe)fl~QD@ZA?Q?D_SV=)7c#hah?!5ql z%>a8JYiu6%ob<;|aWe-ePxcS2*LU`X1(ky>0Lh!%@RLvrsyl7w0kh%XM>0(p?$ z=VTGBU{0?4$}>5Q5Db1#A`Is@W3JSorHatP_j~R)DK~H1LhBW+YHcOQj6E9H?+JikMze& z?}9QbbTN|E`GXv4p;=yGLcmn29VPC|KW$&LfqCg5pDE|}mkXtTo4E78PrH9l-Btg^ zS7|ep%TSjs@rw*e6Kp2$yzV#w0}qt}gCUJdSU5N1o4TO?mP_$icL(!{j|(D_XzyY# z9HFF~BzL_O_=I2QrtmFueJ+)Hg~rF=rV~`RYYk_`pyu&vd0xdTt$$b2zzum2v9-P@ zO)6zI_mi?V-$wZ)DbfHNGh)e&jSHIjC-;EtR3_Lg^Z4Y!kqY6;-uw`B9@U?=4q|B& zp|8oz$%0+Zg>RFUk^Tf`BhvP7ioD3$+^sKI!Te3Mb5NoQq}KC-{qo<7HAcL{5jml& znv!AaI(z!XbKrzfdG8cQB%_rrHGCA_SjN8+Z&!71#C?uy2_l+{ej3S z&@Ieo=_hj{6qGdE9(XzDL<;uPDrWY@5d%8rp=0!0E3E~?hSHj$$QhD)8FN+J#v4>l zo6P>@ddE}chVK*gwHb*>=JA-NoL$v=MuFpS>!@wbmvyh9D$k6dQ7t1~DKN#-h&Clg z>f^wIyC>K~IkjFF>F>&qU)$AYTbV~&wKojI2ZfAKX6CAw9RFE;38+fOGe4^@(O*_y zvA^|z{}*`azhCnI3B9E9AN0~vDRhVgbpZMyuz3VQ(7LjKl#(M33Dln`ecZ#zbL96l zY2ZW|rQjpjtMZ6%8=g)5o`{Gs5pctY(Vm2Y6w-R{cqhAUh55M$#0c~kKi^;EprZ<1skh`FlzVb6{uSHHbsIK z*HNX#_!b(+Jn@&H)g=shQ~0|QS`?FR(g_J?WZ%`@{qutW;@r0$_y*cEvf ze=UoRk%#QjF)if{5?5=de!w_wu(Pk~1Gib&)?=`6ctYN;P!=g_TO5wiL8(_JkYZ68 zD6xs`5`&!ISfF>VK-_znDiPg+|Jyjq#8kG=o?g}BT9#ys!Xs*Ra|^uWTW4MoU$J*O zU$ugEIGCpA>?BgDF}eX*sx^o~+k;uije65DxldAdOIfoVTOITMFUFsdQ>|yWI@Nma zn?;z0h6|*=FrvC07GMw24I5Aa|12xcB-2a(c+GqMGM;4rRy_U3P5NKq^sf(l|8cJW zm&v0>ZA#@ImUV!5`VfRDxVSR92n-CW$s-B~glLEoj0TL05>xh6CVkpuu?JUB!XBDa zDeT-0v1k5RiunvBs`4G^s;r`?;)mbn0^4?g-xDlxaLX57W>j%1QjjnfTygXUVrSE6 zezm=JK)VhVJ9+9&66rWGB}<91&R{HH6u!n`+y#J!Yk|{OPzTe0uD0rgf5BXBCa)cZ zRYITcowE{+ew}5T7KLRo)!N~-FXuhlg0LWe>6&t1yh6LWL2c*ayUhCJWD=h|sXO43 z&sr_XNVapr87f2pmjh(8h3QqUI_T&zKbRDw=_-6WsafIbQQpd!*F zDL-mvo|tbCXBpj0ra$ot0U^*onVYL>=b5zCn!Q$onL*bcN{(O0Hfr}kgeRB?w974A zPEvWNleQf@(HeHejh?U~6)XRCArTOfy;$s|`lpdn{Oxx-Q(in`1u>WYphqCWEBJ8F z74z&hg8@6Fh%0)%raHibME`8l7pXj}Ea70-3c$!j6nLAJnVqEeY%4>a>ts{Hr21(zCFM?`^(`Iki*Bw1*B zbd@HV84b8MU+3Ir{~`J0YW9As-(*^MXgY`j*?8i*@`atFP;&{oN{Z-l&SV3g zjrViUoIcN6V+38}o=?tZ$^f2xThWAXPIVh0pG`UrmM!+8UkBYo9QA=mKm)z?l!ki-n?05oW0OtDZWl#E|H znSXtcf4)Kc$5eQiM)+*=v&&-p%eVUPN#y@qQvLhMPT6)?U`8JiY6Ds~2~TM88NqY@ zY-kNlla0hfHgSWHr`4OaM$NFcDG{lN!?(QBk$y!XzW&0GzQ-M91ZpiRTevcMydo4h z&GUYJ`}siz?Dvw=Fb5PzHJ{d?J02Il){52ur33CvdR%LqJs>(S!uf@9Fr|SB>rMCv z@t!{`mdYI(futFnka9HK=63#wj(0C%&%WSrF?SZ-#T2DpZkS-8aB~C@`VSdExs1Ek zchU&qFqUm`6u85bJe*oZ=7^hQ=}qs?#Cxx1HPW%b8e#k;)R!7ub8sxiR3R^Pz-A4M zH%}l1?VM&x=>ppwgDu?=J16RE>P$XBa`@+JanJHrl#~=Mj8L*Ob;z;a%;Dq+0~TVs zUb|Jtib#YRmgXiQw$ZZW%rK)vS9>TXMHhFb@zqD7AI9K*As(BWH*R9Iank}p_V*_w z(^N%ZjsTrORH|>v`5(5n!e3)yNkdBtlyo=Zvw`2BjeoG2FSfvj233vo&#^se7=<$0 z#9h$avVXlFr(HPSUCURmzI?fdIdrTyKsnyPQj>iIbDg*MusVIGF=B(#(RxGZR_uvVXDfK)+W*2S zS%$roqdaoxc7&lPA7#5}Q0Vy0Pu(mb&HZ0D6Haw5g~2`pZyfype{c4G2|U(+2VUyB z!-6m};KP1{o1+wgqB#dv0DKI@MtCC_xfvXW13gMD&8NdzBc9Guvw9h$E*!iD92Kcg zjKqQ~7`EIe1+H$C?Zc1F_a-6V@H?1Sm=&U+14Q{wYr@hOt_IA4Fn2z?$MTo<{e4EU zRrrPO_eA3=yej2X>NGP_QrBWLwM=$0-I4I0qFE>ALR?v+rMJpM=&CM`;d4js+K&W7+iD;~jDgv*4Z5+P#8l)_;p0R~RVFsuDu1VQKqYYg3m zx_(3Rtv^T-cGwy@XNHT|pFq$U>oZohA)+;%qE&%5Vg~05V^0%76bsRnL$boffU?ee zU&)1#daCiOiOBYM@3w?QGw@E;{^(p=c{?o&7L{bi&{{y)$S|BADk z^leo?^=w{_beUz|`dz|h9d zv{)1SZjkfDL`I{7LFmuCmV@HEMFt+cnzII8__gX7!?9b9ffxQJYuMy41X zWMj9Po$#`GFHRn%N7IEXNo^Z#!c}(s=I(#3RvxR{vdRs19$OU6R?MxmkZor;WHQJE zjy9Mp7&&b@=Q@cHf6H4%pRM)9Fp0$^(5#jE(|E^K?Gi`6FEP_fg4vplPZkd=yY|5mAxJJe3D3u$NSHT|ku`Kly2!=o zEcYO~rM-O?*>iiTzX1I0_TckAgd$x*%Q|lzXe^A;@!qO8i$p`P-Q#qy+NoO;99?hPTIThOX zYHotA27U_y4ZoY)#tk@ztdSJ!#0Xw>b9{Q}g}#nE=)BWS;#Lxpz$o~UYjQQDS`=2y zyhee_JtDEch{vJMwnpwxL`i&dTBez~5Z}v6#$K9QdQXwn0~ROQr**_4Zh;lWfJ+`2 ze$NJj#x2JX7!#BsbB#~gFH;RK%_`9YunwU>|IPn)n`MQEMBA?u0gObLp)n2CWJjo@ z4ZJ5`EX_x3K@3shYw{fPN6CK>u^LMhnYcntwz0Ru0>jVj&+q(V==KF*60~y@4Z%56JSLmrUk!wD`X?Bf0;9$=WX0 zuFqoj7Z&=dF)-At36oP$0)$0XI8YA!I|Jmyhr*ba4H${Bt)T49o(Z1fpPet5kT8`0Yk zF5pqb|7Orcy6+m|QpsE)_lx)+QAPYG$qr_K<6w2s z22u%D`B+Acrf8e`LOFOdtIN!rwLJtnGO_0DNYW`c_yz|YyHP3nv2OR|cOrwHUWF$C9)v0`+pyg{k_dgfKIoiYZI z2fkx^C5w^`vL4!l73D*v;xTH&VyKQT=`V@j#W9z}VCBS?W2v9?m3a?L;Hfc4L=P(o zg@M(WSHRz3KC_K9%Q|AI|6J86N*NNLQaGpPVRUn#)9qrECiH)GD1+(;B&OIUD1tZ` zN$J^^f-Bnk!)0H^cxptyE?=Ynm=gcLxa{9|uK#pdDyb!sh5Uk`RgKZ&@}|_|4|ETAjKq3s*A%zql!4^(eTP%dY{*7FL)Z?AwRY&n z-C^pnV(1Z{m2GIHXu7A27M-J=FfF*@1eby%&|=$TE3a+o(_4CFu_WpWh0`#4)CSZ> zZY5}rqj4U$i*6K|*8-GLs7eus!`eup7`zuvj|a?7l#UojK6qVxB0Xk3r-gVJD5_zt zn%Jh;nc=}Q|L`Cdn+l>SdY`DgAQ)@R<+_?EGv&;!_A8mRE&CfkxF>Z-;A}F`a&7>1sUrObg zY@kuM=p7iwBV01(KddhpqzkCjHiO9%mft?Tzn%2U^J`{FeFFzF!`%4ddkQFY@bL zVoKgR+LzJIzPZ`YB32mi(X(_C0V=j26fBi6kz|YbMXv1g8RieSWltQql>8sv_TN+X z_?MCPKMIA{zbe$nWLB7l$gsw4eJq>?9O|(uYw1vnRrx~3qNeoz91BYq0gK346iQ)AT7{+JwsM-83L5C>GR* z4p?r+PAUR2BCrvVr;y3$j31>u6&3W>EHn($uYz|tRS8`1Rk%-0LY-D1*+V*dTW7F7 zQw?vTQ#&@7Su3c1{GmE)jqf4QTnnj@s}Mq#dUxzXxfbnjjnXVZCY)qN zW@Dc7squAR2oj5Siq~s22ezZ-N;Fxn;k0mKw)tz(5fgE_qN3>H02F8=4dB#nNE3D& zGpYA;tA}a)6VR9Z*0k%ZT#Fy2C*-AN%l8OONOCIm#Tr1NKFURLbLlJ;q1iNYeF}W-f(K#{IEGDjRizoPoh<w?gcTeovxvTw1{n#5Em^yqF>WLn*y78TW;m-7Qam~@d9p5$eJfT$mV*07d zNa#gOf?vL07LF-f=2jbGG8q>u2yzf&6QX=jEo^=75dDp#m=o(OS~3ns4)L~Mx+AVa zSn=LV{jRV3j>Lq;=oDWXZDNaPU=c(Z#B&@o zy7i|VAdoJ}0{54jHvi+Kng920`X90NZ%GXsJZ%m+Evn!0VI?ZB-(cm1sR`i(!c>qX z>5ui+&Wf;cz4meYt4#<8#CO52g)q!wNc(4FXQgaiU2PB9VzO3VZy%TJzRkI>#aNM( zE6&G>O7yh^L*PgxI&%*e?2aQB&2v@`M@9o@lmAxks|Ys3JVbwiYfZQX!Uc!9g&rw0 z#E68U2x>mH-$LWjR3GuI+SBS^$}3D8-a zl3^HkG5Do@3lyW(Bf5b=gAY=xFU6&9{FHu$us7>~)`WprZkuHpTeYm{4gP4=ySB>` zLc9`gunN)=Qy`hXJ8wwNXe$4o!+}& zH%UJ&5hPIEmTMN~qBX#>-m_4^m_NQ)aM038gLNfRbGFFxi(Y;(z+V6wqa`{6H25Z- z!0FJ`Y6&S*8!juX%wG(iD)(YO$V?xh8k*W5%|D95bfBA3m#TmT=nT@fYUt$+ZFp$) zi{2kRBR+52g_<;T&-}}Pp3dV1x}Ha5I2Mtn3p!)t&Qfbmg?2nhmNi=q=BLvbA}`DW za@0b*u34VE1)m^`<=ZxY$zu9&&ZqZgp3Ct8>-$`Nt2`e{OEKZ;uJ@2UBo5e5A!X$_ zVjUe^7NOj;c%#Uw@vphRptaJX_niDxEWA4944xqjf_iocY;v#cl_!QL;1%q?f$BHt zH&=1HHhDe;;NHDBd7}Nr4B_qaDLv?yjrym~&y?FYNW`v^Wa5|D`PENA=VT3}iYvZ^ z4N)w)Yz_zLqDX2}-p6qlW{KA%znR>_7k=lryt?ye?+%Nw!rg=}0>1s-w={ z8=M6v!R7h<^9YEj9X_Of9RcBggcbiiO__fYssD=8St>S4YohSJu-0SX2)gm41Se98 z>+`9ILb_Pe7Vc6~d$Fiw^6^Dc)OzCz&--z*i6GUPT1ciTS#N8TRrKR4y8QquAnvjLjCo?2w}Xm7f>>p;kX zg6dBD2UN<_c<_lUKGV7h9z26~nusSWJ4;)MNM6#lxx(9z8qj$CHZmg&?R9rp+pJy7 zOg3Vbq{CotEs~3p(V(g>@FpmSKB{9#vKq7Ow1}GV8L$t*{p9mi01lVZc?8Ra^pTlS zLsYRigZXg`Y5Xt`mO-RTCF!lJ%4#j}yv2>+V&(H9T!Si!ffDL@h2f&~llwH#w*&io zPN^eGNYyF}XNd(DEL_0&{5*1BU&60@*~+Dxpu2O#0*&8-TRU)pw$~9jhSg`{!DERX zh%B9iZo>E_dAEw5&a4|f&}pz9D)3f?aT!#n3Iq7j&aQ)6u_jpAp<9nhdAc96P?7pK2fNiaE6|X34}>3$~X6RHPjE3!ygC&XYxh z&<1hogkw$!!H9?1NGhMDSW^7{ zY$>C594-Ixl&}6DOKseL3FR5s+S)lA{GmqeLnnVcOyF+ zIx{;vGiwvNuU~EKZ0Y{%YGQ8ALUuOxUuzp$|2;c3DQ-owj~_Ys)8fLgQtC`oL_0Pw z6tud7vWZq+VHID!deEIZPNIl8LDGkr&ifmlBsY*DIdFeOTIRv0@8pQLZ-?JE_8w1w za*zrXc_eZ%=DWh*Tl@Kh{^uV8azAImg=`9LT$T&WFsKqt-~mM-4M|{lAQIa+aXpwF4%mM2|B(bzBAI=2I6oP4JW@nNi3leua}201^D2J6qGc>HK0iS4p&O<|Mq&vGs) z?O0a4>mMJS>Q&nzH#x{}Dh4X9cF~LLGw62TMdm>2irs+yBtTOaA8hyVCYS=ZE|kq2 zS4Mlw!{B{zU{d$8E$EQf-DXiP48ioavG;5ILZcV^uvWhh%orR+`JyqD zM3v@t#K{We=})kw2OUl@ua%-8t9Gu1~z;HnA3i$qmSo{Ig(a=6(jde z&75jksiu1Sd+uepH{!J}vQzLX&D7gi9N#U*s%*BYLT^r<1#@I;auMNey?B9AFp`qv z{IZ1ms>`%JNodK}J*CAM)|q5GceOB>43u8KLs+bVF!lgX{& z*Xt{Tmy?QZ3)*phVoP#ibf=`zzP26br zSO#pgO*00E5PyT9Jm6MIa-^!C0h9+;t5ow^2PL`D!PI*4JL-LHfiMs<5Ht`O%Y-wm zB3aa~9RSrWEiC+`0`TS4(-vb}$ttsPYmx)S#Y z23=HPwCNUC5lMx3O9?HR$Z|z883`^D`hjap+OM-U>Q2hgod*%Y;beNq^_lrGm$OxE z_sxxc#=c}nypKW1<8TPW%zS-algRJztd>r2BPl^V@DW;tZGsfwN~G2hm)ArO*n;uF zggMef3xz(DGc8u3S1-SG^#VLj5>S!Bq(vLy9u2Imj|7b}pDNudRsd71C$qcGz(qS{ zhr6r$mW&{!U*{+%gF#MwCL@MJfaJAC#wPQ5p zv`C<+;R%c)>)p>+Z`={uTw^~4x5xtBDQh-xG(}P=i<$*BI9}6=rt<|5`rhQngMB~H zh<)7JZCyDjkdVJ<+y|&CA)S0tMJVI|AhY%KdeJ>814%Tc<+9>QyQYniSdb3NDdo9A z&Jz$ON&sf}pKtXb+9l=`zAR?`j~4savt<8kEL62{`XdU8+BqtlI5~d}l>Y0G`9ya> z_VU9An&p#zFsrhny1II*YlXoh01FI!AV%90w4ykjwrf0n<4ts**@f&0ddKSY_vpNY z`^I!f*g)h==nS#Jqc>R^?ve}sBfrX7u_Sd0Ohv<{&Vsf&o_<{?a-mQ&<19rTy-!th zqKHtMl_G`EXcCfSU84?R7Rb=0UW!)k(rJ=I;BClH5dOslT0uM^%qG5k9#K^Hx9N^k z6hvUR3y=$lxvwcy?pp2~(e|HsgU^;BLfw~>B7SYme;;hH{-qn6xSH5H8@l}Oa?QV% zLjTXD1pZ24CdPkrPemKeN8ntVUI+FJUS*=qz4;-Jypo~l1z@SQ??$3dmr%RPsN0(Z&X8y`P%j6k~n(WS{7 zy%*YR3*3M;Fb3U2i60yf>bSqs(;G1DM6!MgI;P?~D>?Tea6`RYv{-h?s8P0%z4(HP zSL%;yD%Ob}K2u{9*eIm3Drt_O21DJ1Im`=T(#XgPnX#hL&an(%u4+x}NonIqL2fg2 z4w*0{4f?wlN41%Y2BQHn=ZzW@t&!+4PgSLHsj_U9ae+DpvH8%Vq(_OV)~Ya%=PK+a zV;;1w`0THnm3~F|^M6s!wJi}3-7UIfKfj}p21yaW--CCm`#Z`d; z7WTC~^VS0nD#X&1O}lM4l+ijK(RfN^VVVQGnk3b6R&`K$4pIUH!e(>W(Y*SbA*EBc z*(HX5!3t)Dd*X?pYog1BwjRjl#Z+wSb;CE7-cx=jVQSg3^)$rnkp(KKnJ zIASa)V@WTGeF_q^YYi_XBQQ0}xUhWwn|`0cNDwg#Em$kLxVkNzZc7qa z#>mUoZh#(6OFMFX0!FPhm7s|Cms3XE%TydP+pb+i3IUy9ls;)>UaT5)B2Jse4YCz3 zzmc-2HNRhJHsxtPk_?mj%ND&-%6Q<^4=g5=Vy+K%F_5|)@y#byxM0`8*o}#_Awj;g zmjM)Djl}ukO*nf{a4K7qS;ow}(Am0&iE}U$G3f^E(XmAqmtt_842mLsr*-u8GzXkr zLde^_J3PiY)&+Q^LU3W1w3^;H?`O~yi2(881m;DE4qkeb zb8tn;O;ZUpQ^glPm4aWf5HiNg@3kUf7EKS0JTEQ`9EME)3=Q@vMiP`u^b1ZF_OVkA zUHlAI#jE0jbsVGXB%}r_O4eJyd=Jup(O&w3KF%NlaPuR~*)XStl<7dHV+6v7$Ylv7 zmNrOMJwn;8VK)1l`)`4Tp8N|m#FK|F6xwbE#d)Q*C!9B-{N2xH#5_+W9!O6(C7RdK z4<*(tuKVvMWu zbVJ?41m27ovg-X(Ci(o!Cw2t}&ihx|E(zbw^9$%w*OP?P39r_sPxlYNAzBRkq@ut$Ur; zapRz)cG?PX^mL-FcvmN%(yGCkjNVsYmzX}eMxD%w>6OYX2R=vTMu!FQqpOkgTW*kP ziA;-t)>CB-DrZ1EQrqjFwH*M#CELPRD)suuWJ~kU$yVf#to!%&{k307DmH3JV#vP9 zzpTZR!x4bv(nFgB5kqZq3FS2l1oD1?LW(rhtw4|Tnx@#Y9?O;T{d@_6yU)b*JhiCJ z@s#~k=(@X`G=?Dvw3M5iTu<{j?Bsr&oY4Dxd*S*nSA!+|O%IqJqd(<|@_VW3-7YL% z(T^ug3JfOiPAVf+QO&^)eB|h^sUr^F@mm9ePJ8(>Yi30WG%4{EwBu!_llrXBsFdIe=aR?PyZCNGga=D!(X+ulzsnd* zj=rK(V3~P zpx7sW*5E0v4ixgdV(#eAVn2Kt&t%4vXXF8)x*Q)p)u>qv0luG9s;(hb>azYT#-0O| zYnT}`95Y8}8rZwdD0lvs+U0zqs#auWr9~DTGt?33CVlAfwWZqxxGZ_)jq{$ezVHj+jj(!dogph@LtN8bzfds0%VG_|BC3wIzX1pXBf$9>~NEw!F0q z9Xy8dh;QOOX6ULve>l4D@ofDF&_YLP6lC#xzbmZJG#nwxut-ju+n`i#0GxA0qc-!e zBQdz^%6VG*ZMi7jHgyV&xGFiGR`xa8x#JVSZKfKDq`jeYqyO~KEB)SSQks!*+3y7= z%U9LbCX#JCL*2Z8DE+v4O@n565ovQscnCs1pm@PCEZ~gurX|LJc3562F&K)B-_R)& zSBB2T=_iQ6N4PlTZHRDvOee24P+?j@ap3iJ)-pkXd&>cu`y!G7U5??6+Vucp^|qWl zRjeMQ4c?492xAo6PGKFKLS+y`0Ijzys$E==g12<>OquFBKOa8vWe_p(r5Mx*Q0UBf z#}k&X|J0Cga1L+IBO5R)_e~O{=8_&h(}fn#!qJ4N&}{Nf*mxPu@JbaP#XEd2zK(06Rh{vd*d(@_|L8-@I4 z5J{q-k0mi1Vz9T%gL&W{sU;Vrh`Zvk$p{26@reX94ztU>Kotn_Vv6vN3C462S$7I( z4s(n|;DDZ6g9{=K4vypv_G}}_TXKzoPav#BzvRmvwYd=OK&mE91fB3`8^uUhiBwEd znpTNGWZgk{w7^(`1OT*&(iekfBNig66yYkx$hYRL+?VVZKDSk8jj2B}5#8ZGk$9&B zDgwq5W5)P?i@d?y^V+f#MEX5J8`x&3b{@rc&~4vizfO~#x+RGFh~Gb?BGv`5o;Ga= zd&142<$}6tTO_a;k~wI>W94q4UpNpB1ucgC1!+N=?oDKVwc%AD{;9^G`ZvO!po`Og zh@WIB>DYa7Y=hrOLqLBz+}MAXh+T40=b>9hkJs5 zpbF7&#aooghJvjB&vn%&5ve219Z>arH#R0VFgQRP5YA z6Bkj15+2t)p$q+1^HFXv-CQ$p%(O|J?$0kyt!s`qz*%kpyjc z$)q?XQ~Fwq(zu&LHUHIIi)LuyC;Y%)${tg^0}|@z526hCrO}-a z@3!6$PKX)|()5)mZ+OfmfBoe|LM<@!_G`gGO+j3&qvmUY>y0(0xqb3uq>LBb`s#Qu zH}g~1#C_EgCz)GnMUC#7~R7~$sH{3v%`)MNwU-+d_^l1WM3awm3PZvp< zd@0CG6s1v^n7mkLG7Y8H*(4s56u5mtsb8TNPR&ypgsoyOe8aQP)+C#mKF4^joC3I3~OHrzeFm zz-JfI9AI<<2S(_t^#ejG7Jh?*hjK+Svj^p1ipP6K==bXm2x&V8yUUlqYEjN3h*NL6j{QmnE?K@3HvO>QZ7RmVXQ-DTBvJ>hd4K;mYd~#&D9!Bz6r>&R&q5wHJ zsZz+5>+E9GC&d<`I;beaZaIk?KRf=Dmih6uek$D1E%{ZgH9f+f1bNw<|Wf)HQ zlzmH#N&}4I8l2~P^MIg$U`N&Kq|q+3%uWZ`a|qa>Ys)C&!Ty0%B%0Og#2SjCV#|FGNqVR1B4VF`)H z$QKo(@qn}5i7w24`-F+JspCP-eNTNzKrAbFuK|^gQ`ch$?#4_# zr(PnKpEF@(f5K}s=IEW9%nHAOvO)%#EP`~4vLQ0VlBGcFmM*l4FSA=|RXLesHQZp3 z4!+j};*`Tpj!YW-Y&Rof^)ca>7|e=7Zr5Zq5SInhhj@ zToFDh$b_ZhiZ^0k(<=2i7A1R+Cu`;D9Q;5OvR$n86<~G_<>?xv#IeEg?J9dYlb5gXi>FjQ0^(2^n^y_~g zX}aS<6#7Y2XnS{p>Y%-LC>#)#uaiR5wd?b#h?>N|Elj!5kPHK}=5;!tp9xiq*xzQW z%<6%NZVp%$5$0IoagtW5KuvjziZxherE20^e!c}qxyx}nLgS`I84{F?wY<<|fm#gAO>2t@>gTXs8^i&X$joZk%&-rvQ;J_Q;vrkLV z4;PC*!5xhLj*~0K9W*V6SqO7Y11f(1T}~ffBB;nUL|ho&M3apCHYd;MgrawBWgM4~ zV14|Ofbtr~){N`nXV5j7;q$dRm>+Ugz0&VYb zzL`jac2)01@jsHDgz00n1p3o`{Q0EQ>!;`^&{wWu2mhy=3+KOi`Teu_SF><7|Gxl$ ztUvmD^6)%!MNv^FeJ{TLKO>sL1>o5v(NGHoXMz+R(i&1&Nm~86U-W3hw|n8P^ZQ#% zH|B#xKusstxttEiJ96}{@V-sf*x`rVfAv$yn@f$fhF}TE1_cKLEzOK$Y{u#jx;^bh z^U(AV?{aBgv%w+mW$CUf1>m8%4H)i#EDEz^5jEH#8;T3ple!!WvDhFcR_$hkJWh22 z79n2(B zXg`o0vV_HMnSZ6-pc5O&t+!cfJE(e;B{Li7FA3weg^?gTpCe3uG6kch`Y{VO6@7^a z0`OvAUmZS;F_nW2Tdisu>zNS7e$9kO z7S9s~ko5MYw=pUQq);>>7qOHNwqY^R=z|pdam8#+f$=AmSn1v!KkLm@*sefWX=&PJFFWYewQ^_Uagg>%%wGN(YDvb zM*V)h>98{09QQk%@T!OFa=3c`W_c_K2FuBS=EhYE^=Qt%A1JfhC%eqB+m8@=c>TKr zGn#X!pNH}3i`|$xJP-rf9KNDuip-|%$|<_GZ)KC7n)B$uah z=nvAIF0LE6H>JKV=C`#l(YK+ndv}RGzpUl&DF?UV^1mqOKF16KmiBMkYC3oNH8bbI zIfN4repnD5UIAN0e{W+h6^v5XS!H=nb<$Kh;>f0FiH z-J}r&Y@R-52f=CdFf^zu8njk%(zWCI6Ajq06d z;|$YXshw_miOh98EG%5~SEps#ZQU?yBdKzSZkJezstn0`e0!WlT00XWBcbUQe*FoLOLZ0`)UE+!M7onmZ3#dDEUeZp+cS)akUmgHIIc8+Tw1tT<+l(c@w38J~ zmVDE93Ig-+V6>P=l0AaZea}7zmK8|BgT$ATlOq0ZGfdwB-Q_bTLWH@l5v$-xdAU#h z`kA>YTpp$@F_ThF1p1?@Qi|DEPiSP=hz4SY^7DJ$F1A_zR8`HUEPX3jclA?hO-E0q0UA5xbs!@+|pP5{N6)AaIW^gj8{t}@@*I$_+N4Snr-_B?|M9muiV zz(YWUj?9*1GCsLu?clI~K%TywL~ryhPA}X5J+5Wn6r06PL+6Yuylc$f;+Lzrq~?hhy~bFHaCsayQ4z#(}RKOE=GB#06I1`aOx& zGtgO(=0(wN+ga8($m6KYMPw%~Cc(~k-3dEYR4%E<6S3||(Y|+<%u>aIl(VI&;f(v* zm2=jVGY%BAd-<#%j&|XmKBpk9b{2~6fQK+X4 zp88b*=TNhvSTdPXI5oZYO%(Xa*w-`TKDzpal-HYd?;boj@vUAITI zxNX#;^*Fj&Ez>0D^p&pS_>HD!JGp2|nVl(1xo}=0UYv&ITWADR@DCN&#K83;?_)g~ zl&cf-FP*dic)6^Dc8S7pW>Lu}ntgmDtMFx_(1qRL&016#Au@Fop4G7*8~Ulr)RulvRzSuXF^Rq^L;Kb>qIsNhNC>6mTAiIn^ z=>lIE^saFh;*Z(chTmj0rAw(6+D$9i#`SgWCdoAnIJy$!HUNE0X%G~R8G{512GI7~ zQ{h{4rAbjbxBVUTldxC~mjsYcTBJ!B(vls<20v#_(q5VNyq=Jrq0wzL-?Sg&r)MnT zW~_}B*Xl+qdglnrJw}qQ2kPiZNdB~r-o$B#rp9jAn6*7YfjgI6r2j~O9)pR{uG;G- zRHF{kT99){7wUk3el&yU-OuRWemt=((nd+N}|zu8uHU}kOD5i|5IVMO_*e`0xaT+wq!ULFNZ(9IXc)%sZ!OZ^?hQOQ8q?e4 z1iT_Vh1^sKgw(+m|{4 zOft@9MtTTqv`K%6mf4d7`GGf>CbrER31Wmv7bs+5WQ23HZAsnJSh5o`&AA?J;|{OD zT|i9{ZegWC*g^hzn}F$6vs71#Gl#5V@Jz7y0e=^+Kt0||j%s2sPG1GO8=-=Cko!R)b3hd) z>z4v_MiI1DIQ9qcNY8I%)oqK4Atv*_dTh(79U*sIydJ2?^N7)78S6<;>z;N85-~xn z^c&n?DSM_MA?qscd>LFZH}BtghwE0(f!UkYw_EIC#(t&ezS2)6Gx`vlN#*B{h_lLdU1^mtYWacA7MvW_ zMIA#8>jcg5x=T~suoO#54(+vI`I#O`niedao4z&@Uv;`|SrWIWZdDkgGXWCD458c& z#rjaOpN+#sF81;?jwP^EB?6^{#S~y;_F%l_-4znw^%A~yi3TMT(|+N9Fy#1k^N~`& z@yJSTG}vQ9P1|c6aIwbRs{+;0I=h?V!poPF2$-5lFLUVX1oe8e7Fnq(*M=OBv#ec~ z{DB{8dD`Nua6=l!q$lD1TDQ%jgeP&c5pKgZHdZPwgEYLAoAJ!e);C>&xnd{)T2rHO zk|E}TGTRukJY&VOh20NtSlzbAMoV@B6$YM0+4GG}$4jbrt&&Ie)bM?TCVZI~y!dg9 z7?z?%JD2Hpbw;n*H_fJY(w6nA77n#+3@V=gBt*iyN!B=9*W9kd zo6(TBBh$G|zthUR}}Nc2u+|P+(266dLC6s6)YoXpl64e8Bl2@^KXm-MBkb!>fR_uph)rq)&51);U9w`GC`0ml55QKE{(<;^-Rm|>Np z(7jG;0Ecs~b`29?|6RygWBM?IX!}pu+(qkb?mswtf2c+M_dETsr9=O-CKa%@wsRA* zvo&&Ybo?R}{8^&@U7!ZZ%SiR{!~3kQ3ZJPhB%mq?dph5rms<7LtMQ!m>J$c!@r5KRHh zQalOxM1K?Vso@MuUf-U|zU-SJhG)07g-}6FFglcQ;+amYGi~uEA@xYW|CO-`e&=_H zo>pfNKj&bqgrS9H6%Vb1TE^n!AtGD5`mBelGM0|kYOS5eU(L#qMMv%kC>GUe#Rml7 zkGjQLHa7@4gvxo%{)q9ctwmCi8*vZW$q&z36GlVo{#FO${U@qpa+Pg`^|ken|G54C zTDAB;w_nM_*2vt^&ep=y#Q4v>|9^rye{g_#`pO~6!vn(8wy8syI zje?Vy3?>TBcR7me{sHMkx`7HQ_Xo)w@=mUMIm#YgydR)+LpdslV z2NIvnHmxTgaFl%l3;9lAFlH{;aL~6ay6V^}a>VxT8_~W!n47cW25sCH*k`*JmvvJ~ zIcr}gNfg_8=v-3$=16nqnyy1)#Clg%L?124o(O>K~PITY(O7ntN8*ffavHk!%5>|kaLqY7Mwgk2 z@FqteZs}#P1%u_1d6@{dNDF3?;yM%NM^wuVSiXea&T~x0WD9XGB(5A<Py>{U$HEeATHk*m6;fU~Q-u7SB9d}QY~vCPOmr$_tC?M-3YdMM z>NS&#;-(RB$k>IQab*tV)+DKjEc<(xike7fj-Pl26ORVWn6JGmZ!GORkC7 z{lV9bN3xlQdIl!m9k}kr^rc$S>So*N^Z6TvA5Y7s!G10k#>n>hy5?k$)7I*7cwklIXg`omA<|&elLoH!{;aEKUl%Ovhpg=pyNrUk&I4_knAun~GG1p$Rq`ywA zQT9Rl`W#(yTs6tGt-TNaGvZF&PrjEiXMVK?*Mzbh6xw1w^P%~Akkbnc`qGvm89K|L zXn)L;GyVXJceLo2X8?wQ^N)v) z=)HVeU*g&+4_1ZI!ChP|0lwiY3 zH;YPK=5Hy-C-}tk9^s&Om+^WL&8Ye}4}elP?;x2^Nb51E9gihXGkLmlz&LHjo!ejo%e^qsqkkrt9Ss_+xtf7K|Z59j(Dxdk;3+8{LC!JGo#>doFue#_ZaLKjmSD)-6JBNWcx@he zY{odretbMW@_ifM^ADC-hcC)AR1m_J$`{Y49G79}DA@Iap`ebiqw1X(J-JV&FUPEG z%iV1Xc38*g!}OJRP!rJ+2q`KoC1TtdLlvkkdfi)l8 za^o4~6-6de{61*YzT3k?lk&c)F&R$ImmHq z8GZ6Pt~ULKw;ka!c7aZ_WWy1O>c&aSRZ>T%jzX>^O7iDz9Qsvqj=8 zy~&8_Z+5GCfFnU+O(j0RPCCFOYq{*XykfGM+HU3FHfrnqzQ$A&_4Zx6mAm?9 z7G5VkUTWv^Tpj&wFLi8WFqS83yUp05N6<+bzM{P^QvvO94U4b-E33;K7Z8;(6-uyEQXw?49h-Ne7z|-(Zs+gx{sV=H3gL>?06Yt0R|eO}yO>-s;|a#h(4D7AEYRd(Ao=94??KkMJV#n#>~aOJ z5=1SIAQ{P&6JBu?J&{<-s;{5UBVtE!CwH9yx;f?#_`pwSG@zXo!k-12csbZ$I>5g+ii8zS?Ay?Yl z^Fj0W#=eguJeuU@^gRAF>Wgt5a}j%V9(HvJxP$*32~6Q=UisM6%$mJrCHur)qp8+K zdwcu!<@8BMnylH((o{~Bfk8A7X+sZTVFFN~{y?qkt{mgQV2|fC&T8QfaL?&Q^GUNs z%c61o_Xzfsz~5co(_u{TVmN6klr?$1%hmM5iPRBJ@db=)zXy{R&pSR;nCwrrSK312bg@oR;2j)DJQPfJe;F`o+;RU|=xslqe!O|A(`0 zjIKl5+HPYzjcwbuZQHgQJB{roZLG#g!^UcCG;VA=-%ids?|aeH``+)z{*^KI$bQyb zlh1tCoVGzvktlTWSg_Wf^C6+2ONqJxWefxdaF|6<9Bo>zIIX5q=AFGt)rD=(>VCmNN^_{0^AyZ#ed#ilkVuR-AN``C4}EIoRAG;I0ZM*gi(Vg?^ou~lIl$>_q4c50=Jh+pu@H&`Rc$Mw5INC;%F!tp#DbOK zl2|rU3e|HsMDh!|F;eXi;@kqHtl@*s1EJrjkcYg5urJu;75Q#1Y%V|`LkRk;g0g%7 z&vJn`jugn%!FCcOC>+FE%1ZtwlBxx+3Sol%sNGc+swDIH!#-a?*Dm4&sEm+U;xccq z4Fu{q=DjZch$%FQHod@>Nr6|{QT2%^)i-)$=ZwiUgBz*P30y0*eqQ61XB``Fb%~>E z!!t7*+Wc|RHAA|_UT2c8#{{4{S%U$jIpET{#L*8o7!FH`0cnrB7noje+F@f{37C~L zT6Z)zA`nkoj9X|0LFv}8cgt1yDniTIbCPFFrf26Yf8y8L+P6JuUNOn4tfEDME<#Se>&uJht5=pO&pB_hVpJa;#^*k4O!Cbx4jJf)j41Ems|)ijVe4+k}tgw*|RZ+;9KR)PCW0miZ= z-<{>bEaofy$0W}tnGd+{8W6MEFq&K`^-$iWW7G#I=1O9U3EjfInQeudLv#biEKK}} zIiHX$|J?U*&UL4LG~7EhHaQ;}_4XU=N7oZL?W!JAydQU7Kh?p=co7)=NRR8+b?m&r ztn|#atf8yA^WmI4i16m%snw%BazM4HR}D`V&x^d%g8BGP9re?`6(|QL9tGgqszri~ z!*{b<*L>zr;j+K3loP95*uT6ZP)=6C1psC@3fs^IX%41Ny3K9{kFK7FF}ny}}^hJ3{~Un~67g*5djsE!xQ7 zq%G`Dv6SorgF7)B*XKjvsII)#Megs+q;vM!%=A&YZ;wZJdf&bg__>Qlb;3Q%B8hF zvzMJQhgmK^G6-%9Cr|d|FOM;K3`f_4cOj+MEzaki21(?2KJ72 z_9l+b7A8(40}N1p^f3J6t%VScDWX{*Y$Dj*J<#2lA9A9mG*7OeIzKLta$aGRp8=f% z1Cv})Vs&?!6Xo2N3|3PjESLr?;g@u;Ep*SC*NztfJla9Z!eDMz*rG;r1`-97gVsRr z@#D$si^u1oiRmVQf6@x@`TPDCBH*u2Qhe6ewUi1UqrmAlMS{k)Pkw!PkgFE4$9Se|=Vey()h2f@mFEGZmi&bqg^ zILvmMzm7#Es!EpAWSC$7`F;0|W;&VP6Vy{N>_%AR=TIX5a=R@TMffs?CBL5UQlXLj z7U|*r63@{p1=Ue|kEdzhmJeKI9G4<%5YxqR&WV5ej!BiOuy2Cvo|BqSV`+Qen~gO| zm_};eb{SgTNUK#%?I|em$s3IJhczCJpzz){00mdIe{f9^B&+0_Jew2I;K%RbiW-+B z>N11U*kn(>IdaG}^3IO!1A51yLr84|3aaY(o(4$orI@l9bjKkC6jNZoEx$>A2f31k znXQTOU!X6_0=zHJr{<1NfH(!pqMK|I)M;y#(>z$}u?Bo2->V@c z4BSh4D1Gibnbv-c2Uw7guKKCpB{1Gmz~5%^DOXMfHJ1OhOzbJgGDK#2dWvIjNFB=B zE3Te0kBdd|(2r6Ri>jQ_li1!qjoudDWj1Lgz{~c5oYRa zZ5!9Ze}Wng?N9Ca-tE&YJ2*RiIIO@ z&b{LZEIX~!>-ECDi|<%o5sMeCGjh&=Q5?p{ZgyY0?Z-ER8}qJI2r(Mp@(Cjm>BP4S z74#&s_Co%$y`gQ}nR7yscdvcX{vipN4Ldj1UCi=+96dDVp1e3am68FhZ@e)gCSov+ z=Tnns`MS1-37ExX2^&tc31_lQmt#{D6mYpgDqAm!h}gLC6pn*}uyT(te$=MNllI#yo3o|Ks1a`cP%hu&{b3jbFpB@EE} zu&{Oh-|HbG_i{Z}&gvo}Zd~Lgrl8q=xL?&mrpMy%0U^bh;M9#BV(wI&&2qm!6rv&Y zt(%3_!YuuI_dD0)&3i9!`v@HH47hr1Yv@ES1#Y+N>K`9rOb9_;ALrCj zC(6@{{7FYs`z1>WnGo46^CL_1J)D1P+hZvpgeK0gBNuryec`*zPOH=ZdU7UAngBH) zwrG}A96!6~<%Z+mbr8*~any%V(<8i>N>=a@ks%^6h+#HnNS*;Px2U-yE#6)(B;XziSKOU^4N+*a)^=|MMu}rb*v? zc(*{kBzZQdwR09`A^azG6c(uM{*jvv(`MoYRA3?vH4tNCUyNR?Q4qK zbQe+56L^Jc056+WBnL?_o}Kb`@eBEcoYa4mF4K+hw_$L;2UiheQ`SQ1iS~r4P+9#f zTVx!aobm;~lF1?UR;0ytl~{=Q3!2Q4vJIs`=`5$1<)FV~wHB2+7KXxR3ee~k6GHEZ<%|TbFujX6F>dY8u;$b> zK@f-*H*H*VqRQ66b8xaY)9xFrR!32A2>H10fZu{u3xpg)&_w0KAuNkc^5)USUfG+t z!N>g|x=Ib*%Oh^G|1bwOzCl6aU7sG`yw?FM=bajILz?@!Q8tVhY^h-A2puR$@5UQ;Hb^m%m0X;`$;8;hw=!H2DNwEGc=~54hr=p}kxS?kbq< z7QmH&`>n3sFQfE7UyDDZw8DTaV42%{c)c+PKI zyPhbS?Puz3pH05STIVkykVp0IO~r-RYg|G2&#R^i^XiZf!zE`--04Kv<<+62Z6s>z z+kKx-mFKxgz{QY?DRZT_$P-g-I&9$mL8@39{VB`=bpF`tr<86U4ixoc-O164C$5I- zMkGP#Grz6iI}f9rjUPI7Si?^KS%BT}6jbtP_AhwZ{S95YkZI#IpwUmcKk%OJa#xMa z*e9CJ91mb7wTJCll6-)_wQ``af85rs_XiE3Ezm~+uav2fdZ1-6p6`QF<#2$oQa6L5 z59W_1ib;E2Y*J?s^)msuv%ufFvzL+8zqvD6J6l^5Gl004tI5CmvOk}kqNV;p`w>c$ z8X{m$Fh3_uvPu&gR9dN1O!7jc!Gr>Oh<4ruN927q%1-*sIH79btT5mf}HWDs^gOp`KQk&@|A3L z+=1vT$~B86J@|C!A(lNZBp=nn(IssuL`>+)&_gV!>P<1%5+!gs7SN_U9MywzZMtgL z3*s73yJV?6{T&N|Tmp&Uux3z+&~(3B7i(}KapP5fUXXORQDP|y$@{7FQy=Uq!mor# z$nMb+MPZXLlWK5Go|;8lDmjnHkwQLjW;0r)K7}vL$}TeZ`J>0z4fa4Yks*u-oywvf zwrwjNdCSYgiY8@wXB#0UnkGaWohlitrZ#bfin9of%4$o&jq`EUuIMv)jKdxL2f2J< z?l{CArI2LGB<85hNVBjk$W#VsW-rEUB3UOuzS~qh$7o7VMdZ(can7C9uG_`fKqHd$c7=W^2I@0@2iXdR;+aP3S_hs(@a%@3+F?fc) z;$B9Q`u9b-f|-_-O1Q`Om?c?4il93j4S4q0%!pY_-Tr;b4$ zQib5(jemf-tNfr<$>7Jcgm@y+L0SIyOVuo~$7?1zkK%KOC9k9)`Q zk|gb})=EcjA#4~*c+`_UveC1JFmZ3;IGh8vKDS%`P&+G8jxTB_2u-o?E8Z0S77k-L zS4HHkI5JW53Adu-{53T=yQR*)0Nf+a-}*qp|8ST7bbx@}KtTY1h0q>U;qAwq(>VO` zD7Fe6#IYa{g|{TMLzi!Qr0BlFC+az^f!`?f5-|u8u79#9%yKg2JiPDQ$MR!3K%Zl* zw81yRr_x7hHs*<=iY2#_u^ms&7R%+OR! zzRJx!oq`rvJzXVNJF#XFGc>%5zxxkJ?GLm`GC%_*U0|HjcoVy7t^5V=%=IpJbv;T< zCWXTvaiUqIwf078We2JPcr8BSYV7R5<3)}8*#cXX))S_9KyskZ4aS#^+k;Ffm6r;% zvut61pDB$SwQMnzG$udvvx|QY_1vhO3xkea(5X{sYg+C0!N`&ftVv^TvAyhHkGwXs zlqN*#AKp*9_qlHI;}7ctdWJ(Zl~XrHF+w5euIdJd1S6m}3f`vPP{~e^mede8ibC5D zg0%)b%jghdfQ#7uM_GetEb6TWaCuI@b$KuC@?W|7YJ?oMgt^`Yqc_K|F|sgkfT zMTENci_Nb=c^34R>6qjc45ubq$*!kOg|j>X&niC!0FKU%^hqJ;>;62#zJz;PTGs7W z#(dh36|)uJH*?>Zkinod$_!}`VqnTL`d6#`$-uHP$r+7V^W!}~5NJ@lpew>&^V5H4 z%SWQ|okLy5J?7jTVEcjV#<`Tx!QohN!5@tt*~@>y3lY=dS)O=;35OR20y>i}_K*r_ zEK{gC(dd{oXy?E0(}+>Dg!w8oYt?9(_jLm2=%)L=06jw;ny9`@WyNQa2Z=|AYB(TN z(8B zM7B4!^u~+TUmCA?EKeV;%TpD-KJrCm@df613;|c@*fIIQX(^9dH@D3q)0tGdP(^UV zD^eR9V3KQ)e>TjGfa)^DP6_6=Wk8|zLcJh=YJ(HHq`b}@?v+btU0gV_J_hjpeeu#f zo!Xx&Wc0{{@WR(HA4`ZWnivQ6ovS67CU(!*D(Q@g_2a$=jbtuBJM2|k1oV^GB|)!RL|*j6RPM0!E*qeu@S5s)5Mo1R3m%p342D(1#Z!( zcn~hRL)|^)nUHFFhl@^Hum0F$^=nLC~|NjYzKyefRpKC=Q~5-^XR; zwuVZy+b~9-_{vHw9~aJ0VzyKHMUg}v8fo8I*v&KV_Og3nj-t?r3u&(XJA0eL)wmj; zpD$*pgz(JxW7W4Sw(UzcS|ckD$iUzfvTC494OwB?TOHA~pDvrh)-L(qmLG!Oa_IJ< zCVVJnguFL@5NeH%g6o^V$RS!BE@kr13ZE{J*-quT5i<6AkY)>Kyc3v|-?P_O5$0}S z-S;}H0h%tZSN$TFi#(S_I2mk(`$|5j}dUH)x&v~X4$B}Bw$)yQp{Nkr|2)Ru)eUd>Fb+wEDCyS&ONm*?y#@8X^h_D z6dt$vAvVo*`QRYJ+26cU3F-Gv@Sy;3F91G&5BEz${@>u1H*hqtF#)t7oCF+AUXpl# zr3-opo0uB7SUdlPwTu+-OBYCaf8kE$G7qgihirF!eo|5m!Mc2ZuScm#mV{(D`G<_d zb2_-MAD?7qqG9kmSZUIPYm8+H-u7j_H`@9uLS0=Ip*;Qo;z>kgAiE1Z&-?!dh__^q=WG@%1U5o3wU|%nmC31wSYLJis(*QG(nE#~Kpy#F0I2hZz6AE zPE_44B;rT{^2%lTia8lLh%%JTAVKStlq$Wt(`2koGh9RE3(}C$?J7-LSm@;ch;e?V z^;~awX{_)wJP!*Mxv5UEH22em6@Kr&QZY@8kG9Q$6{Yu(X$Y1-nkNt6nUH_iUP!E- z-5~NtmTxTnI3+E*bLYK}^Yl6BQt;aIlcN93(uOJhr_?WSls4PXONaZ5jUP3E@B8jf?ztCGeRg5&8B&!pM-SJR%A$E=f1$ybnm_`MzBO zIL(r(@{%oov%&L8M=WP4e3Cd%DPIDxnzfEd!pc>6aFRe*iILY^0+`vTU$Xp^H1cny zgO!syr!Sw3>|!P~+RYBW^49TH2zc6^XLWa-?Ns9e+9OpiJ6G|zhukGT7YaB<*6W% zR!2=h+18Otl{&vN#~m7wE=$r|$dg-qwiCh_TxFE1S5oxxf9~L0r8>*$1rPl4M7}Y9 z2u5E^4$ot@rQLQu%wcxFe|?SjX6tk!C_EI5bi+L;F`Oa~R{B0A(jNoa;X7s}?01Y* zvoIP7l1oM*G0T!}gyFA?0lCfiN$RD?c93=nb{xjLG>xc7iH&5BUgnW|IvPgwj?JIW zblqWQsPcnSoZQPv`x$iSHbPqrobt7Y>ztEX2}*878Ku>Ycjg^hGfOSgsdUz5v*gv3 zY$o0THy_%o)altBhDYdTHeol>F*gh~3nFq7HIk<5%uZDCD4@dL!_I2Dm$>IK+ihZ@ zI;@f@HhREy(T_!g3T+!CSR9)O!t57A&p;2%*KAy_AXo*X^0bRY(2mUd4G|SENkb7vuXk-u+OmO8W#;FWsgh zp5hWPTrKwiP+&P4?k=a0f#-~ znr(?I`si(*$&WVK(klu*KlmU#Ih-6q(_5j{@#p_A>fk7N>_ z!H%DiIhWsFBX>s!4!V(-GX>!V3pl23LU{BJT>G^^UKjyg$H5F1KsNE+z#^DYA|ai~ z1)@WVM=4y;6Y^*fvLMB4=9}{^OUr%i?0+vX>o8;%#rAnbUdE8+-Hpr{BIPZzz!pf= zxl6n|;f_&e>NVlht67`JbRPr*{D(GRto`>96#H+@`hV;6zf$xL@IfM8B%zC(?iwG9561cN6(`ccJft|`IDnpJ;Vk?ECumAPeR93zG)wZ$}gN2=t**L&3D8T@(HJ5D- z!8Iq6IT{FaU4W=P{JDq9Z|t?Z%tqXqV+e3T3BUFCIKMipf1UjTTz$y%Pi0Ve_Xq|g zc(x@A!0eaQQgBKHy8lwKw`tB6*1EJM9gWuy-XyaGkjC3qb1~hvfB)Y8hpVq#)1U50 z4|MT&q>>Hc&DxIzp`^h<-@}7bE&-`;=~l-XFUQ^06({TMR@K1Ci2L?r(%YEJ=wIps za?N~|5EhyLRP}9y?EFD1rHTQ?J{t)*xX_CcsLq0xuyl#GRGI_FgCIkPqLR(4NGw^* zvDcnK#h_Dm?>T4Iq3F?J=Er`&>&Bk6{{5nDR~{1#-a{22kr!tRhq}xv$enr$R8ZKm zae{ij0}Qx~YfSC<+fe7Sz8)C+=(z3tA8X*ROkRI{18M! z{drI_d*HM7L>U%({*VEy|<{?}N0*g6}y|9LUuMgg@eOmDk@KC1j%g(>u;Kw&yt zZZARsWaNjwPk@{84x5onO8?#3H1`X;p-PyD_!BN^R&D#0Ra;wYdkYYIM?s(qI2K$4 zP1}2Frw3tC{p(Ur$9#s|B-P+v*nY`|0hcYuq~rHV z3yc%0`rF6J#`!a4-0naWbdh(wSyaPbd977dj?UZ`sBWUj0hM|eww!# zaY-&7s4+E9b#Dh96>~37Qxsr7QN(+Tv3hoLFr{o90`%;>Z0_S1HL@Yg2cx_Pct_;w z{#1cNAGhhoMs8&CC-sxbH~t6CGcKi4yj)FeZVyvQfPs7D3eXD2yX|v=xAxMVYX^j8 z$U!7|=#p{>#+Bb4GO$$HD;N_mLRw*$)0`Px+3{XmD%!jlcwl&){G?9<^{F$PVkf5ZVeh$`yPHq z1@W$v?ttWVx=KMr)|Sk^x;|TT zu2}M-L-MEaDTWw@XKOF*?LXG`7AF-JNe9qfpW#0|ZN||W7Efn=QcwdG zA`)6}%4k2??SoP_n;E$ShAR6eTdVoq%x%!M)-UT=Pk_(gM*#d^c@-6aq5tF59FRi-jNMyA9~D*LXAXl8 zHt}nt29QGr=)D)`hO-(csHp)nRd{+Wmj>0jD@i}$rpqqQUN7vvwrh=)|6uaS_Ve;p zlUUAp9yIY^wWx+HQPJQjZpl7}m}#k^KF#5UMJPJSxl$87^-A*(74-Cfp9m z#98i~-@du#E9OCvgf7rPRHB4&?;hXS{@ji|HLUJu?|II4b`t9+bi*dH+{6hTmwW8N zmBa7K;wfK{ATX*pI513p%J)korjYlY(9`vRLNb!;E4&x+lUh&di2%|zNR)p9d1;63 zqAW#W0x&-R?{QYMu(lSmwsZQ6KoZj|D<}YP;BO7yg60K*S&;Ko)f0Y#42R;-E=$?y zrq*yp9>oRvV!8%=BHzpLPG6vt*hymRe!Kel_72QGw4gIdP$yTQNXGjr?IfW}+PnqB z3a?D=)-|6keJq*@?Rz>JDT~w)@b>$$4)+u!&ruF!jYD2SZ*yUxkH%K6{wv3jY=vp5 zfe4C_iVNl$14mC7&gmU$Jy(3*jUVm3vDtJh*dc?C24MRN??40v zTEdo~8gD+3B$71bDaKPxd||X~d;oochfJU2b{t@2FYki8c4aiDRszQPrQ-dT+ z_DEg!E^A(p3O5QS3a%Fn9rHY!=Ume=N*l|-uo9aohF`e}rX?c|@C@%7>*m zO{>jy1RN*QjUv}qjXrMrh-Sh!*!&>Dx`*~;J;Gjhq#HX3fkd2VmNkJY#A{5d0ZgQ?&$nq4SJT8IJX1gdYcpNpW~V0rfpGo9|`yFi5DxOAD;LdxrPBK z#Y)7kt1e0(aG8x2H;~>U`A48_+@72Bn{P*q8r|K13U1gtRBJmSK{Sxb!1=mB1O;q@ zo{_IQs(m1rup7+F(;Ik7R}lUA>f64+9jQzKKvMlJNWaW(js9n~_rD@NzKCD`TessM zzDvx-z|q*mSn#j1J67(c?Cx37&jk>Tw%0qvrHMVOP7fgKiX>n|km$0L840A4%PF)B z+tb1M{O|_ZFW+E`a~~WGjU2ZQj9iayqxo53-jU)}E**iO6$V_R2iq1PA zG)pg@!sg-@dL-McVHse;e;pL%ZlbA>OtfDbEuU2KnP%c)UaDes8Qh&3fgq!DupEZ~ zqr|F7*sQsH96L!Y$3i)#man@<5xovtaAJ2q2sbZxyPOY~NOWI##-}SDmrw{<5y@gF z%}jadqs+)-9jKAM(LV(UDW@%B$+9~HP1b!*_A*C?K;^)yc0Yr_E%`)Q^r(WD;n*N- z1G&+f+gW7POwBb%^AR2P;PJJ83Vo}61_L;(ufIL8{{*sxjg5=*KeVl5M_&?v-uB{h zz#9DJmOx1WPm}wVa&3Tor8AlUcfJET#k_F+yrJH3ApELOI5K>BC@65k?fGLW{MP>c z2J$zSXk={C9a46}S|+`u^y4TK!R=h~lAMC%FI$$y5M&91ph_nR8t7?ondbta8$SZ< zc_XAPlQQxxY4Y53)j*rSePIil^dwdL85y`!o?o4Wt~cc*G~}St=4s@gaeMAA&R%Lp zh7FP=33$Due@^SO+W508b3bFJ$>z#)^#YepQvS*A9eL1^>G6j12q%JPooa^EC1g-Y z_q%ngoZI_`N}8`^lfq}wJI!=ztk)ZW*;MLw1F*@O-vUbaAFLMOEtJh2 z0V}ym2Bv=np|Rl?P{B{0r)H+_RJ_jdRp3GCXtQ}x%L_kE=zyFi78uD$AkUkA@MeJr z)Da}I-0HyqZ2{smJSKX)k9NmzM#g0;Q*x5@KaPEWuVLQCnhbe}g?F|cFwL$c_nuV+ zT7(@vnKl(;CF3iG#u3MMAXINN$C^8W3;@`?J+e4m51o-YP+UC(xKf#l2uSb&ws(Wc z6AyU{mo$Bfw`akiv*)4BylX`Za2yax8U06mnvbS=A@VeP44LVY8__Leh_?r zXGR}1Q*w1^KFEo{nRKW+xrYS7GH(@D8gh3%|E;Mz`hgUQjkx_5!jQQt`0&Q?K>zx6 z&aFW7!SNA*Tk~&`rT!1d{u`{ZfP&%0Rt4-)pZ%7((WijL*s^&LdyvC}ex#zy5?k1K{rLp)!%IP)mnQp0oGbq zozMP=~e{^PjFG1g1QMWZFE{}LQuD6@Z`as843@Fz^>27nROKj75yQtO61 ze_{_Kci#-sWv@Q{J|HYDjxbEQ99rj3P{S0?Rnwt%z6xNJ2UUR20*A{iJV~^-%e1?F z)O%w)rm{nxNu`ajFv{Cz_TG*fxhdgLvyU(}UJOgeQjjl-HZ@aE#vnP_F6&$Xd_zZ| zF3u2k!&8_t}gwo}v7%;S-~GYX8+> z)uYrlwzHzIz|OQ3UJBL-kb(V)?BhZ#zqvSWZUk7guO%|s1f2-QE=}4;#s&7p*Iq#C z$YS}+(<3i*iN6QxMZ@ynBL6E;${zM63N8lL7N!>eGscV4kpfac2r+vwpQLUd+#@^y z&TBH?ZGs?%4bqfpz;6oMU>%Ixs5r<@da%;D0KQWgw??z58|$HG%G~xgOFe&?ZoDb1 zH2D_t78RHk(b14mVFJ-xq&`%hm%9l!yqG@8K6EP|Nx(itzO1>TFgQ7TF~=VwNtB$% z{_rUbdsx4KEVN=QR}LbnU3I$;4aUSvcZbWF1XYQ|i#2yqo}43g^P@0O(4p;)B}ai5 zhPbXZFAx8m7Cq_;ylIzHC&SnDY>!S^ZX;-4@$vNCVtE4im6+}H2*OfxrjT=&A(~TUHA7F7=fbKBh^}L2c8HNy6<)wEDW9+;RV;Orx8o4 zK5vPY65tcF$3NVs3W^J)-;*50!=YDx7Xf0#p8sMA>X=y?`NdJ!$lwVvHs_59xd@H` z#th#p`J4YLnL-wDK(fE>7QE;a{2vbKpT>Yuaes~hFS@4h##LM0V@veMakaU>b4bA60U-LH|k6vf9*qQgDF)S#s8DF%0fIvvSv&d zY+1c{T3z98IMZZM8*6T^DC}rjI*OSl-xMhH_UMqfHjRg;>eh!Bx!+kZWMAyrLty&+ zQFj&eNA@#1_XQUa_^k~v<5CZqt>u&d1#)>OXyC}|2z=9Q*}@>FuFoVQ#_m>>SWbQ7 zaZ~}ynF`UY14m7PAHTm^9G^-eh$OjFeW!*)f9{)YstUuXYcM0!U9$ssD#VkhL(fvIWd&|M0>#azg+wj8GQcJAES#r;8$d zu_|JJdSKB3Avkx*0I@E>X@x~PGBRjN`X?RMp*Qff686!rCCR=(S>wOl<~|=bXLV-q&l$u4FyA#*e81w_UwK zx~Tj^`FJQ)fOHQ4lf!Ra4&(m~NWkuig|UIN-JcYKB!yRd&MI@6of$3lJXaRb?*8EX zp%NlnxSZyayL>V|UY0l`>@Rg9EfFm(1mG@X#^cuSQp?MFx^Gt@SdrD`^o2TRzBMro z1&dwjF#Ds_?x7LA@1DYkS2C{0ZLQDTT3NJ)vY*CMSTVa#_*`i5kjh=qaNV62V5tR< z;cfrPSNnMLS#7Qj^58PHscDQyh_4F;%5|$aC7A=AsJm5TorM!c$B_w&Y`A6oX7XzH zVG7F9221UYSzdr22ZwNcuV(=Y02t!8){6hPAiuO5{!9^+ zj_oGoQF!1rHFL1A=(p^hI12-140cY$@Q3U>y2Gfeu!3%OVfSb96F~;o!Jozm#=5YKfo3|T6pavSkF9^?_oi@wp>0=ws{SEaGXCKXxS_l!sc-< z7G|8ZZlFJ`W$w_&0w_#YtBANvd0$i+=wryhYz+qBC&RGB!(vekz#KvbhAMW17iDMj zF%r@a!ZxxViAoRSO4oOAt+`rO=yY6we3hlNK%1tAt?}tOBxo%ON%pN#1j{I6TQQp7`CJk5*|+G><*fTf<yY(17J#DcLI0Xw zpnfMSOB*^i-pKCh@ardwRFB*_>(<$Xsr_Est#iH*fPiLxvx{;NMw z*V=d5t}BWsQnCj#__a<jz7gp zP>3fqLKyWHByUtb$ujqMtsDI1(ETqM{+xWh0ueX-!kr2__KDz0 zhWZLGPY|pZE<{CMj?h) zM#9Hx4UIDM_Y3FR@-0*5?8@{(B0>}(;Cz%oK`hBM0_61k!CLA_2%!Po>Vv^Gr1p-k zuGb#4Tg=sS1=d01?=u!fWod!o#!xC~l;}azP>n~#T;%r8FbCq^hJUcZ<+08m5`}W6 zm$Rd}hm&azk>$qOEgIq_b4*6@2Tz}rK%5I5sFd0rvc!l1}#!{%_$Gun6 zY@sBc7X+L~({H`zFUyA4Gx^7T$Un?ez&4N`LFAgZhgu-w{aaRi!#b4=zpzR2p<*Ti zW_=>#hNw?Vts$y3&iZ;7CJ`?qp6tHCBVCsIR6{FF^ z{E0b{3^z_qX1T}UVPSzw-S273{y;~~=8{i)UfEqi%*BGibrwQ>_9NVL@kTAYM=#^8 zwgK@sHNj=Gp&nwXnoH4li^`@wwXyfw)adU=8wV0D7``IgLu)*2AU`l{^tjUCsS+BO zd!4@RPI}gK6Bdch7SG~2=6sB-BWi?m^F(yNmP6?DkKVE5GUoPJAi0<6wmo=d>{uo0 z((C~2`RKRy{7WY0|86M$0h$bS0APlDd`@*$l=29SRHh%AlP8zAQ5#jC-%MylGVVK? zME)VRg6a7FI}^zuvT1j;doPt(d6Y_I(AtDY zrS6~Erw1)2!LO6-dt03UB-NEOHNqS8oP|rZPoxx)p#DUb@Z-(V$!pBbxN2#u`~SPq z|FR+V0z*=q+zTPK=lGstYfeUd1BV4+Q=c#*3?W7+O()`q&Ez3w*jn=8N)7 z?)R3bWv#$r$z z7lUr^&Ap3P{|)y9iroM8ZjHaK3^PQmyvEgL!*z?{b5QDLAui& zQj+?%g=}?5>gR@z6L;HNyCO@&;y&mU9~{PDj~+#JrI0#DdqgjlO5z;{`Hwe$RCey~Wd860}q`hToF*m0+IzZRL)RQwJJ8+p1)Nrg5gM7L9^8e1iuPT|FADb`*MU?iXDLGpAcH_sS4P* zN|KjhRS-amky2S<1+e?}9jYtms}AZGi`G|~b+HWD5MjR?&>XgS91m-uk$rd?geW=w5zn$gIi5qkDstfQ?))sgER-U1R6 z0H3KMm5QRs6@Q&3yO88(Hs|&NR{w+nkR!^$Z;TfRKtW(GGWxUTxtdPpO!}W2@aNT) z!Ck)++?Kquph5k7Rw)B8QCk59NE?XsH&UcLYJyPu{1g}x*RyCURLb3d8yl`h!ZW{obtOUoqC5LA*bd|zAl?P@d-iX%Va&tp9nrs zSn}DzNZa0`3e25#D)Hq~lQzlUlWRP<1MVo0c zsnIyZTA<+IAD2@Z54w zb(JdK&xa79n1maP&rea#-gH#pvOm{R1&zAbZqzJ;*D@by<6&xM+F<&A03eB2Z}=sV zBA=#4urv}uVR~UMOnzYM03tsny%{R0$Kr~}&TppX)AC1iH%+KEUKYM+5vtlqxLKBE zE>aPSG2`de=m&s$+w%-_w$U8F4|>8TnIQ3sm@IElVPK!3yUV1U#3AVuu;Uu2^Z>hH zZjz&7C)QiN4p7~PxIFrvcn*sVyhGiXW;u9Xeti}KbZ}aYNq)QN_u*jgJ;Mn!fc4UJ%D_9R`(z$LIQI+fP>IuBFZu36Jf%^Vv0FLhEv0vn-uc@={7Zhsi~7dv zeB_Tn#TjN6kA5xy^-Zv)R7lA z-pXNTog;p}s(3TTdc(?#Vmmf%M~UY-t>G9~FY?7sg5fK!x9|McvboC>wr}5hGU3@Y z$Ji&K&r~wyQzZ`O#XF;AZqB}vE&T!y2X6^low69_8ARs%ek8OcB6DaBVRt96+<)2{ zQmp8mRDjD}%mYT|9Ii#BG-SM7>qTgOqrC?9Vs?FyYNNFP7vloJ;P2aVFEYL_zw)1C zO#UO+{uP%v8Cw7@!7qu)+g$rMtQvmG?|7I^NMLQ@$@g-8tRISz$zmT_}NubEaTG=q>ihtCHsG>DW#XFcw z5{_XKYCI0l3@7zUdJ~YH+@8!JX091*YE)6L%s@9riuhzK?O24&Z|%2gqYhQsJ7mD& z&kjr+%OjQ9-G1OzAU9l9`S@5P1#Ct@yZ%Z>n-P=Gf1xu7|JM4Leue(;srRqYD+>JK z3Q)bQsS=kd1Su@xvHA0%;O96Odsi2d4^araS2W0EkP!s23B{J@=hIF(6Ti6QyLTYB znVCmMp(n9G6HJY3;4MlPjAM&VTbr186C)REKZI*pNmhPxxL~uFigP$z_3dC)rJ8@Q z#xe5|hr%#0U1~VY`M%+~k#XLyy(wBk0anX3=31k#iTo)ZnKp#+~5(_N&upcXyrETq(>{?xMxd< zQ83&rG5kkEMc!q0K+VA%HkeZu8zz(MZm`9dZNo6|Yt_)F@jSaKJeq4^m!eO$epzRq zNIIQ@G^BX>Lc3P9H@ie59;&3&HrrdDjcXI;O~2~!mVLN%r92z5mGQCGsQ31vKEj(( zTHC|X!{K zS{cruo;&GHxZ3;CF?1{jN~`Q(c{DR`YpOI+r)=dKG^%~*H1VGE(8jC+kRdEFJm44< zj9IuRy15QO-RhO3^f(_(XlikEjaf&DdW%L`H52Eh`XSg4bTbKxzTQt5m<-5SmWmQz zliyy4S1J}$=*_-=IMt$R5=COSI098jSzQ<8c zd7E+%Y>vWClkkA)yXM(6LbMj&ljL#)@u$h&&#M;V2axoBRmk>WdWTpJ%2KPwX@&A8 z1MxD?avoHaEu@QXHbcTwEaYA9P^C5<<3=V(Vb^NXx@<7&v#(}|Y5pH;Ul~=`wxx-? zySrO(cXxMpcXxLU?r-B z%OK02kns9YOlr~%hEnpZ>~4Ho+IB>TlKsU$Wa!X9hCf@k>%5N7-oWGO2PbCsI(QbJ zZt?k}Nq&IO=44om%vgpE5BJ^>x+RhcQY1V|9c0Z|9DG zBQE^09EFMB#f`29TJIE@005@st)VX%vIuWYogw;K3AMG!FArEqaKs_Lb0c$ib9E8_ zFqji?`zu4D;s(R8q#UGKOEcT)Ivi6r!&Th_yO25Keo8lJ?b_4Vx1`|;jCR}zM4NgD z`nmSm<$n8hM!4=X+P1uNLq~zW!Ow*^Mtx~+QfbB#;w5%$4f|hRj|`7{6&g01?dRP{ z4PlcA2)9WW0lbD%jv=ipl$Nn(re<<9p%u7io^4XBS=Y06*Zt!)6oV@N`w%Xu4V6;a@du4Doe43Yhx4bXgW!QHbW8u$0+?}i`ZJO~x-j-$cK>+Ni2hQseh@>qzwRNAIjt1u1L@$i=;8G9E*HMxCZ6`LIru#&cb z_8>|$1D`$dfS=~=0@#dD>w`>FunG@1ZA5MVHUPUWsPncDEDZ53H=|T z5-$AGABM1%paHV%vvVM*Fc?;)JA0;%uukV`Qatp}AEv0mK{G>(Zx@&E5ZClqPnQ357Y2mP9HA~>U}PPx8Fnamzen^m@8lV z5TiO2Aqn)ZsuiaXp0e*)2#YYpf)>*_u+RlaV?$BhqLgf8=c0drwH6@LVF2Chpr7X( z*2#;teXWbK==|0X%ey0cV85}sHrekFJ>_4XWp<#x+^XS%HK#%VfX8NA+Q%kziP*S> z-@*T@LjOM2dcOMM0cHQ_BY!WVzfjnJ<_OhGhmYv;n%BEGlnyK`zSfi4T&UbxuJZ7O zUZ*)B!i7v9f4u>pDEq$mG6#%GwE_bg!A*zkUEanaPH4YklVx&2%C`DQzBVwfj~SCu{|3WHWKin(h=R%lb1Ndu2H&_>JD)NU$s{R^qv>+~l(G>PMdeYeVs$QamTnYQn+5Z= zTPqzT#2)Bph@o&eBR+#-Lf+EVgH(iYPNGq`nzK)W8~$=b$2lN!OWjk6XDC^SBEypXG({s`*i~c*ahI155Cu@RZOtYa@G5Itx@G)G2AZv=-6FKFfW+ zoW~~*gQl~2GxI94g|}Fx;9o7?RA2JLmZWp&fmUNaz-darmh%Gu1VO$p}Yeawy&OVi(mG4vV7O( zZd&&?13g&dtQ1zf^wCGWjgjSO@RM+H#;Uzg5x;E6`L1pGRJM{tkos>H8G7IJh4*^W zJ8uEBN7*SD90)%J@PBLQT^0B}7qq8x+vI;_(*FPRTj>A5y8p5Cgg?clJbFr90_j%sZc)g&!x_9vjT1FiI=OSXx$JfDiPfazg~O z_+d}tKJ$3}NiIRtKczK(xcTpr(tjTc|F$gppAhuFvVr>F*}&!tI=;~fqAPV20)_QQ zQ;eTR?>C z)*8YR?c&yqrYyXexTkS$-wH2ei%mJ$2uF?CxDBN&oVJCFVZz|^kIXI3^O3iQL}h={`qLC}JA(WSp!{ z)*9t>MB+Cdt6}_7TzNY6{iB~RCB!dc5+e%Sv%`u|g+=lMXnl)uqWFM1zk+#l>O;FHN%(%X&#-bMMtjSTBjblm-Ydw3_3M?ZM*t6p-8`11q25>s zqpvwC5vRP^^>L`nOYEJlQD1Dg_`!Jien@2%o+43lESFVf$

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

        m&#aC)wJZXh^t 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

        ELlcNS%NA*p6&(}nP#zlfe+fEJ}bS~Ls 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𝔶xuQ#VG*&a4zp>ZuCm?x~OV#g~^ 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

        RM>|^wM32L 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

        ({+K}i2Z%7;^{So&qC-vDE8#6Z}Y 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

        +yB3g63*z<@$*NJK?HU>9WM;u(ylk}D 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

        ICb5P;we8*)a0 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

        R%dh)%Tu6ZN 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%0D%qg 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ⅇ9eHyftkZX{a>yNQ^ZC!BGW=6d-W53 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�s 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

      *UbElhbFGk20YXLrk0N@fkL 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 z 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 z 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

    V^{H91-l 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

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

    m&#aC)wJZXh^t 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

    ELlcNS%NA*p6&(}nP#zlfe+fEJ}bS~Ls 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𝔶xuQ#VG*&a4zp>ZuCm?x~OV#g~^ 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

    RM>|^wM32L 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

    ({+K}i2Z%7;^{So&qC-vDE8#6Z}Y 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

    +yB3g63*z<@$*NJK?HU>9WM;u(ylk}D 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

    ICb5P;we8*)a0 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

    R%dh)%Tu6ZN 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%0D%qg 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ⅇ9eHyftkZX{a>yNQ^ZC!BGW=6d-W53 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�s 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