Giter VIP home page Giter VIP logo

granny / pl3xmap Goto Github PK

View Code? Open in Web Editor NEW
55.0 1.0 87.0 28.63 MB

Pl3xMap is a minimalistic and lightweight world map viewer for Minecraft servers using the vanilla Minecraft rendering style

Home Page: https://modrinth.com/plugin/pl3xmap

License: MIT License

JavaScript 1.06% Java 89.93% TypeScript 8.06% HTML 0.20% SCSS 0.75%
bluemap dynmap fabric fabricmc forge forgemc hacktoberfest minecraft overviewer paper

pl3xmap's Introduction

Pl3xMap

Pl3xMap

Build Status Downloads Join us on Discord

MIT License CodeFactor Grade

bStats Servers Stargazers Forks Watchers

Pl3xMap is the original minimalistic and lightweight world map viewer
for Minecraft servers using the vanilla Minecraft rendering style.

Features

  • Ultra-fast render times. Get your map rendered in minutes, not next week.
  • Simple vanilla-like top down 2D view, designed for navigation.
  • Player markers showing yaw rotation, health, and armor.
  • Addons and integrations for many popular plugins.
  • Multiple render types including built-in basic, night, biomes, inhabited, and flowermap.
  • Easy to set up and configure.
  • Up-to-date Leaflet front-end for a better browser experience.
  • Robust API to create your own addons and/or integrations with ease.

Supported Platforms

Downloads

Downloads are available on Modrinth.

Download on Modrinth

Demo

You can demo Pl3xMap (and it's top competitors) at:

https://map.roanv.nl/

Support the Developers

granny on:

BillyGalbreath on:

JLyne on:

bStats

bStats Graph Data

Developers

Maven

<repository>
  <id>modrinth-repo</id>
  <url>https://api.modrinth.com/maven/</url>
</repository>

<dependency>
  <groupId>maven.modrinth</groupId>
  <artifactId>pl3xmap</artifactId>
  <version>1.21-500</version>
  <scope>provided</scope>
</dependency>

Gradle

repositories {
    exclusiveContent {
        forRepository { maven { url = "https://api.modrinth.com/maven" } }
        filter { includeGroup "maven.modrinth" }
    }
}

dependencies {
    compileOnly 'maven.modrinth:pl3xmap:1.21-500'
}

Building from source

Then just run the following command:

./gradlew build

The compiled jars will be in build/libs/

pl3xmap's People

Contributors

0x7d8 avatar antbrl avatar billygalbreath avatar euphillya avatar granny avatar jedrek0429 avatar jlyne avatar joeyak avatar roan-v avatar spongecade avatar tbluef avatar u5b avatar ydal251 avatar

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

Watchers

 avatar  avatar

pl3xmap's Issues

Support uncompressed world files

Because I wanted to take advantage of ZFSโ€™ filesystem-level compression, I set compression-format: NONE in my paper-global.yml. Now, having decided to try out Pl3xMap, Iโ€™m getting an error that itโ€™s unsupported.

Sample error message is as follows:

[19:44:37] [Pl3xMap-Renderer-7/INFO]: [Pl3xMap] [ERROR] Failed to scan world world at region Point[x=1, z=-5]
[19:44:37] [Pl3xMap-Renderer-7/WARN]: java.lang.RuntimeException: java.io.IOException: Invalid compression type 3
[19:44:37] [Pl3xMap-Renderer-7/WARN]: 	at Pl3xMap-1.20.6-496.jar//net.pl3x.map.core.renderer.task.RegionScanTask.loadRegion(RegionScanTask.java:111)
[19:44:37] [Pl3xMap-Renderer-7/WARN]: 	at Pl3xMap-1.20.6-496.jar//net.pl3x.map.core.renderer.task.RegionScanTask.run(RegionScanTask.java:89)
[19:44:37] [Pl3xMap-Renderer-7/WARN]: 	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
[19:44:37] [Pl3xMap-Renderer-7/WARN]: 	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796)
[19:44:37] [Pl3xMap-Renderer-7/WARN]: 	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
[19:44:37] [Pl3xMap-Renderer-7/WARN]: 	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
[19:44:37] [Pl3xMap-Renderer-7/WARN]: 	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
[19:44:37] [Pl3xMap-Renderer-7/WARN]: 	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
[19:44:37] [Pl3xMap-Renderer-7/WARN]: 	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
[19:44:37] [Pl3xMap-Renderer-7/WARN]: Caused by: java.io.IOException: Invalid compression type 3
[19:44:37] [Pl3xMap-Renderer-7/WARN]: 	at Pl3xMap-1.20.6-496.jar//net.pl3x.map.core.world.Region.loadChunk(Region.java:130)
[19:44:37] [Pl3xMap-Renderer-7/WARN]: 	at Pl3xMap-1.20.6-496.jar//net.pl3x.map.core.world.Region.loadChunks(Region.java:111)
[19:44:37] [Pl3xMap-Renderer-7/WARN]: 	at Pl3xMap-1.20.6-496.jar//net.pl3x.map.core.renderer.task.RegionScanTask.loadRegion(RegionScanTask.java:109)
[19:44:37] [Pl3xMap-Renderer-7/WARN]: 	... 8 more

Pl3xMapEnabledEvent gets called too early

I'm trying to load in markers on start with this event, but when the event is called. The WorldRegistry (Pl3xMap.api().getWorldRegistry()) is still empty. Meaning I can't make a layer and thus not register markers.

Main class;

@Override
public void onInitializeServer() {
	ServerLifecycleEvents.SERVER_STARTING.register(server -> {
		SERVER = server;
		Pl3xMap.api().getEventRegistry().register(new Pl3xMapStart());
	});
}

Event;

private static class Pl3xMapStart implements EventListener {
	@EventHandler
	public void onEnable(Pl3xMapEnabledEvent event) {
			// initialize manager
			MARKER_MANAGER.loadLodestones(); // this creates markers and tries to register them
		}
	}
}```

I contribute a Chinese lang_zh.yml

prefix:
  command: '<grey>[<gradient:#C028FF:#5B00FF>Pl3xMap</gradient>]</grey> '
command:
  base: ๆŸฅ็œ‹ๅœฐๅ›พ '<grey><click:open_url:'<web-address>'><web-address></click></grey>'
  event:
    click-for-help: ็‚นๅ‡ป่Žทๅ–ๅธฎๅŠฉ
    click-to-confirm: ็‚นๅ‡ป็กฎ่ฎค
  argument:
    optional-player: ๅฆ‚ๆžœๆœชๆŒ‡ๅฎš๏ผŒ้ป˜่ฎคไธบๆ‰ง่กŒๅ‘ฝไปค็š„็Žฉๅฎถ๏ผˆๆŽงๅˆถๅฐๅฟ…้กปๆŒ‡ๅฎš็Žฉๅฎถ๏ผ‰
    optional-center: ๅฆ‚ๆžœๆœชๆŒ‡ๅฎš๏ผŒ้ป˜่ฎคไธบ (<white>0<gray>,</gray> 0</white>)
    optional-zoom: ๅœฐๅ›พ็ผฉๆ”พ็บงๅˆซ
    required-renderer: ๅฟ…้กปๆŒ‡ๅฎšๆธฒๆŸ“ๅ™จ
    required-world: ๅฟ…้กปๆŒ‡ๅฎšไธ–็•Œ
  confirm:
    description: ็กฎ่ฎคไธ€ไธชๅพ…ๅค„็†็š„ๅ‘ฝไปค
    not-rendering: <red>้œ€่ฆ็กฎ่ฎคใ€‚่ฏทไฝฟ็”จ <grey>/map confirm</grey> ่ฟ›่กŒ็กฎ่ฎค
    success: <red>ๆ‚จๆฒกๆœ‰ไปปไฝ•ๅพ…็กฎ่ฎค็š„ๅ‘ฝไปค
  fullrender:
    description: ๅฏนไธ€ไธชไธ–็•Œ่ฟ›่กŒๅฎŒๅ…จๆธฒๆŸ“
    starting: <green>ๅผ€ๅง‹่ฟ›่กŒๅฎŒๅ…จๆธฒๆŸ“ใ€‚่ฏทๆŸฅ็œ‹ <grey>/map status</grey> ่Žทๅ–ๆ›ดๅคšไฟกๆฏ
  help:
    description: ่Žทๅ– Pl3xmap ๅ‘ฝไปค็š„ๅธฎๅŠฉ
    argument:
      query: ๅธฎๅŠฉๆŸฅ่ฏข
  hide:
    description: ้š่—็Žฉๅฎถๅœจๅœฐๅ›พไธŠ็š„ๆ˜พ็คบ
    already-hidden: <grey><player> <red>ๅทฒ็ปๅœจๅœฐๅ›พไธŠ้š่—ไบ†
    success: <grey><player> <green>็Žฐๅœจๅทฒ็ปๅœจๅœฐๅ›พไธŠ้š่—ไบ†
  pause:
    description: ๅˆ‡ๆขๆธฒๆŸ“ๅ™จ็š„ๆš‚ๅœ็Šถๆ€
    paused: <green>ๆธฒๆŸ“ๅ™จๅทฒๆš‚ๅœ
    unpaused: <green>ๆธฒๆŸ“ๅ™จๅทฒ่งฃ้™คๆš‚ๅœ
  radiusrender:
    description: ๆธฒๆŸ“ไธ–็•Œ็š„ไธ€ไธชๅŒบๅŸŸ
    starting: <green>ๅผ€ๅง‹่ฟ›่กŒๅŠๅพ„ๆธฒๆŸ“ใ€‚่ฏทๆŸฅ็œ‹ <grey>/map status</grey> ่Žทๅ–ๆ›ดๅคšไฟกๆฏ
  reload:
    description: ้‡ๆ–ฐๅŠ ่ฝฝๆ’ไปถ
    success: <green>Pl3xMap <grey>v<version></grey> ๅทฒ้‡ๆ–ฐๅŠ ่ฝฝ
  resetmap:
    description: ๅ–ๆถˆๅฏนไธ–็•Œ็š„ๆดปๅŠจๆธฒๆŸ“
    begin: <green>ๅผ€ๅง‹้‡็ฝฎๅœฐๅ›พ <grey><world></grey>
    success: <green>ๆˆๅŠŸ้‡็ฝฎๅœฐๅ›พ <grey><world></grey>
    failed: <red>ๆ— ๆณ•้‡็ฝฎๅœฐๅ›พ <grey><world></grey>
  show:
    description: ๅœจๅœฐๅ›พไธŠๆ˜พ็คบ็Žฉๅฎถ
    not-hidden: <grey><player> <red>ๅœจๅœฐๅ›พไธŠๆฒกๆœ‰้š่—
    success: <grey><player> <green>ไธๅ†ๅœจๅœฐๅ›พไธŠ้š่—
  status:
    description: ๆŸฅ็œ‹ๆธฒๆŸ“็Šถๆ€
  stitch:
    description: ๅฐ†ๅ›พๅ—ๆ‹ผๆŽฅๆˆไธ€ๅผ ๅ›พ็‰‡
    missing-directory: <red>ๆ‰พไธๅˆฐๅ›พๅ—็›ฎๅฝ•ใ€‚
    error-reading-directory: <red>่ฏปๅ–ๅ›พๅ—็›ฎๅฝ•ๆ—ถๅ‡บ็Žฐ้—ฎ้ข˜ใ€‚
    empty-directory: <red>ๆฒกๆœ‰ๅฏๆ‹ผๆŽฅ็š„ๅ›พๅ—ใ€‚
    starting: |-
      <green>ๅผ€ๅง‹ๆ‹ผๆŽฅ <count> ๅผ ๅ›พๅ—..
      <green><italic>(ๆœ€ๅฐ: <min-x>,<min-z> ๆœ€ๅคง: <max-x>,<max-z> ๅคงๅฐ: <size-x>,<size-z>)
    finished: |-
      <green>ๆ‹ผๆŽฅๅฎŒๆˆ <count> ๅผ ๅ›พๅ—๏ผ
      <green>ๆ‚จๅฏไปฅๅœจ <grey>/tiles/<world>/stitched/<filename> ๆ‰พๅˆฐๅฎƒ
  version:
    description: ่Žทๅ–็‰ˆๆœฌไฟกๆฏ
    please-wait: <italic>ๆญฃๅœจๆฃ€ๆŸฅ็‰ˆๆœฌ๏ผŒ่ฏท็จๅ€™...
    still-checking: <italic>ไปๅœจๆฃ€ๆŸฅ...
    error:
      not-array: <red>้”™่ฏฏ๏ผšๅ“ๅบ”ไธๆ˜ฏไธ€ไธชๆ•ฐ็ป„
      corrupt-json: <red>้”™่ฏฏ๏ผšๅ“ๅบ”ไธบๆŸๅ็š„ JSON
      unknown-version: <red>้”™่ฏฏ๏ผšๅ“ๅบ”ไธญๅŒ…ๅซๆœช็Ÿฅ็‰ˆๆœฌ
      unable-to-determine: <red>้”™่ฏฏ๏ผšๆ— ๆณ•็กฎๅฎšๆœ€ๆ–ฐๆž„ๅปบ
    success: Pl3xMap v3 <version>๏ผˆ<italic><platform></italic>๏ผ‰git-<commit>
    snapshot: <yellow><italic>ๆ‚จๆญฃๅœจ่ฟ่กŒๅฟซ็…ง็‰ˆๆœฌ
    latest-build-is: <yellow><italic>ๆœ€ๆ–ฐๆž„ๅปบไธบ <build>
    running-latest-build: <green><italic>ๆ‚จๆญฃๅœจ่ฟ่กŒๆœ€ๆ–ฐๆž„ๅปบใ€‚
    builds-behind: <yellow><italic>ๆ‚จ่ฝๅŽไบŽ <number> ไธชๆž„ๅปบใ€‚
    download: <yellow><italic>ไธ‹่ฝฝๆ–ฐๆž„ๅปบ๏ผš<gold><link>
    time-traveler: <yellow><italic>ๆ‚จๆ˜ฏๆ—ถ็ฉบๆ—…่กŒ่€…ๅ—๏ผŸ
httpd:
  started:
    success: <green>ๅ†…้ƒจ Web ๆœๅŠกๅ™จๆญฃๅœจ่ฟ่กŒ๏ผŒๅœฐๅ€๏ผš<yellow><bind></yellow>:<yellow><port></yellow>
    error: <red>ๆ— ๆณ•ๅฏๅŠจๅ†…้ƒจ Web ๆœๅŠกๅ™จ
  stopped:
    success: <green>ๅ†…้ƒจ Web ๆœๅŠกๅ™จๅทฒๅœๆญข
    error: <red>ๅ†…้ƒจ Web ๆœๅŠกๅ™จๅ‘็”Ÿ้”™่ฏฏ
  disabled: <green>ๅ†…้ƒจ Web ๆœๅŠกๅ™จๅทฒ็ฆ็”จ
progress:
  eta:
    unknown: ๆœช็Ÿฅ
error:
  must-specify-player: <red>ๆ‚จๅฟ…้กปๆŒ‡ๅฎš็Žฉๅฎถ
  no-such-player: <red>ๆฒกๆœ‰ๆ‰พๅˆฐ็Žฉๅฎถ <grey><player>
  must-specify-renderer: <red>ๆ‚จๅฟ…้กปๆŒ‡ๅฎšๆธฒๆŸ“ๅ™จ
  no-such-renderer: <red>ๆฒกๆœ‰ๆ‰พๅˆฐๆธฒๆŸ“ๅ™จ <grey><renderer>
  must-specify-world: <red>ๆ‚จๅฟ…้กปๆŒ‡ๅฎšไธ–็•Œ
  no-such-world: <red>ๆฒกๆœ‰ๆ‰พๅˆฐไธ–็•Œ <grey><world>
  world-disabled: <red>Pl3xMap ๅทฒ็ฆ็”จไธ–็•Œ <grey><world>
  not-valid-zoom-level: <red>ไธๆ˜ฏๆœ‰ๆ•ˆ็š„็ผฉๆ”พ็บงๅˆซ
  point-invalid-format: '''<point>'' ไธๆ˜ฏไธ€ไธชๆœ‰ๆ•ˆ็š„ไฝ็ฝฎใ€‚ๆ‰€้œ€ๆ ผๅผไธบ ''<x> <z>'''
ui:
  layer:
    players: ็Žฉๅฎถ
    spawn: ้‡็”Ÿ็‚น
    worldborder: ไธ–็•Œ่พน็•Œ
  title: Pl3xMap
  block-and-biome-lang-file: zh_cn.json
  blockinfo:
    label: ๆ–นๅ—ไฟกๆฏ
    value: <block><br /><biome>
  coords:
    label: ๅๆ ‡
    value: <x>, <y>, <z>
  link:
    label: ๅฏๅ…ฑไบซ้“พๆŽฅ
    value: ''
  markers:
    label: ๆ ‡่ฎฐ็‚น
    value: ๆฒกๆœ‰้…็ฝฎไปปไฝ•ๆ ‡่ฎฐ็‚น
  players:
    label: ็Žฉๅฎถ๏ผˆๅœจ็บฟ๏ผš<online>/<max>๏ผ‰
    value: ๅฝ“ๅ‰ๆฒกๆœ‰็Žฉๅฎถๅœจ็บฟ
  worlds:
    label: ไธ–็•Œ
    value: ๆฒกๆœ‰้…็ฝฎไปปไฝ•ไธ–็•Œ
  layers:
    label: ๅ›พๅฑ‚
    value: ๆฒกๆœ‰้…็ฝฎไปปไฝ•ๅ›พๅฑ‚

Pl3xMapEnabledEvent only running sometimes

No logs or errors to go along with it, why I'm coming here.
I'm using the following code, but it only seems to run 1/3 times.

Pl3xMap.api().getEventRegistry().register(new Pl3xMapStart());

@EventHandler public void onEnable(Pl3xMapEnabledEvent event) { }

Colors don't update

i changed the waxed exposed cut copper stairs to white and re rendered it but nothing changed

Deprecated com.destroystokyo.paper.event.brigadier.CommandRegisteredEvent warning

On startup I get the following error in my console.

[Pl3xMap]: "Pl3xMap v1.20.6-494" has registered a listener for com.destroystokyo.paper.event.brigadier.CommandRegisteredEvent on method "public void org.incendo.cloud.paper.PaperBrigadierListener.onCommandRegister(com.destroystokyo.paper.event.brigadier.CommandRegisteredEvent<com.destroystokyo.paper.brigadier.BukkitBrigadierCommandSource>)", but the event is Deprecated. "Server performance will be affected"; please notify the authors [granny, BillyGalbreath, JLyne].

Support LZ4 Compression Type

Changed region-file-compression to lz4 and was running the world optimize option. After that it appeared.

[Pl3xMap] [ERROR] Failed to scan world minecraft:overworld at region Point[x=11, z=5]
[08:39:31] [Pl3xMap-Renderer-0/INFO]: [STDERR]: java.lang.RuntimeException: java.io.IOException: Invalid compression type 4
[08:39:31] [Pl3xMap-Renderer-0/INFO]: [STDERR]: at net.pl3x.map.core.renderer.task.RegionScanTask.loadRegion(RegionScanTask.java:111)
[08:39:31] [Pl3xMap-Renderer-0/INFO]: [STDERR]: at net.pl3x.map.core.renderer.task.RegionScanTask.run(RegionScanTask.java:89)
[08:39:31] [Pl3xMap-Renderer-0/INFO]: [STDERR]: at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
[08:39:31] [Pl3xMap-Renderer-0/INFO]: [STDERR]: at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796)
[08:39:31] [Pl3xMap-Renderer-0/INFO]: [STDERR]: at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
[08:39:31] [Pl3xMap-Renderer-0/INFO]: [STDERR]: at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
[08:39:31] [Pl3xMap-Renderer-0/INFO]: [STDERR]: at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
[08:39:31] [Pl3xMap-Renderer-0/INFO]: [STDERR]: at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
[08:39:31] [Pl3xMap-Renderer-0/INFO]: [STDERR]: at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
[08:39:31] [Pl3xMap-Renderer-0/INFO]: [STDERR]: Caused by: java.io.IOException: Invalid compression type 4
[08:39:31] [Pl3xMap-Renderer-0/INFO]: [STDERR]: at net.pl3x.map.core.world.Region.loadChunk(Region.java:128)
[08:39:31] [Pl3xMap-Renderer-0/INFO]: [STDERR]: at net.pl3x.map.core.world.Region.loadChunks(Region.java:109)
[08:39:31] [Pl3xMap-Renderer-0/INFO]: [STDERR]: at net.pl3x.map.core.renderer.task.RegionScanTask.loadRegion(RegionScanTask.java:109)
[08:39:31] [Pl3xMap-Renderer-0/INFO]: [STDERR]: ... 8 more

Error when running on Paper 1.20.4

When running the server on Paper 1.20.4, the plugin fails to initialize with the following error message:

[15:08:39 ERROR]: Error occurred while enabling Pl3xMap v1.20.2-475 (Is it up to date?)
java.lang.NoSuchMethodError: 'net.minecraft.core.IRegistryCustom$Dimension net.minecraft.server.MinecraftServer.aU()'
	at net.pl3x.map.bukkit.Pl3xMapImpl.loadBlocks(Pl3xMapImpl.java:173) ~[Pl3xMap-1.20.2-475.jar:?]
	at net.pl3x.map.core.Pl3xMap.enable(Pl3xMap.java:220) ~[Pl3xMap-1.20.2-475.jar:?]
	at net.pl3x.map.bukkit.Pl3xMapImpl.enable(Pl3xMapImpl.java:76) ~[Pl3xMap-1.20.2-475.jar:?]
	at net.pl3x.map.bukkit.Pl3xMapBukkit.onEnable(Pl3xMapBukkit.java:70) ~[Pl3xMap-1.20.2-475.jar:?]
	at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:281) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
	at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:190) ~[paper-1.20.4.jar:git-Paper-338]
	at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:104) ~[paper-1.20.4.jar:git-Paper-338]
	at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:507) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.craftbukkit.v1_20_R3.CraftServer.enablePlugin(CraftServer.java:637) ~[paper-1.20.4.jar:git-Paper-338]
	at org.bukkit.craftbukkit.v1_20_R3.CraftServer.enablePlugins(CraftServer.java:548) ~[paper-1.20.4.jar:git-Paper-338]
	at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:673) ~[paper-1.20.4.jar:git-Paper-338]
	at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:433) ~[paper-1.20.4.jar:git-Paper-338]
	at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:308) ~[paper-1.20.4.jar:git-Paper-338]
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1132) ~[paper-1.20.4.jar:git-Paper-338]
	at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:321) ~[paper-1.20.4.jar:git-Paper-338]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]

Networked disk writes can cause server TPS dips

I'm storing the web tiles on a Ceph cluster over the network, and it's mostly good, but every once in a while there's a delay when writing/renaming a file. Because these operations are run synchronously with the main thread, it can cause severe dips in the TPS while waiting for the file write.
I'm not sure if there's a clean way to decouple the IO operations from the main thread, but I would definitely appreciate it if that could be done.

[Fabric 1.20] Map state doesn't update unless a shutdown occurs

Hi.

First, thank you @granny for taking over the Pl3xMap repository and providing us a space to reach out for support. Thank you to @BillyGalbreath for Pl3xMap and all of the work you've done to provide the community with such a stellar plugin.

The issue I'm submitting today is related to the map state not updating unless a shutdown occurs. Changes to the map, the fog of war, or anything related to map state, does not update unless I perform a full shutdown. A simple reload, or save, does not allow the map to update.

Server: Fabric 1.20
OS: Windows 8.1
Java Version: 21 LTS
Tunnel: I am using a vLan to allow access to the server and the map, so it's currently not on the Internet--but checking the map directly from the server does not update either.

User status and location updates in real time.

I noticed nearly identical issues with another plugin, Fastback. You can read my issue for that plugin if it can provide any insights. Fastback performs incremental backups of user and map data. All user data is updated regularly, but map data does not update unless I perform a full shutdown.

Based on the fact that other plugins are mirroring this issue with map state, I imagine that this is related to an issue with how plugins, like Pl3xMap, access map data. I need to eliminate Pl3xMap as the cause before I reach out to Fabric. Therefore, I am hoping someone from this community can lead me to what exactly occurs when Pl3xMap wants to read map data.

Is this a Fabric API issue? Complication from another plugin? Is it something more intrinsic to Minecraft? Is there a setting somewhere that needs to be enabled to allow Pl3xMap access to map data in real time? Permissions issue maybe?

Here are the only relevant logs that I could find:

[15:52:36] [Server thread/INFO]: [Pl3xMap] [WARN] Registering unknown vanilla block minecraft:suspicious_gravel
[15:52:36] [Server thread/INFO]: [Pl3xMap] [WARN] Registering unknown vanilla block minecraft:pitcher_crop
[15:52:36] [Server thread/INFO]: [Pl3xMap] [WARN] Registering unknown vanilla block minecraft:sniffer_egg
[15:52:36] [Server thread/INFO]: [Pl3xMap] [WARN] Registering unknown vanilla block minecraft:calibrated_sculk_sensor
[15:52:36] [Server thread/INFO]: [Pl3xMap] [WARN] Registering unknown vanilla block minecraft:pitcher_plant
[15:52:38] [Server thread/INFO]: [Pl3xMap] [INFO] Internal webserver running on 0.0.0.0:8080
[15:52:38] [Server thread/INFO]: [Pl3xMap] [INFO] Platform: fabric
[15:52:38] [Server thread/INFO]: [Pl3xMap] [INFO] Version: 1.20-443
[15:52:38] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 4208ms or 84 ticks behind
[16:52:38] [pool-13-thread-12/INFO]: Starting auto-backup
[16:52:38] [pool-13-thread-12/INFO]: Preparing local backup snapshots/<hash>/2023-10-25_16-52-38
[16:52:39] [pool-13-thread-12/INFO]: Disabling world save for 'git add'
[16:52:39] [pool-13-thread-12/INFO]: Adding 5 new or modified files to index
[16:52:39] [pool-13-thread-12/INFO]: World save re-enabled.
[16:52:39] [pool-13-thread-12/INFO]: Local backup complete.

Thank you for any insight you can provide!

IP based map links unclickable in chat

Clickable IP map links are no longer clickable in chat after switching from version 469 to 473. Tested on Paper and without any other plugins. used same config settings for both versions.

I'm getting an OOM using this software. What's going on?

No, there is no memory leak.

Yes, Pl3xMap uses as much ram as it can. That's by design.

What you both are seeing is the server using more ram than the server has to give it. This is due to misconfigurations of the heap allocations on your part.

Let's take Temmy's example since it's got actual numbers I can point at. He has a server with 20GB of physical ram. He's telling the MC server it can use 18GB of that by setting 18432MB as his Xmx parameter in the startup script. This leaves little to no room for the OS to operate on or the JVM to breathe (the JVM comes with overhead).

Ok, so this is all fine and dandy, because he also told the JVM to start up with only 256MB of heap. this is will below the max limit, so it starts up and is fine. Until something starts needing more heap, then the JVM will grow that 256MB until it reaches the Xmx cap you set at 18GB. Except, the JVM's been crunching heavily on some numbers (in this case, Pl3xMap), so the JVM overhead is rather high. Very probably more than 2GB of overhead. And we still havent thought about the OS, or other programs running on the machine, etc etc. All of a sudden the server has run out of ram before it can even allocate all the heap space you told it it could have.

Boom. OOM.

See, look for yourself. The physical ram has run out, and the JVM has only allocated 16GB out of the 18GB it was allowed to grab.

image

You'll see the same OOM almost instantly if you were to follow Aikar's advice on his blog post about JVM flags where he states to make sure Xms is the same value as Xmx. This is important, not only for his flags to operate properly, but to ensure the heap can and does get everything you tell it it can get.

Another thing you can do is lessen the burden on the JVM/heap by lowering the amount of threads Pl3xMap can use (its in the config.yml file). This will result in Pl3xMap needing less ram at one time to do what it needs to do. Since ya'll look to have only 4 cores, I recommend lowering the thread count to 1 for Pl3xMap.

And yet another thing you could do to lessen the burden on your heap is to turn on both GC options in Pl3xMap's config file. This will make the GC run way more aggressively, cleaning out old, dead objects much faster that letting the JVM do it on it's own.

So yeah. TLDR; There's no memory leak. Do the 3 things I suggest and you should be fine.

New command: `resume`

Hello,

Would you consider adding a command to resume the renderer?

I know there's already a pause command that handles both pausing and resuming, but sometimes that is not enough, and it's also a bit confusing.

Here is the scenario I'm in (TL;DR below):

I'm running a small private server with a Raspberry Pi 4, using the Pl3xmap plugin for its webmap feature. However, the map has grown to 6GB, and if I keep Pl3xmap running continuously, it can crash the server while updating. To avoid this, I manually pause and resume it, which works well but is a hassle. I want to create a (scheduled bash) script that automatically resumes it at night and pauses it again after a set time. Using the current two-in-one command would be unreliable as it can sometimes accidentally resume it instead of pausing, or vice-versa. So, separate commands would be preferable in this scenario.

TL;DR: The two-in-one command we currently have is unpredictable and unintuitive, and cannot be reliably used in automation. Separate commands would solve those issues.

@hmlendea

Warning in Console about gettin Texture of Player

Everything works fine even with this warning, but its spamming the console.

[01:52:53 WARN]: javax.imageio.IIOException: Can't get input stream from URL!
[01:52:53 WARN]: at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1407)
[01:52:53 WARN]: at Pl3xMap-1.20.4-477.jar//net.pl3x.map.core.player.PlayerTexture.run(PlayerTexture.java:76)
[01:52:53 WARN]: Caused by: java.net.ConnectException: Connection timed out: connect
[01:52:53 WARN]: at java.base/sun.nio.ch.Net.connect0(Native Method)
[01:52:53 WARN]: at java.base/sun.nio.ch.Net.connect(Net.java:589)
[01:52:53 WARN]: at java.base/sun.nio.ch.Net.connect(Net.java:578)
[01:52:53 WARN]: at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:583)
[01:52:53 WARN]: at java.base/java.net.Socket.connect(Socket.java:751)
[01:52:53 WARN]: at java.base/java.net.Socket.connect(Socket.java:686)
[01:52:53 WARN]: at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:183)
[01:52:53 WARN]: at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:531)
[01:52:53 WARN]: at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:636)
[01:52:53 WARN]: at java.base/sun.net.www.http.HttpClient.(HttpClient.java:280)
[01:52:53 WARN]: at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:386)
[01:52:53 WARN]: at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:408)
[01:52:53 WARN]: at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1304)
[01:52:53 WARN]: at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1237)
[01:52:53 WARN]: at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1123)
[01:52:53 WARN]: at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1052)
[01:52:53 WARN]: at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1675)
[01:52:53 WARN]: at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1599)
[01:52:53 WARN]: at java.base/java.net.URL.openStream(URL.java:1325)
[01:52:53 WARN]: at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1405)
[01:52:53 WARN]: ... 1 more

Add Support for BeautyQuests

Hi I wanted to ask if you could add support for BeautyQuests.
I have already asked BeautyQuests and was instructed to ask you if you could set this up on your end.

Here is the link to the original issue of BeautyQuests.

SkytAsul/BeautyQuests#303 (comment)

It would be great if you could set this up.

MySQL support (multiserver)

Hi! I use two servers with the plugin, I don't think it's possible to link them? (With SQL)
Here's an example:

image

Below the overworld, put nether and end (which are on my other server).

Thanks !

Not showing online players

Started new 1.20.6 server, running Spigot and plugin version Pl3xMap-1.20.6-495.jar. The map is rendering beautifully but it shows no players on line and no player icons. Checked configurations and player layer is set to show them.

web map rendering problem.

mods im using: pl3xmap, jjthunder to the max.
issue: not sure how to explain but it looks like some weird artifacts of some sort. can see them in the screenshot.
image

ingame generation of the world looks normal and doesnt have those lines.

Lots of errors in server console after update to 1.20.6

Ever since I updated my purpur server from 1.20.4 to 1.20.6 (and of course the Pl3xmap plugin) my server console gets overrun by errors.
The server works fine otherwise and the map seems to be usable despite the errors. Sadly they make it almost impossible for me to see any other console entrys.
The minecraft server is hosted on an ubuntu server using adoptium java. No crazy things are used on the server, just some minor plugins like timber, chestsort and the like. I pregenerated the world with chunky, but I dont think this could be an issue.

Pl3xmap Error 2
Pl3xmap Error 1

Suggestion: command for custom marker creation

I would like to quickly create markers on the map for bases, farms, etc but creating json files for these every time is tedious

An in-game command supplying co-ordinates, dimension, name, etc would be nice

Disabled dimensions automatically renders over time

Hi!

I disabled Nether and End dimensions to show on the map but over time renders queue both and execute a fullrender of them. Those dimensions are already pregenerated and are large (20K). How can I prevent it?

On the other hand, is there any option to set the render rate and to configure the render activators (player place/break a block...)

I'm using Pl3xMap-1.20.1-455 for Fabric.

Thanks!

@lordrius

InvocationTargetException when calling a pl3xmap event on a disabled plugin

Stacktrace
[05:43:06] [Server thread/INFO]: [HuskHomes] Disabling HuskHomes v4.5.5-092731a
[05:43:06] [Server thread/INFO]: [HuskHomes] Successfully disabled HuskHomes v4.5.5-092731a
[05:43:06] [Server thread/INFO]: [net.william278.huskhomes.libraries.hikari.HikariDataSource] HuskHomesHikariPool - Shutdown initiated...
[05:43:06] [Server thread/INFO]: [net.william278.huskhomes.libraries.hikari.HikariDataSource] HuskHomesHikariPool - Shutdown completed.
[05:43:06] [Server thread/INFO]: [Pl3xMap] Disabling Pl3xMap v1.20.4-479
[05:43:06] [Server thread/INFO]: [SIENA MAPA] [INFO] Servidor web interno parado
[05:43:06] [Server thread/WARN]: java.lang.reflect.InvocationTargetException
[05:43:06] [Server thread/WARN]: 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[05:43:06] [Server thread/WARN]: 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[05:43:06] [Server thread/WARN]: 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[05:43:06] [Server thread/WARN]: 	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
[05:43:06] [Server thread/WARN]: 	at Pl3xMap-1.20.4-479.jar//net.pl3x.map.core.event.RegisteredHandler.execute(RegisteredHandler.java:52)
[05:43:06] [Server thread/WARN]: 	at Pl3xMap-1.20.4-479.jar//net.pl3x.map.core.event.EventRegistry.callEvent(EventRegistry.java:37)
[05:43:06] [Server thread/WARN]: 	at Pl3xMap-1.20.4-479.jar//net.pl3x.map.core.registry.WorldRegistry.unregister(WorldRegistry.java:47)
[05:43:06] [Server thread/WARN]: 	at Pl3xMap-1.20.4-479.jar//net.pl3x.map.core.registry.WorldRegistry.unregister(WorldRegistry.java:33)
[05:43:06] [Server thread/WARN]: 	at java.base/java.util.concurrent.ConcurrentHashMap$KeySetView.forEach(ConcurrentHashMap.java:4706)
[05:43:06] [Server thread/WARN]: 	at java.base/java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1092)
[05:43:06] [Server thread/WARN]: 	at Pl3xMap-1.20.4-479.jar//net.pl3x.map.core.registry.Registry.unregister(Registry.java:59)
[05:43:06] [Server thread/WARN]: 	at Pl3xMap-1.20.4-479.jar//net.pl3x.map.core.Pl3xMap.disable(Pl3xMap.java:305)
[05:43:06] [Server thread/WARN]: 	at Pl3xMap-1.20.4-479.jar//net.pl3x.map.bukkit.Pl3xMapImpl.disable(Pl3xMapImpl.java:81)
[05:43:06] [Server thread/WARN]: 	at Pl3xMap-1.20.4-479.jar//net.pl3x.map.bukkit.Pl3xMapBukkit.onDisable(Pl3xMapBukkit.java:94)
[05:43:06] [Server thread/WARN]: 	at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:283)
[05:43:06] [Server thread/WARN]: 	at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.disablePlugin(PaperPluginInstanceManager.java:225)
[05:43:06] [Server thread/WARN]: 	at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.disablePlugins(PaperPluginInstanceManager.java:149)
[05:43:06] [Server thread/WARN]: 	at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.disablePlugins(PaperPluginManagerImpl.java:92)
[05:43:06] [Server thread/WARN]: 	at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:528)
[05:43:06] [Server thread/WARN]: 	at org.bukkit.craftbukkit.v1_20_R3.CraftServer.disablePlugins(CraftServer.java:582)
[05:43:06] [Server thread/WARN]: 	at net.minecraft.server.MinecraftServer.t(MinecraftServer.java:986)
[05:43:06] [Server thread/WARN]: 	at net.minecraft.server.dedicated.DedicatedServer.t(DedicatedServer.java:861)
[05:43:06] [Server thread/WARN]: 	at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1288)
[05:43:06] [Server thread/WARN]: 	at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:323)
[05:43:06] [Server thread/WARN]: 	at java.base/java.lang.Thread.run(Thread.java:840)
[05:43:06] [Server thread/WARN]: Caused by: java.lang.IllegalStateException: zip file closed
[05:43:06] [Server thread/WARN]: 	at java.base/java.util.zip.ZipFile.ensureOpen(ZipFile.java:840)
[05:43:06] [Server thread/WARN]: 	at java.base/java.util.zip.ZipFile.getEntry(ZipFile.java:339)
[05:43:06] [Server thread/WARN]: 	at java.base/java.util.jar.JarFile.getEntry(JarFile.java:517)
[05:43:06] [Server thread/WARN]: 	at java.base/java.util.jar.JarFile.getJarEntry(JarFile.java:472)
[05:43:06] [Server thread/WARN]: 	at io.papermc.paper.plugin.entrypoint.classloader.PaperSimplePluginClassLoader.findClass(PaperSimplePluginClassLoader.java:62)
[05:43:06] [Server thread/WARN]: 	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:592)
[05:43:06] [Server thread/WARN]: 	at io.papermc.paper.plugin.entrypoint.classloader.PaperPluginClassLoader.loadClass(PaperPluginClassLoader.java:114)
[05:43:06] [Server thread/WARN]: 	at io.papermc.paper.plugin.entrypoint.classloader.PaperPluginClassLoader.loadClass(PaperPluginClassLoader.java:103)
[05:43:06] [Server thread/WARN]: 	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
[05:43:06] [Server thread/WARN]: 	at HuskHomes-Paper-4.5.5-092731a.jar//net.william278.huskhomes.hook.Pl3xMapHook.onWorldUnloaded(Pl3xMapHook.java:166)
[05:43:06] [Server thread/WARN]: 	... 25 more

Failed to process layer pl3xmap_worldborderfor world (insert dimension here)

Sometimes while running the server dumps the following errors into console on 1.20.6, Pl3xMap version v1.20.6-494.

09:34:51[Pl3xMap]: [ERROR] Failed to process layer pl3xmap_worldborderfor world world
WARN09:34:51
java.util.ConcurrentModificationException
at java.base/java.util.ArrayList.forEach(ArrayList.java:1598)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.markers.JsonObjectWrapper.addProperty(JsonObjectWrapper.java:111)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.markers.marker.Polyline.toJson(Polyline.java:272)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.markers.marker.Polyline.toJson(Polyline.java:55)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.markers.JsonObjectWrapper.addProperty(JsonObjectWrapper.java:82)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.renderer.task.AbstractDataTask$Adapter.serialize(AbstractDataTask.java:106)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.renderer.task.AbstractDataTask$Adapter.serialize(AbstractDataTask.java:101)
at com.google.gson.internal.bind.TreeTypeAdapter.write(TreeTypeAdapter.java:88)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:70)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:97)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:61)
at com.google.gson.Gson.toJson(Gson.java:842)
at com.google.gson.Gson.toJson(Gson.java:812)
at com.google.gson.Gson.toJson(Gson.java:759)
at com.google.gson.Gson.toJson(Gson.java:736)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.renderer.task.UpdateMarkerData.lambda$parse$0(UpdateMarkerData.java:56)
at java.base/java.util.concurrent.ConcurrentHashMap$EntrySetView.forEach(ConcurrentHashMap.java:4875)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.renderer.task.UpdateMarkerData.parse(UpdateMarkerData.java:45)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.renderer.task.AbstractDataTask.lambda$run$0(AbstractDataTask.java:83)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
INFO09:58:11
[Pl3xMap]: [ERROR] Failed to process layer pl3xmap_worldborderfor world world_the_end
WARN09:58:11
java.util.ConcurrentModificationException
at java.base/java.util.ArrayList.forEach(ArrayList.java:1598)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.markers.JsonObjectWrapper.addProperty(JsonObjectWrapper.java:111)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.markers.marker.Polyline.toJson(Polyline.java:272)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.markers.marker.Polyline.toJson(Polyline.java:55)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.markers.JsonObjectWrapper.addProperty(JsonObjectWrapper.java:82)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.renderer.task.AbstractDataTask$Adapter.serialize(AbstractDataTask.java:106)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.renderer.task.AbstractDataTask$Adapter.serialize(AbstractDataTask.java:101)
at com.google.gson.internal.bind.TreeTypeAdapter.write(TreeTypeAdapter.java:88)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:70)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:97)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:61)
at com.google.gson.Gson.toJson(Gson.java:842)
at com.google.gson.Gson.toJson(Gson.java:812)
at com.google.gson.Gson.toJson(Gson.java:759)
at com.google.gson.Gson.toJson(Gson.java:736)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.renderer.task.UpdateMarkerData.lambda$parse$0(UpdateMarkerData.java:56)
at java.base/java.util.concurrent.ConcurrentHashMap$EntrySetView.forEach(ConcurrentHashMap.java:4875)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.renderer.task.UpdateMarkerData.parse(UpdateMarkerData.java:45)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.renderer.task.AbstractDataTask.lambda$run$0(AbstractDataTask.java:83)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
09:58:12
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
INFO10:04:59
[Pl3xMap]: [ERROR] Failed to process layer pl3xmap_worldborderfor world world_nether
WARN10:04:59
java.util.ConcurrentModificationException
at java.base/java.util.ArrayList.forEach(ArrayList.java:1598)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.markers.JsonObjectWrapper.addProperty(JsonObjectWrapper.java:111)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.markers.marker.Polyline.toJson(Polyline.java:272)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.markers.marker.Polyline.toJson(Polyline.java:55)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.markers.JsonObjectWrapper.addProperty(JsonObjectWrapper.java:82)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.renderer.task.AbstractDataTask$Adapter.serialize(AbstractDataTask.java:106)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.renderer.task.AbstractDataTask$Adapter.serialize(AbstractDataTask.java:101)
at com.google.gson.internal.bind.TreeTypeAdapter.write(TreeTypeAdapter.java:88)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:70)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:97)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:61)
at com.google.gson.Gson.toJson(Gson.java:842)
at com.google.gson.Gson.toJson(Gson.java:812)
at com.google.gson.Gson.toJson(Gson.java:759)
at com.google.gson.Gson.toJson(Gson.java:736)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.renderer.task.UpdateMarkerData.lambda$parse$0(UpdateMarkerData.java:56)
at java.base/java.util.concurrent.ConcurrentHashMap$EntrySetView.forEach(ConcurrentHashMap.java:4875)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.renderer.task.UpdateMarkerData.parse(UpdateMarkerData.java:45)
at Pl3xMap-1.20.6-494.jar//net.pl3x.map.core.renderer.task.AbstractDataTask.lambda$run$0(AbstractDataTask.java:83)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)

Random lag spikes with Pl3xMap errors

My server usually runs well, and the online map does too.
However, randomly, I get some Pl3xMap errors and lag spikes.
Below is the link for the relevant portion of a log (from when the lag starts to when the lag ends).
2024-04-06.log

Add support for FactionsUUID

I had to quit using Dynmap due to performance issues and switched to Pl3xMap. It's indeed a much better alternative; however, I'd love to see faction land on the web map.

This was possible with Dynmap & FactionsUUID, but Pl3xMap nor Pl3xMap-Claims have support for it.

Minimum calculated cps is 1024, which also breaks the eta

Lowest cps the status command will display is 1024 (I'm assuming 32x32 chunks, aka a region)
This is incorrect information for one, and for two, it also makes the eta incorrect

e.g. on my oracle cloud vps the average cps was 513, so the eta was basically half what it actually should've been

@Roan-V

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.