Skip to content

Commit

Permalink
Add SpecialItemCooldown
Browse files Browse the repository at this point in the history
  • Loading branch information
MetallicGoat committed Aug 23, 2024
1 parent 6fa8526 commit f272f64
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ public void registerEvents() {
manager.registerEvents(new PlaceBlocksOnBed(), plugin);
manager.registerEvents(new PlayerLimitBypass(), plugin);
manager.registerEvents(new RemoveInvisOnDamage(), plugin);
manager.registerEvents(new SpecialItemCooldown(), plugin);

// Spawners
manager.registerEvents(new AFKSpawners(), plugin);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,13 @@ public class MainConfig {
)
public static boolean allow_block_place_on_bed = false;

@Config(
description = {
"Adds a use cooldown to special items (in seconds)"
}
)
public static double special_items_cooldown = 0;

@Config(
description = {
"If enabled you still join a server even if the Player Limit is reached"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package me.metallicgoat.tweaksaddon.tweaks.misc;

import de.marcely.bedwars.api.event.player.PlayerUseSpecialItemEvent;
import me.metallicgoat.tweaksaddon.MBedwarsTweaksPlugin;
import me.metallicgoat.tweaksaddon.config.MainConfig;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;

import java.util.IdentityHashMap;
import java.util.Map;

public class SpecialItemCooldown implements Listener {

private final Map<Player, String> cooldownPlayers = new IdentityHashMap<>();

@EventHandler (priority = EventPriority.LOW)
public void onSpecialItemUse(PlayerUseSpecialItemEvent event) {
if (MainConfig.special_items_cooldown == 0)
return;

final String cooldownItemId = cooldownPlayers.get(event.getPlayer());
final String itemId = event.getSpecialItem().getId();

if (cooldownItemId != null && event.getSpecialItem().getId().equals(cooldownItemId)) {
event.setCancelled(true);
return;
}

cooldownPlayers.put(event.getPlayer(), itemId);

Bukkit.getScheduler().runTaskLater(MBedwarsTweaksPlugin.getInstance(), () -> {
cooldownPlayers.remove(event.getPlayer());
}, (long) (20D * MainConfig.special_items_cooldown));
}
}

0 comments on commit f272f64

Please sign in to comment.