From b10d75d0e3aba6639168c9ce8ec86fe334171f0f Mon Sep 17 00:00:00 2001 From: Marcel <8513034+MrEAlderson@users.noreply.github.com> Date: Sun, 28 Jul 2024 20:55:53 +0200 Subject: [PATCH 1/2] fireball-cooldown-visually: Show cooldown in hotbar in 1.12+ --- .../tweaksaddon/config/MainConfig.java | 8 +++++++ .../explosives/FireballUseCoolDown.java | 22 ++++++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/main/java/me/metallicgoat/tweaksaddon/config/MainConfig.java b/src/main/java/me/metallicgoat/tweaksaddon/config/MainConfig.java index 33499b1..edabae2 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..eec75ba 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(), MainConfig.fireball_cooldown_time); + } catch (Exception e) { + e.printStackTrace(); + } + } } } From 933a65da8dc69648957bc2d83547c3a326b93093 Mon Sep 17 00:00:00 2001 From: Marcel <8513034+MrEAlderson@users.noreply.github.com> Date: Sun, 28 Jul 2024 21:00:42 +0200 Subject: [PATCH 2/2] fireball-cooldown-visually: Show cooldown in hotbar in 1.12+ --- .../tweaksaddon/tweaks/explosives/FireballUseCoolDown.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 eec75ba..75baf44 100644 --- a/src/main/java/me/metallicgoat/tweaksaddon/tweaks/explosives/FireballUseCoolDown.java +++ b/src/main/java/me/metallicgoat/tweaksaddon/tweaks/explosives/FireballUseCoolDown.java @@ -47,7 +47,7 @@ public void onPlayerUseSpecialItem(PlayerUseSpecialItemEvent event) { try { HumanEntity.class.getMethod("setCooldown", Material.class, int.class) - .invoke(player, is.getType(), MainConfig.fireball_cooldown_time); + .invoke(player, is.getType(), (int) MainConfig.fireball_cooldown_time); } catch (Exception e) { e.printStackTrace(); }