Parcourir la source

add players to game if they game is already running and they are inside

Daniel Nägele il y a 1 an
Parent
commit
90d7d3a4a3

+ 21 - 9
missilewars-plugin/src/main/java/de/butzlabben/missilewars/game/Game.java

@@ -52,9 +52,19 @@ import de.butzlabben.missilewars.util.PlayerDataProvider;
 import de.butzlabben.missilewars.util.geometry.GameArea;
 import de.butzlabben.missilewars.util.geometry.GameArea;
 import de.butzlabben.missilewars.util.geometry.Geometry;
 import de.butzlabben.missilewars.util.geometry.Geometry;
 import de.butzlabben.missilewars.util.serialization.Serializer;
 import de.butzlabben.missilewars.util.serialization.Serializer;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.function.Consumer;
 import lombok.Getter;
 import lombok.Getter;
 import lombok.ToString;
 import lombok.ToString;
-import org.bukkit.*;
+import org.bukkit.Bukkit;
+import org.bukkit.GameMode;
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.Sound;
+import org.bukkit.World;
 import org.bukkit.entity.Fireball;
 import org.bukkit.entity.Fireball;
 import org.bukkit.entity.Player;
 import org.bukkit.entity.Player;
 import org.bukkit.event.HandlerList;
 import org.bukkit.event.HandlerList;
@@ -63,12 +73,6 @@ import org.bukkit.inventory.ItemStack;
 import org.bukkit.scheduler.BukkitTask;
 import org.bukkit.scheduler.BukkitTask;
 import org.bukkit.util.Vector;
 import org.bukkit.util.Vector;
 
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.function.Consumer;
-
 /**
 /**
  * @author Butzlabben
  * @author Butzlabben
  * @since 01.01.2018
  * @since 01.01.2018
@@ -117,7 +121,7 @@ public class Game {
             return;
             return;
         }
         }
 
 
-        if (lobby.getPossibleArenas().size() == 0) {
+        if (lobby.getPossibleArenas().isEmpty()) {
             Logger.ERROR.log("At least one valid arena must be set at lobby \"" + lobby.getName() + "\".");
             Logger.ERROR.log("At least one valid arena must be set at lobby \"" + lobby.getName() + "\".");
             return;
             return;
         }
         }
@@ -163,7 +167,7 @@ public class Game {
         } else if (lobby.getMapChooseProcedure() == MapChooseProcedure.MAPCYCLE) {
         } else if (lobby.getMapChooseProcedure() == MapChooseProcedure.MAPCYCLE) {
             final int lastMapIndex = cycles.getOrDefault(lobby.getName(), -1);
             final int lastMapIndex = cycles.getOrDefault(lobby.getName(), -1);
             List<Arena> arenas = lobby.getArenas();
             List<Arena> arenas = lobby.getArenas();
-            int index = lastMapIndex >= arenas.size() - 1 ? 0 : lastMapIndex + 1;
+            int index = (lastMapIndex + 1) % arenas.size();
             cycles.put(lobby.getName(), index);
             cycles.put(lobby.getName(), index);
             setArena(arenas.get(index));
             setArena(arenas.get(index));
             prepareGame();
             prepareGame();
@@ -179,6 +183,14 @@ public class Game {
             }
             }
         }
         }
 
 
+        // Add players if they are in the game area
+        for (Player player : Bukkit.getOnlinePlayers()) {
+            if (!isIn(player.getLocation())) {
+                continue;
+            }
+
+            playerJoinInGame(player, false);
+        }
     }
     }
 
 
     /**
     /**

+ 1 - 12
missilewars-plugin/src/main/java/de/butzlabben/missilewars/game/GameWorld.java

@@ -20,7 +20,6 @@ package de.butzlabben.missilewars.game;
 
 
 import de.butzlabben.missilewars.Logger;
 import de.butzlabben.missilewars.Logger;
 import de.butzlabben.missilewars.configuration.Config;
 import de.butzlabben.missilewars.configuration.Config;
-import de.butzlabben.missilewars.configuration.Messages;
 import java.io.File;
 import java.io.File;
 import java.io.IOException;
 import java.io.IOException;
 import lombok.Getter;
 import lombok.Getter;
@@ -61,16 +60,6 @@ public class GameWorld {
         return Bukkit.getWorld(worldName);
         return Bukkit.getWorld(worldName);
     }
     }
 
 
-    public void kickInactivity() {
-        synchronized (lock) {
-            Bukkit.getOnlinePlayers().forEach(p -> {
-                if (p.isDead() && p.getWorld().getName().equals(worldName)) {
-                    p.kickPlayer(Messages.getMessage(true, Messages.MessageEnum.ARENA_KICK_INACTIVITY));
-                }
-            });
-        }
-    }
-
     public void unload() {
     public void unload() {
         synchronized (lock) {
         synchronized (lock) {
             World w = Bukkit.getWorld(worldName);
             World w = Bukkit.getWorld(worldName);
@@ -95,7 +84,7 @@ public class GameWorld {
             FileUtils.deleteQuietly(file);
             FileUtils.deleteQuietly(file);
             if (file.exists() || file.isDirectory()) {
             if (file.exists() || file.isDirectory()) {
                 Logger.WARN.log("Could not delete old world!");
                 Logger.WARN.log("Could not delete old world!");
-                file.delete();
+                file.deleteOnExit();
             }
             }
         }
         }
     }
     }