CubicChunks

CubicChunks

840k Downloads

Server does not work

GoldenEpsilon opened this issue ยท 5 comments

commented

Whenever I boot up a 1.11.2 server, I get this log:

https://pastebin.com/jSyHxsKX

Also, my exact version of forge is 1.11.2-13.20.0.2228

commented

The first error I came across in looking through it is this: (on line 225)
[14:58:27] [main/FATAL] [mixin/]: Mixin apply failed cubicchunks.mixins.fixes.json:common.isblockloaded.MixinEntity -> net.minecraft.entity.Entity: org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException @ModifyArg annotation on modify$getModifiedYPos_getBrightnessForRender$zbf000 could not find 'func_70070_b'

It appears that it has to do with func_70070_b not being found, but I'm curious where that function originates from - Minecraft or CubicChunks. I think on my own time I'll peek around the loading code and see where it might be.

commented

idk if this helps, but in this pastebin: https://pastebin.com/dnENQbE6 (found after a bit of googling)
It looks like a grouping of vanilla functions.

I found this: func_70070_b,getBrightnessForRender,0,
which may help pin down the issue. Is it the fact that since it isn't rendering, as a server, it simply doesn't have the function?

EDIT BEFORE POSTING: it looks like it's forge functions (after googling a bit more). I'm gonna take a peek at the code tomorrow and see how my hypothesis stands up

commented

I simply forgot that it's a client-only method, and put that method in "common" mixin. It should be in separate client-only mixin. Should be easy to fix, but there may be other issues that you didn't get to because this doesn't work.

commented

MixinWorld.java looks like it *could need some tweaking - it has the function markBlockRangeForRenderUpdate
Other than that, I haven't found anything, but I'm guessing MixinWorld.java is calling a couple things to throw. (pos in the file structure is main\java\cubicchunks\asm\mixin\core\common)

commented

markBlockRangeForRenderUpdate is not a client only method, but it's actually used to notify for block range render updates. All implementations of IWorldEventListener#markBlockRangeForRenderUpdate are no-op except that in RenderGlobal.