API Examples
Basic Plugin Setupโ
public class MyPlugin extends JavaPlugin implements Listener {
private SigmaToolsAPI api;
@Override
public void onEnable() {
this.api = Bukkit.getServicesManager().load(SigmaToolsAPI.class);
if (api == null) {
Bukkit.getScheduler().runTask(this, () -> {
this.api = Bukkit.getServicesManager().load(SigmaToolsAPI.class);
if (api != null) {
getLogger().info("Found SigmaToolsAPI v" + api.getVersion());
Bukkit.getPluginManager().registerEvents(this, this);
}
});
} else {
getLogger().info("Found SigmaToolsAPI v" + api.getVersion());
Bukkit.getPluginManager().registerEvents(this, this);
}
}
}
Tool Identification and Protectionโ
public boolean isSigmaTool(ItemStack item) {
return api != null && api.isSigmaTool(item);
}
public String getToolType(ItemStack item) {
return api == null ? null : api.getToolType(item).orElse(null);
}
public boolean canUseTool(Player player, Location location) {
return api == null || api.canUseHere(player, location);
}
Economy Operationsโ
public void checkBalance(Player player) {
EconomyResult result = api.getBalance(player);
if (result.success()) {
player.sendMessage("Balance: " + result.balanceAfter() + " " + result.currency());
}
}
public boolean deductCurrency(Player player, double amount) {
EconomyResult result = api.deduct(player, amount);
if (result.success()) {
player.sendMessage("Deducted " + amount + " " + result.currency());
return true;
}
player.sendMessage("Insufficient funds: " + result.message());
return false;
}
public void giveReward(Player player, double amount) {
EconomyResult result = api.reward(player, amount);
if (result.success()) {
player.sendMessage("Received " + amount + " " + result.currency());
}
}
Event Listenerโ
public class ToolListener implements Listener {
@EventHandler
public void onToolUse(SigmaToolUseEvent event) {
Player player = event.getPlayer();
getLogger().info(player.getName() + " used " + event.getToolType());
if (player.hasPermission("myplugin.vip")) {
event.setPlannedCost(event.getPlannedCost() * 0.5);
}
}
@EventHandler
public void onReward(SigmaToolEconomyRewardEvent event) {
if (event.getPlayer().hasPermission("myplugin.vip")) {
event.setAmount(event.getAmount() * 2.0);
}
}
}
Command That Checks Held Toolโ
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!command.getName().equalsIgnoreCase("checktool")) return false;
if (!(sender instanceof Player player)) {
sender.sendMessage("Only players can use this command!");
return true;
}
if (api == null) {
player.sendMessage("SigmaTools API not available!");
return true;
}
ItemStack held = player.getInventory().getItemInMainHand();
if (api.isSigmaTool(held)) {
player.sendMessage("You are holding a SigmaTools " + api.getToolType(held).orElse("unknown") + "!");
} else {
player.sendMessage("You are not holding a SigmaTool!");
}
return true;
}
Always null-check api, handle Optional returns, and keep event handlers fast (offload heavy work to async tasks).