AtlasCore

    AtlasCore 1.0.1

    Game version
    0.205.4
    AtlasCore

    Shared infrastructure for the Atlas mod system. Every other Atlas module depends on AtlasCore.
    Responsibilities

    • Sub-mod registry — modules register themselves and receive lifecycle callbacks (onAtlasCoreReady, registerTopBarButtons, etc.)
    • Data type registry — runtime registration of serializable data types without modifying core enums
    • Player action registry — sub-mods register server-side action handlers and receive integer IDs to use with PlayerActionCommandPacket
    • Networking — SendDataPacket, SyncRequestPacket, PlayerActionCommandPacket
    • Data managers — base DataManager<T> for server/client data synchronisation
    • Element system — Item and ElementInterface base classes for registering custom game elements
    • Config — ConfigManager (tip interval, debug mode, MOTD, etc.)
    • GUI primitives — ECCatalogScrollableListNew, PlayerSearchableDropdownInput, ItemUtils, EntityUtils
    • Control bindings — ControlBindingData for key-bind registration
    Key APIs

    Registering a sub-mod

    Implement IAtlasSubMod in your main mod class and call SubModRegistry.register(this) from onEnable():
    Code:
    public class MyMod extends StarMod implements IAtlasSubMod {
        @Override public void onEnable() { SubModRegistry.register(this); }
        @Override public String getModId() { return "my_mod"; }
        @Override public StarMod getMod() { return this; }
    
        @Override
        public void onAtlasCoreReady() {
            // safe to register data types, action handlers, etc.
        }
    }
    Registering a server-side action

    Code:
    // In onAtlasCoreReady():
    public static int MY_ACTION = PlayerActionRegistry.register((args, sender) -> {
        // sender is the authenticated PlayerState on the server, null on the client.
        // Always use sender.getName() for identity checks — never trust args for player name.
        if(sender == null) return; // server-only action
        String playerName = sender.getName();
        // handle action...
    });
    
    // From any client code (no need to include player name — server derives it from sender):
    new PlayerActionCommandPacket(MyMod.MY_ACTION, "extra", "args").sendToServer();
    Registering a data type

    Code:
    DataTypeRegistry.register(new DataTypeRegistry.Entry() {
        @Override public String getName() { return "MY_DATA"; }
        @Override public SerializableData deserializeNetwork(PacketReadBuffer buf) throws IOException {
            return new MyData(buf);
        }
        @Override public SerializableData deserializeJSON(JSONObject obj) { return new MyData(obj); }
        @Override public DataManager<?> getManager(boolean server) { return MyDataManager.getInstance(server); }
    });
    Checking if another module is loaded

    Code:
    if (SubModRegistry.isLoaded("atlas_banking")) {
        // optional integration
    }
    Tests

    Code:
    /run_tests atlas.core.tests.*
    Covers PlayerActionRegistry (registration, invocation) and DataTypeRegistry (register/retrieve/all).
    Build

    Code:
    gradle :core:jar
    Output: {starmade_root}mods/AtlasCore-{version}.jar
    Author
    TheDerpGamerX
    Downloads
    2
    Views
    10
    First release
    Last update
    Rating
    0.00 star(s) 0 ratings

    More resources from TheDerpGamerX

    • AtlasExchange
      AtlasExchange
      Player-driven blueprint and item marketplace for the Atlas mod suite.
    • LuaMade
      LuaMade
      Adds Lua scriptable computers to StarMade
    • AtlasGuide
      AtlasGuide
      In-game markdown guide viewer for the Atlas mod suite.
    • AtlasBuildSectors
      AtlasBuildSectors
      Protected build zones for the Atlas mod suite.
    • AtlasBanking
      AtlasBanking
      Player banking system for the Atlas mod suite.

    Latest updates

    1. Update 1.0.1

      Added SMD mod id.