diff --git a/src/main/java/me/metallicgoat/tweaksaddon/config/MainConfig.java b/src/main/java/me/metallicgoat/tweaksaddon/config/MainConfig.java index 8952c2b..2c5c588 100644 --- a/src/main/java/me/metallicgoat/tweaksaddon/config/MainConfig.java +++ b/src/main/java/me/metallicgoat/tweaksaddon/config/MainConfig.java @@ -174,6 +174,14 @@ public class MainConfig { public static boolean fireball_cooldown_enabled = true; @Config public static long fireball_cooldown_time = 20L; + @Config( + description = { + "Shows a visual cooldown in the player's hotbar (similar to ender pearls in vanilla)", + "1.12+ only" + } + ) + public static boolean fireball_cooldown_visually = true; + @Config( description = { "Effects given when a fireball is thrown (Default is like hypixel)", diff --git a/src/main/java/me/metallicgoat/tweaksaddon/tweaks/explosives/FireballUseCoolDown.java b/src/main/java/me/metallicgoat/tweaksaddon/tweaks/explosives/FireballUseCoolDown.java index 4add73a..75baf44 100644 --- a/src/main/java/me/metallicgoat/tweaksaddon/tweaks/explosives/FireballUseCoolDown.java +++ b/src/main/java/me/metallicgoat/tweaksaddon/tweaks/explosives/FireballUseCoolDown.java @@ -2,15 +2,19 @@ import de.marcely.bedwars.api.event.player.PlayerUseSpecialItemEvent; import de.marcely.bedwars.api.game.specialitem.SpecialItemType; +import de.marcely.bedwars.tools.NMSHelper; import java.util.ArrayList; import java.util.List; import me.metallicgoat.tweaksaddon.MBedwarsTweaksPlugin; import me.metallicgoat.tweaksaddon.config.MainConfig; import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.entity.HumanEntity; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.inventory.ItemStack; public class FireballUseCoolDown implements Listener { @@ -27,14 +31,26 @@ public void onPlayerUseSpecialItem(PlayerUseSpecialItemEvent event) { if (player.isInsideVehicle() && player.getVehicle() instanceof LivingEntity) return; - if (coolDownPlayers.contains(player)) { + if (this.coolDownPlayers.contains(player)) { event.setCancelled(true); return; } - coolDownPlayers.add(player); + this.coolDownPlayers.add(player); Bukkit.getServer().getScheduler().runTaskLater(MBedwarsTweaksPlugin.getInstance(), () -> - coolDownPlayers.remove(player), MainConfig.fireball_cooldown_time); + this.coolDownPlayers.remove(player), MainConfig.fireball_cooldown_time); + + // Visual cooldown + if (MainConfig.fireball_cooldown_visually && NMSHelper.get().getVersion() >= 12) { + final ItemStack is = event.getSpecialItem().getItemStack(); + + try { + HumanEntity.class.getMethod("setCooldown", Material.class, int.class) + .invoke(player, is.getType(), (int) MainConfig.fireball_cooldown_time); + } catch (Exception e) { + e.printStackTrace(); + } + } } }