Minestom - a minecraft server creator library

Discussion in 'Programming' started by TheMode911, Apr 20, 2020.

  1. Wow, this is just great! It is so amazing to see that it is actively developed. I could not find anything related to TNT, is it already working?
     
  2. Loving the new design
     
  3. Thanks, I would not say that we are doing it full time, but we still take a lot of feedback to ensure that everything is at least working as expected.
    For TNT I believe that it is implemented in our vanilla implementation repo
    https://github.com/Minestom/Vanilla...ava/net/minestom/vanilla/blocks/TNTBlock.java
    https://github.com/Minestom/Vanilla...va/net/minestom/vanilla/entity/PrimedTNT.java

    Yeah same, came a bit out of nowhere since we didn't expect it. But someone just did it for us and we are absolutely not changing now
     
  4. Javadoc hosted: https://javadoc.minestom.com
    If you find anything not understandable enough please tell me (you don't necessarily have to write me a novel, a few words and I'll try to deal with it)
     
    • Agree Agree x 1
  5. Added new auto-verifiable command arguments (meaning that they behave the exact the same way as in vanilla commands)
    * ItemStack like in /give
    * NbtCompound (also like /give but without the material name, I don't know where it's used)
    * NbtTag for a single tag
    We miss some of them (like the position-based ones) so if you want to contribute: https://trello.com/c/wCDzgifd/130-commands-argument-types

    A way to disable chunk packets caching (save around 20% of the server memory, the rest is almost all took by the raw chunk arrays. Will probably need to be optimized later to a palette or similar)

    Again a bunch of comments a bit everywhere.

    We are looking for a replacement for the GitHub wiki, currently thinking about GitBook but we didn't get an answer to our open-source application. So if you know something similar...
     
  6. Someone messing with the Map API to play a video (by Eftelist)
    [​IMG]

    Here is a "biome map" which will probably come soon enough in our world generation (by Eoghanmc22)
    [​IMG]
    A better example of what's possible with our command API (by LeoDog896)
    [​IMG]

    As for the code update, it is mostly bug fix in the master branch (something related to dependencies will come), I'd say that I'm proud of the command API that has been improved to support all syntaxes without having to deal with all the nodes code (which make it (in my sense) much clearer than brigadier). Our code generation part has also been ported to Javapoet to simplify contributions
     
    • Like Like x 2
    • Informative Informative x 2
  7. As people seems to prefer media contents, we should all first pray for the GIF
    [​IMG]
    As for the text:
    * The commands API should now work with all syntaxes without having to think about how to order the command nodes
    * You can create a copy of an InstanceContainer using #copy
    * Setting a player instance to one identical to its current one (shared instances or recently copied instance container) would result in no chunk packet being sent. Meaning a smooth transition( the player will not even know that he had been teleported, will just see that all entities around him are gone/replaced)
    * The chunk view distance can be modified dynamically (supports player settings)
    * The fake player spawn callback no longer get executed in a different thread
    * Permissions can now take additional data to check their validities based on the context
    * Update to 1.16.4

    Not really new but we have a better-looking wiki https://wiki.minestom.com/ (no dark mode, cover your eyes). We are looking for people willing to help completing it, you can ask us which pages need to be done and ask any question as to what it should include
     
    #67 TheMode911, Nov 3, 2020
    Last edited: Nov 3, 2020
    • Like Like x 3
    • Agree Agree x 1
  8. Hey, just wanted to say that this is truly impressive!!! <3 Love it...
     
    • Friendly Friendly x 1
  9. [​IMG]
    Just to show that using Velocity with ViaBackwards works without any modification or issue.

    And Velocity modern forwarding is now also supported.
     
    • Like Like x 1
  10. Felt for some times that we were missing a big opportunity memory-wise since we stored blocks in a raw inflexible short array.
    It is now fixed and we use a proper palette object

    [​IMG]
    We had a previous heap of 150MB, now 20-25MB. So it is a pretty big increase which will also reduce the required bandwidth.

    Also some new command arguments such as block position, vec2 & vec3. Same as vanilla with the auto-completion and relative position thing.

    Ps: don't forget to join our discord server if this is not already the case https://discord.gg/pkFRvqB most of the updates come from feedbacks.

    edit: bungee IP forwarding is now supported
     
    #70 TheMode911, Nov 11, 2020
    Last edited: Nov 11, 2020
    • Like Like x 2
    • Friendly Friendly x 1
  11. Hi! I wish to try your work, but I don't know how. I try Spigot, doing instruction from here https://www.spigotmc.org/wiki/buildtools/ and it works (I can start server and connect to it).

    I cloned your git (https://github.com/Minestom/VanillaReimplementation) run gradlew.bat which do something, than tried javac LaunchServerStrtup.java from test/..... but I've got lot of errors, first is about missing package. What should I do or read to give it a try?
     
  12. I will use that, you make a greate job, thank you :)
     
  13. Right the javadoc command doesn't work on java 11+ because of something we use for the hosted version. The "build" method should work.
    But anyway this would not make a fatJar and therefore you wouldn't be able to run the server.

    I'll say just in case that the vanilla reimplementation is not meant to replace spigot either, it is a developer tool so simply compiling and running it will not do much,

    Would really love it! Be sure to come and ask us anything when you need something
     
    • Agree Agree x 1
  14. A new image (even if a bit less exciting)
    [​IMG]
    "Guys" is a java 1.12.2 client, and the player from the screenshot is obviously from bedrock. All that on a Minestom server (with Velocity and Geyser+ViaBackwards for all the protocol conversions). So we had nothing to do to support it (no credits for us) but this shows that everything behaves like a normal server and not necessarily something "sketchy".

    As for the updates:
    * Decrease world memory usage by half when using vanilla-like chunks
    * Added a network max packet size (to disconnect weird clients)
    * Added KQueue support on OSX
    * A new single thread provider if you want to program with a mostly single-threaded architecture
    * Can now have listeners for outgoing packets (from server to client)
    * Fixed some crash exploits

    So the focus here is mostly stability, we tried every "server crasher" hacks on LiquidBounce and none of them affected the server. I really want to say that we are "production-ready" but we didn't get the chance to test absolutely everything, but hey, the words are here.

    Be sure to contact us if you think that you could benefit by using Minestom
     
    • Like Like x 1
  15. Hi, really interested in this project.
    Just wanted to know if the current version is stable enough to run an actual server and if not do you have any release date planned yet?
    Thanks!
     
    • Friendly Friendly x 1
  16. I will keep my answer to "I do not know any current deal-breaking issue" so fixes will come as we get them reported. For now, I'd say that you should avoid using it as your main server (until we are sure that no issues remain) but should be completely fine as short-lived containers.

    If you are interested I'd suggest you mess a bit with it and see if everything is right for your usage or not
     
    • Like Like x 2
  17. * Provide a way to read and create new client packets (for modded clients)
    * Entities can now have permissions
    * Fix infinite loading screen when the player is not teleported during spawn event (defaulted to respawn point)
    * Divided the minimum heap size by around 2/3
    * Chunk generation can go to about x2 faster

    As for the heap, it is mostly flexing since having a value this low is useless. But still, I am able to run AND join the server with about 100 chunks, all that with a maximum heap of 32MB, with 48MB I have been able to generate 1310 chunks before running out of memory.
    For comparison, vanilla doesn't boot at 192MB and spigot doesn't boot at 256MB. Didn't even try to connect on those servers but my guess is that it would be even worse.
     
    • Like Like x 4
  18. The new media content of today


    Extensions v2 have been merged!
    What are the new features? Glad you asked!
    * Extensions can declare dependencies on other extensions.
    * Extensions can declare dependencies on external libraries via Maven coordinates, and Minestom will download them at launch.
    * Extensions can be unloaded dynamically (requires extensions to remove ALL its callback from Minestom).
    * Extensions can be loaded dynamically.
    * Swapping jars during runtime is therefore possible!

    As for the story behind the YouTube video, as server performance is stable enough we started to focus on the networking side which can be a bit bitchy sometimes. We added a traffic handler to limit one user taking the whole bandwidth, improved compression, increased netty send buffer, optimized players synchronization. Worth noting that the video is not at all a real-life workload, wouldn't want to meet someone playing like this.
     
  19. Great project keep up the great work! :) Will definitely check it out but the pictures look promising!!!
     
    • Friendly Friendly x 1
  20. This is amazing. I'm looking forward to see where you take this :)
     
    • Friendly Friendly x 1