Events¶
SigmaTools fires several events that you can listen to in your plugins.
Available Events¶
SigmaToolUseEvent¶
Fired when a tool is used.
Package: com.sigmatools.api.events.SigmaToolUseEvent
Event Properties: - Player getPlayer() - The player using the tool - String getToolType() - Tool type: "pickaxe", "axe", "bucket", or "hoe" - Set<Block> getAffectedBlocks() - Blocks that will be affected - double getPlannedCost() - Planned economy cost - void setPlannedCost(double) - Modify planned cost - double getPlannedReward() - Planned economy reward - void setPlannedReward(double) - Modify planned reward - boolean isCancelled() - Check if event is cancelled - void setCancelled(boolean) - Cancel the event
Example:
@EventHandler
public void onToolUse(SigmaToolUseEvent event) {
Player player = event.getPlayer();
String toolType = event.getToolType();
Set<Block> affectedBlocks = event.getAffectedBlocks();
// Modify cost/reward
event.setPlannedCost(5.0);
event.setPlannedReward(10.0);
// Cancel if needed
// event.setCancelled(true);
}
SigmaToolEconomyDeductEvent¶
Fired when economy is deducted.
Package: com.sigmatools.api.events.SigmaToolEconomyDeductEvent
Event Properties: - Player getPlayer() - The player - String getToolType() - Tool type - String getCurrency() - Currency used - double getAmount() - Amount to deduct - void setAmount(double) - Modify amount - boolean isCancelled() - Check if cancelled - void setCancelled(boolean) - Cancel the event
Example:
@EventHandler
public void onEconomyDeduct(SigmaToolEconomyDeductEvent event) {
Player player = event.getPlayer();
double amount = event.getAmount();
// Apply 50% discount for VIPs
if (player.hasPermission("myplugin.vip")) {
event.setAmount(amount * 0.5);
}
// Cancel to prevent deduction
// event.setCancelled(true);
}
SigmaToolEconomyRewardEvent¶
Fired when economy reward is given.
Package: com.sigmatools.api.events.SigmaToolEconomyRewardEvent
Event Properties: - Player getPlayer() - The player - String getToolType() - Tool type - String getCurrency() - Currency used - double getAmount() - Amount to reward - void setAmount(double) - Modify amount - boolean isCancelled() - Check if cancelled - void setCancelled(boolean) - Cancel the event
Example:
@EventHandler
public void onEconomyReward(SigmaToolEconomyRewardEvent event) {
Player player = event.getPlayer();
double amount = event.getAmount();
// Double reward for VIPs
if (player.hasPermission("myplugin.vip")) {
event.setAmount(amount * 2.0);
}
// Cancel to prevent reward
// event.setCancelled(true);
}
Event Priority¶
Events use normal priority by default. You can set priority:
@EventHandler(priority = EventPriority.HIGH)
public void onToolUse(SigmaToolUseEvent event) {
// Handle event
}
Complete Example¶
package com.example.plugin;
import com.sigmatools.api.events.SigmaToolUseEvent;
import com.sigmatools.api.events.SigmaToolEconomyDeductEvent;
import com.sigmatools.api.events.SigmaToolEconomyRewardEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
public class MyPlugin extends JavaPlugin implements Listener {
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onToolUse(SigmaToolUseEvent event) {
Player player = event.getPlayer();
String toolType = event.getToolType();
// Log tool usage
getLogger().info(player.getName() + " used " + toolType);
// Modify cost/reward for VIPs
if (player.hasPermission("myplugin.vip")) {
event.setPlannedCost(event.getPlannedCost() * 0.5);
event.setPlannedReward(event.getPlannedReward() * 2.0);
}
}
@EventHandler
public void onEconomyDeduct(SigmaToolEconomyDeductEvent event) {
// Apply discount
if (event.getPlayer().hasPermission("myplugin.discount")) {
event.setAmount(event.getAmount() * 0.8); // 20% discount
}
}
@EventHandler
public void onEconomyReward(SigmaToolEconomyRewardEvent event) {
// Double rewards on weekends (example)
Calendar cal = Calendar.getInstance();
int day = cal.get(Calendar.DAY_OF_WEEK);
if (day == Calendar.SATURDAY || day == Calendar.SUNDAY) {
event.setAmount(event.getAmount() * 2.0);
}
}
}
Event Cancellation¶
Cancelling events:
@EventHandler
public void onToolUse(SigmaToolUseEvent event) {
// Cancel to prevent tool usage
event.setCancelled(true);
// Send custom message
event.getPlayer().sendMessage("Tool usage is disabled!");
}
Best Practices¶
- Check Event Type - Verify event properties before use
- Handle Errors - Wrap event handlers in try-catch
- Avoid Heavy Operations - Keep event handlers fast
- Use Async When Needed - For heavy operations, use async tasks
Next Steps¶
- API Overview - Getting started with the API
- API Reference - Complete API documentation
- Examples - More code examples