FastAsyncWorldEdit

FastAsyncWorldEdit

152k Downloads

Creating a schematic with biomes using `//lazycopy -b` results in wrong biomes

PierreSchwang opened this issue ยท 10 comments

commented

Server Implementation

Paper

Server Version

1.20.5/6

Describe the bug

When using //lazycopy -b for creating a schematic with biome data, the biome will be wrong.

The underlying WorldCopyClipboards getBiome(BlockVector3) method is called with relative coordinates, whereas getBlock is called using absolute coordinates. This results in the the relative coordinate being used as absolute coordinates for world access.

That is no issue with the actual clipboard (backed by e.g. DiskOptimizedClipboard) as those use a linear pattern and need to be called with relative coordinates.

To Reproduce

  1. select region
  2. //lazycopy -b
  3. //schem create <filename> / //schem create <filename> safe
  4. //schem load <filename>
  5. //paste -b

Expected behaviour

The biome should be retrieved from the region, not based of world 0;0

Checklist

commented

I tried using the version from the PR directly and I can still reproduce this issue...

ORIGIN CHUNK
image

PASTED CHUNK
image

My commands / Logs:

[01:10:09 INFO]: TechnicallyCoded issued server command: /mvtp antaria
[01:10:14 INFO]: TechnicallyCoded issued server command: /gmc
[01:10:19 INFO]: TechnicallyCoded issued server command: /tp 0 100 512
[01:10:19 INFO]: [TechnicallyCoded: Teleported TechnicallyCoded to 0.500000, 100.000000, 512.500000]
[01:10:23 INFO]: TechnicallyCoded issued server command: //chunk
[01:10:26 INFO]: TechnicallyCoded issued server command: //lazycopy -b
[01:10:32 INFO]: TechnicallyCoded issued server command: //schem save test -f
[01:10:32 INFO]: TechnicallyCoded saved /home/container/plugins/FastAsyncWorldEdit/schematics/test.schem
[01:10:35 INFO]: TechnicallyCoded issued server command: //cc
[01:10:38 INFO]: TechnicallyCoded issued server command: /mvtp tmp
[01:10:39 INFO]: TechnicallyCoded issued server command: /gmc
[01:11:02 INFO]: TechnicallyCoded issued server command: /tp ~ 100 ~
[01:11:02 INFO]: [TechnicallyCoded: Teleported TechnicallyCoded to -15.529150, 100.000000, 32.300000]
[01:11:18 INFO]: TechnicallyCoded issued server command: //schem load test
[01:11:23 INFO]: TechnicallyCoded issued server command: //paste -b

VERSION VERIFICATION

fawe version
[01:15:20 INFO]: FastAsyncWorldEdit-0
[01:15:20 INFO]: Authors: Empire92, MattBDev, IronApollo, dordsor21 and NotMyFault
[01:15:20 INFO]: Wiki: https://intellectualsites.github.io/fastasyncworldedit-documentation/
[01:15:20 INFO]: Discord: https://discord.gg/intellectualsites
about FastAsyncWorldEdit
[01:15:26 INFO]: FastAsyncWorldEdit version 2.10.1-SNAPSHOT
[01:15:26 INFO]: Blazingly fast world manipulation for builders, large networks and developers.
[01:15:26 INFO]: Website: https://www.spigotmc.org/resources/13932/
[01:15:26 INFO]: Authors: Empire92, MattBDev, IronApollo, dordsor21 and NotMyFault

I really don't think I missed anything..
image

commented

It's still a V2 schematic so will still only save the schematic from the bottom of the clipboard, check that that isn't happening

commented

I'm not sure I fully understood what you mean so I tried a few thing:

  • How would I force a v3 (I'm guessing) format? I tried //schem save test2 fawe -f, same results (see below)
  • I also tried just taking the top layer as seen below

My attempt to force newer FAWE schem types (no idea if this is remotely correct)

[09:28:41 INFO]: TechnicallyCoded issued server command: /mvtp antaria
[09:28:44 INFO]: TechnicallyCoded issued server command: /gmc
[09:28:47 INFO]: TechnicallyCoded issued server command: /tp 0 100 512
[09:28:47 INFO]: [TechnicallyCoded: Teleported TechnicallyCoded to 0.500000, 100.000000, 512.500000]
[09:28:47 INFO]: TechnicallyCoded issued server command: /tp 0 100 512
[09:28:47 INFO]: [TechnicallyCoded: Teleported TechnicallyCoded to 0.500000, 100.000000, 512.500000]
[09:28:51 INFO]: TechnicallyCoded issued server command: //wand
[09:29:01 INFO]: TechnicallyCoded issued server command: /tp 0 100 512
[09:29:01 INFO]: [TechnicallyCoded: Teleported TechnicallyCoded to 0.500000, 100.000000, 512.500000]
[09:29:02 INFO]: TechnicallyCoded issued server command: //copy (((I clear this mistake right after)))
[09:29:05 INFO]: TechnicallyCoded issued server command: //cc
[09:29:16 INFO]: TechnicallyCoded issued server command: //lazycopy -b
[09:29:25 INFO]: TechnicallyCoded issued server command: //schem save test2 fawe -f
[09:29:25 INFO]: TechnicallyCoded saved /home/container/plugins/FastAsyncWorldEdit/schematics/test2.schem
[09:29:32 INFO]: TechnicallyCoded issued server command: /mvtp tmp
[09:29:33 INFO]: TechnicallyCoded issued server command: //cc
[09:29:34 INFO]: TechnicallyCoded issued server command: /gmc
[09:29:47 INFO]: TechnicallyCoded issued server command: /tp ~ 100 ~
[09:29:47 INFO]: [TechnicallyCoded: Teleported TechnicallyCoded to -15.582235, 100.000000, 32.300000]
[09:29:54 INFO]: TechnicallyCoded issued server command: //paste -b

My attempt at taking only the top layer:
image

commented

You also need to remember that the Minecraft noise biomes will usually hide biomes if it's only one "thick". The best way to do it is to look into the schematic data with something like NBTExplorer

commented

I opened my test2.schem file, it's the one that's a thin slice. It does say that the version is 2, but since it's the thin top slice, it should limit the scope of problems related to 2D biome maps (at least if I understood correctly) and the only biome in the palette is "forest" which is neither "ocean" (fawe default I think), nor "plains" (voidgen default).

Maybe the NBT view can help us see where I'm going wrong...

image

commented

It's still working absolutely fine for me. Potentially it's something to do with allowed regions?

commented

Related to this option?
image

This is what it shows for both worlds (same command on both)
image

commented

Do you have any idea what I could be missing?

commented

Just tested and it won't be region restriction issues, but it works fine for both Pierre and me. It could be worth setting max-fails in your limit to zero, as forest is returned for biome type if there is a failure and the fail limit isn't reached

commented

Ok I'll look into that then. Would it print any additional stacktrace or info if it fails faster?