KovuTheHusky / dynmap-structures

A Bukkit plugin that shows your world's structures (such as Villages, Strongholds, and Pyramids) on Dynmap.
MIT License
20 stars 17 forks source link

Spigot 1.13.x support #13

Closed SlimeDog closed 5 years ago

SlimeDog commented 6 years ago

Specifications

MacOS High Sierra 10.13.6 latest Java 1.8.0_45-b14 Spigot 1.13.1 latest dynmap 3.0-beta1-b129 dynmap-structures 1.5.0

Expected Behavior

Structures should be displayed on Dynmap.

Actual Behavior

Structures are not displayed.

Steps to Reproduce the Problem

  1. Load dynmap and dynmap-structures.
  2. Configure dynmap-structures/config.yml to display all structures.
  3. Start dynmap.
KovuTheHusky commented 6 years ago

A version of dynmap-structures targeting Spigot/CB 1.13.x hasn't been released yet as there is no safe/recommended version of Spigot/CB 1.13.x out yet. If you really want to run on 1.13.x you could grab the latest build of dynmap-structures to match your 1.13.x versions of Spigot/CB and dynmap. If you have the same issue with that version please let me know!

Once md5 pushes a stable/recommended version of Spigot/CB 1.13.x I'll be pushing a version of dynmap-structures for 1.13.x and can update to that!

SlimeDog commented 6 years ago

Thank you. I did not (earlier) find links to the dev builds on Jenkins. That is all that is required for testing 1.13.x.

KovuTheHusky commented 6 years ago

No problem! I'll be making sure dynmap-structures works with each 1.13.x release Spigot/MC does. I haven't tested against the new alpha and beta releases of dynmap but I will end up doing that when 1.13.2 comes out.

SlimeDog commented 6 years ago

Spigot 1.13.1 dynmap-3.0-beta1-b129 dynmap-structures-1.5.1-b158

I still see no structures.

KovuTheHusky commented 6 years ago

Thank you for trying the latest build. I'll take a peek later today!

KovuTheHusky commented 6 years ago

I had originally tested on a world that was migrated from 1.12.x to 1.13.x and that's why I didn't have any issues myself.

Apparently structures generated in 1.13.x do not use the same *.dat structure files that have been used since forever ago.

I'll need to rewrite basically everything - hopefully I can get it done before 1.13.2 comes out and Spigot/MC has a safe build for people to use.

SlimeDog commented 6 years ago

Obviously, 1.13.1 cannot be used in production, but that is what test servers are for. :) I will test again as soon as updated dynmap-structures is available. Thanks.

SlimeDog commented 6 years ago

There are lots of new structures, also. AMIDST has it down, if you want to have a look.

https://github.com/toolbox4minecraft/amidst/releases

KovuTheHusky commented 6 years ago

Structures have been moved from their own files in the data directory into the chunk data in the region files. This comes with a few challenges moving forward with dynmap-structures. It's not really viable to scan for all structures on startup and with each file update.

Right now the plan is to keep track of which chunks & regions have been scanned (and not scan them again) and keep track of existing structures in those chunks & regions.

Adding support for the new structures shouldn't be an issue. I believe it will be as easy as it has been in the past.

I'm already working on everything but I'm not sure when it'll be done.

Thanks for reporting the issue - otherwise I wouldn't have noticed until Spigot/CB put out a recommended build and new structures from my existing world wouldn't have shown up.

SlimeDog commented 6 years ago

I wouldn't have noticed until Spigot/CB put out a recommended build and new structures from my existing world wouldn't have shown up.

Yep, that's what got me started (with the dev builds, but still...). Thanks for getting on it.

KovuTheHusky commented 5 years ago

I do have a working version for 1.13.x - kind of. It's using the built-in locate command because reading from the NBT data is too intensive now that it's stored in with the region files / chunk data.

The downside is that there's no good way to verify "was this structure actually placed in the world" using the locate command. Working through a few options for that.

It's certainly more complicated than the original plugin. I should have had all of this done by now but life comes at you fast.

SlimeDog commented 5 years ago

Cool! I run dynmap on a test server, to help with pre-builds and location scouting, so CPU is not an issue (for me; if it's running on production servers, that is certainly an issue).

I prefer the automated (read the NBT data) option, but you're the engineer. I'm not doing any coding :)

Torbikini commented 5 years ago

Any update on this? The Jenkins server was returning a 404 error. Also, not sure if you’re using this: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/World.html#locateNearestStructure-org.bukkit.Location-org.bukkit.StructureType-int-boolean-

KovuTheHusky commented 5 years ago

Yes, that's what's being used in what I had written in November. I will clean up what I have, push it, and release it - even if it's not exactly what I want as a finished product.

Torbikini commented 5 years ago

Sounds great! Thank you for the speedy response!

KovuTheHusky commented 5 years ago

Closed by 226bc57a06f2363eb93e9cd349b6e91a110afd04, hopefully. Give this release a try! At the moment it'll find nearby structures on chunk load (with a blacklist for already-checked chunks). The end goal (when I have more time) would be to have an initial full scan and then check on chunk create instead.

SlimeDog commented 5 years ago

Confirmed that nearby structures are found. Thanks for the update. I look forward to the end goal.