devs-immortal / Paradise-Lost

Paradise awaits...
https://immortaldevs.net/paradise-lost/
MIT License
199 stars 43 forks source link

Paradise Lost Crashes when loaded with Create's fabric port #667

Closed EmpressAutumn closed 1 year ago

EmpressAutumn commented 2 years ago

What were you doing when the crash occured? How can we replicate it?

  1. install Fabric API 0.51.1 (latest)
  2. install Create 0.4.1+534 (latest) from here
  3. install Paradise Lost 1.6.8 (latest)
  4. launch game with Fabric Loader 0.13.3

Did it crash the client or server?

Client

Mod Version

Beta 1.6.8

Fabric API Version

0.51.1

Crash Report

https://pastebin.com/ut7Vy5dC

Other mods

Mods are as listed in Replication Steps, but can also be downloaded here.

Additional Information

No response

EmpressAutumn commented 2 years ago

I also left this as an issue on the Create mod's GitHub, as I am unsure whether it is caused by this mod or theirs.

Tenuuu commented 2 years ago

Having similar issue on 1.6.9 of Paradise Lost

Azzyypaaras commented 2 years ago

Hm, seems to be crashing due to shaders. Perhaps there is a conflict in regards to how we apply them?

@gudenau would be more knowledgeable about this

EmpressAutumn commented 2 years ago

According to the Create devs, this is likely caused by the boreal wisteria leaf shader.

blacksabin commented 2 years ago

Is this related/the same thing as https://github.com/devs-immortal/Paradise-Lost/issues/665? Which can confirm, I have attempted using both releases of Create with both releases of Paradise Lost for 1.18.2, no combination of them will work.

gudenau commented 2 years ago

Considering the only way for that registry to be locked is by getting the render layers, I would say that create is doing something funky.

Our render layers are registered about as early as possible.

Related code from Satin:

public final class BlockRenderLayerRegistry {
    public static final BlockRenderLayerRegistry INSTANCE = new BlockRenderLayerRegistry();
    private final Set<RenderLayer> renderLayers = new ObjectArraySet<>();   // ArraySet for faster iteration
    private volatile boolean registryLocked = false;

    private BlockRenderLayerRegistry(){}

    public void registerRenderLayer(RenderLayer layer) {
        if(registryLocked){
            throw new IllegalStateException(String.format(
                "RenderLayer %s was added too late.",
                    layer
            ));
        }

        renderLayers.add(layer);
    }

    public Set<RenderLayer> getLayers() {
        registryLocked = true;
        return renderLayers;
    }
}
Jack-Papel commented 1 year ago

Needs confirmation if this still occurs in 0.2.0

EmpressAutumn commented 1 year ago

I'll test this once Create Fabric is updated to 1.19

TropheusJ commented 1 year ago

will be fixed in next Create release

EmpressAutumn commented 1 year ago

Just tested it today, I'm glad to say the incompatibility is fixed.