Browse Source

Merge branch 'Butzlabben:master' into refactoring

RedstoneFuture 3 years ago
parent
commit
c3452c9515

+ 1 - 1
missilewars-plugin/src/main/java/de/butzlabben/missilewars/listener/GameListener.java

@@ -246,7 +246,7 @@ public class GameListener extends GameBoundListener {
             e.setRespawnLocation(t.getSpawn());
             FallProtectionConfiguration fallProtection = getGame().getArena().getFallProtection();
             if (fallProtection.isEnabled())
-                new RespawnGoldBlock(e.getPlayer(), fallProtection.getDuration(), getGame());
+                new RespawnGoldBlock(e.getPlayer(), fallProtection.getDuration(), fallProtection.isMessageOnlyOnStart(), getGame());
         } else {
             e.setRespawnLocation(getGame().getArena().getSpectatorSpawn());
         }

+ 2 - 0
missilewars-plugin/src/main/java/de/butzlabben/missilewars/wrapper/abstracts/arena/FallProtectionConfiguration.java

@@ -19,6 +19,7 @@
 package de.butzlabben.missilewars.wrapper.abstracts.arena;
 
 
+import com.google.gson.annotations.SerializedName;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.ToString;
@@ -30,4 +31,5 @@ public class FallProtectionConfiguration {
 
     private final boolean enabled = true;
     private final int duration = 60;
+    @SerializedName("message_only_on_start") private final boolean messageOnlyOnStart = false;
 }

+ 24 - 5
missilewars-plugin/src/main/java/de/butzlabben/missilewars/wrapper/game/RespawnGoldBlock.java

@@ -48,20 +48,23 @@ public class RespawnGoldBlock implements Listener {
     private final Game game;
     private final Map<Location, Map.Entry<Material, ?>> map = new HashMap<>();
     private int duration;
+    private final boolean messageOnlyOnStart;
     private int task;
 
-    public RespawnGoldBlock(Player p, int dur, Game game) {
-        this.duration = dur;
+    public RespawnGoldBlock(Player p, int duration, boolean messageOnlyOnStart, Game game) {
         this.player = p;
+        this.duration = duration;
+        this.messageOnlyOnStart = messageOnlyOnStart;
         this.game = game;
+
         Bukkit.getPluginManager().registerEvents(this, MissileWars.getInstance());
         activate();
     }
 
     private void activate() {
-        double seconds = (double) duration / 20;
-        if ((seconds == Math.floor(seconds)) && !Double.isInfinite(seconds)) {
-            player.sendMessage(MessageConfig.getMessage("fall_protection").replace("%seconds%", "" + (int) seconds));
+
+        if (messageOnlyOnStart) {
+            sendFallProtectionMessage();
         }
 
         task = Bukkit.getScheduler().scheduleSyncRepeatingTask(MissileWars.getInstance(), () -> {
@@ -69,6 +72,11 @@ public class RespawnGoldBlock implements Listener {
                 stop();
                 return;
             }
+
+            if (!messageOnlyOnStart) {
+                sendFallProtectionMessage();
+            }
+
             if (player.getGameMode() != GameMode.SURVIVAL) {
                 stop();
                 return;
@@ -123,6 +131,17 @@ public class RespawnGoldBlock implements Listener {
         HandlerList.unregisterAll(this);
     }
 
+    /**
+     * This methode send the fall protection message to the player.
+     * The message include the remaining time until the fall protection is ending.
+     */
+    private void sendFallProtectionMessage() {
+        double seconds = (double) duration / 20;
+        if ((seconds == Math.floor(seconds)) && !Double.isInfinite(seconds)) {
+            player.sendMessage(MessageConfig.getMessage("fall_protection").replace("%seconds%", "" + (int) seconds));
+        }
+    }
+
     @EventHandler
     public void onSneak(PlayerToggleSneakEvent e) {
         Player p = e.getPlayer();

+ 2 - 2
pom.xml

@@ -37,7 +37,7 @@
         <module>1_12</module>
         <module>1_13_FAWE</module>
         <module>1_16_FAWE</module>
-        <module>MissileWars-Plugin</module>
+        <module>missilewars-plugin</module>
     </modules>
 
     <repositories>
@@ -196,4 +196,4 @@
             </plugin>
         </plugins>
     </build>
-</project>
+</project>