terasology-archived / additionalworlds Goto Github PK
View Code? Open in Web Editor NEWA collection of interesting world generators
A collection of interesting world generators
Currently there are a bunch of images in the screenshots
directory of this repository. This needs to be changed as it could potentially cause the module to become huge because of the unnecessary bloat of the images.
A possible fix for this is to move all images to an image hosting service and keep the links in the README or a separate file.
Trying to generate a world with the "I'm getting thirsty" generator gives the following error:
java.lang.RuntimeException: Cannot set a changed component with a null component variable
At first I thought this was part of #27, but after tracing the code I found that the issue stems from trying to load the configuration for MountainsProvider. Why exactly this causes an issue is beyond me, since all of the code follows the world generation tutorial very closely, and the MountainsProvider class in particular is identical to the one in that repository, yet the Tutorial World Generator runs perfectly fine.
Full stacktrace:
java.lang.RuntimeException: Cannot set a changed component with a null component variable
at org.terasology.persistence.internal.EntityDelta.setChangedComponent(EntityDelta.java:34)
at org.terasology.persistence.internal.EntitySetDeltaRecorder.onEntityComponentChange(EntitySetDeltaRecorder.java:70)
at org.terasology.persistence.internal.EntitySetDeltaRecorder.onEntityComponentAdded(EntitySetDeltaRecorder.java:61)
at org.terasology.persistence.internal.ReadWriteStorageManager.onEntityComponentAdded(ReadWriteStorageManager.java:528)
at org.terasology.entitySystem.entity.internal.PojoEntityManager.notifyComponentAdded(PojoEntityManager.java:704)
at org.terasology.entitySystem.entity.internal.PojoEntityManager.addComponent(PojoEntityManager.java:539)
at org.terasology.entitySystem.entity.internal.BaseEntityRef.addComponent(BaseEntityRef.java:167)
at org.terasology.engine.modes.loadProcesses.CreateWorldEntity.step(CreateWorldEntity.java:102)
at org.terasology.engine.modes.StateLoading.update(StateLoading.java:243)
at org.terasology.engine.TerasologyEngine.tick(TerasologyEngine.java:458)
at org.terasology.engine.TerasologyEngine.mainLoop(TerasologyEngine.java:421)
at org.terasology.engine.TerasologyEngine.run(TerasologyEngine.java:397)
at org.terasology.engine.Terasology.main(Terasology.java:155)
It seems like a few of the world generators don't function properly because of their lakes being added as plugins. This is probably because everyone followed the tutorial where lakes were implemented this way. This leads to issues where the lakes from one generator interfere with another, causing crashes or hangs.
The "I'm getting thirsty" and "Lava Land" generators crash with the following error:
java.lang.RuntimeException: Cannot set a changed component with a null component variable
at org.terasology.persistence.internal.EntityDelta.setChangedComponent(EntityDelta.java:34)
at org.terasology.persistence.internal.EntitySetDeltaRecorder.onEntityComponentChange(EntitySetDeltaRecorder.java:70)
at org.terasology.persistence.internal.EntitySetDeltaRecorder.onEntityComponentAdded(EntitySetDeltaRecorder.java:61)
at org.terasology.persistence.internal.ReadWriteStorageManager.onEntityComponentAdded(ReadWriteStorageManager.java:528)
at org.terasology.entitySystem.entity.internal.PojoEntityManager.notifyComponentAdded(PojoEntityManager.java:704)
at org.terasology.entitySystem.entity.internal.PojoEntityManager.addComponent(PojoEntityManager.java:539)
at org.terasology.entitySystem.entity.internal.BaseEntityRef.addComponent(BaseEntityRef.java:167)
at org.terasology.engine.modes.loadProcesses.CreateWorldEntity.step(CreateWorldEntity.java:102)
at org.terasology.engine.modes.StateLoading.update(StateLoading.java:243)
at org.terasology.engine.TerasologyEngine.tick(TerasologyEngine.java:458)
at org.terasology.engine.TerasologyEngine.mainLoop(TerasologyEngine.java:421)
at org.terasology.engine.TerasologyEngine.run(TerasologyEngine.java:397)
at org.terasology.engine.Terasology.main(Terasology.java:155)
Additionally, world generators outside of this module which use plugins will hang indefinitely while trying to load the lakes from "TropikGenerator", printing this stacktrace to console over and over:
java.lang.NullPointerException: null
at org.terasology.additionalworlds.imgettingthirsty.LakesRasterizer.generateChunk(LakesRasterizer.java:43)
at org.terasology.world.generation.WorldImpl.rasterizeChunk(WorldImpl.java:64)
at org.terasology.world.generation.BaseFacetedWorldGenerator.createChunk(BaseFacetedWorldGenerator.java:75)
at org.terasology.world.chunks.localChunkProvider.LocalChunkProvider$1.run(LocalChunkProvider.java:657)
at org.terasology.utilities.concurrency.TaskProcessor.run(TaskProcessor.java:50)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
This issue could be fixed simply by changing the implementations of lakes in every generator to use regular Providers and Rasterizers rather than plugins.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.