CrucibleMC / Crucible

Crucible is a Thermos fork containing various patches for bug fixes and performance improvements. Join our discord to stay updated with the project development.
https://discord.gg/jWSTJ4d
GNU General Public License v3.0
178 stars 62 forks source link

Incompatibility with DragonAPI #45

Open GedeonGrays opened 3 years ago

GedeonGrays commented 3 years ago

Hello o/

Crucible Version: 4.1 (version with fix a written book by juanmuscaria in Discord) DragonAPI Version: V26b Crash report: https://pastebin.com/465RvVe2

Crash during server startup.

DragonAPI also does not work on Thermos (and, it seems, on KCauldron), but it works on Forge Server.

P.S. Huge request, fix this incompatibility at least in your Crucible. Otherwise, this will remain the main reason for the lack of Reika mods on large servers.

juanmuscaria commented 3 years ago

Mod source for the V26b version, saving it here so we can take a look what is causing the problem https://github.com/ReikaKalseki/DragonAPI/tree/adeebe4ce8740d55cf3e08fd400d1ecba8a0b14c

juanmuscaria commented 3 years ago

I'm not a core mod programmer, but from what I understand the coremod is trying to inject an event call after chunk = this.currentChunkProvider.provideChunk(x,z) but bukkit/caulron add a lot of stuff after this call, maybe moving all that stuff to another method and trying to keep the method structure close to forge's original method structure will fix the problem? Or we can make a fork of that coremod with a fixed patch.

juanmuscaria commented 3 years ago

This is the problematic patch call https://github.com/ReikaKalseki/DragonAPI/blob/adeebe4ce8740d55cf3e08fd400d1ecba8a0b14c/ASM/Patchers/Hooks/Event/World/Gen/ChunkGenerationEvent.java#L33 it's returning null.

GedeonGrays commented 3 years ago

I think any fix that doesn't break DragonAPI or Crucible will do. But if you forked, wouldn't there be an update issue on the next release? Reika releases updates relatively often.

spannerman79 commented 3 years ago

Forking DragonAPI isn't an option. That road was already travelled.

https://www.reddit.com/r/feedthebeast/comments/4k2ure/kcauldron_and_conflicts_note_contains_quoted/

Just... don't.

juanmuscaria commented 3 years ago

I guess the best thing we can do in this case is disabling the coremod and replacing with our own coremod to call the hooks and events, I know thermos does disable fastcraft tweaker, so we can do the same with this mod It will keep all the current api and just replace the broken hooks with working hooks, it will be complicated and may be hard to maintain, but better than nothing.

juanmuscaria commented 3 years ago

This may be the case we should make https://github.com/CrucibleMC/Grimoire part of crucible (after rewriting how it works), with the ability to replace tweakers of other mods, the two problems of doing that is we will have to ship mixin with the server and may break some mods that uses mixin (for sure will break my entire server), ad we will be adding a function that is not optional that most people will not need to use hopefully. I'll keep that as last option if all fixes I try fail.

spannerman79 commented 3 years ago

I must advise one thing.

In order to even use DragonAPI the mod dev has a very particular list of requirements/ToS/EULA/etc.

https://sites.google.com/site/reikasminecraft/pack-permissions-and-rules

That is the reason why not many servers (even vanilla forge) even consider using DragonAPI. Not beecause it cannot run on Cauldron based servers. That is only a single small peice of the picture as to why there aren't many servers that in fact run any of DragonAPI (and the other) mods.

To in effect break the server just to get one mod working that has a very questionable terms of service compared to other mod devs (ie IC2, Mekanism, Team CoFH to just name a few devs/mods) is not ideal.

GedeonGrays commented 3 years ago

It will keep all the current api and just replace the broken hooks with working hooks, it will be complicated and may be hard to maintain, but better than nothing.

If this somehow allows working with DragonAPI on Crucible - I'm all for it!

This may be the case we should make https://github.com/CrucibleMC/Grimoire part of crucible (after rewriting how it works), with the ability to replace tweakers of other mods, the two problems of doing that is we will have to ship mixin with the server and may break some mods that uses mixin (for sure will break my entire server), ad we will be adding a function that is not optional that most people will not need to use hopefully. I'll keep that as last option if all fixes I try fail.

I think you will find the most suitable solution without breaking anything. After all, bringing back compatibility with Reika mods is cool, but not worth it to ruin your work.

GedeonGrays commented 3 years ago

In order to even use DragonAPI the mod dev has a very particular list of requirements/ToS/EULA/etc.

These requirements are perfectly acceptable. I have rethought many times how a server should look like, which submits to the conditions of Reika and I can say for sure that it is quite realizable.

Note: everything I write about next refers to public servers and modpacks.

Not every server owner wants to follow this license, but the point is that Reika's license often conflicts with the economic model that these servers use.

Obviously, not everyone wants to suffer losses and not be able to change the gameplay through some MineTweaker, but I can say that for me this is not a fundamental reason to manage my server.

Nothing prevents you from creating a modpack based on Reika mods, which will not contradict its rules, and then launch a third-party server without an economic model - in parallel with the rest.

P.S. Sorry for a ton of text and offtop. Let's not continue to discuss the purpose of using Reika mods. We'd better try to solve the problem, if we can achieve this without breaking everything else :>

juanmuscaria commented 3 years ago

I'll say here what I said on discord, since it has a very restrictive licence, I'll work in something to make it compatible, but will not be in my priority list since it's something very few people will use.

juanmuscaria commented 3 years ago

A fix is doable, but I would require some help maintaining it if the coremod gets update

GedeonGrays commented 3 years ago

Great, this position suits me completely.

Serega007RU commented 2 years ago

At the moment, the mod does not work on the V31b version latest.log fml-server-latest.log crash-2022-05-19_12.40.36-server.txt