forked from MagicBane/Server
hard cap 3 box limit
This commit is contained in:
@@ -28,6 +28,7 @@ import engine.server.MBServerStatics;
|
||||
import org.pmw.tinylog.Logger;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
|
||||
import static engine.math.FastMath.sqr;
|
||||
@@ -37,6 +38,7 @@ public enum InterestManager implements Runnable {
|
||||
INTERESTMANAGER;
|
||||
|
||||
private static long lastTime;
|
||||
public static HashMap<String,ArrayList<PlayerCharacter>> playersByMachine = new HashMap<>();
|
||||
|
||||
InterestManager() {
|
||||
Logger.info(" Interest Management thread is running.");
|
||||
@@ -522,12 +524,24 @@ public enum InterestManager implements Runnable {
|
||||
if (origin == null)
|
||||
return;
|
||||
|
||||
if(playersByMachine.containsKey(origin.machineID)){
|
||||
if(playersByMachine.get(origin.machineID) == null){
|
||||
ArrayList<PlayerCharacter> newList = new ArrayList<>();
|
||||
newList.add(player);
|
||||
playersByMachine.put(origin.machineID,newList);
|
||||
} else{
|
||||
if(playersByMachine.get(origin.machineID).size() >= 3){
|
||||
origin.disconnect();
|
||||
}else{
|
||||
playersByMachine.get(origin.machineID).add(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Update loaded upbjects lists
|
||||
|
||||
player.setDirtyLoad(true);
|
||||
updateStaticList(player, origin);
|
||||
updateMobileList(player, origin);
|
||||
|
||||
}
|
||||
|
||||
public synchronized void HandleLoadForTeleport(PlayerCharacter playerCharacter) {
|
||||
|
||||
@@ -15,6 +15,7 @@ import engine.Enum.DispatchChannel;
|
||||
import engine.Enum.MinionType;
|
||||
import engine.Enum.SupportMsgType;
|
||||
import engine.InterestManagement.HeightMap;
|
||||
import engine.InterestManagement.InterestManager;
|
||||
import engine.InterestManagement.RealmMap;
|
||||
import engine.InterestManagement.WorldGrid;
|
||||
import engine.db.archive.DataWarehouse;
|
||||
@@ -710,7 +711,11 @@ public class WorldServer {
|
||||
}
|
||||
player.getTimestamps().put("logout", System.currentTimeMillis());
|
||||
player.setEnteredWorld(false);
|
||||
|
||||
if(InterestManager.playersByMachine.containsKey(player.getClientConnection().machineID)){
|
||||
if(InterestManager.playersByMachine.get(player.getClientConnection().machineID).contains(player)){
|
||||
InterestManager.playersByMachine.get(player.getClientConnection().machineID).remove(player);
|
||||
}
|
||||
}
|
||||
// remove from simulation and zero current loc
|
||||
|
||||
WorldGrid.RemoveWorldObject(player);
|
||||
|
||||
Reference in New Issue
Block a user