summaryrefslogtreewikicommitdiff
path: root/src/main/java/dev/tylerm/khs/game/events/Taunt.java
diff options
context:
space:
mode:
authorTyler Murphy <tylerm@tylerm.dev>2023-07-30 18:12:47 -0400
committerTyler Murphy <tylerm@tylerm.dev>2023-07-30 18:12:47 -0400
commit000219a5ff183e469129e5804d0a6090d6b47b26 (patch)
tree5217465c967796680cc03b11359490f638d6b78c /src/main/java/dev/tylerm/khs/game/events/Taunt.java
parentMerge branch 'main' of ssh://g.tylerm.dev:21/tylermurphy534/KenshinsHideAndSe... (diff)
downloadkenshinshideandseek-000219a5ff183e469129e5804d0a6090d6b47b26.tar.gz
kenshinshideandseek-000219a5ff183e469129e5804d0a6090d6b47b26.tar.bz2
kenshinshideandseek-000219a5ff183e469129e5804d0a6090d6b47b26.zip
1.7.5 rc4
Diffstat (limited to 'src/main/java/dev/tylerm/khs/game/events/Taunt.java')
-rw-r--r--src/main/java/dev/tylerm/khs/game/events/Taunt.java101
1 files changed, 101 insertions, 0 deletions
diff --git a/src/main/java/dev/tylerm/khs/game/events/Taunt.java b/src/main/java/dev/tylerm/khs/game/events/Taunt.java
new file mode 100644
index 0000000..98a9351
--- /dev/null
+++ b/src/main/java/dev/tylerm/khs/game/events/Taunt.java
@@ -0,0 +1,101 @@
+package dev.tylerm.khs.game.events;
+
+import dev.tylerm.khs.Main;
+import org.bukkit.Color;
+import org.bukkit.FireworkEffect;
+import org.bukkit.World;
+import org.bukkit.entity.EntityType;
+import org.bukkit.entity.Firework;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.meta.FireworkMeta;
+
+import java.util.Optional;
+import java.util.Random;
+import java.util.UUID;
+
+import static dev.tylerm.khs.configuration.Config.*;
+import static dev.tylerm.khs.configuration.Config.tauntDelay;
+import static dev.tylerm.khs.configuration.Localization.message;
+
+public class Taunt {
+
+ private UUID tauntPlayer;
+ private int delay;
+ private boolean running;
+
+ public Taunt() {
+ this.delay = tauntDelay;
+ }
+
+ public void update() {
+ if (delay == 0) {
+ if (running) launchTaunt();
+ else if (tauntLast || Main.getInstance().getBoard().sizeHider() > 1) executeTaunt();
+ } else {
+ delay--;
+ delay = Math.max(delay, 0);
+ }
+ }
+
+ private void executeTaunt() {
+ Optional<Player> rand = Main.getInstance().getBoard().getHiders().stream().skip(new Random().nextInt(Main.getInstance().getBoard().size())).findFirst();
+ if (!rand.isPresent()) {
+ Main.getInstance().getLogger().warning("Failed to select random seeker.");
+ return;
+ }
+ Player taunted = rand.get();
+ taunted.sendMessage(message("TAUNTED").toString());
+ Main.getInstance().getGame().broadcastMessage(tauntPrefix + message("TAUNT"));
+ tauntPlayer = taunted.getUniqueId();
+ running = true;
+ delay = 30;
+ }
+
+ private void launchTaunt() {
+ Player taunted = Main.getInstance().getBoard().getPlayer(tauntPlayer);
+ if (taunted != null) {
+ if (!Main.getInstance().getBoard().isHider(taunted)) {
+ Main.getInstance().getLogger().info("Taunted played died and is now seeker. Skipping taunt.");
+ tauntPlayer = null;
+ running = false;
+ delay = tauntDelay;
+ return;
+ }
+ World world = taunted.getLocation().getWorld();
+ if (world == null) {
+ Main.getInstance().getLogger().severe("Game world is null while trying to launch taunt.");
+ tauntPlayer = null;
+ running = false;
+ delay = tauntDelay;
+ return;
+ }
+ Firework fw = (Firework) world.spawnEntity(taunted.getLocation(), EntityType.FIREWORK);
+ FireworkMeta fwm = fw.getFireworkMeta();
+ fwm.setPower(4);
+ fwm.addEffect(FireworkEffect.builder()
+ .withColor(Color.BLUE)
+ .withColor(Color.RED)
+ .withColor(Color.YELLOW)
+ .with(FireworkEffect.Type.STAR)
+ .with(FireworkEffect.Type.BALL)
+ .with(FireworkEffect.Type.BALL_LARGE)
+ .flicker(true)
+ .withTrail()
+ .build());
+ fw.setFireworkMeta(fwm);
+ Main.getInstance().getGame().broadcastMessage(tauntPrefix + message("TAUNT_ACTIVATE"));
+ }
+ tauntPlayer = null;
+ running = false;
+ delay = tauntDelay;
+ }
+
+ public int getDelay() {
+ return delay;
+ }
+
+ public boolean isRunning() {
+ return running;
+ }
+
+} \ No newline at end of file