minor refactor + update internal chest logic

This commit is contained in:
lishid
2014-12-30 22:28:52 -05:00
parent b05279ed4b
commit 29b0bc980f
38 changed files with 406 additions and 1213 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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.");
}

View File

@@ -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<EnumDirection> {
HORIZONTAL(EnumDirectionLimit.HORIZONTAL),
VERTICAL(EnumDirectionLimit.VERTICAL);
private EnumDirectionLimit list;
private EnumDirectionList(EnumDirectionLimit list) {
this.list = list;
}
@Override
public Iterator<EnumDirection> iterator() {
return Iterators.forArray(list.a());
}
}

View File

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

View File

@@ -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<HumanEntity> transaction = new ArrayList<HumanEntity>();
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<HumanEntity> 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();
}
}

View File

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