From a623af5119c41c206aa7f051465c49b6207b003d Mon Sep 17 00:00:00 2001 From: Jikoo Date: Tue, 1 Mar 2016 00:52:57 -0500 Subject: [PATCH] 1.9.0 --- .../{v1_8_R3 => v1_9_R1}/AnySilentChest.java | 42 +++++++++--------- .../{v1_8_R3 => v1_9_R1}/InventoryAccess.java | 6 +-- .../PlayerDataManager.java | 10 ++--- .../SilentContainerChest.java | 8 ++-- .../SpecialEnderChest.java | 18 ++++---- .../SpecialPlayerInventory.java | 43 ++++++++++++++----- src/plugin.yml | 2 +- 7 files changed, 75 insertions(+), 54 deletions(-) rename src/com/lishid/openinv/internal/{v1_8_R3 => v1_9_R1}/AnySilentChest.java (84%) rename src/com/lishid/openinv/internal/{v1_8_R3 => v1_9_R1}/InventoryAccess.java (93%) rename src/com/lishid/openinv/internal/{v1_8_R3 => v1_9_R1}/PlayerDataManager.java (94%) rename src/com/lishid/openinv/internal/{v1_8_R3 => v1_9_R1}/SilentContainerChest.java (84%) rename src/com/lishid/openinv/internal/{v1_8_R3 => v1_9_R1}/SpecialEnderChest.java (88%) rename src/com/lishid/openinv/internal/{v1_8_R3 => v1_9_R1}/SpecialPlayerInventory.java (78%) diff --git a/src/com/lishid/openinv/internal/v1_8_R3/AnySilentChest.java b/src/com/lishid/openinv/internal/v1_9_R1/AnySilentChest.java similarity index 84% rename from src/com/lishid/openinv/internal/v1_8_R3/AnySilentChest.java rename to src/com/lishid/openinv/internal/v1_9_R1/AnySilentChest.java index 4c2445e..519a472 100644 --- a/src/com/lishid/openinv/internal/v1_8_R3/AnySilentChest.java +++ b/src/com/lishid/openinv/internal/v1_9_R1/AnySilentChest.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.v1_9_R1; import org.bukkit.ChatColor; import org.bukkit.entity.Player; @@ -23,17 +23,17 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.IAnySilentChest; //Volatile -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; -import net.minecraft.server.v1_8_R3.Block; -import net.minecraft.server.v1_8_R3.BlockPosition; -import net.minecraft.server.v1_8_R3.EntityPlayer; -import net.minecraft.server.v1_8_R3.IInventory; -import net.minecraft.server.v1_8_R3.ITileInventory; -import net.minecraft.server.v1_8_R3.InventoryLargeChest; -import net.minecraft.server.v1_8_R3.PacketPlayOutOpenWindow; -import net.minecraft.server.v1_8_R3.TileEntityChest; -import net.minecraft.server.v1_8_R3.World; +import net.minecraft.server.v1_9_R1.Block; +import net.minecraft.server.v1_9_R1.BlockPosition; +import net.minecraft.server.v1_9_R1.EntityPlayer; +import net.minecraft.server.v1_9_R1.IInventory; +import net.minecraft.server.v1_9_R1.ITileInventory; +import net.minecraft.server.v1_9_R1.InventoryLargeChest; +import net.minecraft.server.v1_9_R1.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_9_R1.TileEntityChest; +import net.minecraft.server.v1_9_R1.World; public class AnySilentChest implements IAnySilentChest { @Override @@ -42,19 +42,19 @@ public class AnySilentChest implements IAnySilentChest { EntityPlayer player = ((CraftPlayer) p).getHandle(); World world = player.world; // If block on top - if (world.getType(new BlockPosition(x, y + 1, z)).getBlock().c()) + if (world.getType(new BlockPosition(x, y + 1, z)).l()) 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())) + if ((Block.getId(world.getType(new BlockPosition(x - 1, y, z)).getBlock()) == id) && (world.getType(new BlockPosition(x - 1, y + 1, z)).l())) 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())) + if ((Block.getId(world.getType(new BlockPosition(x + 1, y, z)).getBlock()) == id) && (world.getType(new BlockPosition(x + 1, y + 1, z)).l())) 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())) + if ((Block.getId(world.getType(new BlockPosition(x, y, z - 1)).getBlock()) == id) && (world.getType(new BlockPosition(x, y + 1, z - 1)).l())) 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())) + if ((Block.getId(world.getType(new BlockPosition(x, y, z + 1)).getBlock()) == id) && (world.getType(new BlockPosition(x, y + 1, z + 1)).l())) return true; return false; @@ -71,15 +71,15 @@ public class AnySilentChest implements IAnySilentChest { 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()) + if (world.getType(new BlockPosition(x, y + 1, z)).l()) 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())) + if ((Block.getId(world.getType(new BlockPosition(x - 1, y, z)).getBlock()) == id) && (world.getType(new BlockPosition(x - 1, y + 1, z)).l())) 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())) + if ((Block.getId(world.getType(new BlockPosition(x + 1, y, z)).getBlock()) == id) && (world.getType(new BlockPosition(x + 1, y + 1, z)).l())) 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())) + if ((Block.getId(world.getType(new BlockPosition(x, y, z - 1)).getBlock()) == id) && (world.getType(new BlockPosition(x, y + 1, z - 1)).l())) 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())) + if ((Block.getId(world.getType(new BlockPosition(x, y, z + 1)).getBlock()) == id) && (world.getType(new BlockPosition(x, y + 1, z + 1)).l())) return true; } diff --git a/src/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java b/src/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java similarity index 93% rename from src/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java rename to src/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java index c52d35e..dc9164d 100644 --- a/src/com/lishid/openinv/internal/v1_8_R3/InventoryAccess.java +++ b/src/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.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.v1_9_R1; import java.lang.reflect.Field; @@ -26,9 +26,9 @@ import com.lishid.openinv.Permissions; import com.lishid.openinv.internal.IInventoryAccess; //Volatile -import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; +import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; -import net.minecraft.server.v1_8_R3.IInventory; +import net.minecraft.server.v1_9_R1.IInventory; public class InventoryAccess implements IInventoryAccess { @Override diff --git a/src/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java b/src/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java similarity index 94% rename from src/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java rename to src/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java index 993ea4a..73c15dd 100644 --- a/src/com/lishid/openinv/internal/v1_8_R3/PlayerDataManager.java +++ b/src/com/lishid/openinv/internal/v1_9_R1/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.v1_9_R1; import java.io.File; import java.util.UUID; @@ -28,11 +28,11 @@ import com.lishid.openinv.internal.IPlayerDataManager; import com.mojang.authlib.GameProfile; //Volatile -import org.bukkit.craftbukkit.v1_8_R3.CraftServer; +import org.bukkit.craftbukkit.v1_9_R1.CraftServer; -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 net.minecraft.server.v1_9_R1.EntityPlayer; +import net.minecraft.server.v1_9_R1.MinecraftServer; +import net.minecraft.server.v1_9_R1.PlayerInteractManager; public class PlayerDataManager implements IPlayerDataManager { @Override diff --git a/src/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java b/src/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java similarity index 84% rename from src/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java rename to src/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java index 681136d..9caebed 100644 --- a/src/com/lishid/openinv/internal/v1_8_R3/SilentContainerChest.java +++ b/src/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java @@ -14,12 +14,12 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_8_R3; +package com.lishid.openinv.internal.v1_9_R1; //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_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; diff --git a/src/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java b/src/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java similarity index 88% rename from src/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java rename to src/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java index cb6f542..16239c2 100644 --- a/src/com/lishid/openinv/internal/v1_8_R3/SpecialEnderChest.java +++ b/src/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.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.v1_9_R1; import java.lang.reflect.Field; import java.util.ArrayList; @@ -29,15 +29,15 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.ISpecialEnderChest; //Volatile -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; +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 net.minecraft.server.v1_8_R3.EntityHuman; -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 net.minecraft.server.v1_8_R3.ItemStack; +import net.minecraft.server.v1_9_R1.EntityHuman; +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 net.minecraft.server.v1_9_R1.ItemStack; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { public List transaction = new ArrayList(); diff --git a/src/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java b/src/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java similarity index 78% rename from src/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java rename to src/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java index 813834b..276b080 100644 --- a/src/com/lishid/openinv/internal/v1_8_R3/SpecialPlayerInventory.java +++ b/src/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java @@ -14,7 +14,10 @@ * along with this program. If not, see . */ -package com.lishid.openinv.internal.v1_8_R3; +package com.lishid.openinv.internal.v1_9_R1; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; @@ -23,13 +26,13 @@ import com.lishid.openinv.OpenInv; import com.lishid.openinv.internal.ISpecialPlayerInventory; //Volatile -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftHumanEntity; -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; +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 net.minecraft.server.v1_8_R3.EntityHuman; -import net.minecraft.server.v1_8_R3.ItemStack; -import net.minecraft.server.v1_8_R3.PlayerInventory; +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 implements ISpecialPlayerInventory { CraftPlayer owner; @@ -41,11 +44,30 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP super(((CraftPlayer) p).getHandle()); this.owner = ((CraftPlayer) p); this.playerOnline = online; - this.items = player.inventory.items; - this.armor = player.inventory.armor; + setItemArrays(this, player.inventory.items, player.inventory.armor, player.inventory.extraSlots); OpenInv.inventories.put(owner.getName().toLowerCase(), this); } + private void setItemArrays(PlayerInventory inventory, ItemStack[] items, ItemStack[] armor, + ItemStack[] extraSlots) { + try { + Field field = inventory.getClass().getField("items"); + Field modifiers = Field.class.getDeclaredField("modifiers"); + modifiers.setAccessible(true); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, items); + field = inventory.getClass().getField("armor"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(inventory, armor); + field = inventory.getClass().getField("extraSlots"); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + } catch (NoSuchFieldException | SecurityException | IllegalArgumentException + | IllegalAccessException e) { + // Unable to set final fields to item arrays, we're screwed. Noisily fail. + e.printStackTrace(); + } + } + @Override public Inventory getBukkitInventory() { return inventory; @@ -63,8 +85,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP public void PlayerGoOnline(Player player) { if (!playerOnline) { CraftPlayer p = (CraftPlayer) player; - p.getHandle().inventory.items = this.items; - p.getHandle().inventory.armor = this.armor; + setItemArrays(p.getHandle().inventory, items, armor, extraSlots); p.saveData(); playerOnline = true; } diff --git a/src/plugin.yml b/src/plugin.yml index 9c9401c..02b49b2 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -1,6 +1,6 @@ name: OpenInv main: com.lishid.openinv.OpenInv -version: 2.2.9 +version: 2.2.10 author: lishid authors: [Jikoo] description: >