Create: Contraption (VirtualWorld) Compat
A universal compatibility mod that fixes crashes when placing block entities from various mods on Create contraptions.
Disclaimer:
Yes this Mod was made using AI, as this Description too. You don't like it? You don't need to use it.
The Problem
In **Create 6.0.8**, placing certain block entities on contraptions causes the game to crash with:
java.lang.UnsupportedOperationException: VirtualRenderWorld doesn't maintain a chunk array.
at com.simibubi.create.content.contraptions.render.VirtualRenderWorld.getChunk(VirtualRenderWorld.java:69)
This is FIXED in Create 6.0.9
This occurs because Create 6.0.8 introduced a change where block entities are loaded into a `VirtualRenderWorld` before their NBT data is processed. When block entities call `setChanged()` during initialization, it triggers `Level.blockEntityChanged()` which tries to mark chunks as unsaved - but `VirtualRenderWorld` is a lightweight render-only world that doesn't support chunk operations.
The Solution
This mod uses a Mixin to intercept calls to `Level.blockEntityChanged()` and cancels them when the level is a `VirtualRenderWorld`. Since `VirtualRenderWorld` is temporary and never persists, marking chunks as unsaved is unnecessary and can be safely skipped.
undefined
@Mixin(value = Level.class)
public class VirtualRenderWorldMixin {
@Inject(method = "blockEntityChanged", at = @At("HEAD"), cancellable = true)
public void preventBlockEntityChangedInVirtualWorld(BlockPos pos, CallbackInfo ci) {
if ((Object) this instanceof VirtualRenderWorld) {
ci.cancel();
}
}
}
Compatibility
Affected Mods
This fix is **universal** and works with any mod where block entities call `setChanged()` during loading:
### Requirements
- **Minecraft**: 1.21.1
- **NeoForge**: 21.1.209+
- **Create**: 6.0.8 (the issue doesn't exist in 6.0.6 and earlier)
- **Flywheel**: 1.0.5
## Credits
- **Create Team** - For the amazing Create mod
- **NeoForge Team** - For the modding framework