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 toolString getToolType()- Tool type: "pickaxe", "axe", "bucket", or "hoe"Set<Block> getAffectedBlocks()- Blocks that will be affecteddouble getPlannedCost()- Planned economy costvoid setPlannedCost(double)- Modify planned costdouble getPlannedReward()- Planned economy rewardvoid setPlannedReward(double)- Modify planned rewardboolean isCancelled()- Check if event is cancelledvoid 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 playerString getToolType()- Tool typeString getCurrency()- Currency useddouble getAmount()- Amount to deductvoid setAmount(double)- Modify amountboolean isCancelled()- Check if cancelledvoid 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 playerString getToolType()- Tool typeString getCurrency()- Currency useddouble getAmount()- Amount to rewardvoid setAmount(double)- Modify amountboolean isCancelled()- Check if cancelledvoid 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