Half the charm of building computer games lies in maintaining your own engines. Yes, X is open source, but the moment you start making significant modifications to it -- and you will want to -- you may or may not remain compatible with the future development of the main branch, and suddenly you find yourself in magical limbo land where you half-own your own problems, yet half don't, and all along you maintain a bunch of code and datastructures to support features you're never going to use. You want to do something, but do you file a feature request and wait patiently for support for that to be added to the main branch, or do you actually fix it yourself? Who knows. "Oh, but it's open source, you can do whatever you want", yeah, sure you can, but what you do needs to be in conformity with the totality of what's already there, which could be quite a bit. Rather than working on your game, you'll be spending time understanding and working around someone else's preconceived notions of what you may or may not want to do. Were I to start building a new game today, I would never for a second consider using Godot, or Unity, or UnReal Engine, or anything of the sort.
Granted, I say that because the technical integrity of a project is important to me, certainly more so than speed or ease of implementation. If you had a project of limited scope, and the result -- getting a game out fast, or whatevs -- was more important than the journey, then you can certainly get faster results by using someone else's engine. If the technology doesn't interest you, but game design does, then go for it, but that's not us.
Java is one of the most, if not the most, used programming language(s) in the world. Doesn't say much in and of itself, but it is certainly not a legacy technology.
there is a reason why most (or all) games just have normal updates for their clients with even smallest modifications, because it works.
... as does dynamically loading code, or resources otherwise, except we don't have to have the entirety of the project in a monolith, and can keep a minimalistic launcher.
Dynamically loading resource files with code in them is just stupid
Dlls exist for a reason, among others to allow for modularized code. The clutch being platform independence, which Java provides. Why would it be stupid?