Skip to main content

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

  1. Check for Null API - Always verify API is available
  2. Handle Optional Returns - Use Optional properly
  3. Async Operations - Use async for heavy operations
  4. Error Handling - Wrap API calls in try-catch
  5. Event Priority - Use appropriate event priorities

Next Steps