mirror of
https://github.com/TotalFreedomMC/OpenInv.git
synced 2024-12-22 16:05:03 +00:00
Release any players held by a disabling plugin
This commit is contained in:
parent
d24827ffcb
commit
a41f89b011
2 changed files with 38 additions and 1 deletions
|
@ -38,6 +38,7 @@ import com.lishid.openinv.internal.ISpecialPlayerInventory;
|
|||
import com.lishid.openinv.listeners.InventoryClickListener;
|
||||
import com.lishid.openinv.listeners.InventoryDragListener;
|
||||
import com.lishid.openinv.listeners.PlayerListener;
|
||||
import com.lishid.openinv.listeners.PluginListener;
|
||||
import com.lishid.openinv.util.Cache;
|
||||
import com.lishid.openinv.util.ConfigUpdater;
|
||||
import com.lishid.openinv.util.Function;
|
||||
|
@ -67,7 +68,6 @@ public class OpenInv extends JavaPlugin implements IOpenInv {
|
|||
|
||||
private final Map<String, ISpecialPlayerInventory> inventories = new HashMap<String, ISpecialPlayerInventory>();
|
||||
private final Map<String, ISpecialEnderChest> enderChests = new HashMap<String, ISpecialEnderChest>();
|
||||
// TODO: handle plugin unload
|
||||
private final Multimap<String, Class<? extends Plugin>> pluginUsage = HashMultimap.create();
|
||||
|
||||
private final Cache<String, Player> playerCache = new Cache<String, Player>(300000L,
|
||||
|
@ -135,6 +135,7 @@ public class OpenInv extends JavaPlugin implements IOpenInv {
|
|||
|
||||
// Register listeners
|
||||
pm.registerEvents(new PlayerListener(this), this);
|
||||
pm.registerEvents(new PluginListener(this), this);
|
||||
pm.registerEvents(new InventoryClickListener(this), this);
|
||||
// Bukkit will handle missing events for us, attempt to register InventoryDragEvent without a version check
|
||||
pm.registerEvents(new InventoryDragListener(this), this);
|
||||
|
@ -516,6 +517,15 @@ public class OpenInv extends JavaPlugin implements IOpenInv {
|
|||
this.pluginUsage.remove(key, plugin.getClass());
|
||||
}
|
||||
|
||||
/**
|
||||
* Unmark any Players in use by the specified Plugin.
|
||||
*
|
||||
* @param plugin
|
||||
*/
|
||||
public void releaseAllPlayers(Plugin plugin) {
|
||||
this.pluginUsage.removeAll(plugin.getClass());
|
||||
}
|
||||
|
||||
/**
|
||||
* Method for handling a Player coming online.
|
||||
*
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
package com.lishid.openinv.listeners;
|
||||
|
||||
import com.lishid.openinv.OpenInv;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.server.PluginDisableEvent;
|
||||
|
||||
/**
|
||||
* Listener for plugin-related events.
|
||||
*
|
||||
* @author Jikoo
|
||||
*/
|
||||
public class PluginListener implements Listener {
|
||||
|
||||
private final OpenInv plugin;
|
||||
|
||||
public PluginListener(OpenInv plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPluginDisable(PluginDisableEvent event) {
|
||||
plugin.releaseAllPlayers(event.getPlugin());
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue