Giter VIP home page Giter VIP logo

polar's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

polar's Issues

Inconsistent world height

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)```

Error when player join

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)

ArrayIndexOutOfBoundsException

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)

world.zip

Doesn't work without using Minestom-CE

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.

Access denied

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)

"Chunk must be locked before access" error on saving

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

It seems everything is broken :(

Minestom/Minestom@fb7e4b1

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)

Decorated pot sherds bug

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

Standalone usage causes NoClassDefFoundError

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.

Use zig zag encoding for the chunk x/z ints

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.