import bg.pikz.shards.api.events.ShardGainEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
public class MyListener implements Listener {
@EventHandler
public void onShardGain(ShardGainEvent event) {
Player player = event.getPlayer();
long amount = event.getAmount();
ShardGainEvent.GainReason reason = event.getReason();
// Log the shard gain
Bukkit.getLogger().info(player.getName() + " gained " + amount + " shards (" + reason + ")");
}
}
@EventHandler
public void onShardGain(ShardGainEvent event) {
Player player = event.getPlayer();
// Double shards from kills for VIP players
if (event.getReason() == ShardGainEvent.GainReason.KILL) {
if (player.hasPermission("vip.doublekill")) {
event.setAmount(event.getAmount() * 2);
player.sendMessage("VIP bonus: Double kill reward!");
}
}
// 50% bonus shards from AFK generation during weekend
if (event.getReason() == ShardGainEvent.GainReason.REGION_GENERATION) {
if (isWeekend()) {
long bonus = event.getAmount() / 2;
event.setAmount(event.getAmount() + bonus);
}
}
}
@EventHandler
public void onShardGain(ShardGainEvent event) {
Player player = event.getPlayer();
// Disable shard gain in specific world
if (player.getWorld().getName().equals("minigames")) {
event.setCancelled(true);
return;
}
// Prevent AFK farming during certain hours
if (event.getReason() == ShardGainEvent.GainReason.REGION_GENERATION) {
if (isMaintenanceHours()) {
event.setCancelled(true);
player.sendMessage("Shard generation is disabled during maintenance!");
}
}
}
public class ShardGainListener implements Listener {
private final MyPlugin plugin;
public ShardGainListener(MyPlugin plugin) {
this.plugin = plugin;
}
@EventHandler(priority = EventPriority.NORMAL)
public void onShardGain(ShardGainEvent event) {
Player player = event.getPlayer();
long originalAmount = event.getAmount();
ShardGainEvent.GainReason reason = event.getReason();
// Apply multipliers based on reason
double multiplier = getMultiplier(player, reason);
long newAmount = (long) (originalAmount * multiplier);
event.setAmount(newAmount);
// Log significant gains
if (newAmount >= 100) {
plugin.getLogger().info(String.format(
"%s gained %d shards (original: %d, reason: %s)",
player.getName(), newAmount, originalAmount, reason
));
}
}
private double getMultiplier(Player player, ShardGainEvent.GainReason reason) {
double multiplier = 1.0;
// Base rank multipliers
if (player.hasPermission("rank.vip")) multiplier += 0.25;
if (player.hasPermission("rank.mvp")) multiplier += 0.5;
// Reason-specific multipliers
if (reason == ShardGainEvent.GainReason.KILL) {
if (plugin.isDoubleKillEventActive()) {
multiplier *= 2.0;
}
}
return multiplier;
}
}