Giter Site home page Giter Site logo

bluemapsignextractor's Introduction

Hi there! ๐Ÿ‘‹

animated version of my logo Programming's my art
Empty files are my canvas
And code is my brush

My name is Jelle (IPA: /หˆjษ›.lษ™/), and I like creating stuff! I'm currently studying Creative Media and Game Technologies at Saxion University of Applied Sciences to become a better game developer.

I love learning fun things and having fun learning things!

Click here to read about my full journey as a developer

My first start with programming was GameMaker 8.1 Lite when I was eight. I started off only using the visual programming, and I never really got into GML. Sadly, most of the games I made back then have been lost to time.

A year or two later I discovered Minecraft with its redstone, and I was sold. When command blocks were added a little later, I was even more hooked. I spent years playing with it, learning and getting better. I also loved the big tech modpacks, though my computer back then couldn't really run them well.

When I was around eleven, my primary school installed Scratch on their computers. Me being the curious type and seeing that a new icon had appeared on the desktop, I clicked it and almost immediately recognized it as being a similar thing to GameMaker. I quickly became quite good at it, though sadly most of those projects have also been lost.

Around thirteen, I tried my hand at making Android Apps with Android Studio, which was my first usage of a "real" IDE. It was difficult to suddenly use such a huge, complicated program, but ultimately, I did succeed in making an app that my parents still use to this day. I enjoyed learning Java during the process of making these apps, though I probably should have learned Java first, and only then started making apps with it.

Around 2017, I played a lot of the game Scrap Mechanic, and when they released the mod tool, I was one of the first people to release a mod onto the Steam Workshop. My most popular mod has been downloaded almost 50 000 times!

For the second half of secondary school, I had to buy a TI 84 CE-T calculator and I almost immediately started making useful programs and fun games in TI-Basic.

Then I discovered The Coding Train on YouTube and I started using Processing a lot. So for the next four or five years I used that for basically all of my programming. I don't use it that much anymore these days, but I still really like it.

I have also made a few Minecraft plugins in Java, scripts in Python, websites with raw HTML and CSS, and C++ and C programs, among many other things. I like to experiment with a lot of things and learn a lot.

During my first year at Saxion I have learnt C# with their GXP Engine, which I'm working on overhauling with a couple of fellow students. I also learnt Unity, which I have since made a couple game (prototypes) with.

In the vacation after that first year, I worked a lot on a project that I felt needed to exist: GitDroid. It's an Android app, made with Flutter, that allows you to easily install and update other Android apps from GitHub. It's still in development, but it's already quite usable.

During my second year at Saxion, I officially learnt C++ (I'd been tinkering with it off and on for a couple of years prior) and I'm also learning Unreal Engine. Learning Rust also seems like fun!

I've also been continuing my use of Flutter, and I've been making some other things with it as well, such as CMGTwitch. During my usage of Flutter, I've naturally been using Dart, which I've grown to like quite a lot.

Not only do I really like making games, I also really enjoy making tools for people to make their lives easier in some way. Some examples of things I made for other people are WesleyChess, LifeWrench, Hydr8, and Simple Block Commands. Hardly a week goes by where I don't automate some part of my own or someone else's life.

My logo was made by myself with Blender. Check out my other art on my ArtStation

Find me on other platforms

E-Mail Blog Twitter Linkedin ArtStation YouTube Ko-fi

Experiences

C# Unity C++ Java Flutter Python Unreal Engine

Git GitHub GitHub Actions Subversion Docker Jenkins

IntelliJ IDEA Rider CLion Visual Studio

Blender Krita

๐ŸŽฎ Games

Space Combat 3DX DigiSwamp AG Sea Spelunking Chthonic Metal CMGT Intake Afterparty Flappy Pong Doom Game She Can VR Phurey

๐Ÿ’ก Tech Demos

Flutter User Fonts Demo Vulkan Psychedelic Cloths

๐Ÿ“ฑ Apps

GitDroid Wesley Chess Life Wrench

๐ŸŒ Websites

TechnicJelle CMGTwitch BlueMap Marker generator

๐Ÿ”Œ Server Software

Post To Websocket Broadcaster (Dart)

๐Ÿ“ Scripts

My AutoHotKey Scripts Discord Reactor

๐Ÿค– Discord Bots

Hydr8

๐ŸŽจ Skins

Wikipedia Fix

๐ŸŒŒ Simulations

Solar System Fireworks Display in PGE PWS

๐Ÿ“š Libraries

Update Checker Java

โ› Minecraft Plugins

MCUtils Simple Block Commands Discord Inviter

๐ŸŒ BlueMap Addons

BMUtils BlueMap Offline Player Markers BlueMap Sign Extractor BlueMap Chat Markers BlueMap MC Map Sync BlueMap Floodgate BlueMap Structures BlueMap Death Markers BlueMap BlueMap Area Control BlueMap Player Control BlueMap Distance Measurer BlueMap Custom Skin Provider

bluemapsignextractor's People

Contributors

dependabot[bot] avatar iciaran avatar technicjelle avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

bluemapsignextractor's Issues

Create automated tests

  • Create tests
    • Research testing frameworks for Java (Perhaps have a peek at how BlueNBT's automated testing works...)
    • Create a server with each Minecraft version, starting with 1.13
    • Place signs in the world
    • Copy the region file into the repository to use for the tests
    • Write the actual tests, using the copied region files, so each Minecraft version should be covered
  • Automate them with GitHub Actions

Display double-sided signs better

Currently, signs that have text on both sides of the sign look a quite bad:
image

I would like to improve this, but I am not exactly sure of a good way to make it look pretty.

If anyone has any ideas on how to make it look pretty, please let me know by replying to this issue.

Create config file

  • MarkerSet options:
     # Marker Set Options
     # Documentation: https://bluemap.bluecolored.de/wiki/customization/Markers.html#marker-sets
     MarkerSetName: "Signs"
     Toggleable: true
     DefaultHidden: false
  • Marker max-distance
  • #5
  • Suppress warnings about old/incompatible chunks

Support all the different sign materials

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.

Not fully fixed: chunkBlockEntities was null

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

Make pretty

Currently, the plugin just creates a pretty boring POI Marker.
I want to make this prettier.

Fabric version

I'd like to make a Fabric version of this plugin sometime...

Out of memory for 100+ GB map

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)

`chunkBlockEntities` is null

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.

Allow custom filtering rules to be configured

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!

Exception while collecting markers

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) ~[?:?]

Update markers every once in a while (+cache)

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.

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.