Merge pull request #196 from vemacs/master

Don't save on teleport if player has vault open. Fixes #194 #195
This commit is contained in:
Trent Hensler
2016-06-21 09:30:45 -07:00
committed by GitHub
@@ -50,10 +50,10 @@ public class Listeners implements Listener {
} }
public void saveVault(Player player) { public void saveVault(Player player) {
if (PlayerVaults.getInstance().getInVault().containsKey(player.getUniqueId().toString())) { if (plugin.getInVault().containsKey(player.getUniqueId().toString())) {
Inventory inv = player.getOpenInventory().getTopInventory(); Inventory inv = player.getOpenInventory().getTopInventory();
if (inv.getViewers().size() == 1) { if (inv.getViewers().size() == 1) {
VaultViewInfo info = PlayerVaults.getInstance().getInVault().get(player.getUniqueId().toString()); VaultViewInfo info = plugin.getInVault().get(player.getUniqueId().toString());
try { try {
String target = info.getHolderUUID() != null ? info.getHolderUUID().toString() : info.getHolder(); String target = info.getHolderUUID() != null ? info.getHolderUUID().toString() : info.getHolder();
vaultManager.saveVault(inv, target, info.getNumber()); vaultManager.saveVault(inv, target, info.getNumber());
@@ -61,19 +61,24 @@ public class Listeners implements Listener {
// ignore // ignore
} }
PlayerVaults.getInstance().getOpenInventories().remove(info.toString()); plugin.getOpenInventories().remove(info.toString());
} }
PlayerVaults.getInstance().getInVault().remove(player.getUniqueId().toString()); plugin.getInVault().remove(player.getUniqueId().toString());
} }
} }
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onTeleport(PlayerTeleportEvent event) { public void onTeleport(PlayerTeleportEvent event) {
if (event.getCause() == PlayerTeleportEvent.TeleportCause.UNKNOWN) { if (event.getCause() == PlayerTeleportEvent.TeleportCause.UNKNOWN) {
return; return;
} }
saveVault(event.getPlayer()); Player p = event.getPlayer();
// The player will either quit, die, or close the inventory at some point
if (plugin.getInVault().containsKey(p.getUniqueId().toString())) {
return;
}
saveVault(p);
} }
@EventHandler(priority = EventPriority.HIGH) @EventHandler(priority = EventPriority.HIGH)