ScriptCat a5a1396fe5 version 1.1
Main.java -> GiftAPI.java
2025-07-30 10:30:04 +03:00

90 lines
2.6 KiB
Java

package tokarotik.giftapi;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
import tokarotik.giftapi.cache.CacheManager;
public class GiftAPI extends JavaPlugin implements Listener {
private static final int INVENTORY_SLOTS = 54;
private static final int CACHED_SLOTS = INVENTORY_SLOTS - 9;
private CacheManager cacheManager;
private APIManager apiManager;
@Override
public void onEnable() {
saveDefaultConfig();
this.cacheManager = new CacheManager(CACHED_SLOTS);
this.apiManager = new APIManager(this, getConfig(), INVENTORY_SLOTS);
registerEvents();
getLogger().info("GiftAPI has been enabled.");
}
@Override
public void onDisable() {
getLogger().info("Saving GiftAPI state...");
if (cacheManager != null) {
cacheManager.disable();
}
getLogger().info("GiftAPI has been disabled.");
}
private void registerEvents() {
getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
final Player player = event.getPlayer();
Bukkit.getScheduler().runTaskAsynchronously(this, () -> cacheManager.playerQuit(player));
}
/**
* Adds an item to the player's gift cache.
* This operation is asynchronous.
*
* @param player the player to add the item to
* @param item the item to be added
*/
public void add(Player player, ItemStack item) {
if (player == null || item == null) return;
Bukkit.getScheduler().runTaskAsynchronously(this, () -> apiManager.add(player, item));
}
/**
* Removes an item from the player's gift cache.
* This operation is asynchronous.
*
* @param player the player to remove the item from
* @param item the item to be removed
*/
public void remove(Player player, ItemStack item) {
if (player == null || item == null) return;
Bukkit.getScheduler().runTaskAsynchronously(this, () -> apiManager.remove(player, item));
}
/**
* Opens the GiftAPI GUI for the specified player.
*
* @param player the player for whom to open the GUI
*/
public void openGUI(Player player) {
if (player == null) return;
Bukkit.getScheduler().runTask(this, () -> apiManager.openInventory(player));
}
public CacheManager getCacheManager() {
return cacheManager;
}
}