Skip to content

Commit

Permalink
Use custom event
Browse files Browse the repository at this point in the history
  • Loading branch information
alex2276564 committed Oct 30, 2024
1 parent a9f54ba commit 94c6327
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package uz.alex2276564.leverlock.events;

import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.NotNull;

public class PlayerInteractWithLeverEvent extends PlayerEvent implements Cancellable {

private static final HandlerList handlers = new HandlerList();

private boolean cancel = false;

public PlayerInteractWithLeverEvent(@NotNull Player player) {
super(player);
}

@Override
public @NotNull HandlerList getHandlers() {
return handlers;
}

public static HandlerList getHandlerList() {
return handlers;
}

@Override
public boolean isCancelled() {
return cancel;
}

@Override
public void setCancelled(boolean cancel) {
this.cancel = cancel;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.plugin.java.JavaPlugin;
import uz.alex2276564.leverlock.LeverLock;
import uz.alex2276564.leverlock.events.PlayerInteractWithLeverEvent;
import uz.alex2276564.leverlock.utils.ConfigManager;

import java.time.Duration;
Expand All @@ -29,23 +30,33 @@ public PlayerLeverClickListener(LeverLock plugin) {
}

@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
public void on(PlayerInteractEvent event) {
Player player = event.getPlayer();
Block clickedBlock = event.getClickedBlock();

if (event.getAction() == Action.RIGHT_CLICK_BLOCK && clickedBlock != null && clickedBlock.getType() == TARGET_BLOCK) {
Instant currentTime = Instant.now();
Instant lastInteractionTime = cooldownMap.getOrDefault(player, Instant.EPOCH);

if (Duration.between(lastInteractionTime, currentTime).compareTo(ConfigManager.getCooldownDuration()) < 0) {
final PlayerInteractWithLeverEvent e = new PlayerInteractWithLeverEvent(player);
Bukkit.getPluginManager().callEvent(e);
if(e.isCancelled()) {
event.setCancelled(true);
player.sendMessage(ConfigManager.getCooldownMessage());
} else {
cooldownMap.put(player, currentTime);
}
}
}

@EventHandler
public void on(PlayerInteractWithLeverEvent event) {
Player player = event.getPlayer();
Instant currentTime = Instant.now();
Instant lastInteractionTime = cooldownMap.getOrDefault(player, Instant.EPOCH);

if (Duration.between(lastInteractionTime, currentTime).compareTo(ConfigManager.getCooldownDuration()) < 0) {
event.setCancelled(true);
player.sendMessage(ConfigManager.getCooldownMessage());
} else {
cooldownMap.put(player, currentTime);
}
}

private void startCleanupTask() {
Bukkit.getScheduler().runTaskTimer(plugin, this::cleanupCooldowns, ConfigManager.getCleanupInterval(), ConfigManager.getCleanupInterval());
}
Expand Down

0 comments on commit 94c6327

Please sign in to comment.