Skip to 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