From 0c305e79e57a15a1b8e6ba6c6c5e56658b272e88 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Sun, 11 Aug 2024 23:48:35 +0200 Subject: [PATCH] Add GoatHornEvent listener (stops spamming goat horns in spawn) Implement GoatHornEvent to handle player interactions with goat horns. This feature sets a cooldown for goat horn items, if the player is near spawn or already has an active cooldown. --- .../event_listeners/GoatHornEvent.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/main/java/com/alttd/playerutils/event_listeners/GoatHornEvent.java diff --git a/src/main/java/com/alttd/playerutils/event_listeners/GoatHornEvent.java b/src/main/java/com/alttd/playerutils/event_listeners/GoatHornEvent.java new file mode 100644 index 0000000..34445b8 --- /dev/null +++ b/src/main/java/com/alttd/playerutils/event_listeners/GoatHornEvent.java @@ -0,0 +1,43 @@ +package com.alttd.playerutils.event_listeners; + +import org.bukkit.Location; +import org.bukkit.Tag; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.ItemStack; + +import java.util.concurrent.TimeUnit; + +public class GoatHornEvent implements Listener { + + @EventHandler + public void onPlayerInteract(PlayerInteractEvent event) { + ItemStack item = event.getItem(); + if (item == null) { + return; + } + + if (!Tag.SNAPS_GOAT_HORN.isTagged(event.getItem().getType())) { + return; + } + + Player player = event.getPlayer(); + if (player.getCooldown(item.getType()) > 0) { + event.setCancelled(true); + return; + } + + Location spawn = player.getLocation(); + spawn.set(0, 0, 0); + + if (player.getLocation().distance(spawn) > 250) { + return; + } + + Tag.SNAPS_GOAT_HORN.getValues().forEach(horn -> + player.setCooldown(horn, (int) TimeUnit.MINUTES.toSeconds(5) * 20)); + } + +}