Realmmap loaded from config to assist with custom maps.

This commit is contained in:
2023-06-07 13:47:25 -04:00
parent b9db6e8dc6
commit 61e4a4aed4
3 changed files with 83 additions and 85 deletions
@@ -57,6 +57,8 @@ public enum ConfigManager {
MB_WORLD_NAME,
MB_WORLD_MAPID,
MB_WORLD_REALMMAP,
MB_WORLD_PORT,
MB_WORLD_ACCESS_LVL,
MB_WORLD_WAREHOUSE_PUSH,
+2 -1
View File
@@ -26,6 +26,7 @@ import engine.net.ByteBufferReader;
import engine.net.ByteBufferWriter;
import engine.net.client.Protocol;
import engine.objects.Realm;
import engine.server.world.WorldServer;
public class WorldRealmMsg extends ClientNetMsg {
@@ -74,7 +75,7 @@ public class WorldRealmMsg extends ClientNetMsg {
realm.serializeForClientMsg(writer);
writer.putInt(0x0);
writer.putInt(3000000);
writer.putInt(WorldServer.worldRealmMap);
}
+51 -56
View File
@@ -7,7 +7,6 @@
// www.magicbane.com
package engine.server.world;
import engine.Enum;
@@ -69,6 +68,8 @@ import static java.lang.System.exit;
public class WorldServer {
public static int worldMapID = Integer.parseInt(ConfigManager.MB_WORLD_MAPID.getValue());
public static int worldRealmMap = Integer.parseInt(ConfigManager.MB_WORLD_REALMMAP.getValue());
public static int worldUUID = 1; // Root object in database
public static Enum.AccountStatus worldAccessLevel = Enum.AccountStatus.valueOf(ConfigManager.MB_WORLD_ACCESS_LVL.getValue());
private static LocalDateTime bootTime = LocalDateTime.now();
@@ -125,7 +126,7 @@ public class WorldServer {
NPC npc = NPC.getFromCache(msg.getObjectID());
float sellPercent = 1;
if (npc != null){
if (npc != null) {
if (origin.getPlayerCharacter() != null)
sellPercent = npc.getSellPercent(origin.getPlayerCharacter());
@@ -152,11 +153,8 @@ public class WorldServer {
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY);
}
public static void shutdown() {
exit(1);
}
public static String getUptimeString() {
String outString = null;
java.time.Duration uptimeDuration;
String newLine = System.getProperty("line.separator");
@@ -174,13 +172,35 @@ public class WorldServer {
return outString;
}
public static void writePopulationFile() {
int population = SessionManager.getActivePlayerCharacterCount();
try {
File populationFile = new File(MBServerStatics.DEFAULT_DATA_DIR + ConfigManager.MB_WORLD_NAME.getValue().replaceAll("'", "") + ".pop");
FileWriter fileWriter;
try {
fileWriter = new FileWriter(populationFile, false);
fileWriter.write(Integer.toString(population));
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (Exception e) {
Logger.error(e);
}
}
private int exec() {
LocalDateTime nextHeartbeatTime = LocalDateTime.now();
LocalDateTime nextPopulationFileTime = LocalDateTime.now();
LocalDateTime nextFlashTrashCheckTime = LocalDateTime.now();
LocalDateTime nextHourlyJobTime = LocalDateTime.now().withMinute(0).withSecond(0).plusHours(1);
LocalDateTime nextWareHousePushTime = LocalDateTime.now();;
LocalDateTime nextWareHousePushTime = LocalDateTime.now();
// Begin execution of main game loop
@@ -263,7 +283,6 @@ public class WorldServer {
Guild.getErrantGuild();
Logger.info("Initializing PowersManager.");
// activate powers manager
PowersManager.initPowersManager(true);
Logger.info("Initializing granted Skills for Runes");
@@ -278,7 +297,6 @@ public class WorldServer {
Logger.info("Initializing MeshBounds");
MeshBounds.InitializeBuildingBounds();
// Load ItemBases
Logger.info("Loading ItemBases");
ItemBase.loadAllItemBases();
@@ -294,6 +312,7 @@ public class WorldServer {
// Load new loot system
Logger.info("Loading New Loot Tables");
LootManager.loadLootData();
//load old loot system (still needed for rolling for now)
LootTable.populateLootTables();
RuneBaseAttribute.LoadAllAttributes();
@@ -307,7 +326,6 @@ public class WorldServer {
Logger.info("Loading Mob Powers for MobBases");
PowersManager.LoadAllMobPowers();
//load item enchantment values
Logger.info("Loading item enchants");
DbManager.LootQueries.LOAD_ENCHANT_VALUES();
@@ -364,18 +382,14 @@ public class WorldServer {
SupportMsgType.InitializeSupportMsgType();
//Load Buildings, Mobs and NPCs for server
getWorldBuildingsMobsNPCs();
// Configure realms for serialization
// Doing this after the world is loaded
Logger.info("Configuring realm serialization data");
try{
Realm.configureAllRealms();
}catch(Exception e){
Logger.error( e.getMessage());
}
Logger.info("Loading Mine data.");
Mine.loadAllMines();
@@ -400,13 +414,15 @@ public class WorldServer {
Logger.info("Loading All Players from database to Server Cache");
long start = System.currentTimeMillis();
try{
try {
DbManager.PlayerCharacterQueries.GET_ALL_CHARACTERS();
}catch(Exception e){
} catch (Exception e) {
e.printStackTrace();
}
long end = System.currentTimeMillis();
Logger.info("Loading All Players took " + (end - start) + " ms.");
ItemProductionManager.ITEMPRODUCTIONMANAGER.initialize();
@@ -444,17 +460,19 @@ public class WorldServer {
DispatchMessage.startMessagePump();
// Run maintenance
MaintenanceManager.dailyMaintenance();
// Disabled but kept in case of emergency
Logger.info("Starting Orphan Item Purge");
PurgeOprhans.startPurgeThread();
// Open/Close mines for the current window
Logger.info("Processing mine window.");
HourlyJobThread.processMineWindow();
// Calculate bootstrap time and rest boot time to current time.
java.time.Duration bootDuration = java.time.Duration.between(LocalDateTime.now(), bootTime);
long bootSeconds = Math.abs(bootDuration.getSeconds());
String boottime = String.format("%d hours %02d minutes %02d seconds", bootSeconds / 3600, (bootSeconds % 3600) / 60, (bootSeconds % 60));
@@ -467,6 +485,7 @@ public class WorldServer {
System.gc();
return true;
}
protected boolean initDatabaselayer() {
// Try starting a GOM <-> DB connection.
@@ -493,7 +512,6 @@ public class WorldServer {
return true;
}
private void getWorldBuildingsMobsNPCs() {
ArrayList<Zone> rootParent;
@@ -521,10 +539,10 @@ public class WorldServer {
try {
ZoneManager.addZone(zone.getLoadNum(), zone);
try{
try {
zone.generateWorldAltitude();
}catch(Exception e){
Logger.error( e.getMessage());
} catch (Exception e) {
Logger.error(e.getMessage());
e.printStackTrace();
}
@@ -539,7 +557,7 @@ public class WorldServer {
b.setObjectTypeMask(MBServerStatics.MASK_BUILDING);
b.setLoc(b.getLoc());
} catch (Exception e) {
Logger.error( b.getObjectUUID() + " returned an Error Message :" + e.getMessage());
Logger.error(b.getObjectUUID() + " returned an Error Message :" + e.getMessage());
}
}
@@ -572,7 +590,7 @@ public class WorldServer {
n.setObjectTypeMask(MBServerStatics.MASK_NPC);
n.setLoc(n.getLoc());
} catch (Exception e) {
Logger.error( n.getObjectUUID() + " returned an Error Message :" + e.getMessage());
Logger.error(n.getObjectUUID() + " returned an Error Message :" + e.getMessage());
}
}
@@ -648,7 +666,7 @@ public class WorldServer {
//send update to friends that you are logged off.
PlayerFriends.SendFriendsStatus(playerCharacter,false);
PlayerFriends.SendFriendsStatus(playerCharacter, false);
}
@@ -688,43 +706,20 @@ public class WorldServer {
if (group != null)
GroupManager.LeaveGroup(player);
} catch (MsgSendException e) {
Logger.error( e.toString());
Logger.error(e.toString());
}
player.respawnLock.writeLock().lock();
try{
try {
if (!player.isAlive())
player.respawn(false, false, true);
}catch(Exception e){
} catch (Exception e) {
Logger.error(e);
}finally{
} finally {
player.respawnLock.writeLock().unlock();
}
}
public static void writePopulationFile() {
int population = SessionManager.getActivePlayerCharacterCount();
try {
File populationFile = new File(MBServerStatics.DEFAULT_DATA_DIR + ConfigManager.MB_WORLD_NAME.getValue().replaceAll("'","") + ".pop");
FileWriter fileWriter;
try {
fileWriter = new FileWriter(populationFile, false);
fileWriter.write(Integer.toString(population));
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}catch(Exception e){
Logger.error(e);
}
}
private void processTrashFile() {
ArrayList<String> machineList;
@@ -742,7 +737,7 @@ try {
// Build list of trash characters associated with that machineID
for (String machineID:machineList) {
for (String machineID : machineList) {
trashList = DbManager.AccountQueries.GET_ALL_CHARS_FOR_MACHINE(machineID);
@@ -784,7 +779,7 @@ try {
// server cache file by now.
Timer timer = new Timer("Disconnect Trash");
timer.schedule(new DisconnectTrashTask( trashList ), 3000L);
timer.schedule(new DisconnectTrashTask(trashList), 3000L);
// Clean up after ourselves
@@ -823,8 +818,8 @@ try {
if (flashString == "")
flashString = "Rebooting for to fix bug.";
Logger.info( "Sending flash from external interface");
Logger.info( "Msg: " + flashString);
Logger.info("Sending flash from external interface");
Logger.info("Msg: " + flashString);
ChatSystemMsg msg = new ChatSystemMsg(null, flashString);
msg.setChannel(engine.Enum.ChatChannelType.FLASH.getChannelID());