webbukkit / dynmap

A set of Minecraft mods that provide a real time web-based map system for various Minecraft server implementations.
https://www.reddit.com/r/Dynmap/
Apache License 2.0
2.06k stars 419 forks source link

Support for 1.13 (Spigot & Forge)? #2271

Closed smmmadden closed 5 years ago

smmmadden commented 6 years ago

Tried with today's spigot server build for 1.13 and started up my test server to see which plugins may be broken. 23:01:37 INFO]: [dynmap] Loading dynmap v3.0-SNAPSHOT-Dev201802140139 [23:01:37 INFO]: [dynmap] version=git-Spigot-ed1cec9-1c7adf7 (MC: 1.13) [23:01:37 ERROR]: [dynmap] Unable to find field temperature for net.minecraft.server.v1_13_R1.BiomeBase [23:01:37 ERROR]: [dynmap] Unable to find field humidity for net.minecraft.server.v1_13_R1.BiomeBase [23:01:37 ERROR]: [dynmap] Unable to find field y for net.minecraft.server.v1_13_R1.BiomeBase [23:01:37 INFO]: [dynmap] Unload queue not found - default to unload all chunks [23:01:37 INFO]: [dynmap] inhabitedTicks field not found - inhabited shader not functional [23:01:37 ERROR]: Error initializing dynmap - bukkit version incompatible! initializing dynmap v3.0-SNAPSHOT-Dev201802140139 (Is it up to date?) java.lang.IllegalArgumentException: Error initializing dynmap - bukkit version incompatible! at org.dynmap.bukkit.BukkitVersionHelperGeneric.(BukkitVersionHelperGeneric.java:157) ~[?:?] at org.dynmap.bukkit.BukkitVersionHelperCB.(BukkitVersionHelperCB.java:39) ~[?:?] at org.dynmap.bukkit.BukkitVersionHelper.getHelper(BukkitVersionHelper.java:42) ~[?:?] at org.dynmap.bukkit.DynmapPlugin.onLoad(DynmapPlugin.java:769) ~[?:?] at org.bukkit.craftbukkit.v1_13_R1.CraftServer.loadPlugins(CraftServer.java:318) [spigot-1.13-22-July-2018.jar:git-Spigot-ed1cec9-1c7adf7] at net.minecraft.server.v1_13_R1.DedicatedServer.init(DedicatedServer.java:213) [spigot-1.13-22-July-2018.jar:git-Spigot-ed1cec9-1c7adf7] at net.minecraft.server.v1_13_R1.MinecraftServer.run(MinecraftServer.java:686) [spigot-1.13-22-July-2018.jar:git-Spigot-ed1cec9-1c7adf7] at java.lang.Thread.run(Unknown Source) [?:1.8.0_181]

mikeprimm commented 6 years ago

Will be working on Spigot shortly - cannot work on Forge until there is a Forge drop to try to support :)

smmmadden commented 6 years ago

Sounds good - also nice to see you're around :-) I'm happy to help out testing any way I can.

dootbin commented 6 years ago

@mikeprimm thank you for all of your hard work!

ghost commented 6 years ago

Lovely! hope to see it soon!

dariasc commented 6 years ago

@mikeprimm Is there any way you could push your 1.13 changes so some other developers could PR?

1david25 commented 6 years ago

@Dariasc fork it and then fix it :)

dariasc commented 6 years ago

I mean if he already has some progress why redo it from scratch?

smmmadden commented 6 years ago

it seems apparent that know one here knows who @mikeprimm is or why there are periods of no updates and then there are some. Please, remember that he retired a few years ago but has agreed to periodically update Dynmap for users since its just too big for someone else to take on themselves. I appreciate what he's done and his continued passion for making it better over the years, which includes updating to new releases.

That said, dynmap has to know how to intrepret each of the blocks that is being rendered and Mojang has renamed many as well as removed the internal numeric id's in favor of namespaces. This is causing nearly every plugin written to be rewritten to support 1.13. It's the biggest release since the early days of 1.8 - so this WILL TAKE TIME and patience is needed. When it is ready, you'll know.

I manage over 750 plugins and mods as they get updated I update a spreadsheet showing their supported versions which you can get to here.

mikeprimm commented 6 years ago

OK - so let's get a couple of things straight: 1) The internal changes on 1.13 are easily the biggest since beta - this is going to be a big effort to do properly, and unlike the last big changes for 1.8 (with the addition of resource packs and JSON based models), these aren't optional or particularly deferrable. 2) This mod continues to support, and will continue to support, a whole lot more than 1.13, so any changes needed to support 1.13 will also need to be done in such a way as to allow continued support for (at least) 1.8.9, 1.9.4, 1.10.2, 1.11.2, and 1.12.2: if you happen to opt to contribute a PR, understand that anything accepted will need to be consistent with this support requirement. 3) I actually do have a proto of a quick port to get 1.13 working, but the ChunkSnapshot interfaces in the current 1.13 spigot perform atrociously - we're talking 10x or more the per tile render time of any other version (2+ seconds/tile, which isn't viable). This is largely due to the inefficiencies with mapping the new block data ID based chunks to legacy block IDs and metadata, so I'm probably going to need to rewrite much of this, possibly including submitting PRs to Spigot for a new ChunkSnapshot scheme (note: I wrote the original version of those interfaces back when I was on the Bukkit team....). In any case, I'll give a bit of time to trying to get the proto limping, but a proper supported version is going to not be done in days (particularly since I've actually got a job, family life, and such). 4) This mod is running on something around 10k servers right now, so I am NOT rushing anything out because some kids with nothing but time on their hands 'want it now' - it'll be available when it is ready, and not a minute sooner. If you are able to hack out a version for your server, knock yourself dead - this is an Apache license open source mod, so feel free to go 'fork yourself' and make a custom version for your own use - just don't represent it as a version that I support or endorse. 5) I really appreciate the positive support from nearly all of the community - you guys keep me coming back to keep the various mods and plugins I've done going. For folks that don't feel it is enough, please feel free to GFY - everything here is a gift of valuable time and effort, so either accept it graciously or go elsewhere to find someone willing to put up with you.

fichdlmaa commented 6 years ago

Only for Info ... [ All will be ready/complete, when it is ready/complete! - I hate "finals" which in real are "Public Beta's" (-> M$) ]

I'm Running Spigot 1.13pre with RedProtect 7.4.1 Build 111. It works fine as long as I don't use Dynmap v2.6-beta-1 When I add it to my plugins, RedProtect won't load too, 'til I remove DynMap again. For now (testing phase), that doesn't matter...

Let's see, when CraftBukkit and Spigot are final. You all have quite "a lot" of work not only because of the changed block model ... Good Luck!

FichdlMaa

killertunes commented 6 years ago

Thanks Mike for all that you do for us lowly server owners.

mikeprimm commented 6 years ago

Very long weekend put in on this project - completed a major refactor of the core code to prepare for supporting 1.13 properly, while continuing to support 1.8.8 through 1.12.2 as well. A truckload of changes in so far (see https://github.com/webbukkit/DynmapCore/compare/v3.0...v3.0-1.13_prep , https://github.com/webbukkit/dynmap/compare/v3.0...v3.0-1.13_prep and https://github.com/webbukkit/DynmapCoreAPI/compare/v3.0...v3.0-1.13_prep for the changes thus far) - I'll be starting on the 1.13 specific work in the evenings this week, and am hoping to have a pre-alpha for 1.13 in the next couple of days.

olegbul commented 6 years ago

Vivat Mike! We realized how much we were missing dynmap only when it stopped working. The entire world is now watching how you morph the lines, combine and divide classes, and of course squishing those ugly red buggers as soon as they have audacity to pull those little heads out of their bytie habitat. <3

mikeprimm commented 6 years ago

On the plus side, I just did an A/B performance test on the new pre-alpha code for 3.0 (the above changes in prep for 1.13+ support) versus the previous 3.0 alpha code on Spigot 1.12.2, and the improved abstractions coded to handle the big 1.13 changes haven't impacted performance much: only saw 3 seconds added to a 4 minute test world render. I'm pretty sure I can get those back (and more), but it's encouraging that it isn't going to hurt render speed.

ruyi3 commented 6 years ago

look forward to ^^

fichdlmaa commented 6 years ago

Thank you for your work mikeprimm & team.

mikeprimm commented 6 years ago

First Spigot 1.13 render from last night!

image

There is a bunch to do to finish mapping the old block definitions to the new (many blocks changed their internal name, so 'minecraft:grass' is now 'minecraft:grass_block', while others that were one block split into multiples - 'planks' vs "oak_planks", "spruce_planks", "birch_planks", "jungle_planks","acacia_planks","dark_oak_planks). I'm HOPING to have something late tonight to share with this thread (call it pre-alpha or dev builds). No promises on quality or stability, but something that might be worth having some other eyes on). ;

ruyi3 commented 6 years ago

excited, I want to try it. haha

smmmadden commented 6 years ago

it looks awesome Mike - looking forward to helping testing with it. :-) Nice work!!

fichdlmaa commented 6 years ago

Wow! +++ Real 1.13. You can look into water even on DynMap +++

mikeprimm commented 6 years ago

OK - so, still lots to do, but I know some of you brave souls are interested in doing some testing, so here we are:

http://dynmap.us/builds/dynmap-1.13_prep/dynmap-3.0-1.13_prep-HEAD.jar

This is a live link to where the latest build of the v3.0-1.13_prep branch I'm working on is publishing: the builds there are 'bleeding edge' - may or may not be working at any given moment, although I think the core code is now stable enough that I'll only be doing commits that 'work better' going forward (and will avoid doing commits of otherwise incomplete changes).

What doesn't work:

At this stage, I'd be interested in any reported FUNCTION problems with the build - does chat work, do the various map types work OK (despite the missing block definitions), does the mod crash the server, etc. Don't bother with "block X doesn't show on my map" at this point - that is known true of literally hundreds of blocks, and I'll be sure to let you guys know when I THINK that the new and existing block renders are thought to be complete. Once that is the case, I'll then be very interested in the 'block X is MIA' reports - just nothing to gain from it before then.

Note: This build SHOULD work correctly on Spigot 1.8.8, 1.9.4, 1.10.2, 1.11.2 and 1.12.2 also - if anyone wants to test it on those, as well, it would be welcome: for THOSE (and not 1.13), missing/incorrect block renders ARE interesting. Please report them!

mikeprimm commented 6 years ago

And, for the folks with enough sense to NOT run this just yet, here's a progress screen shot :)

image

smashedbotatos commented 6 years ago

This is amazing Mike. Thank you for everything you do and all your hard work. I have been using dynmap for a very long time. My server has been open and active since the alpha Halloween update when they added The Nether.

Can't wait to give this a shot on my 1.13 test server.

nprail commented 6 years ago

I ran the Dynamp snapshot on my 1.13 server. However, it doesn't look as good as @mikeprimm's screenshot... Looking forward to all the blocks getting fixed!

map

Thanks so much for your work on this @mikeprimm! 👏 👏 👏

MrZzaker commented 6 years ago

image Spigot 1.13 Render of custom map, it has more than 3 years. It suddenly stopped changing 2 hours ago but i still can see a progress on chat. Im alone on my server and it uses now 50% of 1 core and 100% 4GB ram, so something must be wrong. Thanks @mikeprimm for this great, huge plugin and keeping it up to date.

dadee971 commented 6 years ago

Hi,

Spigot: git-Spigot-1503de9-4487c1f (MC: 1.13) (Implementing API version 1.13-R0.1-SNAPSHOT) Dynmap: _dynmap-3.0-1.13prep-HEAD.jar

On server load i have many things in the logs: https://paste.drhack.net/?ad728de582a18443#BNspzJJH0KfGoCxDXxyZ455M4/R+axivGGIcgb5c4BY=

And some errors too: https://paste.drhack.net/?301e7050c6688199#Iy9Thv0eHT94RIGU2o65ro7ExVMDZXtUXND01r14pa4=

Bests regards

gerardvanschip commented 6 years ago

So far so good. Even the addon for GP and WG claims seems to work. Obviously ignoring the missing block errors.

screen shot 2018-08-10 at 12 17 32

dadee971 commented 6 years ago

Hi again, With the latest dynmap-3.0-1.13_prep-HEAD.jar i have less errors: https://paste.drhack.net/?49448e586f1179e4#WoUXCN0S/xFZTYwKuaHZyaYFaHASjAOdkLmXbRNAtZw=

I still havemany dynmap sentences in my logs as before: https://paste.drhack.net/?ad728de582a18443#BNspzJJH0KfGoCxDXxyZ455M4/R+axivGGIcgb5c4BY=

Bests regards.

mikeprimm commented 6 years ago

@dadee971 Thanks - appreciate the reports: for now, ignore the startup logging: these are debug things for me working the blocks, and really are just an alternate way of saying 'the blocks are missing'. I'll let you guys know when this sort of information is relevant - right now, hundreds of blocks are missing, and those messages will ebb and flow as I work through getting all of them mapped over the next few days. Once I say 'blocks are first pass complete', I'll be ready for feedback on missing blocks or missing/invalid texture error messages.

gerardvanschip commented 6 years ago

One super confusing thing. With 6 players online, 30 plugins and only 4gb of ram in seeing 14% ram usage and tps at 19. Normally doing a full render will murder my server.

pavelGR83 commented 6 years ago

Hello, the plugin works stably. Render doesn't crash the server. There was a question: will the Dynmap-WorldGuard plugin be developed? If Yes, I will be glad to test on my server. P. S. Sorry for my English (RU community)

souldin commented 6 years ago

So everything is looks good right now, the only issue im seeing is when rendering the flat map its runs but nothing is updating on the map. I can only see where i have walked. Not a complaint just a note for ya :) Keep up the good work.

optronomega commented 6 years ago

@souldin Have you done a full render of the world? If not that might be why it's not updating. /dynmap fullrender world (if world is the name). Otherwise, if you are talking about places you've never explored then ya it's only going to show where you've walked. You'll need to use other plugins to generate more of your world without exploring.

souldin commented 6 years ago

Ok so i downloaded Worldborder and ran a WB fill and then a dynmap render, it seems anywhere i walked before the WB fill ran has a black outline around it. Just a heads up as i know your still working on this. map

smashedbotatos commented 6 years ago

@souldin WorldBorder does not support 1.13. It is still using an older method of generating chunks and it will ruin your world. I would highly advise against using it to generate your world.

dootbin commented 6 years ago

World border is working with 1.13 // load the target chunk and generate it if necessary world.loadChunk(x, z, true); worldData.chunkExistsNow(x, z); https://gyazo.com/3e27cf34f2125477446d352dd50c4355

Where are you getting your information that it isn't @smashedbotatos

souldin commented 6 years ago

WB is working correctly with no issue and does work in 1.13. The issue that is happening is a glitch.

smashedbotatos commented 6 years ago

First hand experience on my spigot dev server. It will load, and it will work and not throw errors. However the chunks generated by world border are not quite right. Trees half missing and abnormal terrain.

Xayer commented 6 years ago

Same as above ^

mikeprimm commented 6 years ago

Not anything I can do about WB behavior with Spigot 1.13 - saying the chunks are there 'in game' is meaningless, since bringing your character to those chunks will cause them to be generated via the normal mechanisms, so it doesn't prove that they were generated by WB when you think they were. I'd suggest visiting some of those chunks directly, and then running a fullrender, or a radiusrender centered at the location of the missed chunks: if they render after you visit the site with a character, then the WB fill didn't actually generate them as you think it did. If this is the case, the error is either in Spigot or in WB - Dynmap specifically avoids ever triggering chunk generation, and doesn't know or care about generated chunks having been triggered by one means or another.

Knowing what I know about chunk generation, it is possible that there is something funky in Spigot 1.13 there - chunks classically are generated in two stages: one builds the chunk blocks (landscape), and the second populates the chunk with things like trees, plants, structures, and the like. The second stage generally doesn't happen until the chunk isn't the 'edge' of the world, since trees and such can extend from within the chunk to the adjacent chunks (e.g. leaves overhanging them). I do not know what the 1.13 world generation process is doing - haven't taken time to crawl into that - but it would not be surprising to see WB thinking those border chunks (generated but unpopulated) don't need to be generated/populated OR for Spigot to be reporting them as if they were fully generated and populated despite them not being so: such an error would have no impact on normal chunk generation behavior, but would trip up WB fill. If visiting the chunk in question with a character 'fixes' anything, I suspect we're looking at that sort of problem.

ghost commented 6 years ago

dynmap1 You guys are doing a great job. So far works perfectly on Spigot 1.13-R0.1-SNAPSHOT. Still missing some blocks but that is a known problem. I also found the problem that the word_nether won't show in 3d (surface). I don't know why and can't seem to see an error. Does somebody else have that some problem? Great job guys and keep up the good work!! ++++

smmmadden commented 6 years ago

Doing a fullrender on world_nether and world_the_end tonight and will post results.

smmmadden commented 6 years ago

Unfortunately, my flat and surface maps did not render for Nether or The_End's even though the server said it did. If it helps, I'm generated using: deftemplatesuffix: hires but I'll try low_boost_hi next and see if there is any difference (not expecting it to be). May be nothing, but I found it odd rendering the nether that the flat map is called "flat", but the surface map is called "nether". I would have expected to see "surface" right? image At maximum zoom in - all I saw was this, so I think it might just be related to blocks not yet updated. image

image The_End doesn't have any blocks rendered, so nothing to share on that one.

mikeprimm commented 6 years ago

OK - the newest dev builds (as of a few minutes ago) should have nearly everything as far as pre-existing 1.12 and earlier blocks, and a small number of 1.13 specific blocks. Not quite ready to head about missing blocks yet, but hopefully soon (as in 'later this weekend, or maybe Monday').

souldin commented 6 years ago

thanks for the update keep up the good work.

ghost commented 6 years ago

Maby a weird question. Can i access the dev build? If so how can i build the jar?

smmmadden commented 6 years ago

Thank you - and then there was color on the horizen sneaking out through the dark pits of the bottomless oceans! :-) image

bradfg commented 6 years ago

Amazing work on the updates, looking forward to all the 1.13 blocks. Keep up the good work!

mikeprimm commented 6 years ago

@cuperus The 'live' link to the latest dev build is here - http://dynmap.us/builds/dynmap-1.13_prep/dynmap-3.0-1.13_prep-HEAD.jar . This will update within about 15 minutes of any source code change I commit, so it is definitely 'bleeding edge' - if you get a bad build, just try to download another one later (just keep an eye on the commits to this repo to see if there is a reason to believe it's been update).

p47-6 commented 6 years ago

@souldin Setting the force parameter of wb fill (/wb [worldname] fill [freq] [pad] [force]) to true fixed it for me. image

image

(I know thats another world but thats the only two screenshots i have.)