technicjelle / bluemapsignextractor Goto Github PK
View Code? Open in Web Editor NEWMinecraft Paper plugin and BlueMap addon that adds markers for all signs
Minecraft Paper plugin and BlueMap addon that adds markers for all signs
Currently, all signs are displayed as Oak Signs, even the ones that aren't.
I would like to figure out a way to extract the material type from the region files.
Regarding #1, I still see errors when running the plugin:
[21:09:18] [Craft Scheduler Thread - 4 - BlueMapSignExtractor/INFO]: [BlueMapSignExtractor] Processing region r.-1.-1.mca
[21:09:18] [Craft Scheduler Thread - 4 - BlueMapSignExtractor/ERROR]: [BlueMapSignExtractor] Error reading region file
java.io.IOException: chunkBlockEntities was null in chunk 13, 10 in region file /opt/papermc/karte2_nether/DIM-1/region/r.-1.-1.mca
Chunk class: MC_1_20_4_Chunk
Chunk data version: 3578
at com.technicjelle.bluemapsignextractor.common.MCA.getBlockEntities(MCA.java:71) ~[BlueMapSignExtractor-1.1.jar:?]
at com.technicjelle.bluemapsignextractor.common.Core.processMCA(Core.java:37) ~[BlueMapSignExtractor-1.1.jar:?]
at com.technicjelle.bluemapsignextractor.common.Core.lambda$loadMarkers$1(Core.java:23) ~[BlueMapSignExtractor-1.1.jar:?]
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[?:?]
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[?:?]
at java.util.Iterator.forEachRemaining(Iterator.java:133) ~[?:?]
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[?:?]
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[?:?]
at com.technicjelle.bluemapsignextractor.common.Core.loadMarkers(Core.java:23) ~[BlueMapSignExtractor-1.1.jar:?]
at com.technicjelle.bluemapsignextractor.BlueMapSignExtractor.lambda$new$0(BlueMapSignExtractor.java:41) ~[BlueMapSignExtractor-1.1.jar:?]
at org.bukkit.craftbukkit.v1_20_R3.scheduler.CraftTask.run(CraftTask.java:101) ~[paper-1.20.4.jar:git-Paper-350]
at org.bukkit.craftbukkit.v1_20_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57) ~[paper-1.20.4.jar:git-Paper-350]
at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[paper-1.20.4.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
at java.lang.Thread.run(Thread.java:1583) ~[?:?]
[21:09:18] [Craft Scheduler Thread - 4 - BlueMapSignExtractor/INFO]: [BlueMapSignExtractor] Processing region r.-1.0.mca
[21:09:18] [Craft Scheduler Thread - 4 - BlueMapSignExtractor/ERROR]: [BlueMapSignExtractor] Error reading region file
java.io.IOException: chunkBlockEntities was null in chunk 13, 0 in region file /opt/papermc/karte2_nether/DIM-1/region/r.-1.0.mca
Chunk class: MC_1_20_4_Chunk
Chunk data version: 3578
at com.technicjelle.bluemapsignextractor.common.MCA.getBlockEntities(MCA.java:71) ~[BlueMapSignExtractor-1.1.jar:?]
at com.technicjelle.bluemapsignextractor.common.Core.processMCA(Core.java:37) ~[BlueMapSignExtractor-1.1.jar:?]
at com.technicjelle.bluemapsignextractor.common.Core.lambda$loadMarkers$1(Core.java:23) ~[BlueMapSignExtractor-1.1.jar:?]
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[?:?]
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[?:?]
at java.util.Iterator.forEachRemaining(Iterator.java:133) ~[?:?]
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[?:?]
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[?:?]
at com.technicjelle.bluemapsignextractor.common.Core.loadMarkers(Core.java:23) ~[BlueMapSignExtractor-1.1.jar:?]
at com.technicjelle.bluemapsignextractor.BlueMapSignExtractor.lambda$new$0(BlueMapSignExtractor.java:41) ~[BlueMapSignExtractor-1.1.jar:?]
at org.bukkit.craftbukkit.v1_20_R3.scheduler.CraftTask.run(CraftTask.java:101) ~[paper-1.20.4.jar:git-Paper-350]
at org.bukkit.craftbukkit.v1_20_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57) ~[paper-1.20.4.jar:git-Paper-350]
at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[paper-1.20.4.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
at java.lang.Thread.run(Thread.java:1583) ~[?:?]
As far as I could tell, only regions from the Nether are affected. I attached the files as usual.
nether-regions.zip
Currently, the plugin just creates a pretty boring POI Marker.
I want to make this prettier.
I use paper-1.20.2-291 with a 1.12.2 map and the current prelease of the plugin.
When starting the server i have the following message in the server console:
[21:44:33 INFO]: [BlueMapSignExtractor] Processing region r.-1.-1.mca
[21:44:33 WARN]: [BlueMapSignExtractor] Plugin BlueMapSignExtractor v0.1 generated an exception while executing task 24
java.lang.NullPointerException: Cannot read the array length because "<local10>" is null
at com.technicjelle.bluemapsignextractor.BlueMapSignExtractor.processMCA(BlueMapSignExtractor.java:79) ~[BlueMapSignExtractor-0.1.jar:?]
at com.technicjelle.bluemapsignextractor.BlueMapSignExtractor.lambda$loadMarkers$3(BlueMapSignExtractor.java:52) ~[BlueMapSignExtractor-0.1.jar:?]
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[?:?]
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[?:?]
at java.util.Iterator.forEachRemaining(Iterator.java:133) ~[?:?]
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[?:?]
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[?:?]
at com.technicjelle.bluemapsignextractor.BlueMapSignExtractor.loadMarkers(BlueMapSignExtractor.java:52) ~[BlueMapSignExtractor-0.1.jar:?]
at com.technicjelle.bluemapsignextractor.BlueMapSignExtractor.lambda$new$0(BlueMapSignExtractor.java:42) ~[BlueMapSignExtractor-0.1.jar:?]
at org.bukkit.craftbukkit.v1_20_R2.scheduler.CraftTask.run(CraftTask.java:101) ~[paper-1.20.2.jar:git-Paper-291] at org.bukkit.craftbukkit.v1_20_R2.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57) ~[paper-1.20.2.jar:git-Paper-291]
at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[paper-1.20.2.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
at java.lang.Thread.run(Thread.java:1583) ~[?:?]
Sadly I know nothing about compling JAR files or I would have built a new version myself with the new commits.
It's become deprecated with BlueMap 2.7.0, so I'll have to create a workaround.
Perhaps through some sort of scripting?
That seems awfully complicated, though...
Perhaps just a black/white-list, like BMAreaControl has is already enough..?
Please feel free to comment on this issue with your own thoughts on this!
Crashed after ~15 minutes of collecting data (16GB RAM, Purpur 1.20.2)
! [пт 18:40:05 WARN BlueMapSignExtractor] Plugin BlueMapSignExtractor v1.2 generated an exception while executing task 67
java.lang.OutOfMemoryError
at java.base/java.util.zip.Inflater.inflateBytesBytes(Native Method)
at java.base/java.util.zip.Inflater.inflate(Inflater.java:378)
at java.base/java.util.zip.InflaterInputStream.read(InflaterInputStream.java:152)
at java.base/java.util.zip.InflaterInputStream.read(InflaterInputStream.java:122)
at java.base/java.io.FilterInputStream.read(FilterInputStream.java:82)
at BlueMapSignExtractor-1.2.jar//de.bluecolored.bluenbt.NBTReader.readTag(NBTReader.java:462)
at BlueMapSignExtractor-1.2.jar//de.bluecolored.bluenbt.NBTReader.peek(NBTReader.java:57)
at BlueMapSignExtractor-1.2.jar//de.bluecolored.bluenbt.NBTReader.checkState(NBTReader.java:500)
at BlueMapSignExtractor-1.2.jar//de.bluecolored.bluenbt.NBTReader.beginCompound(NBTReader.java:77)
at BlueMapSignExtractor-1.2.jar//de.bluecolored.bluenbt.adapter.DefaultAdapterFactory$DefaultAdapter.read(DefaultAdapterFactory.java:129)
at BlueMapSignExtractor-1.2.jar//de.bluecolored.bluenbt.BlueNBT.read(BlueNBT.java:109)
at BlueMapSignExtractor-1.2.jar//de.bluecolored.bluenbt.BlueNBT.read(BlueNBT.java:117)
at BlueMapSignExtractor-1.2.jar//com.technicjelle.bluemapsignextractor.common.MCA.getBlockEntities(MCA.java:51)
at BlueMapSignExtractor-1.2.jar//com.technicjelle.bluemapsignextractor.common.Core.processMCA(Core.java:37)
at BlueMapSignExtractor-1.2.jar//com.technicjelle.bluemapsignextractor.common.Core.lambda$loadMarkers$1(Core.java:23)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845)
at java.base/java.util.stream.AbstractPipeline.copyInto(Ab
But it's sounds like very cool plugin for me, many thanks to you by advance!
(Actually have been looking for a long time to be able to display signs on the map)
Currently, the plugin creates markers for each sign, once when BlueMap loads.
The markers should probably update more often than that.
On a timer?
I don't really like that idea a whole lot...
Perhaps based on events from the server?
I like that a bit more, I think...
Although making this plugin cross-platform would be a bit more effort if I do that.
I think it'd probably be worth it, though.
Maybe I could also just base it off the world files changing, just like BlueMap does.
However, it may be nice if the signs were (near) instant.
And implement them, if necessary.
Purpur 1.20.2, Blue Map 3.17
[00:02:15] [Craft Scheduler Thread - 5 - BlueMap/WARN]: [BlueMapSignExtractor] New version available: v1.2 (current: v1.3-PREVIEW2)
[00:02:15] [Craft Scheduler Thread - 5 - BlueMap/WARN]: [BlueMapSignExtractor] Download it at https://github.com/TechnicJelle/BlueMapSignExtractor/releases/latest
[00:02:15] [Craft Scheduler Thread - 5 - BlueMap/INFO]: [BlueMapAreaControl] BlueMapAreaControl enabled!
[00:02:15] [Craft Scheduler Thread - 5 - BlueMap/INFO]: [BlueMapAreaControl] Loading existing configs
[00:02:15] [Craft Scheduler Thread - 5 - BlueMap/INFO]: [BlueMapAreaControl] Loading config for map: world
[00:02:15] [Craft Scheduler Thread - 2 - BlueMapSignExtractor/INFO]: [BlueMapSignExtractor] World "world": Extracting signs into markers...
[00:02:15] [Craft Scheduler Thread - 5 - BlueMap/INFO]: [BlueMapAreaControl] Loading config for map: world_the_end
[00:02:15] [Craft Scheduler Thread - 5 - BlueMap/INFO]: [BlueMap] Loaded!
[01:37:56] [Craft Scheduler Thread - 2 - BlueMapSignExtractor/WARN]: [BlueMapSignExtractor] Plugin BlueMapSignExtractor v1.3-PREVIEW2 generated an exception while executing task 67
java.lang.NullPointerException: null
at java.util.Objects.requireNonNull(Objects.java:208) ~[?:?]
at java.util.ImmutableCollections$SetN.contains(ImmutableCollections.java:937) ~[?:?]
at com.technicjelle.bluemapsignextractor.common.Chunk.isFinished(Chunk.java:20) ~[BlueMapSignExtractor-1.3-PREVIEW2.jar:?]
at com.technicjelle.bluemapsignextractor.common.Chunk.isGenerated(Chunk.java:31) ~[BlueMapSignExtractor-1.3-PREVIEW2.jar:?]
at com.technicjelle.bluemapsignextractor.common.MCARegion.getBlockEntities(MCARegion.java:112) ~[BlueMapSignExtractor-1.3-PREVIEW2.jar:?]
at com.technicjelle.bluemapsignextractor.common.Core.fillMarkerSetFromRegionFile(Core.java:57) ~[BlueMapSignExtractor-1.3-PREVIEW2.jar:?]
at com.technicjelle.bluemapsignextractor.common.Core.lambda$loadMarkerSetFromWorld$2(Core.java:42) ~[BlueMapSignExtractor-1.3-PREVIEW2.jar:?]
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) ~[?:?]
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[?:?]
at java.util.Iterator.forEachRemaining(Iterator.java:133) ~[?:?]
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) ~[?:?]
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[?:?]
at com.technicjelle.bluemapsignextractor.common.Core.loadMarkerSetFromWorld(Core.java:42) ~[BlueMapSignExtractor-1.3-PREVIEW2.jar:?]
at com.technicjelle.bluemapsignextractor.common.Core.addMarkersToBlueMapWorld(Core.java:24) ~[BlueMapSignExtractor-1.3-PREVIEW2.jar:?]
at com.technicjelle.bluemapsignextractor.BlueMapSignExtractor.loadMarkersFromWorlds(BlueMapSignExtractor.java:67) ~[BlueMapSignExtractor-1.3-PREVIEW2.jar:?]
at com.technicjelle.bluemapsignextractor.BlueMapSignExtractor.lambda$new$0(BlueMapSignExtractor.java:50) ~[BlueMapSignExtractor-1.3-PREVIEW2.jar:?]
at org.bukkit.craftbukkit.v1_20_R2.scheduler.CraftTask.run(CraftTask.java:101) ~[purpur-1.20.2.jar:git-Purpur-2095]
at org.bukkit.craftbukkit.v1_20_R2.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57) ~[purpur-1.20.2.jar:git-Purpur-2095]
at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[purpur-1.20.2.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
I'd like to make a Fabric version of this plugin sometime...
# Marker Set Options
# Documentation: https://bluemap.bluecolored.de/wiki/customization/Markers.html#marker-sets
MarkerSetName: "Signs"
Toggleable: true
DefaultHidden: false
max-distance
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.