DimensionalDevelopment / JustEnoughIDs

Use the 1.13 chunk format in 1.12 to remove the block, item, and biome ID limits
MIT License
31 stars 33 forks source link

Incompatibility with WorldEdit-Forge #37

Closed SalmonSays closed 5 years ago

SalmonSays commented 5 years ago

This doesn't cause a hard crash, but the server console spits out a bunch of nasty looking errors while handling WorldEdit commands. The relevant bit from the errors is:

"Can't have a block ID above 4095 ('xxxx' given)" Where 'xxxx' is the number above 4095 for a modded block.

This happens when attempting to copy any group of blocks where at least one exceeds a block ID of 4095, which also prevents saving/importing schematics and generally using the mod.

There was an issue opened on github for NEID's along the same lines about 2 years ago that appears to have been fixed/closed on NEID's end, for what it's worth: https://github.com/fewizz/NotEnoughIDs/issues/35

Tested using the latest "worldedit-forge-mc1.12-6.1.8-dist.jar" (available here: https://minecraft.curseforge.com/projects/worldedit/files/2460570 ) and "jei_1.12.2-4.11.0.212.jar" against Forge 14.23.4.2749

If you want/need the full error logs, give me a heads up and I'll grab them for you.

ZombieHDGaming commented 5 years ago

Full log please.

SalmonSays commented 5 years ago

The client spits out "Please report this error: [See console] java.lang.reflect.InvocationTargetException: null"

and the server console dropped this https://hastebin.com/igidewohip.pl

ZombieHDGaming commented 5 years ago

No, I need the ENTIRE log. It's the only way to tell what's going wrong, because we do patch the number to work properly.

SalmonSays commented 5 years ago

Here's the "latest.log" file from the logs folder on the server, though it's worth noting that I didn't see the matching console error appear there on a cursory search.

https://www.dropbox.com/s/g0zdohoulzb1am8/latest.log?dl=0

ZombieHDGaming commented 5 years ago

Yeah, I don't see the error inside that log. I'll do testing, but I know we have a patch for WorldEdit that runs when the mod is included, so if it's not working, I may need to see why.

SalmonSays commented 5 years ago

If that turns out to not be of any use, I can try running a live instance of the console and copy/pasting its entire contents- I'm happy to help however I can from here.

Edit: After sifting through the live log and doing a cursory diff-check, I'm not sure there's anything there that you haven't already seen in the original two logs. Let me know if there's anything specific you could use from me though and I'll do my best to get it to you asap.

SalmonSays commented 5 years ago

I went ahead and dug around the WorldEdit Github, and the last forge-tagged version is 6.1. Based on the thread from that deleted comment I made the modification to "public static final int MAX_ID = 31999;", but on compiling discovered that it was built against Forge/MC version 1.8, which probably puts that repo at the May 28, 2015 CurseForge release date of WorldEdit 6.1 (worldedit-forge-mc1.8-6.1.jar).

The "Master" branch of WorldEdit did compile against a 1.12 release of Forge/MC, but it resulted in the same blocklimit issue. In this case, BaseBlock.java doesn't have a "public static final int MAX_ID =" field that I could modify and it appears to be labeled as WorldEdit v7.0.0 which as yet has no CurseForge release (the latest being "worldedit-forge-mc1.12-6.1.8-dist.jar" ).

I hopped into the IRC webchat for WorldEdit ( http://skq.me/irc/irc.esper.net/sk89q/ ) and had a chat with some devs, and they seemed surprised to hear about JEID in the first place, as they were used to asm transformers from NEID as opposed to the mixins implementation of JEID. They suggested that schematic files still don't support id maps because of a limitation of the format, but all the same I figure it'd be better to save a schematic and lose some blocks than not be able to use schematics at all.

Edit: Here's the contents of our IRC discussion so far, for what help it's worth- https://hastebin.com/ogamafazeb.coffeescript

SalmonSays commented 5 years ago

It looks like that's not entirely correct, there's a mapping tag that Schematica and Recurrent complex at the very least respect now in the schematic format. It's talked about here:

https://github.com/sk89q/WorldEdit/pull/325

Though it'd appear that WorldEdit v7.0.0 is moving forward with its own implementation of essentially the same feature?

SalmonSays commented 5 years ago

An early snapshot of WorldEdit v7 appears to be working correctly alongside JEIDs!

HydrogenC commented 5 years ago

An early snapshot of WorldEdit v7 appears to be working correctly alongside JEIDs!

Did you try to use block id like minecraft:grass instead of number IDs?

SalmonSays commented 5 years ago

I'm no expert on exactly what happens under the hood with regards to communication between JEID values past 4095 and WorldEdit, but my general understanding is that the former name scheme (minecraft:grass, etc) is standardized as of 1.12.2 for use by mods internally?

I still occasionally had problems with the v7 build not recognizing certain blocks during copy/paste operations and erroring out back in October, but it looks like the repo has been pretty active since then. No doubt I'll mess around with the latest build and edit this post if there's a significant change.

Here's the Master Branch download for WEv7 which is not officially released and very much in the "use at your own peril" category http://builds.enginehub.org/job/worldedit/last-successful?branch=master

And here's the v6 official release branch that I originally had trouble with, but has since updated as of Jan 1st offering a glimmer of hope for stable compat: https://minecraft.curseforge.com/projects/worldedit/files/2655056

SalmonSays commented 5 years ago

https://github.com/DimensionalDevelopment/JustEnoughIDs/blob/master/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBaseBlock.java

https://github.com/DimensionalDevelopment/JustEnoughIDs/blob/master/src/main/resources/mixins.jeid.modsupport.json#L9

Looking at these sections suggests that the mod-interaction support for stuff like WorldEdit is being applied to only clients and not servers/clients, which would likely explain a lot of these problematic interactions against WorldEdit 6.1.10 in a production environment. I'm reopening this ticket on the assumption that this turned out to actually be a JEID oversight after all.

ZombieHDGaming commented 5 years ago

Fixed in latest commits.

LemADEC commented 5 years ago

When can we expect a new published version?

Possemaster commented 5 years ago

So what version can I use for Sponge Forge on MC 1.12.2? I am lost in all the versions and all the branches. If I go the official route to get an experimental version where this issue is probably fixed I click on Spong Forge and come to a version with a download for MC 1.13 or Bukkit 7..0.0??????? I clicked on Sponge for MC 1.12.2. Do you understand why I am lost. I am clicking the internet for 1 hour now looking for a solution for this annoying "Can't have a block ID above 4095" issue

ghost commented 5 years ago

Going to add on that we need a new version released on curseforge with all of these fixes.