* Fixed - player data glitch and online/offline events #41
BIN
openinv-2.3.6.jar
Normal file
BIN
openinv-2.3.6.jar
Normal file
Binary file not shown.
@@ -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
|
||||
|
@@ -33,7 +33,7 @@ public class SpecialPlayerInventory extends PlayerInventory {
|
||||
|
||||
private final CraftInventory inventory = new CraftInventory(this);
|
||||
private final ItemStack[] extra = new ItemStack[4];
|
||||
private final ItemStack[][] arrays;
|
||||
private ItemStack[][] arrays;
|
||||
private final CraftPlayer owner;
|
||||
private boolean playerOnline;
|
||||
|
||||
@@ -41,7 +41,6 @@ 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.extraSlots, this.extra };
|
||||
this.playerOnline = online;
|
||||
OpenInv.inventories.put(owner.getUniqueId(), this);
|
||||
}
|
||||
@@ -68,6 +67,7 @@ public class SpecialPlayerInventory extends PlayerInventory {
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
arrays = new ItemStack[][] { this.items, this.armor, this.extraSlots, this.extra };
|
||||
}
|
||||
|
||||
public Inventory getBukkitInventory() {
|
||||
@@ -77,7 +77,6 @@ public class SpecialPlayerInventory extends PlayerInventory {
|
||||
private void saveOnExit() {
|
||||
if (transaction.isEmpty() && !playerOnline) {
|
||||
owner.saveData();
|
||||
OpenInv.inventories.remove(owner.getUniqueId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,6 +104,7 @@ public class SpecialPlayerInventory extends PlayerInventory {
|
||||
public void onClose(CraftHumanEntity who) {
|
||||
super.onClose(who);
|
||||
this.saveOnExit();
|
||||
OpenInv.inventories.remove(owner.getUniqueId());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -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;
|
||||
@@ -40,7 +41,7 @@ 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());
|
||||
@@ -52,18 +53,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(OpenInv.mainPlugin, 1);
|
||||
}
|
||||
|
||||
SpecialEnderChest chest = OpenInv.enderChests.get(player.getUniqueId());
|
||||
final SpecialEnderChest chest = OpenInv.enderChests.get(player.getUniqueId());
|
||||
if (chest != null) {
|
||||
chest.playerOffline();
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
chest.playerOffline();
|
||||
}
|
||||
}.runTaskLater(OpenInv.mainPlugin, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user