Example service module

Example service module

All of our official service modules can be found on our Github repository. This is a great resource to learn how the GameDash SDK works in practice as it supports many types of different games.

Example resource


    namespace GameDash\Sdk\Module\Implementation\Service\Minecraft\Resources\Process;

    use \Electrum\Userland\Sdk\Module\Gateway;
    use \GameDash\Sdk\Module\Template;
    use \GameDash\Sdk\FFI\Instance;
    use \GameDash\Sdk\FFI\Infrastructure\Node\Process\ChildProcess\ChildProcessNotFoundException;
    use \GameDash\Sdk\FFI\Infrastructure\Node\Process\ChildProcess\ChildProcessNotRunningException;

    class Process extends Template\Service\Process\Process {

        /** @var Instance\Instance */
        private $Instance;

        public function __construct( Gateway\Gateway $Gateway ) {

            //instance id fetched from gateway
            $instanceId = $Gateway->getParameters()->get('')->getValue();

            //storing the instance object in a class parameter so we can access it from outside of the constructor
            $this->Instance = Instance\Instances::get( $instanceId );


        public function start(): void {

            //create a default child process object. Sets default values such as the instances' relay channel
            $ChildProcess = $this->Instance->getProcess()->getChildProcesses()->createDefault();

            //set the executable

            //set the args

                //get the jar file from the instances' settings. This setting was created during setup




        public function stop(): void {

            $Console = $this->Instance->getConsole();
            //send input to the console
            $Console->getIo()->getInput()->send('say Server will shut down in 5 seconds');


            try {

                $ChildProcess = $this->Process->getChildProcesses()->getCurrent();

                //stop the child process associated with this instance

            catch( ChildProcessNotRunningException $e ) {}


        public function restart(): void {}

        public function isOnline(): bool {

            //if the instance does not have a process id there's obviously no process to to check the status of
            if( !$this->Process->hasId() ) {

                return false;


            try {

                //check if the child process has exited yet
                return !$this->Node->getProcesses()->getChildProcesses()->get( $this->Process->getId() )->hasExited();

            catch( ChildProcessNotFoundException $e ) {
                //return false if the child process could not be found
                return false;



        //mark the process usage as measurable
        public function usageIsMeasurable(): bool {

            return true;




Connect with us



GameDash icon logo

© GameDash, made with ❤ and ☕

A Schokker IT B.V. Company · KVK: 73247375