hollow-cube / polar Goto Github PK
View Code? Open in Web Editor NEWFast and small world format for Minestom
License: MIT License
Fast and small world format for Minestom
License: MIT License
Polar: 1.1.2
Minestom: 9b15acf4fa
When i try convert 1.19.4 anvil world i have this error.
The console output https://pastebin.com/J3ffUqtU
at Ext_myherolib//net.hollowcube.polar.AnvilPolar.readAnvilChunks(AnvilPolar.java:106)
at Ext_myherolib//net.hollowcube.polar.AnvilPolar.anvilToPolar(AnvilPolar.java:52)
at Ext_myherolib//net.hollowcube.polar.AnvilPolar.anvilToPolar(AnvilPolar.java:36)
at Ext_myheroblockwars//com.windskull.mhblockwars.WorldManager.<init>(WorldManager.java:61)
at Ext_myheroblockwars//com.windskull.mhblockwars.WorldManager.getWorldManager(WorldManager.java:97)
at Ext_myheroblockwars//com.windskull.mhblockwars.MhBlockWarsCore.initialize(MhBlockWarsCore.java:12)
at java.base/java.util.LinkedHashMap$LinkedValues.forEach(LinkedHashMap.java:647)
at net.minestom.server.extensions.ExtensionManager.gotoInit(ExtensionManager.java:127)
at net.minestom.server.ServerProcessImpl.start(ServerProcessImpl.java:216)
at net.minestom.server.MinecraftServer.start(MinecraftServer.java:322)
at net.minestom.server.MinecraftServer.start(MinecraftServer.java:327)
at world.cepi.sabre.server.Sabre.boot(Sabre.kt:63)
at world.cepi.sabre.SabreLoader.boot(SabreLoader.kt:10)
at world.cepi.sabre.SabreLoader.main(SabreLoader.kt:14)```
There seem to be a lot of issues caused by old chunks, seems easier to simply reject them.
Minestom: 9b15acf4fa
Polar: 1.1.1
When starting the server everything looks fine, only when the player tries to connect I get an error :(
lobbyWorldInstance = new InstanceContainer(UUID.randomUUID(), DimensionType.OVERWORLD);
PolarLoader polarLobbyLoader = new PolarLoader(Path.of(LOBBY_WORLD_PATH));
lobbyWorldInstance.setChunkLoader(polarMainLoader);
lobbyWorldInstance.getChunks()
.forEach(chunk -> lobbyWorldInstance.loadChunk(chunk.getChunkX(), chunk.getChunkZ()));
Exception in thread "Ms-TickScheduler" java.lang.NoSuchMethodError: 'net.minestom.server.utils.chunk.ChunkSupplier net.minestom.server.instance.Instance.getChunkSupplier()'
at Ext_myherolib//net.hollowcube.polar.compat.ChunkSupplierShim.lambda$select$0(ChunkSupplierShim.java:22)
at Ext_myherolib//net.hollowcube.polar.PolarLoader.loadChunk(PolarLoader.java:82)
at net.minestom.server.instance.InstanceContainer.lambda$retrieveChunk$8(InstanceContainer.java:266)
at net.minestom.server.instance.InstanceContainer.retrieveChunk(InstanceContainer.java:292)
at net.minestom.server.instance.InstanceContainer.lambda$loadOptionalChunk$4(InstanceContainer.java:218)
at net.minestom.server.instance.InstanceContainer.loadOrRetrieve(InstanceContainer.java:630)
at net.minestom.server.instance.InstanceContainer.loadOptionalChunk(InstanceContainer.java:218)
at net.minestom.server.entity.Player.lambda$setInstance$9(Player.java:587)
at net.minestom.server.utils.chunk.ChunkUtils.forChunksInRange(ChunkUtils.java:175)
at net.minestom.server.utils.chunk.ChunkUtils.forChunksInRange(ChunkUtils.java:181)
at net.minestom.server.entity.Player.setInstance(Player.java:586)
at net.minestom.server.entity.Player.setInstance(Player.java:639)
at net.minestom.server.entity.Player.UNSAFE_init(Player.java:331)
at net.minestom.server.network.ConnectionManager.lambda$updateWaitingPlayers$5(ConnectionManager.java:266)
at org.jctools.queues.MessagePassingQueueUtil.drain(MessagePassingQueueUtil.java:39)
at org.jctools.queues.BaseMpscLinkedArrayQueue.drain(BaseMpscLinkedArrayQueue.java:612)
at org.jctools.queues.MpscUnboundedArrayQueue.drain(MpscUnboundedArrayQueue.java:23)
at org.jctools.queues.MpscUnboundedArrayQueue.drain(MpscUnboundedArrayQueue.java:63)
at net.minestom.server.network.ConnectionManager.updateWaitingPlayers(ConnectionManager.java:256)
at net.minestom.server.ServerProcessImpl$TickerImpl.tick(ServerProcessImpl.java:283)
at net.minestom.server.thread.TickSchedulerThread.run(TickSchedulerThread.java:24)
Was checking if this would break easily so I set couple random blocks around and ๐ฅ
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 2048 out of bounds for length 1185
at net.hollowcube.polar.PolarLoader.lambda$loadSection$0(PolarLoader.java:194)
at net.minestom.server.instance.palette.FlexiblePalette.setAll(FlexiblePalette.java:123)
at net.minestom.server.instance.palette.AdaptivePalette.setAll(AdaptivePalette.java:60)
at net.hollowcube.polar.PolarLoader.loadSection(PolarLoader.java:192)
at net.hollowcube.polar.PolarLoader.loadChunk(PolarLoader.java:154)
at net.minestom.server.instance.InstanceContainer.lambda$retrieveChunk$7(InstanceContainer.java:305)
at net.minestom.server.instance.InstanceContainer.retrieveChunk(InstanceContainer.java:333)
at net.minestom.server.instance.InstanceContainer.lambda$loadChunk$1(InstanceContainer.java:252)
at net.minestom.server.instance.InstanceContainer.loadOrRetrieve(InstanceContainer.java:672)
at net.minestom.server.instance.InstanceContainer.loadChunk(InstanceContainer.java:252)
at net.minestom.server.instance.InstanceContainer.setBlock(InstanceContainer.java:126)
at net.minestom.server.instance.Instance.setBlock(Instance.java:175)
When attempting to save chunks or unload the instance, this exception gets thrown:
> java.lang.NoSuchMethodError: 'net.minestom.server.instance.light.Light net.minestom.server.instance.Section.blockLight()'
at net.hollowcube.polar.PolarLoader.updateChunkData(PolarLoader.java:344)
at net.hollowcube.polar.PolarLoader.lambda$saveChunks$3(PolarLoader.java:253)
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
at net.hollowcube.polar.PolarLoader.saveChunks(PolarLoader.java:253)
at net.hollowcube.polar.PolarLoader.saveInstance(PolarLoader.java:240)
at dev.bedcrab.server.PlayerLoader.unregisterInstance(PlayerLoader.java:77)
at dev.bedcrab.events.PlayerEvents.onLeave(PlayerEvents.java:42)
at net.minestom.server.event.EventListener$Builder$1.run(EventListener.java:151)
at net.minestom.server.event.EventNodeImpl$Handle.callListener(EventNodeImpl.java:488)
at net.minestom.server.event.EventNodeImpl$Handle.lambda$listenersConsumer$8(EventNodeImpl.java:420)
at net.minestom.server.event.EventNodeImpl$Handle.lambda$createConsumer$5(EventNodeImpl.java:391)
at net.minestom.server.event.EventNodeImpl$Handle.call(EventNodeImpl.java:324)
at net.minestom.server.event.EventNode.call(EventNode.java:190)
at net.minestom.server.event.EventDispatcher.call(EventDispatcher.java:10)
at net.minestom.server.entity.Player.remove(Player.java:516)
at net.minestom.server.entity.Entity.lambda$scheduleNextTick$1(Entity.java:219)
at net.minestom.server.timer.Task$Builder$1.get(Task.java:68)
at net.minestom.server.timer.Task$Builder$1.get(Task.java:59)
at net.minestom.server.timer.SchedulerImpl.handleTask(SchedulerImpl.java:92)
at net.minestom.server.timer.SchedulerImpl.lambda$processTick$3(SchedulerImpl.java:56)
at org.jctools.queues.MessagePassingQueueUtil.drain(MessagePassingQueueUtil.java:39)
at org.jctools.queues.BaseMpscLinkedArrayQueue.drain(BaseMpscLinkedArrayQueue.java:612)
at org.jctools.queues.MpscUnboundedArrayQueue.drain(MpscUnboundedArrayQueue.java:23)
at org.jctools.queues.MpscUnboundedArrayQueue.drain(MpscUnboundedArrayQueue.java:63)
at net.minestom.server.timer.SchedulerImpl.processTick(SchedulerImpl.java:53)
at net.minestom.server.timer.SchedulerImpl.processTick(SchedulerImpl.java:39)
at net.minestom.server.entity.Entity.tick(Entity.java:527)
at net.minestom.server.thread.TickThread.tick(TickThread.java:66)
at net.minestom.server.thread.TickThread.run(TickThread.java:41)
I've noticed that it's calling blockLight()
(doesn't exist) instead of getBlockLight()
and the Light
class doesn't exist.
ERROR net.hollowcube.polar.PolarLoader - Failed to find biome: minecraft:jungle
Just trying to convert anvil to polar. I have no idea what can cause that.
Exception in thread "main" java.io.IOException: Access denied
at java.base/java.io.RandomAccessFile.write0(Native Method)
at java.base/java.io.RandomAccessFile.write(RandomAccessFile.java:543)
at java.base/java.io.RandomAccessFile.writeByte(RandomAccessFile.java:1086)
at org.jglrxavpok.hephaistos.data.RandomAccessFileSource.writeByte(RandomAccessFileSource.kt)
at org.jglrxavpok.hephaistos.mca.RegionFile.<init>(RegionFile.kt:61)
at org.jglrxavpok.hephaistos.mca.RegionFile.<init>(RegionFile.kt:51)
at org.jglrxavpok.hephaistos.mca.RegionFile.<init>(RegionFile.kt:50)
at org.jglrxavpok.hephaistos.mca.RegionFile.<init>(RegionFile.kt)
at net.hollowcube.polar.AnvilPolar.anvilToPolar(AnvilPolar.java:51)
at org.hypejet.lobby.LobbyKt.main(Lobby.kt:23)
at org.hypejet.lobby.LobbyKt.main(Lobby.kt)
When I add the following line (after saving the world once), it gives me this error when it next saves
instance.setBlock(0, 42, 0, Block.STONE)
Exception in thread "main" java.lang.AssertionError: Chunk must be locked before access
at net.minestom.server.instance.DynamicChunk.assertLock(DynamicChunk.java:320)
at net.minestom.server.instance.DynamicChunk.getBlock(DynamicChunk.java:149)
at net.hollowcube.polar.PolarLoader.updateChunkData(PolarLoader.java:310)
at net.hollowcube.polar.PolarLoader.lambda$saveChunks$3(PolarLoader.java:253)
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
at net.hollowcube.polar.PolarLoader.saveChunks(PolarLoader.java:253)
at net.minestom.server.instance.InstanceContainer.saveChunksToStorage(InstanceContainer.java:241)
at wtf.nucker.buildstom.BuildstomServer.setupWorld$lambda$2(BuildstomServer.kt:60)
at net.minestom.server.timer.SchedulerImpl.handleTask(SchedulerImpl.java:92)
at net.minestom.server.timer.SchedulerImpl.submitTask(SchedulerImpl.java:68)
at net.minestom.server.timer.SchedulerManager.submitTask(SchedulerManager.java:25)
at wtf.nucker.buildstom.BuildstomServer.setupWorld(BuildstomServer.kt:58)
at wtf.nucker.buildstom.BuildstomServer.<init>(BuildstomServer.kt:39)
at wtf.nucker.buildstom.MainKt.main(Main.kt:4)
at wtf.nucker.buildstom.MainKt.main(Main.kt)
The error points to this code:
buildInstance.saveChunksToStorage()
And removing the set block code removes all errors. This happens with a completely new world and also with the file saved from that new world
Caused by: java.lang.NoSuchMethodError: 'java.util.List net.minestom.server.network.NetworkBuffer.readCollection(java.util.function.Function)'
at net.hollowcube.polar.PolarReader.read(PolarReader.java:51)
at net.hollowcube.polar.PolarLoader.(PolarLoader.java:69)
An undecorated decorated pot block turns into a decorated decorated pot with the sword sherd decoration in all sides when saved and loaded using the polar world format
When using polar standalone, it doesn't depend on Hephaistos and SLF4J through the Gradle.build* file. Any downstream user of Polar will encounter this error at runtime because Gradle isn't aware of these required libraries.
Exception in thread "main" java.lang.NoClassDefFoundError: org/jglrxavpok/hephaistos/mca/AnvilException
at dev.csmc.polarconverter.Main.main(Main.java:32)
Caused by: java.lang.ClassNotFoundException: org.jglrxavpok.hephaistos.mca.AnvilException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
... 1 more
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at net.hollowcube.polar.AnvilPolar.<clinit>(AnvilPolar.java:24)
at dev.csmc.polarconverter.Main.main(Main.java:32)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
... 2 more
Exception in thread "main" java.lang.NoClassDefFoundError: net/minestom/server/utils/chunk/ChunkUtils
at net.hollowcube.polar.PolarWorld.<init>(PolarWorld.java:59)
at net.hollowcube.polar.AnvilPolar.anvilToPolar(AnvilPolar.java:118)
at net.hollowcube.polar.AnvilPolar.anvilToPolar(AnvilPolar.java:46)
at dev.csmc.polarconverter.Main.main(Main.java:32)
Caused by: java.lang.ClassNotFoundException: net.minestom.server.utils.chunk.ChunkUtils
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
... 4 more
These libraries should be at least documented in the README or explicitly added to the gradle.build.kts.
VarInts are not great for negative twos-complement ints. It would generally be an improvement to zig zag encode those, though it will be a minor difference.
For example, saving 4 chunks around 0-0, there would be 64 coordinates saved. Using ints this would be 32*4 = 128 bytes
. Using VarInts the positive ones would be 1 byte, negative ones would be 5 bytes, so 16*1 + 16*5 = 81 bytes
. Using zig zag encoding + var ints it would be 1 byte for each value, so 32 bytes.
Hello,
How can u get a byte array from the instance?
Thanks,
Nopox
๐
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.