From 7e40a9ebd7cdbeeb24541820b368650eaefacc46 Mon Sep 17 00:00:00 2001 From: Sceptor Date: Mon, 25 Mar 2024 18:52:51 +0000 Subject: [PATCH] Implemented changes mentioned in PR --- src/main/java/dev/plex/extras/TFMExtras.java | 4 +- .../plex/extras/command/ClownfishCommand.java | 12 ++-- .../command/RestrictClownfishCommand.java | 62 +++++++++++++++++++ .../extras/listener/ClownfishListener.java | 35 +++++++++-- src/main/resources/tfmextras/config.yml | 4 +- 5 files changed, 104 insertions(+), 13 deletions(-) create mode 100644 src/main/java/dev/plex/extras/command/RestrictClownfishCommand.java diff --git a/src/main/java/dev/plex/extras/TFMExtras.java b/src/main/java/dev/plex/extras/TFMExtras.java index b49c867..b288ed0 100755 --- a/src/main/java/dev/plex/extras/TFMExtras.java +++ b/src/main/java/dev/plex/extras/TFMExtras.java @@ -93,9 +93,11 @@ public class TFMExtras extends PlexModule } }); - addDefaultMessage("playerOrbited", "{0} - Orbiting {1}", "0 - The command sender, 1 - The person being orbited"); + addDefaultMessage("playerOrbited", "{0} - Orbiting {1}", "0 - The command sender", "1 - The person being orbited"); addDefaultMessage("stoppedOrbiting", "No longer orbiting {0}", "0 - The person no longer being orbited"); addDefaultMessage("alreadyOrbited", "{0} is already being orbited!", "0 - The person that is already orbited"); + addDefaultMessage("restrictClownfish", "{0} will {1} be able to use the clownfish.", "0 - The player who will be restricted", "1 - Whether they had this option toggled (returns: 'no longer', 'now')"); + addDefaultMessage("toggleClownfish", "You will {0} be affected by the clownfish.", "0 - Whether they had this option toggled (returns: 'no longer', 'now')"); addDefaultMessage("emptyAdminInfo", "The admin information section of the config.yml file has not been configured."); addDefaultMessage("cakeLyrics", "But there's no sense crying over every mistake. You just keep on trying till you run out of cake."); addDefaultMessage("areaEffectCloudClear", "{0} - Removing all area effect clouds", "0 - The command sender"); diff --git a/src/main/java/dev/plex/extras/command/ClownfishCommand.java b/src/main/java/dev/plex/extras/command/ClownfishCommand.java index 3da8507..ae8eaf8 100644 --- a/src/main/java/dev/plex/extras/command/ClownfishCommand.java +++ b/src/main/java/dev/plex/extras/command/ClownfishCommand.java @@ -17,7 +17,7 @@ import org.jetbrains.annotations.Nullable; import java.util.Collections; import java.util.List; -@CommandParameters(name = "clownfish", description = "Gives a player a clownfish capable of knocking people back") +@CommandParameters(name = "clownfish", description = "Gives a player a clownfish capable of knocking people back", usage = "/ []") @CommandPermissions(permission = "plex.tfmextras.clownfish") public class ClownfishCommand extends PlexCommand { @@ -38,25 +38,25 @@ public class ClownfishCommand extends PlexCommand else if (args[0].equals("toggle")) { List toggledPlayers = TFMExtras.getModule().getConfig().getStringList("server.clownfish.toggled_players"); - boolean isToggled = toggledPlayers.contains(player.getName()); + boolean isToggled = toggledPlayers.contains(player.getUniqueId().toString()); if (isToggled) { - toggledPlayers.remove(player.getName()); + toggledPlayers.remove(player.getUniqueId().toString()); } else { - toggledPlayers.add(player.getName()); + toggledPlayers.add(player.getUniqueId().toString()); } TFMExtras.getModule().getConfig().set("server.clownfish.toggled_players", toggledPlayers); TFMExtras.getModule().getConfig().save(); - return MiniMessage.miniMessage().deserialize("You " + (isToggled ? "will" : "will no longer") + " be affected by the clownfish"); + return messageComponent("toggleClownfish", isToggled ? "now" : "no longer"); } else { - return MiniMessage.miniMessage().deserialize("Incorrect usage. Use either /clownfish or /clownfish toggle"); + return usage(); } } diff --git a/src/main/java/dev/plex/extras/command/RestrictClownfishCommand.java b/src/main/java/dev/plex/extras/command/RestrictClownfishCommand.java new file mode 100644 index 0000000..c8c574b --- /dev/null +++ b/src/main/java/dev/plex/extras/command/RestrictClownfishCommand.java @@ -0,0 +1,62 @@ +package dev.plex.extras.command; + +import com.google.common.collect.ImmutableList; +import dev.plex.cache.DataUtils; +import dev.plex.command.PlexCommand; +import dev.plex.command.annotation.CommandParameters; +import dev.plex.command.annotation.CommandPermissions; +import dev.plex.command.exception.PlayerNotFoundException; +import dev.plex.extras.TFMExtras; +import dev.plex.player.PlexPlayer; +import dev.plex.util.PlexUtils; + +import net.kyori.adventure.text.Component; + +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +@CommandParameters(name = "toggleclownfish", description = "Toggles the ability to use the clownfish for a specified player", usage = "/ ") +@CommandPermissions(permission = "plex.tfmextras.toggleclownfish") +public class RestrictClownfishCommand extends PlexCommand +{ + @Override + protected Component execute(@NotNull CommandSender commandSender, @Nullable Player player, @NotNull String[] args) + { + if (args.length == 0) + { + return usage(); + } + + PlexPlayer target = DataUtils.getPlayer(args[0]); + if (target == null) + { + throw new PlayerNotFoundException(); + } + + List restrictedPlayers = TFMExtras.getModule().getConfig().getStringList("server.clownfish.restricted"); + + boolean isRestricted = restrictedPlayers.contains(target.getUuid().toString()); + if (isRestricted) + { + restrictedPlayers.remove(target.getUuid().toString()); + } + else + { + restrictedPlayers.add(target.getUuid().toString()); + } + + TFMExtras.getModule().getConfig().set("server.clownfish.restricted", restrictedPlayers); + TFMExtras.getModule().getConfig().save(); + + return messageComponent("restrictClownfish", target.getName(), isRestricted ? "now" : "no longer"); + } + + @Override + public @NotNull List smartTabComplete(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args) throws IllegalArgumentException { + return args.length == 1 && silentCheckPermission(sender, this.getPermission()) ? PlexUtils.getPlayerNameList() : ImmutableList.of(); + } +} diff --git a/src/main/java/dev/plex/extras/listener/ClownfishListener.java b/src/main/java/dev/plex/extras/listener/ClownfishListener.java index f67baf9..09e2765 100644 --- a/src/main/java/dev/plex/extras/listener/ClownfishListener.java +++ b/src/main/java/dev/plex/extras/listener/ClownfishListener.java @@ -4,10 +4,10 @@ import dev.plex.extras.TFMExtras; import dev.plex.listener.PlexListener; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Sound; -import org.bukkit.SoundCategory; import org.bukkit.Particle; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -20,6 +20,7 @@ import org.bukkit.util.Vector; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.Random; public class ClownfishListener extends PlexListener { @@ -44,6 +45,13 @@ public class ClownfishListener extends PlexListener if (meta.hasDisplayName() && Objects.equals(meta.displayName(), Component.text("Clownfish"))) { + final List restrictedPlayers = TFMExtras.getModule().getConfig().getStringList("server.clownfish.restricted"); + if (restrictedPlayers.contains(player.getUniqueId().toString())) + { + player.sendMessage(MiniMessage.miniMessage().deserialize("You have been restricted from using the clownfish")); + return; + } + double radius = TFMExtras.getModule().getConfig().getInt("server.clownfish.radius"); double strength = TFMExtras.getModule().getConfig().getInt("server.clownfish.strength"); @@ -54,7 +62,7 @@ public class ClownfishListener extends PlexListener for (final Player target : players) { - if (target.equals(player) || toggledPlayers.contains(target.getName())) + if (target.equals(player) || toggledPlayers.contains(target.getUniqueId().toString())) { continue; } @@ -64,8 +72,18 @@ public class ClownfishListener extends PlexListener if (targetPosVec.distanceSquared(senderPos) < (radius * radius)) { - target.playSound(target.getLocation(), Sound.ENTITY_GENERIC_EXPLODE, SoundCategory.PLAYERS, 1.0f, 1.0f); - target.getWorld().spawnParticle(Particle.EXPLOSION_LARGE, target.getLocation(), 1); + target.setFlying(false); + + final Sound[] listOfSounds = Sound.values(); + for (Sound sound : listOfSounds) + { + if (sound.toString().contains("HIT")) + { + target.playSound(target.getLocation(), sound, 100.0f, 0.5f + new Random().nextFloat() * 2.0f); + } + } + + target.getWorld().spawnParticle(Particle.CLOUD, target.getLocation(), 5); target.setVelocity(targetPosVec.subtract(senderPos).normalize().multiply(strength)); pushedPlayers.add(target.getName()); @@ -74,7 +92,14 @@ public class ClownfishListener extends PlexListener if (!pushedPlayers.isEmpty()) { - player.playSound(player.getLocation(), Sound.ENTITY_GENERIC_EXPLODE, SoundCategory.PLAYERS, 1.0f, 1.0f); + final Sound[] listOfSounds = Sound.values(); + for (Sound sound : listOfSounds) + { + if (sound.toString().contains("HIT")) + { + player.playSound(player.getLocation(), sound, 100.0f, 0.5f + new Random().nextFloat() * 2.0f); + } + } } } } diff --git a/src/main/resources/tfmextras/config.yml b/src/main/resources/tfmextras/config.yml index b5223e3..d2bad6c 100755 --- a/src/main/resources/tfmextras/config.yml +++ b/src/main/resources/tfmextras/config.yml @@ -16,6 +16,8 @@ server: radius: 5 strength: 2.5 toggled_players: - - "shdwo" + - "9285ace6-7393-45c5-9420-00fc66374ff4" + restricted: + - "9285ace6-7393-45c5-9420-00fc66374ff4" player-worlds: size: 500 \ No newline at end of file