Skip to main content

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

  1. Check Event Type - Verify event properties before use
  2. Handle Errors - Wrap event handlers in try-catch
  3. Avoid Heavy Operations - Keep event handlers fast
  4. Use Async When Needed - For heavy operations, use async tasks

Next Steps