Knowledge Base

Preserving for the future: Shell scripts, AoC, and more

Adding Frostburgh to Darkflame Lego Universe

I run a private Darkflame Lego Universe instance for myself. There are instructions out in the wild for adding the seasonal map Frostburgh. Here are my steps for the docker-compose based setup that I use, to get Frostburgh as a playable and visitable map.

  1. Download his asset.

    This is from url https://www.mediafire.com/file/a04fq7yah3fbpst/frosty_22Jan24.zip/file. I had to use a browser because that is some landing page and not a direct link.

    $ sha256sum frosty_22Jan24.zip
    39ed16b1b1616c21dcd0691a8bc6edb53260cfd195c84bd4dcf6466f094d5132  frosty_22Jan24.zip
    
  2. Convert original fdb to sqlite using https://fdb.lu-dev.net/

    $ ll
    total 56784
    -r--r--r-- 1 bgstack15 bgstack15 42140012 Nov 26 2011 cdclient.fdb
    -rw-rw-r-- 1 bgstack15 bgstack15 16003072 Nov  8 2024 cdclient.sqlite
    $ sha256sum *
    875d887f806de7c3e0a9c3974f11dc2d5375d3ecfa3b5d3be5314d3da34b3aa4  cdclient.fdb
    8f6ca2963ac3f33e23e5d38eed62f1795dc7d96aed084ea7fa97fb18ad574681  cdclient.sqlite
    
  3. run FROSTY.sql

    This is where I diverge minorly, because on GNU/Linux it's easy to redirect input and run the queries that add the relevant parts to the database. After extracting the zip file, run the queries.

    $ <FROSTY.sql sqlite3 cdclient.sqlite
    
  4. convert sql back to fdb

    Use the same webpage to get it back. My directory now looks like:

    $ sha256sum cdclient.fdb*
    bcb9cabb8274c1fcc0918115268e068b114b51fccbbc7d7cbed1b0810bfd854c  cdclient.fdb
    875d887f806de7c3e0a9c3974f11dc2d5375d3ecfa3b5d3be5314d3da34b3aa4  cdclient.fdb.orig
    
  5. Update client files

    1. Update locale.xml

      On the client, manually update the locale/locale.xml with the contents of the locale.xml.txt from the zip. Add these <phrase> objects where they obviously go, below the last </phrase>, above the <fonts>.

    2. Update res directory

      Copy the res/ directory from the expanded zip to the client directory. This will overwrite a few files.

      cp -pr res/ ~/.wine-lego/drive_c/lego-universe-client/res/
      
    3. Update cdclient.fdb

      Replace the cdclient.fdb with the converted one from step 4.

  6. Update server files

    1. Server locale.xml

      Take that client-updated locale.xml and place on server's client/locale/locale.xml file.

    2. Update res directory

      Copy the from-zip res/ directory to server's client directory.

      ~/darkflameserver/client$ 7za x frosty_22Jan24.zip res
      
    3. Update CDServer.sqlite

      I had updated CDServer.sqlite previously to fix a unicode eror for the Nexus dashboard admin mail function. So I also did this to the server's server/res/CDServer.sqlite:

      <FROSTY.sql sqlite3 ~/darkflameserver/server/res/CDServer.sqlite
      

      Thankfully the server uses sqlite so we do not need to convert this back to fdb.

    4. Prepare the launchpads

      I had to add to my docker-compose file container darkflameserver the volume entry:

         - ./server/vanity:/app/vanity/
      

      And then prepare it on my local filesystem from the default built-in ones.

      sudo docker cp da59f6c5e6c4:/app/vanity ~/darkflamserver/server/
      

      And then fix file permissions. And the format appears to be different now for objects in the vanity dev-tribute.xml. I found https://github.com/DarkflameUniverse/DarkflameServer/tree/v2.2.0/vanity which shows an NPC.xml which was indicated to be modified. Those contents now exist in dev-tribute.xml:

      <object name="Nimbus to Frostburgh" lot="12442">
           <locations>
               <location zone="1200" x="-362.17" y="290.31" z="209.85" rw="0.92" rx="0.0" ry="-0.38" rz="0.0" />
           </locations>
      </object>
      <object name="Frostburgh to Nimbus" lot="12460">
           <locations>
               <location zone="1260" x="-668.58" y="569.1109" z="629.85" rw="0.974" rx="0.0" ry="-0.22" rz="0.0" />
           </locations>
      </object>
      

Now, restart the server and client. After all that I was able to visit Frostburgh from the launchpad placed near the launchpad to Starbase 3001 in Nimbus Station!

Screenshot of the new launchpad to Frostburgh:

Perhaps it would be easy to update the xml file around the holiday season to disable the launchpad, I don't plan on doing that. I guess Frostburgh is here to stay!

Frostburgh is here!

Comments