AllTheMods / ATM-8

All the Mods 8
136 stars 32 forks source link

1.014- Buried treasure maps do not work #1134

Closed Unwaryseedy closed 10 months ago

Unwaryseedy commented 1 year ago

When you are holding a buried treasure map, they are blank (at least for me)

image

DevilMayCryIfrit commented 1 year ago

Not just treasure maps a find that most maps that spawn in chests have a high chance to lag the server and do not work too. I just been going around collecting quartz from the balloon dungeons and they nearly crash my game and the maps just say Working unknown map.

nmiell commented 1 year ago

the following error appears in the server logs when you pick up a treasure map:

[07.05 23:13:18] [Server] [asynclocator-1-thread-1/INFO] [br.as.AsyncLocatorMod/]: Async Locator -> Trying to locate TagKey[minecraft:worldgen/structure / minecraft:on_treasure_maps] in ServerLevel[world] around BlockPos{x=-623, y=51, z=1992} within 50 chunks [07.05 23:13:22] [Server] [asynclocator-1-thread-1/INFO] [br.as.AsyncLocatorMod/]: Async Locator -> No TagKey[minecraft:worldgen/structure / minecraft:on_treasure_maps] found (took 3,416ms) [07.05 23:13:22] [Server] [Server thread/INFO] [br.as.AsyncLocatorMod/]: Async Locator -> No location found - invalidating map stack [07.05 23:13:22] [Server] [Server thread/WARN] [br.as.AsyncLocatorMod/]: Async Locator -> Couldn't find item handler capability on chest LootrChestBlockEntity at BlockPos{x=-623, y=51, z=1992}

toruPuchuu commented 1 year ago

I have the same issue on ATM 8-1.0.18

toruPuchuu commented 1 year ago

So I ran 'locate minecraft:buried_treasure' after the first blank shipwreck treasure map and got that treasure. The second shipwreck map I got was not blank, but it pointed to the treasure I had already dug up...

abielaird commented 1 year ago

I have this problem too, anyone have a solution?

nmiell commented 1 year ago

Apparently this isn't actually a bug, just a weird consequence of how Async Locator works.

On unmodded vanilla Minecraft, the server just hangs for a while when you open a loot chest containing a treasure map as it searches for a buried treasure location to put in the map. If there isn't a buried treasure in range, it hangs for quite a long time and then eventually gives up and deletes the map from the loot chest you're attempting to open.

This isn't great for multiplayer, so Async Locator changes the buried treasure search to happen asynchronously in the background. So you get a blank map immediately while it's searching for a buried treasure and then when it finds one it replaces the empty map with the real map. This works because map items don't contain anything interesting in their NBT data, just the map ID number, so Async Locator can alter the map data corresponding to that map ID without having to figure out where you put the map item itself.

But the other consequence of this is that if Async Locator can't find a buried treasure location, the map stays blank forever. This is what's happening here -- we're finding loot chests that randomly rolled a buried treasure map, but there's no buried treasure in range of the loot chest we just opened, so there isn't anything for Async Locator to alter the map for and it stays blank.