Przeglądaj źródła

Improving firework, Adding config setting to deactivate it

RedstoneFuture 1 rok temu
rodzic
commit
1e4cb9d4af

+ 6 - 0
missilewars-plugin/src/main/java/de/butzlabben/missilewars/configuration/Config.java

@@ -92,6 +92,8 @@ public class Config {
         cfg.addDefault("replace.material", JUKEBOX.name());
         cfg.addDefault("replace.after_ticks", 2);
         cfg.addDefault("replace.radius", 15);
+        
+        cfg.addDefault("game_result.firework", true);
 
         cfg.addDefault("motd.enable", true);
         cfg.addDefault("motd.lobby", "&6•&e● MissileWars &7| &eLobby");
@@ -326,6 +328,10 @@ public class Config {
     public static int getReplaceRadius() {
         return cfg.getInt("replace.radius");
     }
+    
+    public static boolean isGameResultFirework() {
+        return cfg.getBoolean("game_result.firework");
+    }
 
     public static String motdEnded() {
         return Messages.getConvertedMsg(cfg.getString("motd.ended"));

+ 24 - 10
missilewars-plugin/src/main/java/de/butzlabben/missilewars/game/GameResultManager.java

@@ -1,6 +1,7 @@
 package de.butzlabben.missilewars.game;
 
 import de.butzlabben.missilewars.MissileWars;
+import de.butzlabben.missilewars.configuration.Config;
 import de.butzlabben.missilewars.configuration.Messages;
 import de.butzlabben.missilewars.game.enums.GameResult;
 import de.butzlabben.missilewars.game.enums.TeamType;
@@ -42,9 +43,12 @@ public class GameResultManager {
             }
         }
         
-        Bukkit.getScheduler().runTaskLater(MissileWars.getInstance(), () -> spawnSetOfFireworks(20), 10);
+        if (!Config.isGameResultFirework()) return;
+        
+        Bukkit.getScheduler().runTaskLater(MissileWars.getInstance(), () -> spawnSetOfFireworks(15), 10);
         Bukkit.getScheduler().runTaskLater(MissileWars.getInstance(), () -> spawnSetOfFireworks(20), 40);
         Bukkit.getScheduler().runTaskLater(MissileWars.getInstance(), () -> spawnSetOfFireworks(20), 70);
+        Bukkit.getScheduler().runTaskLater(MissileWars.getInstance(), () -> spawnSetOfFireworks(15), 100);
         
     }
     
@@ -158,7 +162,7 @@ public class GameResultManager {
     }
     
     private void spawnFirework() {
-        Color winnerTeamColor = null;
+        Color winnerTeamColor;
         
         if (teamManager.getTeam1().getGameResult() == GameResult.WIN) {
             winnerTeamColor = ColorConverter.getColorFromCode(teamManager.getTeam1().getColorCode());
@@ -166,6 +170,9 @@ public class GameResultManager {
         } else if (teamManager.getTeam2().getGameResult() == GameResult.WIN) {
             winnerTeamColor = ColorConverter.getColorFromCode(teamManager.getTeam2().getColorCode());
         
+        } else {
+            return;
+            
         }
         
         Firework firework = game.getGameWorld().getWorld().spawn(game.getArena().getSpectatorSpawn(), Firework.class);
@@ -176,18 +183,25 @@ public class GameResultManager {
         Random random = new Random();
         
         // Create the effect:
-        FireworkEffect.Builder effectBuilder = FireworkEffect.builder()
+        // https://minecraft.tools/en/firework.php
+        
+        FireworkEffect.Builder effectBuilder1 = FireworkEffect.builder()
                 .flicker(true)
                 .trail(true)
-                .with(FireworkEffect.Type.BALL);
-        if (winnerTeamColor != null) {
-            effectBuilder.withColor(ColorUtil.darkenColor(winnerTeamColor, 0.1));
-            effectBuilder.withFade(ColorUtil.darkenColor(winnerTeamColor, 0.5));
-        }
+                .with(FireworkEffect.Type.BALL)
+                .withColor(ColorUtil.darkenColor(winnerTeamColor, 0.1))
+                .withFade(ColorUtil.lightenColor(winnerTeamColor, 0.6));
+        
+        FireworkEffect.Builder effectBuilder2 = FireworkEffect.builder()
+                .flicker(false)
+                .trail(false)
+                .with(FireworkEffect.Type.BURST)
+                .withColor(ColorUtil.darkenColor(winnerTeamColor, 0.5))
+                .withFade(ColorUtil.lightenColor(winnerTeamColor, 0.2));
         
         // Add the effect. (Multiple effects can be added.)
-        fireworkMeta.addEffect(effectBuilder.build());
-        fireworkMeta.setPower(random.nextInt(1, 10));
+        fireworkMeta.addEffects(effectBuilder1.build(), effectBuilder2.build());
+        fireworkMeta.setPower(random.nextInt(1, 7));
         firework.setFireworkMeta(fireworkMeta);
         
         // Flight behavior: