Page MenuHomeSchine - Phabricator

Starmade | Server Trouble While Upgrading - customBlockBehaviorConfig.xml is causing infinite loop
Open, NormalPublic

Description

The Short Version:
The new section, <StructureHpBlockMultiplier>, causes the server to go into an infinite java error loop if it's included in the customBlockBehaviorConfig.xml file, even though it is found in the default BlockBehaviorConfig.xml file found in the /data/config folder.

The Long version (including troubleshooting steps taken, excerpts from logs, and examples of config files used):
Hello, I'm the tech admin for the Light vs Dark server. We were attempting to upgrade to the latest version, however the server was crashing into an infinite loop error. At first, all seems fine. The update goes through successfully and the server starts. I had also rebuilt all of the custom config files from the new versions in a fresh install. However, as soon as anyone logs into the server, it starts with an infinite error loop, without hard crashing. This completely fills the log files within just a few seconds, with over 40,000 lines of error messages a second. We are running on Ubuntu 16 server with Sun Java 64-bit. There are a few variants of the error loop that occurred, but what ties them together is they both have the java exception that the "revertBlockBehaviorConfig.xml" is not found. I managed to get to the bottom of it, but it was a journey.

Here's what the error loop looked like immediately following the first update, before the hotfix:

On version, 20160812_205821 v0.199.152:

[2016-08-13 02:33:15] ON CLIENT: false
[2016-08-13 02:33:15] java.lang.IllegalArgumentException: No enum constant obfuscated.YF.STATUS_ARMOR_HP_ABSORBTION_BONUS
[2016-08-13 02:33:15] 	at java.lang.Enum.valueOf(Enum.java:238)
[2016-08-13 02:33:15] 	at obfuscated.YF.valueOf(SourceFile:24)
[2016-08-13 02:33:15] 	at org.schema.game.common.controller.elements.UsableElementManager.parse(SourceFile:221)
[2016-08-13 02:33:15] 	at org.schema.game.common.controller.elements.ManagerContainer.reparseBlockBehavior(SourceFile:284)
[2016-08-13 02:33:15] 	at org.schema.game.common.controller.elements.ManagerContainer.<init>(SourceFile:194)
[2016-08-13 02:33:15] 	at org.schema.game.common.controller.elements.ShipManagerContainer.<init>(SourceFile:214)
[2016-08-13 02:33:15] 	at obfuscated.VP.<init>(SourceFile:146)
[2016-08-13 02:33:15] 	at org.schema.game.common.data.world.Universe.loadEntity(SourceFile:339)
[2016-08-13 02:33:15] 	at obfuscated.agn.a(SourceFile:1428)
[2016-08-13 02:33:15] 	at obfuscated.agn.a(SourceFile:1400)
[2016-08-13 02:33:15] 	at obfuscated.agn.a(SourceFile:1287)
[2016-08-13 02:33:15] 	at org.schema.game.common.data.world.Universe.loadOrGenerateSector(SourceFile:951)
[2016-08-13 02:33:15] 	at org.schema.game.common.data.world.Universe.getSector(SourceFile:647)
[2016-08-13 02:33:15] 	at org.schema.game.common.data.world.Universe.getSector(SourceFile:641)
[2016-08-13 02:33:15] 	at org.schema.game.server.controller.GameServerController.onLoggedIn(SourceFile:1734)
[2016-08-13 02:33:15] 	at org.schema.schine.network.server.ServerController.registerClient(SourceFile:148)
[2016-08-13 02:33:15] 	at org.schema.schine.network.commands.LoginRequest.login(SourceFile:95)
[2016-08-13 02:33:15] 	at org.schema.schine.network.commands.LoginRequest.run(SourceFile:202)
[2016-08-13 02:33:15] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[2016-08-13 02:33:15] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[2016-08-13 02:33:15] 	at java.lang.Thread.run(Thread.java:745)
[2016-08-13 02:33:15] java.io.FileNotFoundException: /home/starmade/starmade/StarMade/./data/config/revertBlockBehaviorConfig.xml (No such file or directory)
[2016-08-13 02:33:15] 	at java.io.FileInputStream.open0(Native Method)
[2016-08-13 02:33:15] 	at java.io.FileInputStream.open(FileInputStream.java:195)
[2016-08-13 02:33:15] 	at java.io.FileInputStream.<init>(FileInputStream.java:138)
[2016-08-13 02:33:15] 	at java.io.FileInputStream.<init>(FileInputStream.java:93)
[2016-08-13 02:33:15] 	at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
[2016-08-13 02:33:15] 	at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
[2016-08-13 02:33:15] 	at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:623)
[2016-08-13 02:33:15] 	at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:189)
[2016-08-13 02:33:15] 	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:812)
[2016-08-13 02:33:15] 	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
[2016-08-13 02:33:15] 	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
[2016-08-13 02:33:15] 	at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
[2016-08-13 02:33:15] 	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
[2016-08-13 02:33:15] 	at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:205)
[2016-08-13 02:33:15] 	at obfuscated.f.a(SourceFile:37)
[2016-08-13 02:33:15] 	at org.schema.game.server.controller.GameServerController.c(SourceFile:2992)
[2016-08-13 02:33:15] 	at org.schema.game.common.controller.elements.ManagerContainer.reparseBlockBehavior(SourceFile:294)
[2016-08-13 02:33:15] 	at org.schema.game.common.controller.elements.ManagerContainer.<init>(SourceFile:194)
[2016-08-13 02:33:15] 	at org.schema.game.common.controller.elements.ShipManagerContainer.<init>(SourceFile:214)
[2016-08-13 02:33:15] 	at obfuscated.VP.<init>(SourceFile:146)
[2016-08-13 02:33:15] 	at org.schema.game.common.data.world.Universe.loadEntity(SourceFile:339)
[2016-08-13 02:33:15] 	at obfuscated.agn.a(SourceFile:1428)
[2016-08-13 02:33:15] 	at obfuscated.agn.a(SourceFile:1400)
[2016-08-13 02:33:15] 	at obfuscated.agn.a(SourceFile:1287)
[2016-08-13 02:33:15] 	at org.schema.game.common.data.world.Universe.loadOrGenerateSector(SourceFile:951)
[2016-08-13 02:33:15] 	at org.schema.game.common.data.world.Universe.getSector(SourceFile:647)
[2016-08-13 02:33:15] 	at org.schema.game.common.data.world.Universe.getSector(SourceFile:641)
[2016-08-13 02:33:15] 	at org.schema.game.server.controller.GameServerController.onLoggedIn(SourceFile:1734)
[2016-08-13 02:33:15] 	at org.schema.schine.network.server.ServerController.registerClient(SourceFile:148)
[2016-08-13 02:33:15] 	at org.schema.schine.network.commands.LoginRequest.login(SourceFile:95)
[2016-08-13 02:33:15] 	at org.schema.schine.network.commands.LoginRequest.run(SourceFile:202)
[2016-08-13 02:33:15] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[2016-08-13 02:33:15] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[2016-08-13 02:33:15] 	at java.lang.Thread.run(Thread.java:745)

Here's what it looked like after installing the hotfix:

[2016-08-16 02:56:17] org.schema.common.ConfigParserException: HpConditionTriggerList -> Item; trigger amount must be a positive value in <Amount>
(FixSuggestion: check your xml config files)
[2016-08-16 02:56:17] 	at obfuscated.US.a(SourceFile:42)
[2016-08-16 02:56:17] 	at obfuscated.UQ.a(SourceFile:23)
[2016-08-16 02:56:17] 	at obfuscated.UR.a(SourceFile:34)
[2016-08-16 02:56:17] 	at org.schema.game.common.controller.elements.UsableElementManager.parse(SourceFile:210)
[2016-08-16 02:56:17] 	at org.schema.game.common.controller.elements.ManagerContainer.reparseBlockBehavior(SourceFile:284)
[2016-08-16 02:56:17] 	at org.schema.game.common.controller.elements.ManagerContainer.<init>(SourceFile:194)
[2016-08-16 02:56:17] 	at org.schema.game.common.controller.elements.ShipManagerContainer.<init>(SourceFile:214)
[2016-08-16 02:56:17] 	at obfuscated.VP.<init>(SourceFile:146)
[2016-08-16 02:56:17] 	at org.schema.game.common.data.world.Universe.loadEntity(SourceFile:339)
[2016-08-16 02:56:17] 	at obfuscated.agn.a(SourceFile:1428)
[2016-08-16 02:56:17] 	at obfuscated.agn.a(SourceFile:1400)
[2016-08-16 02:56:17] 	at obfuscated.agn.a(SourceFile:1287)
[2016-08-16 02:56:17] 	at org.schema.game.common.data.world.Universe.loadOrGenerateSector(SourceFile:951)
[2016-08-16 02:56:17] 	at org.schema.game.common.data.world.Universe.getSector(SourceFile:647)
[2016-08-16 02:56:17] 	at org.schema.game.common.data.world.Universe.getSector(SourceFile:641)
[2016-08-16 02:56:17] 	at org.schema.game.server.controller.GameServerController.onLoggedIn(SourceFile:1734)
[2016-08-16 02:56:17] 	at org.schema.schine.network.server.ServerController.registerClient(SourceFile:148)
[2016-08-16 02:56:17] 	at org.schema.schine.network.commands.LoginRequest.login(SourceFile:95)
[2016-08-16 02:56:17] 	at org.schema.schine.network.commands.LoginRequest.run(SourceFile:202)
[2016-08-16 02:56:17] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[2016-08-16 02:56:17] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[2016-08-16 02:56:17] 	at java.lang.Thread.run(Thread.java:745)
[2016-08-16 02:56:17] java.io.FileNotFoundException: /home/starmade/starmade-new_and_working_but_very_buggy/StarMade/./data/config/revertBlockBehaviorConfig.xml (No such file or directory)
[2016-08-16 02:56:17] 	at java.io.FileInputStream.open0(Native Method)
[2016-08-16 02:56:17] 	at java.io.FileInputStream.open(FileInputStream.java:195)
[2016-08-16 02:56:17] 	at java.io.FileInputStream.<init>(FileInputStream.java:138)
[2016-08-16 02:56:17] 	at java.io.FileInputStream.<init>(FileInputStream.java:93)
[2016-08-16 02:56:17] 	at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
[2016-08-16 02:56:17] 	at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
[2016-08-16 02:56:17] 	at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:623)
[2016-08-16 02:56:17] 	at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:189)
[2016-08-16 02:56:17] 	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:812)
[2016-08-16 02:56:17] 	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
[2016-08-16 02:56:17] 	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
[2016-08-16 02:56:17] 	at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
[2016-08-16 02:56:17] 	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
[2016-08-16 02:56:17] 	at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:205)
[2016-08-16 02:56:17] 	at obfuscated.f.a(SourceFile:37)
[2016-08-16 02:56:17] 	at org.schema.game.server.controller.GameServerController.c(SourceFile:2992)
[2016-08-16 02:56:17] 	at org.schema.game.common.controller.elements.ManagerContainer.reparseBlockBehavior(SourceFile:294)
[2016-08-16 02:56:17] 	at org.schema.game.common.controller.elements.ManagerContainer.<init>(SourceFile:194)
[2016-08-16 02:56:17] 	at org.schema.game.common.controller.elements.ShipManagerContainer.<init>(SourceFile:214)
[2016-08-16 02:56:17] 	at obfuscated.VP.<init>(SourceFile:146)
[2016-08-16 02:56:17] 	at org.schema.game.common.data.world.Universe.loadEntity(SourceFile:339)
[2016-08-16 02:56:17] 	at obfuscated.agn.a(SourceFile:1428)
[2016-08-16 02:56:17] 	at obfuscated.agn.a(SourceFile:1400)
[2016-08-16 02:56:17] 	at obfuscated.agn.a(SourceFile:1287)
[2016-08-16 02:56:17] 	at org.schema.game.common.data.world.Universe.loadOrGenerateSector(SourceFile:951)
[2016-08-16 02:56:17] 	at org.schema.game.common.data.world.Universe.getSector(SourceFile:647)
[2016-08-16 02:56:17] 	at org.schema.game.common.data.world.Universe.getSector(SourceFile:641)
[2016-08-16 02:56:17] 	at org.schema.game.server.controller.GameServerController.onLoggedIn(SourceFile:1734)
[2016-08-16 02:56:17] 	at org.schema.schine.network.server.ServerController.registerClient(SourceFile:148)
[2016-08-16 02:56:17] 	at org.schema.schine.network.commands.LoginRequest.login(SourceFile:95)
[2016-08-16 02:56:17] 	at org.schema.schine.network.commands.LoginRequest.run(SourceFile:202)
[2016-08-16 02:56:17] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[2016-08-16 02:56:17] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[2016-08-16 02:56:17] 	at java.lang.Thread.run(Thread.java:745)
[2016-08-16 02:56:17] ON CLIENT: false

Here is another example:

[2016-08-15 04:06:31] ON CLIENT: false
[2016-08-15 04:06:31] java.lang.NullPointerException
[2016-08-15 04:06:31] 	at org.schema.game.common.controller.elements.UsableElementManager.parse(SourceFile:154)
[2016-08-15 04:06:31] 	at org.schema.game.common.controller.elements.ManagerContainer.reparseBlockBehavior(SourceFile:284)
[2016-08-15 04:06:31] 	at org.schema.game.common.controller.elements.ManagerContainer.<init>(SourceFile:194)
[2016-08-15 04:06:31] 	at org.schema.game.common.controller.elements.ShipManagerContainer.<init>(SourceFile:214)
[2016-08-15 04:06:31] 	at obfuscated.VP.<init>(SourceFile:146)
[2016-08-15 04:06:31] 	at org.schema.game.common.data.world.Universe.loadEntity(SourceFile:339)
[2016-08-15 04:06:31] 	at obfuscated.agn.a(SourceFile:1428)
[2016-08-15 04:06:31] 	at obfuscated.agn.a(SourceFile:1400)
[2016-08-15 04:06:31] 	at obfuscated.agn.a(SourceFile:1287)
[2016-08-15 04:06:31] 	at org.schema.game.common.data.world.Universe.loadOrGenerateSector(SourceFile:951)
[2016-08-15 04:06:31] 	at org.schema.game.common.data.world.Universe.getSector(SourceFile:647)
[2016-08-15 04:06:31] 	at org.schema.game.common.data.world.Universe.getSector(SourceFile:641)
[2016-08-15 04:06:31] 	at org.schema.game.server.controller.GameServerController.onLoggedIn(SourceFile:1734)
[2016-08-15 04:06:31] 	at org.schema.schine.network.server.ServerController.registerClient(SourceFile:148)
[2016-08-15 04:06:31] 	at org.schema.schine.network.commands.LoginRequest.login(SourceFile:95)
[2016-08-15 04:06:31] 	at org.schema.schine.network.commands.LoginRequest.run(SourceFile:202)
[2016-08-15 04:06:31] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[2016-08-15 04:06:31] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[2016-08-15 04:06:31] 	at java.lang.Thread.run(Thread.java:745)
[2016-08-15 04:06:31] java.io.FileNotFoundException: /home/starmade/starmade-new_and_working_but_very_buggy/StarMade/./data/config/revertBlockBehaviorConfig.xml (No such file or directory)
[2016-08-15 04:06:31] 	at java.io.FileInputStream.open0(Native Method)
[2016-08-15 04:06:31] 	at java.io.FileInputStream.open(FileInputStream.java:195)
[2016-08-15 04:06:31] 	at java.io.FileInputStream.<init>(FileInputStream.java:138)
[2016-08-15 04:06:31] 	at java.io.FileInputStream.<init>(FileInputStream.java:93)
[2016-08-15 04:06:31] 	at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
[2016-08-15 04:06:31] 	at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
[2016-08-15 04:06:31] 	at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:623)
[2016-08-15 04:06:31] 	at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:189)
[2016-08-15 04:06:31] 	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:812)
[2016-08-15 04:06:31] 	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
[2016-08-15 04:06:31] 	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
[2016-08-15 04:06:31] 	at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
[2016-08-15 04:06:31] 	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
[2016-08-15 04:06:31] 	at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:205)
[2016-08-15 04:06:31] 	at obfuscated.f.a(SourceFile:37)
[2016-08-15 04:06:31] 	at org.schema.game.server.controller.GameServerController.c(SourceFile:2992)
[2016-08-15 04:06:31] 	at org.schema.game.common.controller.elements.ManagerContainer.reparseBlockBehavior(SourceFile:294)
[2016-08-15 04:06:31] 	at org.schema.game.common.controller.elements.ManagerContainer.<init>(SourceFile:194)
[2016-08-15 04:06:31] 	at org.schema.game.common.controller.elements.ShipManagerContainer.<init>(SourceFile:214)
[2016-08-15 04:06:31] 	at obfuscated.VP.<init>(SourceFile:146)
[2016-08-15 04:06:31] 	at org.schema.game.common.data.world.Universe.loadEntity(SourceFile:339)
[2016-08-15 04:06:31] 	at obfuscated.agn.a(SourceFile:1428)
[2016-08-15 04:06:31] 	at obfuscated.agn.a(SourceFile:1400)
[2016-08-15 04:06:31] 	at obfuscated.agn.a(SourceFile:1287)
[2016-08-15 04:06:31] 	at org.schema.game.common.data.world.Universe.loadOrGenerateSector(SourceFile:951)
[2016-08-15 04:06:31] 	at org.schema.game.common.data.world.Universe.getSector(SourceFile:647)
[2016-08-15 04:06:31] 	at org.schema.game.common.data.world.Universe.getSector(SourceFile:641)
[2016-08-15 04:06:31] 	at org.schema.game.server.controller.GameServerController.onLoggedIn(SourceFile:1734)
[2016-08-15 04:06:31] 	at org.schema.schine.network.server.ServerController.registerClient(SourceFile:148)
[2016-08-15 04:06:31] 	at org.schema.schine.network.commands.LoginRequest.login(SourceFile:95)
[2016-08-15 04:06:31] 	at org.schema.schine.network.commands.LoginRequest.run(SourceFile:202)
[2016-08-15 04:06:31] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[2016-08-15 04:06:31] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[2016-08-15 04:06:31] 	at java.lang.Thread.run(Thread.java:745)

Here are the steps I took to troubleshoot the issue after experiencing the bugs:

  1. After the initial update (and before the hotfix came out), the loop error was new. So I attempted to create a new world. This was successful. The world loaded and players could join the server. However, we do not want to do a full world reset, so I continued to troubleshoot.
  2. I attempted to start the server again with the our 2 month old world file. It crashed with the same error loop.
  3. I disabled all the custom configuration files, with our 2 month old world file. People could now join, but the game was not running stable.
  4. I noticed that the "FactionConfig.xml" file said "error" in it's name, like "FactionConfigError.xml". So I went ahead and updated the file based on the "/data/config" folder. I also re-enabled the other custom config files, since they did not have an "error" in their names.
  5. I attempted to run the server again, and the same loop of errors happened.
  6. I created a completely fresh install with version 20160812_205821 v0.199.152 (this was before the hotfix version). I added blueprints, the established world file, and other settings files, except the custom configuration files.
  7. I attempted to run the server, without the custom configuration files, and it ran with our old world file.
  8. I completely rebuilt all the custom configuration files using the "/data/config" files from the fresh install as the basis. I whittled them down to only the settings I wished to change, being careful not to mess up the data structures of the XML files. New copies of the "FactionConfig.xml," "BlockConfigImport.xml," and "customBlockBehaviorConfig.xml" files were created and I placed them in the appropriate directories within the StarMade folder.
  9. I started the server again, and the same type of java error loop happened.
  10. I disabled all the custom config files and attempted to start the server. It worked and players could join.
  11. I ran the update for the server and upgraded to 20160814_215551 v0.199.152.
  12. I ran the server without the custom config files, and players could join.
  13. I rebuild all the custom config files again with the files found in the "/data/config" folder and the same bug happened. To reiterate the bug, everything looks fine upon startup until a player logs in, then an endless java error loop occurs.
  14. I disabled all but one of the configuration files. I determined that the server could run with the custom block config and the custom faction config files enabled, but NOT the "customBlockBehaviorConfig.xml" file.
  15. I simply took the "blockBehaviorConfig.xml" file from the "/data/config/" folder and placed a copy into the "StarMade/customBlockBehaviorConfig/" folder, renaming it, "customBlockBehaviorConfig.xml". I made absolutely no changes to the file whatsoever, to rule out any possibility of a mistake of my own doing in the custom config file (even though I had already completely rebuild it twice and looked it over several times to ensure it was right.)
  16. I attempted to run the server again, and it had the same kind of java crash loop still!
  17. I attempted to simplify the unaltered copy of the "blockBehaviorConfig.xml" file, to only include the first set of options. It looks like this:
<BlockBehavior>
        <General>
                <BasicValues>
                        <DefensiveEffectMaxPercentMassMult>10</DefensiveEffectMaxPercentMassMult>   <!-- multiplication of mass used as max percent for defensive effects: ratio = effectBlockCount / (mass*DefensiveEffectMaxPercentMassMult)-->
                        <ShieldExtraCapacityMultPerUnit>1</ShieldExtraCapacityMultPerUnit>   <!-- totalUnitShieldRecharge = (unitSize*ShieldExtraRechargeMultPerUnit) -->
                        <ShieldExtraRechargeMultPerUnit>1</ShieldExtraRechargeMultPerUnit>   <!-- shieldCapacity = ((totalUnitShieldCapacity*ShieldCapacityPreMul)^ShieldCapacityPow)*ShieldCapacityTotalMul -->
                        <ShieldDoInitialWithoutFromCore>true</ShieldDoInitialWithoutFromCore> <!-- if true, the ship will have initial shields without any shield blocks. if false, the initial values are added when the first shield block is placed -->
                        <ShieldCapacityInitial>220</ShieldCapacityInitial> <!-- initial shield capacity on ships without shieldCapacity blocks -->
                        <ShieldRechargeInitial>0</ShieldRechargeInitial> <!-- initial shield recharge on ships without shieldRecharge blocks -->
                        <ShieldCapacityPow>0.9791797578</ShieldCapacityPow>
                        <ShieldCapacityPreMul>1.0</ShieldCapacityPreMul>
                        <ShieldCapacityTotalMul>110</ShieldCapacityTotalMul>   <!-- shieldCapacity = ((totalUnitShieldCapacity*ShieldCapacityPreMul)^ShieldCapacityPow)*ShieldCapacityTotalMul -->
                        <ShieldRechargePow>1.0</ShieldRechargePow>   <!-- shieldCapacity = ((totalUnitShieldCapacity*1.0)^0.9)*55 -->
                        <ShieldRechargePreMul>1.0</ShieldRechargePreMul>
                        <ShieldRechargeTotalMul>5.5</ShieldRechargeTotalMul>
                        <ShieldRechargeCycleTime>1.0</ShieldRechargeCycleTime> <!-- time in secs between recharge cycles. This value is relative, so changing it won't affect the time a ship needs to fully recharge (e.g. twice as many cycles -> half as many reacharge per cycle)-->
                        <ShieldRecoveryTimeAfterOutage>10</ShieldRecoveryTimeAfterOutage> <!-- time, the shield will not recharge after reaching 0 -->
                        <ShieldDirectRecoveryTime>60</ShieldDirectRecoveryTime> <!-- this time is set to the value gives after each hit sustained. In direct recovery, <ShieldRecoveryMultPerPercent> is applied. Otherwise it's running on full recharge -->
                        <ShieldRecoveryMultPerPercent>0.5</ShieldRecoveryMultPerPercent> <!-- MAX % at high health   -   in direct recovery, the shield recharge will be multiplied by (1-((shield/max)*thisValue));-->
                        <ShieldRecoveryMult>0.25</ShieldRecoveryMult> <!-- MAX % at low health   - in direct recovery, the shield recharge will be multiplied: recharge = recharge*thisValue;-->
                        <ShieldRechargePowerConsuption>10</ShieldRechargePowerConsuption> <!-- (when shield < 100%) per regen point -->
                        <ShieldFullPowerConsuption>1</ShieldFullPowerConsuption> <!-- (when shield == 100%) per regen point -->
                        <ShieldDockTransferLimit>0.25</ShieldDockTransferLimit> <!-- Up to which fill status a rail docked entity up in the chain (towards root) will take the hit (e.g. 0.25 means that a mothership (and docks inbetween) will take the shots of a turret or other rail dock as long as they have more than 25% of their max shields left -->
                        <PowerDivFactor>0.333</PowerDivFactor>
                        <PowerCeiling>2000000.0</PowerCeiling>
                        <PowerGrowth>1.000348</PowerGrowth>
                        <PowerLinearGrowth>25.0</PowerLinearGrowth>
                        <PowerRecoveryTime>1000</PowerRecoveryTime>
                        <PowerBaseCapacity>50000</PowerBaseCapacity>
                        <PowerTankCapacityLinear>1000</PowerTankCapacityLinear> <!-- multiplication per unit -->
                        <PowerTankCapacityPow>1.05</PowerTankCapacityPow> <!-- unitSize^x per unit -->
                        <TakeOffEffectPowerConsumptionMult>1</TakeOffEffectPowerConsumptionMult> <!-- multiplied by force -->
                        <EvadeEffectPowerConsumptionMult>1</EvadeEffectPowerConsumptionMult> <!-- multiplied by force -->
                        <PersonalSalvageBeamBonus>1.25</PersonalSalvageBeamBonus>   <!-- bonus mult of raw resources when salvaging with handheld salvage beam (everything between whole numbers is chance (e.g. 1.25 give 25% chance of an extra raw yield) -->
                       
                        <RailMassEnhancerFreeMass>50.0</RailMassEnhancerFreeMass>   <!-- mass that is free to place without the need of a rail mass enhancer -->
                        <RailMassEnhancerMassPerEnhancer>5.0</RailMassEnhancerMassPerEnhancer>   <!-- how much mass is free to place for each rail mass enhancer in the structure -->
                        <RailMassEnhancerPowerConsumedPerEnhancer>50.0</RailMassEnhancerPowerConsumedPerEnhancer>   <!-- How much power per second is consumed my rail enhancer blocks -->
                        <RailMassEnhancerPercentCostPerMassAboveEnhancerProvided>0.05</RailMassEnhancerPercentCostPerMassAboveEnhancerProvided>   <!-- how much % of mass speed (between 0 and 1) is subtracted for every one mass placed on a dock that is above the current mass limit (free blocks + enhancers) (e.g. at 0.1, for every block placed the speed is one percent slower)-->
                        
                        <PlanetPowerBaseCapacity>500</PlanetPowerBaseCapacity>
                        <AsteroidPowerBaseCapacity>500</AsteroidPowerBaseCapacity>

						<StructureHpBlockMultiplier>1.0</StructureHpBlockMultiplier> <!-- how much of the hp value is added to the systemHP -->
                        <HpDeductionLogOffset>-5</HpDeductionLogOffset> 
                        <HpDeductionLogFactor>0.7</HpDeductionLogFactor> <!-- deducted hit points on damage: blockHP + HpDeductionLogFactor*(max(0, log10(maxHP)+HpDeductionLogOffset)) * blockHP -->
                     
                        <ShipRebootTimeInSecPerMissingHpPercent>40.0</ShipRebootTimeInSecPerMissingHpPercent> <!-- on 0% hp, the full value in seconds is needed to reboot -->
                        <ShipRebootTimeMultiplierPerMass>0.0002</ShipRebootTimeMultiplierPerMass> <!-- secondsToReboot * (mass * ShipRebootTimeMultiplyerPerMass) -->
						<ShipRebootTimeMinSec>30.0</ShipRebootTimeMinSec> <!-- Minimum time in secs a reboot will take -->
						

 						<ArmorHpAbsorbtion>0.5</ArmorHpAbsorbtion> <!-- absorbedDamageToArmorHP = ArmorHpAbsorbtion; How much damage of a shot can be absorbed to armorHP; this is a static value; set it to 0 if you want to use a dynamic variance instead with ArmorHpDamageThreshold-->
 						<ArmorHpAbsorbedDamageMultiplier>1.0</ArmorHpAbsorbedDamageMultiplier> <!-- How much absorbed damaged is deducted from armorHP -->
 						<ArmorHpBlockMultiplier>1.0</ArmorHpBlockMultiplier> <!-- how much of the armor value is added to the armorHP -->
 						
 						<ArmorHpDamageThreshold>1.0</ArmorHpDamageThreshold> <!-- absorbedDamageToArmorHP = (ArmorHpDamageThreshold * [armorhp of the block]) * [current ArmorHp Left On Ship]; Note: this is not used as long as ArmorHpAbsorbtion != 0; This means, a ship wont take damage other than armorHP damage as long as a single shot isn't above the trheshold; -->

						<AITurretMinOrientationSpeed>0.5</AITurretMinOrientationSpeed> <!-- Minimum turret orientation speed by mass used by AI (still depends on enhancer) -->
 						<AITurretMaxOrientationSpeed>3.5</AITurretMaxOrientationSpeed> <!-- Maximum turret orientation speed by mass used by AI (still depends on enhancer) -->
 						<AITurretOrientationSpeedDivByMass>50.0</AITurretOrientationSpeedDivByMass> <!-- speed = AITurretOrientationSpeedDivByMass / mass -->


 						<ExplosionShieldDamageBonus>0.0</ExplosionShieldDamageBonus> <!-- all explosions (missile/warhead/pulse) do [damage + damage * bonus] against shields-->
 						<ExplosionHullDamageBonus>0.0</ExplosionHullDamageBonus> <!-- all explosions (missile/warhead/pulse) do [damage + damage * bonus] against blocks (will also hurt armor more)-->

 						<VolumeMassMultiplier>0.01</VolumeMassMultiplier> <!-- how much of the volume of an item in an inventory/storage/cargo adds to the mass of a structure -->
						
                        <HpConditionTriggerList>
						
                           <Item conditionhp="0.9">
                               <Type>POWER</Type>
                               <Amount>0.9</Amount>
                           </Item>
                           <Item conditionhp="0.9">
                               <Type>SHIELD</Type>
                               <Amount>0.9</Amount>
                           </Item>
                           <Item conditionhp="0.9">
                               <Type>THRUST</Type>
                               <Amount>0.9</Amount>
                           </Item>
						   
							<Item conditionhp="0.8">
                               <Type>POWER</Type>
                               <Amount>0.8</Amount>
                           </Item>
                           <Item conditionhp="0.8">
                               <Type>SHIELD</Type>
                               <Amount>0.8</Amount>
                           </Item>
                           <Item conditionhp="0.8">
                               <Type>THRUST</Type>
                               <Amount>0.8</Amount>
                           </Item>
						   
                           <Item conditionhp="0.7">
                               <Type>POWER</Type>
                               <Amount>0.7</Amount>
                           </Item>
                           <Item conditionhp="0.7">
                               <Type>SHIELD</Type>
                               <Amount>0.7</Amount>
                           </Item>
                           <Item conditionhp="0.7">
                               <Type>THRUST</Type>
                               <Amount>0.7</Amount>
                           </Item>
						   
                           <Item conditionhp="0.6">
                               <Type>POWER</Type>
                               <Amount>0.5</Amount>
                           </Item>
                           <Item conditionhp="0.6">
                               <Type>SHIELD</Type>
                               <Amount>0.5</Amount>
                           </Item>
                           <Item conditionhp="0.6">
                               <Type>THRUST</Type>
                               <Amount>0.5</Amount>
                           </Item>
						   
                           <Item conditionhp="0.55">
                               <Type>CONTROL_LOSS</Type>
                           </Item>
						   
                           <Item conditionhp="0.5">
                               <Type>OVERHEATING</Type>
                           </Item>
						   <Item conditionhp="0.5">
                               <Type>POWER</Type>
                               <Amount>0.0</Amount>
                           </Item>
                           <Item conditionhp="0.5">
                               <Type>SHIELD</Type>
                               <Amount>0.0</Amount>
                           </Item>
                           <Item conditionhp="0.5">
                               <Type>THRUST</Type>
                               <Amount>0.5</Amount>
                           </Item>
                       </HpConditionTriggerList>
                     
                </BasicValues>
        </General>
</BlockBehavior>
  1. I started the server again. It started like normal. When I tried to connect, it gave the same kind of java error loop, but with the "[2016-08-16 02:56:17] org.schema.common.ConfigParserException: HpConditionTriggerList -> Item; trigger amount must be a positive value in <Amount>" error included. (This is listed above as one of the examples)
  2. I simplified the customBlockBehaviorConfig.xml file further to be merely:
<BlockBehavior>
        <General>
                <BasicValues>
                        <DefensiveEffectMaxPercentMassMult>10</DefensiveEffectMaxPercentMassMult>   <!-- multiplication of mass used as max percent for defensive effects: ratio = effectBlockCount / (mass*DefensiveEffectMaxPercentMassMult)-->
                </BasicValues>
        </General>
</BlockBehavior>
  1. This actually started.
  2. So I shut down the server normally. And decided to change the customBlockBehaviorConfig.xml file to make it a bit larger but cut out the part with the "StructureHpBlockMultiplier" settings.:
<BlockBehavior>
        <General>
                <BasicValues>
                        <DefensiveEffectMaxPercentMassMult>10</DefensiveEffectMaxPercentMassMult>   <!-- multiplication of mass used as max percent for defensive effects: ratio = effectBlockCount / (mass*DefensiveEffectMaxPercentMassMult)-->
                        <ShieldExtraCapacityMultPerUnit>1</ShieldExtraCapacityMultPerUnit>   <!-- totalUnitShieldRecharge = (unitSize*ShieldExtraRechargeMultPerUnit) -->
                        <ShieldExtraRechargeMultPerUnit>1</ShieldExtraRechargeMultPerUnit>   <!-- shieldCapacity = ((totalUnitShieldCapacity*ShieldCapacityPreMul)^ShieldCapacityPow)*ShieldCapacityTotalMul -->
                        <ShieldDoInitialWithoutFromCore>true</ShieldDoInitialWithoutFromCore> <!-- if true, the ship will have initial shields without any shield blocks. if false, the initial values are added when the first shield block is placed -->
                        <ShieldCapacityInitial>220</ShieldCapacityInitial> <!-- initial shield capacity on ships without shieldCapacity blocks -->
                        <ShieldRechargeInitial>0</ShieldRechargeInitial> <!-- initial shield recharge on ships without shieldRecharge blocks -->
                        <ShieldCapacityPow>0.9791797578</ShieldCapacityPow>
                        <ShieldCapacityPreMul>1.0</ShieldCapacityPreMul>
                        <ShieldCapacityTotalMul>110</ShieldCapacityTotalMul>   <!-- shieldCapacity = ((totalUnitShieldCapacity*ShieldCapacityPreMul)^ShieldCapacityPow)*ShieldCapacityTotalMul -->
                        <ShieldRechargePow>1.0</ShieldRechargePow>   <!-- shieldCapacity = ((totalUnitShieldCapacity*1.0)^0.9)*55 -->
                        <ShieldRechargePreMul>1.0</ShieldRechargePreMul>
                        <ShieldRechargeTotalMul>5.5</ShieldRechargeTotalMul>
                        <ShieldRechargeCycleTime>1.0</ShieldRechargeCycleTime> <!-- time in secs between recharge cycles. This value is relative, so changing it won't affect the time a ship needs to fully recharge (e.g. twice as many cycles -> half as many reacharge per cycle)-->
                        <ShieldRecoveryTimeAfterOutage>10</ShieldRecoveryTimeAfterOutage> <!-- time, the shield will not recharge after reaching 0 -->
                        <ShieldDirectRecoveryTime>60</ShieldDirectRecoveryTime> <!-- this time is set to the value gives after each hit sustained. In direct recovery, <ShieldRecoveryMultPerPercent> is applied. Otherwise it's running on full recharge -->
                        <ShieldRecoveryMultPerPercent>0.5</ShieldRecoveryMultPerPercent> <!-- MAX % at high health   -   in direct recovery, the shield recharge will be multiplied by (1-((shield/max)*thisValue));-->
                        <ShieldRecoveryMult>0.25</ShieldRecoveryMult> <!-- MAX % at low health   - in direct recovery, the shield recharge will be multiplied: recharge = recharge*thisValue;-->
                        <ShieldRechargePowerConsuption>10</ShieldRechargePowerConsuption> <!-- (when shield < 100%) per regen point -->
                        <ShieldFullPowerConsuption>1</ShieldFullPowerConsuption> <!-- (when shield == 100%) per regen point -->
                        <ShieldDockTransferLimit>0.25</ShieldDockTransferLimit> <!-- Up to which fill status a rail docked entity up in the chain (towards root) will take the hit (e.g. 0.25 means that a mothership (and docks inbetween) will take the shots of a turret or other rail dock as long as they have more than 25% of their max shields left -->
                        <PowerDivFactor>0.333</PowerDivFactor>
                        <PowerCeiling>2000000.0</PowerCeiling>
                        <PowerGrowth>1.000348</PowerGrowth>
                        <PowerLinearGrowth>25.0</PowerLinearGrowth>
                        <PowerRecoveryTime>1000</PowerRecoveryTime>
                        <PowerBaseCapacity>50000</PowerBaseCapacity>
                        <PowerTankCapacityLinear>1000</PowerTankCapacityLinear> <!-- multiplication per unit -->
                        <PowerTankCapacityPow>1.05</PowerTankCapacityPow> <!-- unitSize^x per unit -->
                        <TakeOffEffectPowerConsumptionMult>1</TakeOffEffectPowerConsumptionMult> <!-- multiplied by force -->
                        <EvadeEffectPowerConsumptionMult>1</EvadeEffectPowerConsumptionMult> <!-- multiplied by force -->
                        <PersonalSalvageBeamBonus>1.25</PersonalSalvageBeamBonus>   <!-- bonus mult of raw resources when salvaging with handheld salvage beam (everything between whole numbers is chance (e.g. 1.25 give 25% chance of an extra raw yield) -->
                       
                        <RailMassEnhancerFreeMass>50.0</RailMassEnhancerFreeMass>   <!-- mass that is free to place without the need of a rail mass enhancer -->
                        <RailMassEnhancerMassPerEnhancer>5.0</RailMassEnhancerMassPerEnhancer>   <!-- how much mass is free to place for each rail mass enhancer in the structure -->
                        <RailMassEnhancerPowerConsumedPerEnhancer>50.0</RailMassEnhancerPowerConsumedPerEnhancer>   <!-- How much power per second is consumed my rail enhancer blocks -->
                        <RailMassEnhancerPercentCostPerMassAboveEnhancerProvided>0.05</RailMassEnhancerPercentCostPerMassAboveEnhancerProvided>   <!-- how much % of mass speed (between 0 and 1) is subtracted for every one mass placed on a dock that is above the current mass limit (free blocks + enhancers) (e.g. at 0.1, for every block placed the speed is one percent slower)-->
                        
                        <PlanetPowerBaseCapacity>500</PlanetPowerBaseCapacity>
                        <AsteroidPowerBaseCapacity>500</AsteroidPowerBaseCapacity>

						<StructureHpBlockMultiplier>1.0</StructureHpBlockMultiplier> <!-- how much of the hp value is added to the systemHP -->
                        <HpDeductionLogOffset>-5</HpDeductionLogOffset> 
                        <HpDeductionLogFactor>0.7</HpDeductionLogFactor> <!-- deducted hit points on damage: blockHP + HpDeductionLogFactor*(max(0, log10(maxHP)+HpDeductionLogOffset)) * blockHP -->
                     
                        <ShipRebootTimeInSecPerMissingHpPercent>40.0</ShipRebootTimeInSecPerMissingHpPercent> <!-- on 0% hp, the full value in seconds is needed to reboot -->
                        <ShipRebootTimeMultiplierPerMass>0.0002</ShipRebootTimeMultiplierPerMass> <!-- secondsToReboot * (mass * ShipRebootTimeMultiplyerPerMass) -->
						<ShipRebootTimeMinSec>30.0</ShipRebootTimeMinSec> <!-- Minimum time in secs a reboot will take -->
						

 						<ArmorHpAbsorbtion>0.5</ArmorHpAbsorbtion> <!-- absorbedDamageToArmorHP = ArmorHpAbsorbtion; How much damage of a shot can be absorbed to armorHP; this is a static value; set it to 0 if you want to use a dynamic variance instead with ArmorHpDamageThreshold-->
 						<ArmorHpAbsorbedDamageMultiplier>1.0</ArmorHpAbsorbedDamageMultiplier> <!-- How much absorbed damaged is deducted from armorHP -->
 						<ArmorHpBlockMultiplier>1.0</ArmorHpBlockMultiplier> <!-- how much of the armor value is added to the armorHP -->
 						
 						<ArmorHpDamageThreshold>1.0</ArmorHpDamageThreshold> <!-- absorbedDamageToArmorHP = (ArmorHpDamageThreshold * [armorhp of the block]) * [current ArmorHp Left On Ship]; Note: this is not used as long as ArmorHpAbsorbtion != 0; This means, a ship wont take damage other than armorHP damage as long as a single shot isn't above the trheshold; -->

						<AITurretMinOrientationSpeed>0.5</AITurretMinOrientationSpeed> <!-- Minimum turret orientation speed by mass used by AI (still depends on enhancer) -->
 						<AITurretMaxOrientationSpeed>3.5</AITurretMaxOrientationSpeed> <!-- Maximum turret orientation speed by mass used by AI (still depends on enhancer) -->
 						<AITurretOrientationSpeedDivByMass>50.0</AITurretOrientationSpeedDivByMass> <!-- speed = AITurretOrientationSpeedDivByMass / mass -->


 						<ExplosionShieldDamageBonus>0.0</ExplosionShieldDamageBonus> <!-- all explosions (missile/warhead/pulse) do [damage + damage * bonus] against shields-->
 						<ExplosionHullDamageBonus>0.0</ExplosionHullDamageBonus> <!-- all explosions (missile/warhead/pulse) do [damage + damage * bonus] against blocks (will also hurt armor more)-->

 						<VolumeMassMultiplier>0.01</VolumeMassMultiplier> <!-- how much of the volume of an item in an inventory/storage/cargo adds to the mass of a structure -->
                </BasicValues>
        </General>
</BlockBehavior>
  1. This worked! Ok, so it seemed we were getting somewhere.
  2. I then loaded a copy of the ENTIRE unchanged BlockBehaviorConfig.xml file from the "/data/config" folder, then changed the figures we need changed for our server, which includes some changes to settings for jump drives, just drive inhibitors, cargo, etc. I also cut out the settings for "StructureHpBlockMultiplier," since that seemed to be giving us trouble.
  3. This worked! The server was running! So, I decided to check to ensure the settings were actually applied AND THEY WERE!

So, this seems to allow the server to boot now, however, I cannot explain the other two java errors which were extremely similar.
A. Where the "java.lang.NullPointerException" error was paired with the "java.io.FileNotFoundException:" error for the revertBlockBehaviorConfig.xml.
B. Where the "ava.lang.IllegalArgumentException: No enum constant obfuscated.YF.STATUS_ARMOR_HP_ABSORBTION_BONUS" error was paired with the revertBlockBehaviorConfig.xml error.

Details

Task Type
Bug
Testing Results
Affected Gamemode(s)
Serverside
Reproducible
Yes
Last tested (version)
20160814_215551 v0.199.152
Category
Engine
First occurrence (version)
20160812_205821 v0.199.152
Hardware/Software/System
OS-Specific
No
Hardware-Specific
No
Video Card Vendor
uncertain
Steps to reproduce
  1. Install a server using version using version 20160814_215551 v0.199.152.
  2. Copy the "blockBehaviorConfig.xml" from the "StarMade/data/config" folder to the "StarMade/customBlockBehaviorConfig" folder.
  3. Rename the "blockBehaviorConfig.xml" file to "customBlockBehaviorConfig.xml" to use as a base file.
  4. Change or don't change any settings you'd like.
  5. Start the dedicated server.
  6. Have a player attempt to join the server. Keep in mind that killing the screen process does not kill the server. The java process will need to be killed directly.
Serverconfig (server.cfg)
WORLD = world1 //set world to use (set 'old' for using the old world). if no world exists a new one will be set automatically
PROTECT_STARTING_SECTOR = true //Protects the starting sector
ENABLE_SIMULATION = true //Universe AI simulation
CONCURRENT_SIMULATION = 256 //How many simulation groups may be in the universe simultaniously (performance)
ENEMY_SPAWNING = true //Enables enemy spawing
SECTOR_SIZE = 10000 //Sets the size of sectors in the universe **WARNING** scaling the size of an existing universe down may cause issues
BLUEPRINT_DEFAULT_PRIVATE = true //If true, set blueprints private as default (else they are public)
FLOATING_ITEM_LIFETIME_SECS = 600 //How much seconds items floating in space should be alive
SIMULATION_SPAWN_DELAY = 840 //How much seconds between simulation spawn ticks
SIMULATION_TRADING_FILLS_SHOPS = true //Trading guild will deliver stock to shops
SECTOR_INACTIVE_TIMEOUT = 5 //Time in secs after which sectors go inactive (-1 = off)
SECTOR_INACTIVE_CLEANUP_TIMEOUT = 5 //Time in secs after which inactive sectors are completely removed from memory (-1 = off)
USE_STARMADE_AUTHENTICATION = true //allow star-made.org authentication
REQUIRE_STARMADE_AUTHENTICATION = true //require star-made.org authentication (USE_STARMADE_AUTHENTICATION must be true)
PROTECTED_NAMES_BY_ACCOUNT = 5 //How many player names a player may protect with his account (if exceeded, the player name, that was logged in the longest time ago gets unprotected)
DEFAULT_BLUEPRINT_ENEMY_USE = false //Default option for blueprints not in catalog yet
DEFAULT_BLUEPRINT_FACTION_BUY = false //Default option for blueprints not in catalog yet
DEFAULT_BLUEPRINT_OTHERS_BUY = false //Default option for blueprints not in catalog yet
DEFAULT_BLUEPRINT_HOME_BASE_BUY = true //Default option for blueprints not in catalog yet
LOCK_FACTION_SHIPS = true //If true, ships of other factions cant be edited, activated, or entered
DEBUG_FSM_STATE = false //transfer debug FSM state. Turning this on may slow down network
PHYSICS_SHAPE_CASTING_TUNNELING_PREVENTION = false //Makes a convex cast for hight speed object to prevent clipping. High Cost. (Bugged right now, so dont turn it on)
CATALOG_SLOTS_PER_PLAYER = 50 //How many slots per player for saved ships (-1 for unlimited)
UNIVERSE_DAY_IN_MS = -1 //how long is a 'day' (stellar system rotation) in milliseconds (-1 to switch off system rotation)
FORCE_DISK_WRITE_COMPLETION = true //forces writing operations of raw data to disk directly after operation. For some OS this prevents raw data corruption
ASTEROIDS_ENABLE_DYNAMIC_PHYSICS = true //enables asteroids to be able to move in space
ENABLE_BREAK_OFF = false //debug (don't activate unless you know what you're doing)
COLLISION_DAMAGE = false //colliding into another object does damage
COLLISION_DAMAGE_THRESHOLD = 2.0 //Threshold of Impulse that does damage (the lower, the less force is needed for damage)
SKIN_ALLOW_UPLOAD = true //if off, skin uploading to server is deactivated
CATALOG_NAME_COLLISION_HANDLING = false //if off, saving with an existing entry is denied, if on the name is automatically changed by adding numbers on the end
SECTOR_AUTOSAVE_SEC = 920 //Time interval in secs the server will autosave (-1 for never)
PHYSICS_SLOWDOWN_THRESHOLD = 40 //Milliseconds a collision test may take before anti-slowdown mode is activated
THRUST_SPEED_LIMIT = 100 //How fast ships, etc. may go in m/s . Too high values may induce physics tunneling effects
MAX_CLIENTS = 42 //Max number of clients allowed on this server
SUPER_ADMIN_PASSWORD_USE = false //Enable super admin for this server
SUPER_ADMIN_PASSWORD = mypassword //Super admin password for this server
SERVER_LISTEN_IP = all //Enter specific ip for the server to listen to. use "all" to listen on every ip
SOCKET_BUFFER_SIZE = 65536 //buffer size of incoming and outgoing data per socket
PHYSICS_LINEAR_DAMPING = 0.05 //how much object slow down naturally (must be between 0 and 1): 0 is no slowdown
PHYSICS_ROTATIONAL_DAMPING = 0.05 //how much object slow down naturally (must be between 0 and 1): 0 is no slowdown
AI_DESTRUCTION_LOOT_COUNT_MULTIPLIER = 0.9 //multiply amount of items in a loot stack. use values smaller 1 for less and 0 for none
AI_DESTRUCTION_LOOT_STACK_MULTIPLIER = 0.9 //multiply amount of items spawned after AI destruction. use values smaller 1 for less and 0 for none
CHEST_LOOT_COUNT_MULTIPLIER = 0.9 //multiply amount of items in a loot stack. use values smaller 1 for less and 0 for none
CHEST_LOOT_STACK_MULTIPLIER = 0.9 //multiply amount of items spawned in chests of generated chests. use values smaller 1 for less and 0 for none
USE_WHITELIST = false //only names/ips from whitelist.txt are allowed
FILTER_CONNECTION_MESSAGES = false //don't display join/disconnect messages
USE_UDP = false //Use 'User Datagram Protocol' (UDP) instead of 'Transmission Control Protocol' (TCP) for connections
AUTO_KICK_MODIFIED_BLUEPRINT_USE = true //Kick players that spawn modified blueprints
AUTO_BAN_ID_MODIFIED_BLUEPRINT_USE = true //Ban player by name that spawn modified blueprints
AUTO_BAN_IP_MODIFIED_BLUEPRINT_USE = true //Ban player by IP that spawn modified blueprints
AUTO_BAN_TIME_IN_MINUTES = 60 //Time to ban in minutes (-1 for permanently)
REMOVE_MODIFIED_BLUEPRINTS = true //Auto-removes a modified blueprint
DEBUG_SEGMENT_WRITING = false //Debugs correctness of writing of segments (costs server performance)
TCP_NODELAY = true //Naggles algorithm (WARNING: only change when you know what you're doing)
PING_FLUSH = false //flushes ping/pong immediately (WARNING: only change when you know what you're doing)
RECIPE_BLOCK_COST = 5000 //How much blocks have to be invested to create a recipe (min 0)
SHOP_SPAWNING_PROBABILITY = 0.08 //(must be between 0 and 1): 0 is no shops spawned in asteroid sectors, 1 is shop spawned in everyone (default: 8% -> 0.08)
RECIPE_REFUND_MULT = 0.5 //how much blocks are refunded from selling a recipe (must be between 0 and 1): 0 no refund, 1 full refund
RECIPE_LEVEL_AMOUNT = 4000 //On how much created blocks will a recipe level up (base value) (min 0)
DEFAULT_SPAWN_SECTOR_X = 4 //DEFAULT Spawn Sector X Coordinate
DEFAULT_SPAWN_SECTOR_Y = 4 //DEFAULT Spawn Sector Y Coordinate
DEFAULT_SPAWN_SECTOR_Z = 4 //DEFAULT Spawn Sector Z Coordinate
MODIFIED_BLUEPRINT_TOLERANCE = 0.2 //Tolerance of modified blueprint trigger (default = 10%)
TURNING_DIMENSION_SCALE = 1.4 //Scaling of tuning speed VS ship dimension (default = 1.1)
DEFAULT_SPAWN_POINT_X_1 = 8.0 //First Rotating Spawn: Local Pos X Coordinate
DEFAULT_SPAWN_POINT_Y_1 = -6.5 //First Rotating Spawn: Local Pos Y Coordinate
DEFAULT_SPAWN_POINT_Z_1 = 0.0 //First Rotating Spawn: Local Pos Z Coordinate
DEFAULT_SPAWN_POINT_X_2 = 15.0 //Second Rotating Spawn: Local Pos X Coordinate
DEFAULT_SPAWN_POINT_Y_2 = -6.5 //Second Rotating Spawn: Local Pos Y Coordinate
DEFAULT_SPAWN_POINT_Z_2 = 8.0 //Second Rotating Spawn: Local Pos Z Coordinate
DEFAULT_SPAWN_POINT_X_3 = 8.0 //Third Rotating Spawn: Local Pos X Coordinate
DEFAULT_SPAWN_POINT_Y_3 = -6.5 //Third Rotating Spawn: Local Pos Y Coordinate
DEFAULT_SPAWN_POINT_Z_3 = 15.0 //Third Rotating Spawn: Local Pos Z Coordinate
DEFAULT_SPAWN_POINT_X_4 = 0.0 //Forth Rotating Spawn: Local Pos X Coordinate
DEFAULT_SPAWN_POINT_Y_4 = -6.5 //Forth Rotating Spawn: Local Pos Y Coordinate
DEFAULT_SPAWN_POINT_Z_4 = 8.0 //Forth Rotating Spawn: Local Pos Z Coordinate
PLAYER_DEATH_CREDIT_PUNISHMENT = 0.1 //players credits lost of total on death (must be between 0 and 1): 1 = lose all, 0 = keep all
PLAYER_DEATH_CREDIT_DROP = true //drop credits lost on death into space instead
PLAYER_DEATH_BLOCK_PUNISHMENT = false //player will drop all his blocks into space on death
PLAYER_DEATH_PUNISHMENT_TIME = 300 //Time interval in seconds after death of a player in which the player is not punished
PLAYER_DEATH_INVULNERABILITY_TIME = 5 //Time the player is invulnerable after death in sec
PLAYER_HISTORY_BACKLOG = 30 //How many login history objects (with name, IP, account-name, and time) should be saved by player state
PROJECTILES_ADDITIVE_VELOCITY = true //initial projectile speed depend on relative linear velocity of object fired from
PROJECTILES_VELOCITY_MULTIPLIER = 1.5 //multiplicator for projectile velocity
IGNORE_DOCKING_AREA = false //ignores docking area size
ALLOW_UPLOAD_FROM_LOCAL_BLUEPRINTS = true //enables clients being able to upload their pre-build-blueprints to the server
SHOP_NPC_STARTING_CREDITS = 10000000 //how much credits do shops start with
SHOP_NPC_RECHARGE_CREDITS = 100000 //how much credits do shops gain about every 10 min
AI_WEAPON_AIMING_ACCURACY = 750 //how accurate the AI aims (the higher the value the more accurate vs distance. 10 = about 99% accuracy at 10m)
BROADCAST_SHIELD_PERCENTAGE = 5 //percent of shields changed for the server to broadcast a shield synch
BROADCAST_POWER_PERCENTAGE = 50 //percent of power changed for the server to broadcast a power synch (not that critical)
ADMINS_CIRCUMVENT_STRUCTURE_CONTROL = true //admins can enter ships of any faction
STAR_DAMAGE = true //suns dealing damage to entities
SQL_NIO_FILE_SIZE = 512 //megabyte limit of .data file when to use NIO (faster) (must be power of 2)
PLANET_SIZE_MEAN = 60.0 //Planet size mean (normal gaussian distribution) (min 50)
PLANET_SIZE_DEVIATION = 20.0 //Planet size standard deviation. Note: normal gaussian distribution graph scaled horizontally by 1/3 (min 0)
ASTEROID_RADIUS_MAX = 64 //Asteroid max radius in blocks (from -x to +x)
PLAYER_MAX_BUILD_AREA = 50 //max area a player may add/remove in adv. build mode
NT_SPAM_PROTECT_TIME_MS = 30000 //period of spam protection
ASTEROID_SECTOR_REPLENISH_TIME_SEC = -1 //seconds until a sector that is mined down to 0 asteroids is replenished (-1 = never)
NT_SPAM_PROTECT_MAX_ATTEMPTS = 30 //max attempts before refusing connections in spam protect period (default is 1/sec for 30 sec)
NT_SPAM_PROTECT_EXCEPTIONS = 127.0.0.1 //ips excepted from spam control (separate multiple with comma) (default is localhost)
NT_SPAM_PROTECT_ACTIVE = true //enables connection spawn protection (flooding servers with login attempts)
USE_PERSONAL_SECTORS = false //will spawn a player in a locked sector sandbox (warning, don't use unless you know what you do)
BATTLE_MODE = false //turn on battlemode (warning, don't use unless you know what you're doing)
BATTLE_MODE_CONFIG = battleSector=0,0,0,Physics.smsec;battleSector=15,15,15,Physics.smsec;countdownRound=300;countdownStart=30;maxMass=-1;maxDim=300;maxMassPerFaction=-1; //General config for battlemode
BATTLE_MODE_FACTIONS = [TeamA, fighters, 500,500,500, 0.5,0.1,0.9];[TeamB, fighters, -500,-500,-500, 0.5,0.9,0.2];[TeamFFA,ffa, 0,0,-500, 0.2,0.9,0.9];[Spectators,spectators, 0,500,0,0.8,0.4,0.8] //Faction config for battlemode
LEADERBOARD_BACKLOG = 24 //time in hours to keep leaderboard backlog (the more time, the more data has to be sent to client)
ANNOUNCE_SERVER_TO_SERVERLIST = false //announces the server to the starmade server list so clients can find it. Hostname must be provided for HOST_NAME_TO_ANNOUNCE_TO_SERVER_LIST!
HOST_NAME_TO_ANNOUNCE_TO_SERVER_LIST = lvdserver.b33r.us //this must be a valid hostname (either ip or host, e.g. play.star-made.org)
SERVER_LIST_NAME = <###> Light vs Dark <###> //max length 64 characters
SERVER_LIST_DESCRIPTION = Light vs Dark is BACK! Come visit us on our forums!  lvdserver.forumotion.com //max length 128 characters
MISSILE_DEFENSE_FRIENDLY_FIRE = false //can shoot down own or missiles from own faction
USE_DYNAMIC_RECIPE_PRICES = true //use recipe based prices (the price is the price of the parts it is made out of in crafting)
MAKE_HOMBASE_ATTACKABLE_ON_FP_DEFICIT = true //Home bases become attackable if a faction's Faction Points are in the minus and the faction doesn't own any territory
PLANET_SPECIAL_REGION_PROBABILITY = 240 //one out of thisValue chance of a special region spawning per planet plate (cities, pyramids, etc) (changing this value migth change some plates, but won't change any plates that are already modified by a player)
NT_BLOCKUPDATE_QUEUE_SIZE = 512 //How many blocks are sent per update. Huge placements will shot faster, but it will consume more bandwidth and is subject to spamming players
CHUNK_REQUEST_THREAD_POOL_SIZE_TOTAL = 64 //Thead pool size for chunk requests (from disk and generated)
CHUNK_REQUEST_THREAD_POOL_SIZE_CPU = 10 //Available threads of total for CPU generation. WARNING: too high can cause cpu spikes. About the amount of available cores minus one is best
BUY_BLUEPRINTS_WITH_CREDITS = false //buy blueprints directly with credits
SHOP_USE_STATIC_SELL_BUY_PRICES = true //shop buy and sell price change depending on stock (shop prices will always stay the same if true)
SHOP_SELL_BUY_PRICES_UPPER_LIMIT = 1.0 //maximum of base price a shop will want depending on its stock (e.g. max 120 credits if the normal cost is 100)
SHOP_SELL_BUY_PRICES_LOWER_LIMIT = 1.0 //minimum of base price a shop will want depending on its stock (e.g. max 80 credits if the normal cost is 100)
MINING_BONUS = 2 //general multiplier on all mining
MAX_LOGIC_SIGNAL_QUEUE_PER_OBJECT = 250000 //max logic trace queue allowed
MAX_COORDINATE_BOOKMARKS = 20 //coordinate bookmarks per player allowed
ALLOWED_STATIONS_PER_SECTOR = 1 //How many stations are allowed per sector
STATION_CREDIT_COST = 50000 //how much does a station or station blueprint cost
SKIN_SERVER_UPLOAD_BLOCK_SIZE = 512 //how fast should skins be transferred from server to clients (too high might cause lag) [default 256 ~ 16kb/s]
ALLOW_OLD_DOCKING_BEAM = false //enables old docking beam
WEIGHTED_CENTER_OF_MASS = true //if on, the center of mass for each structured will be calculated based on block mass. On 'false', the center of mass is always the core position
SECURE_UPLINK_ENABLED = false //dedicated servers can be registered on the StarMade registry
SECURE_UPLINK_TOKEN =  //uplink token, provided when registering a dedicated server
USE_STRUCTURE_HP = true //ships and other structures use the hitpoint system. if off, a ship will overheat when the core gets taken out (old)
SHOP_REBOOT_COST_PER_SECOND = 100.0 //Cost to reboot a ship at a shop (per second it would take to reboot in space)
SHOP_ARMOR_REPAIR_COST_PER_HITPOINT = 1.0 //Cost to repair a ship's armor at a shop
MAX_SIMULTANEOUS_EXPLOSIONS = 60 //the more the faster explosions at the same time are executed (costs in total about 20MB RAM each and of course CPU because it's all threaded) (10 is default for a medium powered singleplayer)
REMOVE_ENTITIES_WITH_INCONSISTENT_BLOCKS = false //This will remove ships that have blocks that are normally disallowed (e.g. space station blocks on ships)
OVERRIDE_INVALID_BLUEPRINT_TYPE = true //If a loaded blueprint is invalid, it's type will be overridden
FACTION_FOUNDER_KICKABLE_AFTER_DAYS_INACTIVITY = 30 //Days of inactivity after which a founder may kick another founder
DEBUG_BEAM_POWER_CONSUMPTION = false //server will send notifications on power consumed (not counting power given from supply) on server (costs performance, so only use for debugging)
DEBUG_BEAM_TICKS_DONE = false //server will send notifications on ticks done on server (costs performance, so only use for debugging)
DEBUG_BEAM_POWER_PER_TICK = false //server will send notifications on beam power per tick on server (costs performance, so only use for debugging)
DEBUG_MISSILE_POWER_CONSUMPTION = false //server will send notifications on missiles on server (costs performance, so only use for debugging)
BLUEPRINT_SPAWNABLE_SHIPS = true //enables or disables blueprint spawning from item
BLUEPRINT_SPAWNABLE_STATIONS = true //enables or disables blueprint spawning from item
USE_OLD_GENERATED_PIRATE_STATIONS = false //enables spawning of old style pirate stations
CARGO_BLEED_AT_OVER_CAPACITY = false //cargo is ejected every minute if storage is at over capacity
ALLOW_PERSONAL_INVENTORY_OVER_CAPACITY = true //Personal Inventory can go over capacity
ONLY_ALLOW_FACTION_SHIPS_ADDED_TO_FLEET = true //only allows faction ships to be added to fleet
MAX_CHAIN_DOCKING = 5 //maximal deepness of docking chains (may cause glitches depending on OS (path and filename length) at high numbers)
SHOP_RAILS_ON_ADV = true //Advanced shops will have 4 rails dockers that can be used like a neutral homebase (anything docked is safe)
SHOP_RAILS_ON_NORMAL = false //Normal shops will have 4 rails dockers that can be used like a neutral homebase (anything docked is safe)
ALLOW_FLEET_FORMATION = true //Allows fleet formation
BACKUP_WORLD_ON_MIGRATION = true //Back up world when migrating to a new file format
BACKUP_BLUEPRINTS_ON_MIGRATION = true //Back up blueprints when migrating to a new file format
Java Version (32bit)

Error: This Java instance does not support a 32-bit JVM.
Please install the desired version.

Java Version (64bit)

java version "1.8.0_92"
Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode)

Event Timeline

Benevolent27 updated the task description. (Show Details)Aug 17 2016, 4:35 PM
Benevolent27 updated the task description. (Show Details)
Benevolent27 updated the task description. (Show Details)Aug 17 2016, 4:38 PM
Benevolent27 updated the task description. (Show Details)
Benevolent27 renamed this task from Server Cannot Be Upgraded - customBlockBehaviorConfig.xml is causing infinite loop to Server Trouble While Upgrading - customBlockBehaviorConfig.xml is causing infinite loop.
AndyP claimed this task.Mar 28 2017, 4:07 PM
AndyP edited Serverconfig (server.cfg). (Show Details)Mar 28 2017, 4:12 PM
AndyP edited Clientconfig (settings.cfg). (Show Details)
AndyP updated the task description. (Show Details)
AndyP changed Category from none/unspecified to Engine.Mar 28 2017, 6:57 PM
AndyP shifted this object from the S1 Public space to the S3 Starmade space.
AndyP changed the visibility from "Custom Policy" to "Public (No Login Required)".
AndyP changed the edit policy from "Task Author" to "Starmade (Project)".
AndyP triaged this task as Normal priority.

-Validated-

Open for testing.