From 3a7c23be45e7e2583f7eb5a5d182b14030dcdd9c Mon Sep 17 00:00:00 2001 From: dordsor21 Date: Thu, 14 May 2020 22:10:09 +0100 Subject: [PATCH] Fix #443 Temp as it's performance-degrading, but works well enough for now --- .../fawe/bukkit/adapter/mc1_15/BukkitGetBlocks_1_15.java | 6 +++++- .../bukkit/adapter/mc1_15_2/BukkitGetBlocks_1_15_2.java | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/BukkitGetBlocks_1_15.java b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/BukkitGetBlocks_1_15.java index 21c5f48f7..c82e41521 100644 --- a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/BukkitGetBlocks_1_15.java +++ b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/BukkitGetBlocks_1_15.java @@ -75,6 +75,8 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { public Chunk nmsChunk; public WorldServer world; public int X, Z; + //This is (hopefully) a temp fix for random blocks returning the wrong biome. Static because it was seemingly using the wrong chunk to return the biome value. + private static final Object biomeLock = new Object(); public BukkitGetBlocks_1_15(World world, int X, int Z) { this(((CraftWorld) world).getHandle(), X, Z); @@ -106,7 +108,9 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { } else { base = index.getBiome(x >> 2, y >> 2, z >> 2); } - return base != null ? BukkitAdapter.adapt(CraftBlock.biomeBaseToBiome(base)) : null; + synchronized (biomeLock) { + return base != null ? BukkitAdapter.adapt(CraftBlock.biomeBaseToBiome(base)) : null; + } } @Override diff --git a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15_2/BukkitGetBlocks_1_15_2.java b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15_2/BukkitGetBlocks_1_15_2.java index efe33059b..92cedc21d 100644 --- a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15_2/BukkitGetBlocks_1_15_2.java +++ b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15_2/BukkitGetBlocks_1_15_2.java @@ -80,6 +80,8 @@ public class BukkitGetBlocks_1_15_2 extends CharGetBlocks { public Chunk nmsChunk; public WorldServer world; public int X, Z; + //This is (hopefully) a temp fix for random blocks returning the wrong biome. Static because it was seemingly using the wrong chunk to return the biome value. + private static final Object biomeLock = new Object(); public BukkitGetBlocks_1_15_2(World world, int X, int Z) { this(((CraftWorld) world).getHandle(), X, Z); @@ -111,7 +113,9 @@ public class BukkitGetBlocks_1_15_2 extends CharGetBlocks { } else { base = index.getBiome(x >> 2, y >> 2, z >> 2); } - return base != null ? BukkitAdapter.adapt(CraftBlock.biomeBaseToBiome(base)) : null; + synchronized (biomeLock) { + return base != null ? BukkitAdapter.adapt(CraftBlock.biomeBaseToBiome(base)) : null; + } } @Override