From 1fbaa5b2a91938e987ff1085c54c1260f22fc173 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Mon, 11 Apr 2016 18:45:23 -0400 Subject: [PATCH] Reduce redundant saves for ender chests as well While they don't suffer the same owner-related issues that player inventories did, there's no need to save so many times. --- .../openinv/internal/ISpecialEnderChest.java | 4 ++-- .../internal/v1_4_5/SpecialEnderChest.java | 21 +++++++++++-------- .../internal/v1_4_6/SpecialEnderChest.java | 21 +++++++++++-------- .../internal/v1_4_R1/SpecialEnderChest.java | 21 +++++++++++-------- .../internal/v1_5_R2/SpecialEnderChest.java | 21 +++++++++++-------- .../internal/v1_5_R3/SpecialEnderChest.java | 21 +++++++++++-------- .../internal/v1_6_R1/SpecialEnderChest.java | 21 +++++++++++-------- .../internal/v1_6_R2/SpecialEnderChest.java | 21 +++++++++++-------- .../internal/v1_6_R3/SpecialEnderChest.java | 21 +++++++++++-------- .../internal/v1_7_R1/SpecialEnderChest.java | 21 +++++++++++-------- .../internal/v1_7_R2/SpecialEnderChest.java | 21 +++++++++++-------- .../internal/v1_7_R3/SpecialEnderChest.java | 21 +++++++++++-------- .../internal/v1_7_R4/SpecialEnderChest.java | 21 +++++++++++-------- .../internal/v1_8_R1/SpecialEnderChest.java | 21 +++++++++++-------- .../internal/v1_8_R2/SpecialEnderChest.java | 21 +++++++++++-------- .../internal/v1_8_R3/SpecialEnderChest.java | 21 +++++++++++-------- .../internal/v1_9_R1/SpecialEnderChest.java | 21 +++++++++++-------- 17 files changed, 194 insertions(+), 146 deletions(-) diff --git a/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java index 9378c92..9ad54fe 100644 --- a/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java @@ -23,9 +23,9 @@ public interface ISpecialEnderChest { public Inventory getBukkitInventory(); - public boolean inventoryRemovalCheck(); + public boolean inventoryRemovalCheck(boolean save); - public void setPlayerOnline(Player p); + public void setPlayerOnline(Player player); /** * Sets the Player associated with this ISpecialEnderChest offline. 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 820e401..c34b534 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 @@ -41,7 +41,7 @@ import org.bukkit.craftbukkit.v1_4_5.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { public List transaction = new ArrayList(); public boolean playerOnline = false; - private final CraftPlayer owner; + private CraftPlayer owner; private final InventoryEnderChest enderChest; private int maxStack = MAX_STACK; private final CraftInventory inventory = new CraftInventory(this); @@ -60,22 +60,25 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public boolean inventoryRemovalCheck() { - owner.saveData(); - return transaction.isEmpty() && !playerOnline; + public boolean inventoryRemovalCheck(boolean save) { + boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { + owner.saveData(); + } + return offline; } @Override - public void setPlayerOnline(Player p) { + public void setPlayerOnline(Player player) { if (!playerOnline) { try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); + 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) {} - p.saveData(); playerOnline = true; } } @@ -83,7 +86,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public boolean setPlayerOffline() { playerOnline = false; - return this.inventoryRemovalCheck(); + return inventoryRemovalCheck(false); } @Override @@ -99,7 +102,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public void onClose(CraftHumanEntity who) { transaction.remove(who); - this.inventoryRemovalCheck(); + this.inventoryRemovalCheck(true); } @Override 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 21968b2..ad2edbd 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 @@ -41,7 +41,7 @@ import org.bukkit.craftbukkit.v1_4_6.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { public List transaction = new ArrayList(); public boolean playerOnline = false; - private final CraftPlayer owner; + private CraftPlayer owner; private final InventoryEnderChest enderChest; private int maxStack = MAX_STACK; private final CraftInventory inventory = new CraftInventory(this); @@ -60,22 +60,25 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public boolean inventoryRemovalCheck() { - owner.saveData(); - return transaction.isEmpty() && !playerOnline; + public boolean inventoryRemovalCheck(boolean save) { + boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { + owner.saveData(); + } + return offline; } @Override - public void setPlayerOnline(Player p) { + public void setPlayerOnline(Player player) { if (!playerOnline) { try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); + 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) {} - p.saveData(); playerOnline = true; } } @@ -83,7 +86,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public boolean setPlayerOffline() { playerOnline = false; - return inventoryRemovalCheck(); + return inventoryRemovalCheck(false); } @Override @@ -99,7 +102,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public void onClose(CraftHumanEntity who) { transaction.remove(who); - this.inventoryRemovalCheck(); + this.inventoryRemovalCheck(true); } @Override 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 11a6a1e..28f59d7 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 @@ -41,7 +41,7 @@ import org.bukkit.craftbukkit.v1_4_R1.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { public List transaction = new ArrayList(); public boolean playerOnline = false; - private final CraftPlayer owner; + private CraftPlayer owner; private final InventoryEnderChest enderChest; private int maxStack = MAX_STACK; private final CraftInventory inventory = new CraftInventory(this); @@ -60,22 +60,25 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public boolean inventoryRemovalCheck() { - owner.saveData(); - return transaction.isEmpty() && !playerOnline; + public boolean inventoryRemovalCheck(boolean save) { + boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { + owner.saveData(); + } + return offline; } @Override - public void setPlayerOnline(Player p) { + public void setPlayerOnline(Player player) { if (!playerOnline) { try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); + 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) {} - p.saveData(); playerOnline = true; } } @@ -83,7 +86,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public boolean setPlayerOffline() { playerOnline = false; - return inventoryRemovalCheck(); + return inventoryRemovalCheck(false); } @Override @@ -99,7 +102,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public void onClose(CraftHumanEntity who) { transaction.remove(who); - this.inventoryRemovalCheck(); + this.inventoryRemovalCheck(true); } @Override 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 458e832..f6a7da4 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 @@ -41,7 +41,7 @@ import org.bukkit.craftbukkit.v1_5_R2.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { public List transaction = new ArrayList(); public boolean playerOnline = false; - private final CraftPlayer owner; + private CraftPlayer owner; private final InventoryEnderChest enderChest; private int maxStack = MAX_STACK; private final CraftInventory inventory = new CraftInventory(this); @@ -60,22 +60,25 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public boolean inventoryRemovalCheck() { - owner.saveData(); - return transaction.isEmpty() && !playerOnline; + public boolean inventoryRemovalCheck(boolean save) { + boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { + owner.saveData(); + } + return offline; } @Override - public void setPlayerOnline(Player p) { + public void setPlayerOnline(Player player) { if (!playerOnline) { try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); + 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) {} - p.saveData(); playerOnline = true; } } @@ -83,7 +86,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public boolean setPlayerOffline() { playerOnline = false; - return inventoryRemovalCheck(); + return inventoryRemovalCheck(false); } @Override @@ -99,7 +102,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public void onClose(CraftHumanEntity who) { transaction.remove(who); - this.inventoryRemovalCheck(); + this.inventoryRemovalCheck(true); } @Override 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 c8d37e2..055472c 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 @@ -41,7 +41,7 @@ import org.bukkit.craftbukkit.v1_5_R3.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { public List transaction = new ArrayList(); public boolean playerOnline = false; - private final CraftPlayer owner; + private CraftPlayer owner; private final InventoryEnderChest enderChest; private int maxStack = MAX_STACK; private final CraftInventory inventory = new CraftInventory(this); @@ -60,22 +60,25 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public boolean inventoryRemovalCheck() { - owner.saveData(); - return transaction.isEmpty() && !playerOnline; + public boolean inventoryRemovalCheck(boolean save) { + boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { + owner.saveData(); + } + return offline; } @Override - public void setPlayerOnline(Player p) { + public void setPlayerOnline(Player player) { if (!playerOnline) { try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); + 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) {} - p.saveData(); playerOnline = true; } } @@ -83,7 +86,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public boolean setPlayerOffline() { playerOnline = false; - return inventoryRemovalCheck(); + return inventoryRemovalCheck(false); } @Override @@ -99,7 +102,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public void onClose(CraftHumanEntity who) { transaction.remove(who); - this.inventoryRemovalCheck(); + this.inventoryRemovalCheck(true); } @Override 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 c21e7ff..404e313 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 @@ -41,7 +41,7 @@ import org.bukkit.craftbukkit.v1_6_R1.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { public List transaction = new ArrayList(); public boolean playerOnline = false; - private final CraftPlayer owner; + private CraftPlayer owner; private final InventoryEnderChest enderChest; private int maxStack = MAX_STACK; private final CraftInventory inventory = new CraftInventory(this); @@ -60,22 +60,25 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public boolean inventoryRemovalCheck() { - owner.saveData(); - return transaction.isEmpty() && !playerOnline; + public boolean inventoryRemovalCheck(boolean save) { + boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { + owner.saveData(); + } + return offline; } @Override - public void setPlayerOnline(Player p) { + public void setPlayerOnline(Player player) { if (!playerOnline) { try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); + 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) {} - p.saveData(); playerOnline = true; } } @@ -83,7 +86,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public boolean setPlayerOffline() { playerOnline = false; - return inventoryRemovalCheck(); + return inventoryRemovalCheck(false); } @Override @@ -99,7 +102,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public void onClose(CraftHumanEntity who) { transaction.remove(who); - this.inventoryRemovalCheck(); + this.inventoryRemovalCheck(true); } @Override 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 ac62c7c..f113e68 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 @@ -41,7 +41,7 @@ import org.bukkit.craftbukkit.v1_6_R2.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { public List transaction = new ArrayList(); public boolean playerOnline = false; - private final CraftPlayer owner; + private CraftPlayer owner; private final InventoryEnderChest enderChest; private int maxStack = MAX_STACK; private final CraftInventory inventory = new CraftInventory(this); @@ -60,22 +60,25 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public boolean inventoryRemovalCheck() { - owner.saveData(); - return transaction.isEmpty() && !playerOnline; + public boolean inventoryRemovalCheck(boolean save) { + boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { + owner.saveData(); + } + return offline; } @Override - public void setPlayerOnline(Player p) { + public void setPlayerOnline(Player player) { if (!playerOnline) { try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); + 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) {} - p.saveData(); playerOnline = true; } } @@ -83,7 +86,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public boolean setPlayerOffline() { playerOnline = false; - return inventoryRemovalCheck(); + return inventoryRemovalCheck(false); } @Override @@ -99,7 +102,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public void onClose(CraftHumanEntity who) { transaction.remove(who); - this.inventoryRemovalCheck(); + this.inventoryRemovalCheck(true); } @Override 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 a4ea88d..bbcc1ac 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 @@ -41,7 +41,7 @@ import org.bukkit.craftbukkit.v1_6_R3.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { public List transaction = new ArrayList(); public boolean playerOnline = false; - private final CraftPlayer owner; + private CraftPlayer owner; private final InventoryEnderChest enderChest; private int maxStack = MAX_STACK; private final CraftInventory inventory = new CraftInventory(this); @@ -60,22 +60,25 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public boolean inventoryRemovalCheck() { - owner.saveData(); - return transaction.isEmpty() && !playerOnline; + public boolean inventoryRemovalCheck(boolean save) { + boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { + owner.saveData(); + } + return offline; } @Override - public void setPlayerOnline(Player p) { + public void setPlayerOnline(Player player) { if (!playerOnline) { try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); + 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) {} - p.saveData(); playerOnline = true; } } @@ -83,7 +86,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public boolean setPlayerOffline() { playerOnline = false; - return inventoryRemovalCheck(); + return inventoryRemovalCheck(false); } @Override @@ -99,7 +102,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public void onClose(CraftHumanEntity who) { transaction.remove(who); - this.inventoryRemovalCheck(); + this.inventoryRemovalCheck(true); } @Override 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 80c00e5..e33d914 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 @@ -41,7 +41,7 @@ import org.bukkit.craftbukkit.v1_7_R1.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { public List transaction = new ArrayList(); public boolean playerOnline = false; - private final CraftPlayer owner; + private CraftPlayer owner; private final InventoryEnderChest enderChest; private int maxStack = MAX_STACK; private final CraftInventory inventory = new CraftInventory(this); @@ -60,22 +60,25 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public boolean inventoryRemovalCheck() { - owner.saveData(); - return transaction.isEmpty() && !playerOnline; + public boolean inventoryRemovalCheck(boolean save) { + boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { + owner.saveData(); + } + return offline; } @Override - public void setPlayerOnline(Player p) { + public void setPlayerOnline(Player player) { if (!playerOnline) { try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); + 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) {} - p.saveData(); playerOnline = true; } } @@ -83,7 +86,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public boolean setPlayerOffline() { playerOnline = false; - return inventoryRemovalCheck(); + return inventoryRemovalCheck(false); } @Override @@ -99,7 +102,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public void onClose(CraftHumanEntity who) { transaction.remove(who); - this.inventoryRemovalCheck(); + this.inventoryRemovalCheck(true); } @Override 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 23aa4a3..64c7b26 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 @@ -41,7 +41,7 @@ import org.bukkit.craftbukkit.v1_7_R2.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { public List transaction = new ArrayList(); public boolean playerOnline = false; - private final CraftPlayer owner; + private CraftPlayer owner; private final InventoryEnderChest enderChest; private int maxStack = MAX_STACK; private final CraftInventory inventory = new CraftInventory(this); @@ -60,22 +60,25 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public boolean inventoryRemovalCheck() { - owner.saveData(); - return transaction.isEmpty() && !playerOnline; + public boolean inventoryRemovalCheck(boolean save) { + boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { + owner.saveData(); + } + return offline; } @Override - public void setPlayerOnline(Player p) { + public void setPlayerOnline(Player player) { if (!playerOnline) { try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); + 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) {} - p.saveData(); playerOnline = true; } } @@ -83,7 +86,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public boolean setPlayerOffline() { playerOnline = false; - return inventoryRemovalCheck(); + return inventoryRemovalCheck(false); } @Override @@ -99,7 +102,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public void onClose(CraftHumanEntity who) { transaction.remove(who); - this.inventoryRemovalCheck(); + this.inventoryRemovalCheck(true); } @Override 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 73d1bf5..5f8d441 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 @@ -41,7 +41,7 @@ import org.bukkit.craftbukkit.v1_7_R3.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { public List transaction = new ArrayList(); public boolean playerOnline = false; - private final CraftPlayer owner; + private CraftPlayer owner; private final InventoryEnderChest enderChest; private int maxStack = MAX_STACK; private final CraftInventory inventory = new CraftInventory(this); @@ -60,22 +60,25 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public boolean inventoryRemovalCheck() { - owner.saveData(); - return transaction.isEmpty() && !playerOnline; + public boolean inventoryRemovalCheck(boolean save) { + boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { + owner.saveData(); + } + return offline; } @Override - public void setPlayerOnline(Player p) { + public void setPlayerOnline(Player player) { if (!playerOnline) { try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); + 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) {} - p.saveData(); playerOnline = true; } } @@ -83,7 +86,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public boolean setPlayerOffline() { playerOnline = false; - return inventoryRemovalCheck(); + return inventoryRemovalCheck(false); } @Override @@ -99,7 +102,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public void onClose(CraftHumanEntity who) { transaction.remove(who); - this.inventoryRemovalCheck(); + this.inventoryRemovalCheck(true); } @Override 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 91c2849..e63bb69 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 @@ -41,7 +41,7 @@ import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { public List transaction = new ArrayList(); public boolean playerOnline = false; - private final CraftPlayer owner; + private CraftPlayer owner; private final InventoryEnderChest enderChest; private int maxStack = MAX_STACK; private final CraftInventory inventory = new CraftInventory(this); @@ -60,22 +60,25 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public boolean inventoryRemovalCheck() { - owner.saveData(); - return transaction.isEmpty() && !playerOnline; + public boolean inventoryRemovalCheck(boolean save) { + boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { + owner.saveData(); + } + return offline; } @Override - public void setPlayerOnline(Player p) { + public void setPlayerOnline(Player player) { if (!playerOnline) { try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); + 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) {} - p.saveData(); playerOnline = true; } } @@ -83,7 +86,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public boolean setPlayerOffline() { playerOnline = false; - return inventoryRemovalCheck(); + return inventoryRemovalCheck(false); } @Override @@ -99,7 +102,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public void onClose(CraftHumanEntity who) { transaction.remove(who); - this.inventoryRemovalCheck(); + this.inventoryRemovalCheck(true); } @Override 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 5929a01..29d9661 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 @@ -41,7 +41,7 @@ import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { public List transaction = new ArrayList(); public boolean playerOnline = false; - private final CraftPlayer owner; + private CraftPlayer owner; private final InventoryEnderChest enderChest; private int maxStack = MAX_STACK; private final CraftInventory inventory = new CraftInventory(this); @@ -60,22 +60,25 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public boolean inventoryRemovalCheck() { - owner.saveData(); - return transaction.isEmpty() && !playerOnline; + public boolean inventoryRemovalCheck(boolean save) { + boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { + owner.saveData(); + } + return offline; } @Override - public void setPlayerOnline(Player p) { + public void setPlayerOnline(Player player) { if (!playerOnline) { try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); + 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) {} - p.saveData(); playerOnline = true; } } @@ -83,7 +86,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public boolean setPlayerOffline() { playerOnline = false; - return this.inventoryRemovalCheck(); + return inventoryRemovalCheck(false); } @Override @@ -99,7 +102,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public void onClose(CraftHumanEntity who) { transaction.remove(who); - this.inventoryRemovalCheck(); + this.inventoryRemovalCheck(true); } @Override 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 index 631cf93..c45ea1c 100644 --- 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 @@ -41,7 +41,7 @@ import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { public List transaction = new ArrayList(); public boolean playerOnline = false; - private final CraftPlayer owner; + private CraftPlayer owner; private final InventoryEnderChest enderChest; private int maxStack = MAX_STACK; private final CraftInventory inventory = new CraftInventory(this); @@ -60,22 +60,25 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public boolean inventoryRemovalCheck() { - owner.saveData(); - return transaction.isEmpty() && !playerOnline; + public boolean inventoryRemovalCheck(boolean save) { + boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { + owner.saveData(); + } + return offline; } @Override - public void setPlayerOnline(Player p) { + public void setPlayerOnline(Player player) { if (!playerOnline) { try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); + 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) {} - p.saveData(); playerOnline = true; } } @@ -83,7 +86,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public boolean setPlayerOffline() { playerOnline = false; - return inventoryRemovalCheck(); + return inventoryRemovalCheck(false); } @Override @@ -99,7 +102,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public void onClose(CraftHumanEntity who) { transaction.remove(who); - this.inventoryRemovalCheck(); + this.inventoryRemovalCheck(true); } @Override 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 index 3b79f87..92142ba 100644 --- 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 @@ -41,7 +41,7 @@ import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { public List transaction = new ArrayList(); public boolean playerOnline = false; - private final CraftPlayer owner; + private CraftPlayer owner; private final InventoryEnderChest enderChest; private int maxStack = MAX_STACK; private final CraftInventory inventory = new CraftInventory(this); @@ -60,22 +60,25 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public boolean inventoryRemovalCheck() { - owner.saveData(); - return transaction.isEmpty() && !playerOnline; + public boolean inventoryRemovalCheck(boolean save) { + boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { + owner.saveData(); + } + return offline; } @Override - public void setPlayerOnline(Player p) { + public void setPlayerOnline(Player player) { if (!playerOnline) { try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); + 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) {} - p.saveData(); playerOnline = true; } } @@ -83,7 +86,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public boolean setPlayerOffline() { playerOnline = false; - return inventoryRemovalCheck(); + return inventoryRemovalCheck(false); } @Override @@ -99,7 +102,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public void onClose(CraftHumanEntity who) { transaction.remove(who); - this.inventoryRemovalCheck(); + this.inventoryRemovalCheck(true); } @Override diff --git a/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java index 0bec330..34abfee 100644 --- a/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java +++ b/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java @@ -41,7 +41,7 @@ import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory; public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest { public List transaction = new ArrayList(); public boolean playerOnline = false; - private final CraftPlayer owner; + private CraftPlayer owner; private final InventoryEnderChest enderChest; private int maxStack = MAX_STACK; private final CraftInventory inventory = new CraftInventory(this); @@ -60,22 +60,25 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento } @Override - public boolean inventoryRemovalCheck() { - owner.saveData(); - return transaction.isEmpty() && !playerOnline; + public boolean inventoryRemovalCheck(boolean save) { + boolean offline = transaction.isEmpty() && !playerOnline; + if (offline && save) { + owner.saveData(); + } + return offline; } @Override - public void setPlayerOnline(Player p) { + public void setPlayerOnline(Player player) { if (!playerOnline) { try { - InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest(); + 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) {} - p.saveData(); playerOnline = true; } } @@ -83,7 +86,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public boolean setPlayerOffline() { playerOnline = false; - return inventoryRemovalCheck(); + return inventoryRemovalCheck(false); } @Override @@ -99,7 +102,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento @Override public void onClose(CraftHumanEntity who) { transaction.remove(who); - this.inventoryRemovalCheck(); + this.inventoryRemovalCheck(true); } @Override