Add fabric support
Closed this issue ยท 10 comments
Alright I have a mostly functional draft in progress but a few things still need to be done:
Fix command completions.
Possibly make brigadier completions work (I wouldn't very much prefer that).
Fix the build (shadowed and relocated libraries aren't on the output jar)
Verify the code works on 1.15.2 and possibly the latest snapshot (20w08a as of now, should be possible due to the lack of technical changes in mostly recent versions)
Ask the config format question. Fabric doesn't have a config api nor an official standard, so YAML, hocon, json, some other subset of json is on the table. (the current branch uses hocon just for testing and since I am comfortable with it)
Obviously every style violation in the books is in the repo so I'll have to go back to that.
Fix server shutdown issue where one thread doesn't stop, basically stalking the jvm.
Do we want to include the 4 fabric api modules we use in the built jar (the community reccomendation is no but nothing bad will happen if we do it (minus the jar being a few hundred kb larger and standalone).
Some fabric specific additions:
A new processor to handle giving console like permissions to the owner of a singleplayer world (yes LP works in singleplayer), this can be configured of course.
Runs on both client and server.
Here you go (it won't run properly in any prod environment, so good luck). I would not reccomend use in any production server, this is for testing only so far.
https://github.com/i509VCB/LuckPerms/tree/fabric?files=1
One of the things I want to integrate is the richer brigadier tab completions which fabric does support (since it's almost 100% vanilla internally). Of course you already have the tree built already for the bukkit module so I just need the parser for commodore files which I have mentioned in this issue:
lucko/commodore#8
I'll try to parse this a bit more smartly so I can actually use Player selector argument.
Edit: I could lazily copy the parser but I want to avoid duplicate code
Lazily copying the parser is what I'd do. ;)
If down the road I (or someone else) has time to properly modularize commodore and split the parser off, we can always refactor.
I would love to try my hands on that.... But issue is, that I don't quite get how to make a gradle project with multiple modules in IntelliJ (Without the default src/main path)
Yes - see here: #2029