From de98bf81cd9fe909ef569f1367ffeb803058efa0 Mon Sep 17 00:00:00 2001
From: Phillipp Glanz
Date: Mon, 3 Apr 2023 12:21:38 +0200
Subject: [PATCH] Implement dirty workaround for get data from right ticking
region
---
.../fawe/v1_19_R3/PaperweightGetBlocks.java | 23 +++++++++++++++----
1 file changed, 18 insertions(+), 5 deletions(-)
diff --git a/worldedit-bukkit/folia-adapters/adapter-1_19_4/src/main/java/com/sk89q/worldedit/folia/adapter/impl/fawe/v1_19_R3/PaperweightGetBlocks.java b/worldedit-bukkit/folia-adapters/adapter-1_19_4/src/main/java/com/sk89q/worldedit/folia/adapter/impl/fawe/v1_19_R3/PaperweightGetBlocks.java
index 3c528cb58..2ca6537b1 100644
--- a/worldedit-bukkit/folia-adapters/adapter-1_19_4/src/main/java/com/sk89q/worldedit/folia/adapter/impl/fawe/v1_19_R3/PaperweightGetBlocks.java
+++ b/worldedit-bukkit/folia-adapters/adapter-1_19_4/src/main/java/com/sk89q/worldedit/folia/adapter/impl/fawe/v1_19_R3/PaperweightGetBlocks.java
@@ -12,6 +12,7 @@ import com.fastasyncworldedit.core.queue.IChunkSet;
import com.fastasyncworldedit.core.queue.implementation.QueueHandler;
import com.fastasyncworldedit.core.queue.implementation.blocks.CharGetBlocks;
import com.fastasyncworldedit.core.util.MathMan;
+import com.fastasyncworldedit.core.util.TaskManager;
import com.fastasyncworldedit.core.util.collection.AdaptedMap;
import com.google.common.base.Suppliers;
import com.sk89q.jnbt.CompoundTag;
@@ -19,11 +20,14 @@ import com.sk89q.jnbt.ListTag;
import com.sk89q.jnbt.StringTag;
import com.sk89q.jnbt.Tag;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
+import com.sk89q.worldedit.bukkit.BukkitWorld;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldedit.folia.adapter.impl.fawe.v1_19_R3.nbt.PaperweightLazyCompoundTag;
import com.sk89q.worldedit.internal.Constants;
import com.sk89q.worldedit.internal.util.LogManagerCompat;
import com.sk89q.worldedit.math.BlockVector3;
+import com.sk89q.worldedit.math.Vector3;
+import com.sk89q.worldedit.util.Location;
import com.sk89q.worldedit.world.biome.BiomeType;
import com.sk89q.worldedit.world.biome.BiomeTypes;
import com.sk89q.worldedit.world.block.BlockTypesCache;
@@ -57,6 +61,7 @@ import net.minecraft.world.level.chunk.PalettedContainerRO;
import net.minecraft.world.level.levelgen.Heightmap;
import net.minecraft.world.level.lighting.LevelLightEngine;
import org.apache.logging.log4j.Logger;
+import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_19_R3.CraftWorld;
import org.bukkit.craftbukkit.v1_19_R3.block.CraftBlock;
@@ -80,6 +85,7 @@ import java.util.concurrent.Semaphore;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.function.Function;
+import java.util.function.Supplier;
import java.util.stream.Collectors;
import static net.minecraft.core.registries.Registries.BIOME;
@@ -237,13 +243,20 @@ public class PaperweightGetBlocks extends CharGetBlocks implements BukkitGetBloc
@Override
public CompoundTag getTile(int x, int y, int z) {
- BlockEntity blockEntity = getChunk().getBlockEntity(new BlockPos((x & 15) + (
- chunkX << 4), y, (z & 15) + (
- chunkZ << 4)));
- if (blockEntity == null) {
+ Supplier entity = () -> {
+ var pos = new BlockPos((x & 15) + (
+ chunkX << 4), y, (z & 15) + (
+ chunkZ << 4));
+ return getChunk().getBlockEntity(pos);
+ };
+
+ if (entity == null) {
return null;
}
- return new PaperweightLazyCompoundTag(Suppliers.memoize(blockEntity::saveWithId));
+ return new PaperweightLazyCompoundTag(Suppliers.memoize(TaskManager.taskManager().syncAt(entity,
+ new Location(new BukkitWorld(getChunk().bukkitChunk.getWorld()), Vector3.at(x,y,z))
+ )::saveWithId));
+ // return new PaperweightLazyCompoundTag(Suppliers.memoize(blockEntity::saveWithId));
}
@Override