Giter Site home page Giter Site logo

Comments (3)

Shynixn avatar Shynixn commented on May 30, 2024

As far as I have understand the minestom approach, you always "build a server yourself" by initializing a MinecraftServer instance. This can be seen on this wiki page https://wiki.minestom.net/setup/your-first-server.

Here you call MinecraftServer minecraftServer = MinecraftServer.init();. This means you do actually have a minecraft server instance.
MCCoroutine simply needs a lifecycle instance (the coroutine session is created and disposed along with it) where MinecraftServer makes the most sense in this context.

You are free to move the MinecraftServer instance to a static (or companion) field because it does not make any difference in this case.

from mccoroutine.

bananasmoothii avatar bananasmoothii commented on May 30, 2024

Yeah... There is a flaw in Minestom's design so there is no real way around it. You have to make a MinecraftServer instance indeed, but you use it just to call .init() and .start()

from mccoroutine.

Shynixn avatar Shynixn commented on May 30, 2024

A coroutine needs to live in a scope. For Kotlin, these are called Coroutine Scopes. See https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-coroutine-scope/

For Minestom, I have implemented 2 scope types. ExtensionScope and MinecraftServerScope. Kotlin Coroutines offers the GlobalScope per default, which allows to do something like GlobalScope.launch. To indicate that the coroutine lives in the scope of the entire MinecraftServer (start/stop) it makes sense to bind the scope to it. Therefore, I have added the launch function to the MinecraftServer instance.

I think technically, it makes sense to indicate scopes on API level.

~

You are free to add your own launch extension function or move the MinecraftServer instance to a companion object of your main class. I do not care.

from mccoroutine.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.