API Examples
Complete code examples for using the SigmaTools API.
Basic API Access
package com.example.plugin;
import com.sigmatools.api.SigmaToolsAPI;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
public class MyPlugin extends JavaPlugin {
private SigmaToolsAPI api;
@Override
public void onEnable() {
// Get API
this.api = Bukkit.getServicesManager().load(SigmaToolsAPI.class);
if (api == null) {
// Try again next tick (load order timing)
Bukkit.getScheduler().runTask(this, () -> {
this.api = Bukkit.getServicesManager().load(SigmaToolsAPI.class);
if (api != null) {
getLogger().info("Found SigmaToolsAPI v" + api.getVersion());
} else {
getLogger().warning("SigmaToolsAPI not available");
}
});
} else {
getLogger().info("Found SigmaToolsAPI v" + api.getVersion());
}
}
}
Check if Item is SigmaTool
import org.bukkit.inventory.ItemStack;
import com.sigmatools.api.SigmaToolsAPI;
public boolean isSigmaTool(ItemStack item) {
if (api == null) return false;
return api.isSigmaTool(item);
}
Get Tool Type
import java.util.Optional;
public String getToolType(ItemStack item) {
if (api == null) return null;
Optional<String> toolType = api.getToolType(item);
return toolType.orElse(null);
}
Check Protection
import org.bukkit.Location;
import org.bukkit.entity.Player;
public boolean canUseTool(Player player, Location location) {
if (api == null) return true;
return api.canUseHere(player, location);
}
Economy Operations
Get Balance
import com.sigmatools.api.EconomyResult;
public void checkBalance(Player player) {
if (api == null) return;
EconomyResult result = api.getBalance(player);
if (result.success()) {
double balance = result.balanceAfter();
String currency = result.currency();
player.sendMessage("Balance: " + balance + " " + currency);
}
}
Deduct Currency
public boolean deductCurrency(Player player, double amount) {
if (api == null) return false;
EconomyResult result = api.deduct(player, amount);
if (result.success()) {
player.sendMessage("Deducted " + amount + " " + result.currency());
return true;
} else {
player.sendMessage("Insufficient funds: " + result.message());
return false;
}
}
Give Reward
public void giveReward(Player player, double amount) {
if (api == null) return;
EconomyResult result = api.reward(player, amount);
if (result.success()) {
player.sendMessage("Received " + amount + " " + result.currency());
}
}
Event Handling
Listen to Tool Usage
import com.sigmatools.api.events.SigmaToolUseEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
public class ToolListener implements Listener {
@EventHandler
public void onToolUse(SigmaToolUseEvent event) {
Player player = event.getPlayer();
String toolType = event.getToolType();
// Log usage
getLogger().info(player.getName() + " used " + toolType);
// Apply VIP discount
if (player.hasPermission("myplugin.vip")) {
event.setPlannedCost(event.getPlannedCost() * 0.5);
}
}
}
Listen to Economy Events
import com.sigmatools.api.events.SigmaToolEconomyDeductEvent;
import com.sigmatools.api.events.SigmaToolEconomyRewardEvent;
public class EconomyListener implements Listener {
@EventHandler
public void onDeduct(SigmaToolEconomyDeductEvent event) {
// Apply discount
if (event.getPlayer().hasPermission("myplugin.discount")) {
event.setAmount(event.getAmount() * 0.8);
}
}
@EventHandler
public void onReward(SigmaToolEconomyRewardEvent event) {
// Double rewards for VIPs
if (event.getPlayer().hasPermission("myplugin.vip")) {
event.setAmount(event.getAmount() * 2.0);
}
}
}
Complete Plugin Example
package com.example.plugin;
import com.sigmatools.api.SigmaToolsAPI;
import com.sigmatools.api.events.SigmaToolUseEvent;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
public class MyPlugin extends JavaPlugin implements Listener {
private SigmaToolsAPI api;
@Override
public void onEnable() {
// Get API
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);
}
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (command.getName().equalsIgnoreCase("checktool")) {
if (!(sender instanceof Player)) {
sender.sendMessage("Only players can use this command!");
return true;
}
Player player = (Player) sender;
if (api == null) {
player.sendMessage("SigmaTools API not available!");
return true;
}
// Check if holding SigmaTool
if (api.isSigmaTool(player.getInventory().getItemInMainHand())) {
Optional<String> toolType = api.getToolType(player.getInventory().getItemInMainHand());
player.sendMessage("You are holding a SigmaTools " + toolType.orElse("unknown") + "!");
} else {
player.sendMessage("You are not holding a SigmaTool!");
}
return true;
}
return false;
}
@EventHandler
public void onToolUse(SigmaToolUseEvent event) {
Player player = event.getPlayer();
// Log usage
getLogger().info(player.getName() + " used " + event.getToolType());
// Apply VIP benefits
if (player.hasPermission("myplugin.vip")) {
event.setPlannedCost(event.getPlannedCost() * 0.5);
event.setPlannedReward(event.getPlannedReward() * 2.0);
}
}
}
Best Practices
- Check for Null API - Always verify API is available
- Handle Optional Returns - Use Optional properly
- Async Operations - Use async for heavy operations
- Error Handling - Wrap API calls in try-catch
- Event Priority - Use appropriate event priorities
Next Steps
- API Overview - Getting started
- API Reference - Complete reference
- Events Documentation - Event details