Extending RSM. - Rarisma/Rarismas-Server-Manager GitHub Wiki

Newer Versions of RSM use XML to understand what it needs to do, if your server is not supported in default RSM.XML file then you can make RSM load your own file XML file.

You are recomended to have some understanding of RSM and XML if you wish to be successful however following this guide is straightforward.

  1. RSM will only aknowledge nodes inside of the <Repository> tag, so everything should be contained within that.

  2. Your file MUST contain an <Info> node that is layed out as such

        <Name>Your repo name</Name>
        <VersionString>Version</VersionString>
        <Description>Describe the repo</Description>
        <RSMVersionString>4.0</RSMVersionString>
        <RSMSpec>Set this to the version shown in RSMDefault.XML</RSMSpec>
    </Info>
    
    

Here name is just the name that will be shown in the Repo UI. Version String is version of your file, to begin with you should set this at somthing like 1.0 Description is just a brief description of what your file does, such as add support for game X. RSM Version string is minimum version of RSM needed, you should set this to the latest version. RSMSpec is so RSM knows the files capabilities, you should set this to the latest verion.

  1. Loaders RSM does not know how to run any servers at all, you must specify how you want RSM to run it. This includes files that are natively able to be executed, for example if you wanted to run exe files you would include this
    	<Name>WinExe</Name>
    	<Description>Loads .exe files</Description>
    	<URL>NULL</URL>
    	<EntryPoint>cmd.exe</EntryPoint>
    	<FileType>Exe</FileType>
    	<LaunchCommand>/k {FILE}</LaunchCommand>
    </Loader>
    
    

Here is a breakdown Name - Internal name of the loader to be used by servers Description - Description of the loader URL - URL where the file can be downloaded, setting this as NULL will cause RSM to always think its installed so it should not be used outside of this spesific case. EntryPoint - Relative path to the file. LaunchCommand - The command it should launch with

Loaders are unique and must always be executable files, and are always ran with the WinExe Loader inside RSMDefault.XML

  1. Making a ServerGroup ServerGroups are servers that all acheive roughly the same thing such as hosting a minecraft or FTP server. They are created like so
        <Name>Minecraft Java Edition</Name>
        <Description>Minecraft Java </Description>
        <PostInstallCommands>NULL</PostInstallCommands>
        <InstallType>JRELatest</InstallType>
    
    

Name being the name of the server Description being a short description of the server Post Install Commands are commands that are ran after the server is installed InstallType is the loader you are using.

Now we need to add servers to the server group, and we do this by opening a <Variant> tag which specifies that variant, a variant should a be a single type of server such as vanilla, modded servers should be their own variant or possibly multiple if there are multiple different mod loaders.

			<VariantName>Vanilla</VariantName>
			<VariantDescription>Vanilla servers for the Vanilla experience, Some servers use paper. </VariantDescription>
			<QuickCommands></QuickCommands>```

These are all straight forward besides the QuickCommands.
QuickCommands are Auto suggested commands, and should be separated by commas, you may leave them empty if you wish.


Inside of the variant tag you can add a version like so
           ```<Version>
                <VersionString>1.18.1</VersionString>
                <URL>https://papermc.io/api/v2/projects/paper/versions/1.18.1/builds/148/downloads/paper-1.18.1-148.jar</URL>
            </Version>
A version is a single version of that variant and it needs a name (VersionString) and a URL.
Once you have added versions to that variant you can close the tag.
You can then add more variants if you wish, once you are satisified you can then close the servergroup tag.


If you have trouble understanding it, check out RSMDefault.XML

⚠️ **GitHub.com Fallback** ⚠️