From b7debce4d427612fe92b236bfc0986dd4ad3bd08 Mon Sep 17 00:00:00 2001 From: MattBDev <4009945+MattBDev@users.noreply.github.com> Date: Thu, 25 Jun 2020 19:56:10 -0400 Subject: [PATCH] 1.16.1 Prep work --- worldedit-bukkit/build.gradle.kts | 3 +- .../BlockMaterial_1_16_1.java} | 29 ++-- .../BukkitAdapter_1_16_1.java} | 55 +++---- .../BukkitGetBlocks_1_16_1.java} | 146 ++++++++---------- .../MapChunkUtil_1_16_1.java} | 14 +- .../nbt/LazyCompoundTag_1_16_1.java} | 20 +-- .../worldedit/bukkit/WorldEditPlugin.java | 2 - ...1_15_R1.java => FAWE_Spigot_v1_16_R1.java} | 50 +++--- .../fawe/object/brush/CopyPastaBrush.java | 3 +- 9 files changed, 146 insertions(+), 176 deletions(-) rename worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/{mc1_15/BlockMaterial_1_15.java => mc1_16_1/BlockMaterial_1_16_1.java} (79%) rename worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/{mc1_15/BukkitAdapter_1_15.java => mc1_16_1/BukkitAdapter_1_16_1.java} (86%) rename worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/{mc1_15/BukkitGetBlocks_1_15.java => mc1_16_1/BukkitGetBlocks_1_16_1.java} (86%) rename worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/{mc1_15/MapChunkUtil_1_15.java => mc1_16_1/MapChunkUtil_1_16_1.java} (76%) rename worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/{mc1_15/nbt/LazyCompoundTag_1_15.java => mc1_16_1/nbt/LazyCompoundTag_1_16_1.java} (88%) rename worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/{FAWE_Spigot_v1_15_R1.java => FAWE_Spigot_v1_16_R1.java} (91%) diff --git a/worldedit-bukkit/build.gradle.kts b/worldedit-bukkit/build.gradle.kts index 403a55709..305807b53 100644 --- a/worldedit-bukkit/build.gradle.kts +++ b/worldedit-bukkit/build.gradle.kts @@ -41,12 +41,13 @@ dependencies { "compile"("org.spigotmcv1_14_r1:spigotmcv1_14_r1:1_14_r1") "compile"("org.spigotmcv1_15_r1:spigotmcv1_15_r1:1_15_r1") "compile"("it.unimi.dsi:fastutil:8.2.1") - "api"("com.destroystokyo.paper:paper-api:1.15.2-R0.1-SNAPSHOT") { + "api"("com.destroystokyo.paper:paper-api:1.16.1-R0.1-SNAPSHOT") { exclude("junit", "junit") isTransitive = false } "compileOnly"("org.spigotmc:spigot:1.14.4-R0.1-SNAPSHOT") "compileOnly"("org.spigotmc:spigot:1.15.2-R0.1-SNAPSHOT") + "compileOnly"("org.spigotmc:spigot:1.16.1-R0.1-SNAPSHOT") "implementation"("io.papermc:paperlib:1.0.2") "compileOnly"("com.sk89q:dummypermscompat:1.10") "implementation"("org.apache.logging.log4j:log4j-slf4j-impl:2.8.1") diff --git a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/BlockMaterial_1_15.java b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_16_1/BlockMaterial_1_16_1.java similarity index 79% rename from worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/BlockMaterial_1_15.java rename to worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_16_1/BlockMaterial_1_16_1.java index 3a7c205ac..ef492dbdd 100644 --- a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/BlockMaterial_1_15.java +++ b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_16_1/BlockMaterial_1_16_1.java @@ -1,15 +1,11 @@ -package com.boydti.fawe.bukkit.adapter.mc1_15; +package com.boydti.fawe.bukkit.adapter.mc1_16_1; import com.sk89q.util.ReflectionUtil; import com.sk89q.worldedit.world.registry.BlockMaterial; -import net.minecraft.server.v1_15_R1.Block; -import net.minecraft.server.v1_15_R1.EnumPistonReaction; -import net.minecraft.server.v1_15_R1.IBlockData; -import net.minecraft.server.v1_15_R1.ITileEntity; -import net.minecraft.server.v1_15_R1.Material; -import org.bukkit.craftbukkit.v1_15_R1.block.data.CraftBlockData; +import net.minecraft.server.v1_16_R1.*; +import org.bukkit.craftbukkit.v1_16_R1.block.data.CraftBlockData; -public class BlockMaterial_1_15 implements BlockMaterial { +public class BlockMaterial_1_16_1 implements BlockMaterial { private final Block block; private final IBlockData defaultState; private final Material material; @@ -17,17 +13,17 @@ public class BlockMaterial_1_15 implements BlockMaterial { private final CraftBlockData craftBlockData; private final org.bukkit.Material craftMaterial; - public BlockMaterial_1_15(Block block) { + public BlockMaterial_1_16_1(Block block) { this(block, block.getBlockData()); } - public BlockMaterial_1_15(Block block, IBlockData defaultState) { + public BlockMaterial_1_16_1(Block block, IBlockData defaultState) { this.block = block; this.defaultState = defaultState; this.material = defaultState.getMaterial(); this.craftBlockData = CraftBlockData.fromData(defaultState); this.craftMaterial = craftBlockData.getMaterial(); - this.isTranslucent = !(boolean) ReflectionUtil.getField(Block.class, block, "v"); + this.isTranslucent = !(boolean) ReflectionUtil.getField(Block.class, block, "v"); //TODO Update Mapping for 1.16.1 } public Block getBlock() { @@ -78,7 +74,7 @@ public class BlockMaterial_1_15 implements BlockMaterial { @Override public float getHardness() { - return block.strength; + return craftBlockData.getState().strength; } @Override @@ -88,12 +84,12 @@ public class BlockMaterial_1_15 implements BlockMaterial { @Override public float getSlipperiness() { - return block.m(); + return block.getFrictionFactor(); } @Override public int getLightValue() { - return defaultState.h(); + return defaultState.f(); } @Override @@ -128,7 +124,8 @@ public class BlockMaterial_1_15 implements BlockMaterial { @Override public boolean isToolRequired() { - return !material.isAlwaysDestroyable(); + //TODO Removed in 1.16.1 Replacement not found. + return true; } @Override @@ -148,6 +145,6 @@ public class BlockMaterial_1_15 implements BlockMaterial { @Override public int getMapColor() { - return material.i().rgb; + return material.h().rgb; } } diff --git a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/BukkitAdapter_1_15.java b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_16_1/BukkitAdapter_1_16_1.java similarity index 86% rename from worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/BukkitAdapter_1_15.java rename to worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_16_1/BukkitAdapter_1_16_1.java index be791aa66..adab97743 100644 --- a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/BukkitAdapter_1_15.java +++ b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_16_1/BukkitAdapter_1_16_1.java @@ -1,4 +1,4 @@ -package com.boydti.fawe.bukkit.adapter.mc1_15; +package com.boydti.fawe.bukkit.adapter.mc1_16_1; import com.boydti.fawe.Fawe; import com.boydti.fawe.FaweCache; @@ -14,22 +14,9 @@ import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockTypesCache; import io.papermc.lib.PaperLib; import net.jpountz.util.UnsafeUtils; -import net.minecraft.server.v1_15_R1.Block; -import net.minecraft.server.v1_15_R1.Chunk; -import net.minecraft.server.v1_15_R1.ChunkCoordIntPair; -import net.minecraft.server.v1_15_R1.ChunkSection; -import net.minecraft.server.v1_15_R1.DataBits; -import net.minecraft.server.v1_15_R1.DataPalette; -import net.minecraft.server.v1_15_R1.DataPaletteBlock; -import net.minecraft.server.v1_15_R1.DataPaletteLinear; -import net.minecraft.server.v1_15_R1.GameProfileSerializer; -import net.minecraft.server.v1_15_R1.IBlockData; -import net.minecraft.server.v1_15_R1.PacketPlayOutLightUpdate; -import net.minecraft.server.v1_15_R1.PlayerChunk; -import net.minecraft.server.v1_15_R1.PlayerChunkMap; -import net.minecraft.server.v1_15_R1.World; -import org.bukkit.craftbukkit.v1_15_R1.CraftChunk; -import org.bukkit.craftbukkit.v1_15_R1.CraftWorld; +import net.minecraft.server.v1_16_R1.*; +import org.bukkit.craftbukkit.v1_16_R1.CraftChunk; +import org.bukkit.craftbukkit.v1_16_R1.CraftWorld; import sun.misc.Unsafe; import java.lang.invoke.MethodHandle; @@ -43,7 +30,7 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.locks.ReentrantLock; import java.util.function.Function; -public final class BukkitAdapter_1_15 extends NMSAdapter { +public final class BukkitAdapter_1_16_1 extends NMSAdapter { /* NMS fields */ @@ -60,6 +47,8 @@ public final class BukkitAdapter_1_15 extends NMSAdapter { private final static MethodHandle methodGetVisibleChunk; + public final static MethodHandle methodSetLightNibbleArray; + private static final int CHUNKSECTION_BASE; private static final int CHUNKSECTION_SHIFT; @@ -86,12 +75,14 @@ public final class BukkitAdapter_1_15 extends NMSAdapter { fieldDirtyBits = PlayerChunk.class.getDeclaredField("r"); fieldDirtyBits.setAccessible(true); - fieldTickingBlockCount.setAccessible(true); - Method declaredGetVisibleChunk = PlayerChunkMap.class.getDeclaredMethod("getVisibleChunk", long.class); declaredGetVisibleChunk.setAccessible(true); methodGetVisibleChunk = MethodHandles.lookup().unreflect(declaredGetVisibleChunk); + Method declaredSetLightNibbleArray = LightEngineStorage.class.getDeclaredMethod("a", long.class, NibbleArray.class); + declaredSetLightNibbleArray.setAccessible(true); + methodSetLightNibbleArray = MethodHandles.lookup().unreflect(declaredSetLightNibbleArray); + Field tmp = DataPaletteBlock.class.getDeclaredField("j"); ReflectionUtils.setAccessibleNonFinal(tmp); fieldLock = tmp; @@ -120,6 +111,7 @@ public final class BukkitAdapter_1_15 extends NMSAdapter { } protected static DelegateLock applyLock(ChunkSection section) { + //todo there has to be a better way to do this. Maybe using a() in DataPaletteBlock which acquires the lock in NMS? try { synchronized (section) { DataPaletteBlock blocks = section.getBlocks(); @@ -159,7 +151,7 @@ public final class BukkitAdapter_1_15 extends NMSAdapter { return TaskManager.IMP.sync(() -> nmsWorld.getChunkAt(X, Z)); } - public static PlayerChunk getPlayerChunk(net.minecraft.server.v1_15_R1.WorldServer nmsWorld, final int cx, final int cz) { + public static PlayerChunk getPlayerChunk(WorldServer nmsWorld, final int cx, final int cz) { PlayerChunkMap chunkMap = nmsWorld.getChunkProvider().playerChunkMap; try { return (PlayerChunk)methodGetVisibleChunk.invoke(chunkMap, ChunkCoordIntPair.pair(cx, cz)); @@ -168,7 +160,7 @@ public final class BukkitAdapter_1_15 extends NMSAdapter { } } - public static void sendChunk(net.minecraft.server.v1_15_R1.WorldServer nmsWorld, int X, int Z, int mask, boolean lighting) { + public static void sendChunk(WorldServer nmsWorld, int X, int Z, int mask, boolean lighting) { PlayerChunk playerChunk = getPlayerChunk(nmsWorld, X, Z); if (playerChunk == null) { return; @@ -227,9 +219,11 @@ public final class BukkitAdapter_1_15 extends NMSAdapter { Map ticking_blocks = new HashMap<>(); int air; if (get == null) { - air = createPalette(blockToPalette, paletteToBlock, blocksCopy, num_palette_buffer, set, ticking_blocks, fastmode); + air = createPalette(blockToPalette, paletteToBlock, blocksCopy, num_palette_buffer, + set, ticking_blocks, fastmode); } else { - air = createPalette(layer, blockToPalette, paletteToBlock, blocksCopy, num_palette_buffer, get, set, ticking_blocks, fastmode); + air = createPalette(layer, blockToPalette, paletteToBlock, blocksCopy, + num_palette_buffer, get, set, ticking_blocks, fastmode); } int num_palette = num_palette_buffer[0]; // BlockStates @@ -257,14 +251,14 @@ public final class BukkitAdapter_1_15 extends NMSAdapter { final DataBits nmsBits = new DataBits(bitsPerEntry, 4096, bits); final DataPalette palette; // palette = new DataPaletteHash<>(Block.REGISTRY_ID, bitsPerEntry, dataPaletteBlocks, GameProfileSerializer::d, GameProfileSerializer::a); - palette = new DataPaletteLinear<>(Block.REGISTRY_ID, bitsPerEntry, dataPaletteBlocks, GameProfileSerializer::d); + palette = new DataPaletteLinear<>(Block.REGISTRY_ID, bitsPerEntry, dataPaletteBlocks, GameProfileSerializer::c); // set palette for (int i = 0; i < num_palette; i++) { final int ordinal = paletteToBlock[i]; blockToPalette[ordinal] = Integer.MAX_VALUE; final BlockState state = BlockTypesCache.states[ordinal]; - final IBlockData ibd = ((BlockMaterial_1_15) state.getMaterial()).getState(); + final IBlockData ibd = ((BlockMaterial_1_16_1) state.getMaterial()).getState(); palette.a(ibd); } try { @@ -272,10 +266,11 @@ public final class BukkitAdapter_1_15 extends NMSAdapter { fieldPalette.set(dataPaletteBlocks, palette); fieldSize.set(dataPaletteBlocks, bitsPerEntry); setCount(ticking_blocks.size(), 4096 - air, section); - ticking_blocks.forEach((pos, ordinal) -> { - section.setType(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ(), - Block.getByCombinedId(ordinal)); - }); + if (!fastmode) { + ticking_blocks.forEach((pos, ordinal) -> section + .setType(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ(), + Block.getByCombinedId(ordinal))); + } } catch (final IllegalAccessException | NoSuchFieldException e) { throw new RuntimeException(e); } 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_16_1/BukkitGetBlocks_1_16_1.java similarity index 86% rename from worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/BukkitGetBlocks_1_15.java rename to worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_16_1/BukkitGetBlocks_1_16_1.java index c9fbca585..61940e1fc 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_16_1/BukkitGetBlocks_1_16_1.java @@ -1,6 +1,4 @@ -package com.boydti.fawe.bukkit.adapter.mc1_15; - -import static org.slf4j.LoggerFactory.getLogger; +package com.boydti.fawe.bukkit.adapter.mc1_16_1; import com.boydti.fawe.Fawe; import com.boydti.fawe.FaweCache; @@ -9,71 +7,47 @@ import com.boydti.fawe.beta.implementation.blocks.CharBlocks; import com.boydti.fawe.beta.implementation.blocks.CharGetBlocks; import com.boydti.fawe.beta.implementation.queue.QueueHandler; import com.boydti.fawe.bukkit.adapter.DelegateLock; -import com.boydti.fawe.bukkit.adapter.mc1_15.nbt.LazyCompoundTag_1_15; +import com.boydti.fawe.bukkit.adapter.mc1_16_1.nbt.LazyCompoundTag_1_16_1; import com.boydti.fawe.config.Settings; import com.boydti.fawe.object.collection.AdaptedMap; import com.boydti.fawe.object.collection.BitArray; import com.google.common.base.Suppliers; import com.google.common.collect.Iterables; -import com.sk89q.jnbt.CompoundTag; -import com.sk89q.jnbt.ListTag; -import com.sk89q.jnbt.LongTag; -import com.sk89q.jnbt.StringTag; import com.sk89q.jnbt.Tag; +import com.sk89q.jnbt.*; import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.bukkit.WorldEditPlugin; import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter; -import com.sk89q.worldedit.bukkit.adapter.impl.FAWE_Spigot_v1_15_R1; +import com.sk89q.worldedit.bukkit.adapter.impl.FAWE_Spigot_v1_16_R1; import com.sk89q.worldedit.internal.Constants; import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.block.BlockTypes; -import java.util.AbstractSet; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.HashMap; -import java.util.Set; -import java.util.UUID; +import net.minecraft.server.v1_16_R1.*; +import org.bukkit.World; +import org.bukkit.block.Biome; +import org.bukkit.craftbukkit.v1_16_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_16_R1.block.CraftBlock; +import org.bukkit.event.entity.CreatureSpawnEvent; +import org.jetbrains.annotations.NotNull; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.annotation.Nullable; +import java.util.*; import java.util.concurrent.Callable; import java.util.concurrent.Future; import java.util.function.Function; -import java.util.stream.Collectors; -import java.util.stream.StreamSupport; -import net.minecraft.server.v1_15_R1.BiomeBase; -import net.minecraft.server.v1_15_R1.BiomeStorage; -import net.minecraft.server.v1_15_R1.BlockPosition; -import net.minecraft.server.v1_15_R1.Chunk; -import net.minecraft.server.v1_15_R1.ChunkSection; -import net.minecraft.server.v1_15_R1.DataBits; -import net.minecraft.server.v1_15_R1.DataPalette; -import net.minecraft.server.v1_15_R1.DataPaletteBlock; -import net.minecraft.server.v1_15_R1.DataPaletteHash; -import net.minecraft.server.v1_15_R1.DataPaletteLinear; -import net.minecraft.server.v1_15_R1.Entity; -import net.minecraft.server.v1_15_R1.EntityTypes; -import net.minecraft.server.v1_15_R1.EnumSkyBlock; -import net.minecraft.server.v1_15_R1.IBlockData; -import net.minecraft.server.v1_15_R1.LightEngineThreaded; -import net.minecraft.server.v1_15_R1.NBTTagCompound; -import net.minecraft.server.v1_15_R1.NBTTagInt; -import net.minecraft.server.v1_15_R1.NibbleArray; -import net.minecraft.server.v1_15_R1.SectionPosition; -import net.minecraft.server.v1_15_R1.TileEntity; -import net.minecraft.server.v1_15_R1.WorldServer; -import org.bukkit.World; -import org.bukkit.block.Biome; -import org.bukkit.craftbukkit.v1_15_R1.CraftWorld; -import org.bukkit.craftbukkit.v1_15_R1.block.CraftBlock; -import org.bukkit.event.entity.CreatureSpawnEvent; -import org.jetbrains.annotations.NotNull; -public class BukkitGetBlocks_1_15 extends CharGetBlocks { +import static org.slf4j.LoggerFactory.getLogger; + +public class BukkitGetBlocks_1_16_1 extends CharGetBlocks { + + private static final Logger log = LoggerFactory.getLogger( + BukkitGetBlocks_1_16_1.class); + private static final Function posNms2We = v -> BlockVector3.at(v.getX(), v.getY(), v.getZ()); - private final static Function nmsTile2We = tileEntity -> new LazyCompoundTag_1_15(Suppliers.memoize(() -> tileEntity.save(new NBTTagCompound()))); + private final static Function nmsTile2We = tileEntity -> new LazyCompoundTag_1_16_1(Suppliers.memoize(() -> tileEntity.save(new NBTTagCompound()))); public ChunkSection[] sections; public Chunk nmsChunk; public WorldServer world; @@ -81,11 +55,11 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { public NibbleArray[] blockLight = new NibbleArray[16]; public NibbleArray[] skyLight = new NibbleArray[16]; - public BukkitGetBlocks_1_15(World world, int X, int Z) { + public BukkitGetBlocks_1_16_1(World world, int X, int Z) { this(((CraftWorld) world).getHandle(), X, Z); } - public BukkitGetBlocks_1_15(WorldServer world, int X, int Z) { + public BukkitGetBlocks_1_16_1(WorldServer world, int X, int Z) { this.world = world; this.X = X; this.Z = Z; @@ -120,7 +94,7 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { if (tileEntity == null) { return null; } - return new LazyCompoundTag_1_15(Suppliers.memoize(() -> tileEntity.save(new NBTTagCompound()))); + return new LazyCompoundTag_1_16_1(Suppliers.memoize(() -> tileEntity.save(new NBTTagCompound()))); } @Override @@ -219,19 +193,21 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { @NotNull @Override public Iterator iterator() { - Iterable result = StreamSupport - .stream(Iterables.concat(slices).spliterator(), false).map(input -> { - BukkitImplAdapter adapter = WorldEditPlugin.getInstance() - .getBukkitImplAdapter(); + Iterable result = Iterables.transform(Iterables.concat(slices), new com.google.common.base.Function() { + @Nullable + @Override + public CompoundTag apply(@Nullable Entity input) { + BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter(); NBTTagCompound tag = new NBTTagCompound(); return (CompoundTag) adapter.toNative(input.save(tag)); - }).collect(Collectors.toList()); + } + }); return result.iterator(); } }; } - private void updateGet(BukkitGetBlocks_1_15 get, Chunk nmsChunk, ChunkSection[] sections, ChunkSection section, char[] arr, int layer) { + private void updateGet(BukkitGetBlocks_1_16_1 get, Chunk nmsChunk, ChunkSection[] sections, ChunkSection section, char[] arr, int layer) { synchronized (get) { if (this.nmsChunk != nmsChunk) { this.nmsChunk = nmsChunk; @@ -242,7 +218,7 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { this.sections = sections.clone(); } if (this.sections[layer] != section) { - this.sections[layer] = section; + this.sections[layer] = new ChunkSection[]{section}.clone()[0]; } this.blocks[layer] = arr; } @@ -254,7 +230,7 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { } public Chunk ensureLoaded(net.minecraft.server.v1_15_R1.World nmsWorld, int X, int Z) { - return BukkitAdapter_1_15.ensureLoaded(nmsWorld, X, Z); + return BukkitAdapter_1_16_1.ensureLoaded(nmsWorld, X, Z); } @Override @@ -266,6 +242,7 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { // Remove existing tiles { + // Create a copy so that we can remove blocks Map tiles = new HashMap<>(nmsChunk.getTileEntities()); if (!tiles.isEmpty()) { for (Map.Entry entry : tiles.entrySet()) { @@ -277,7 +254,9 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { if (!set.hasSection(layer)) { continue; } - if (set.getBlock(lx, ly, lz).getOrdinal() != 0) { + + int ordinal = set.getBlock(lx, ly, lz).getOrdinal(); + if (ordinal != 0) { TileEntity tile = entry.getValue(); nmsChunk.removeTileEntity(tile.getPosition()); } @@ -290,7 +269,9 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { ChunkSection[] sections = nmsChunk.getSections(); for (int layer = 0; layer < 16; layer++) { - if (!set.hasSection(layer)) continue; + if (!set.hasSection(layer)){ + continue; + } bitMask |= 1 << layer; @@ -298,8 +279,8 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { ChunkSection newSection; ChunkSection existingSection = sections[layer]; if (existingSection == null) { - newSection = BukkitAdapter_1_15.newChunkSection(layer, setArr, fastmode); - if (BukkitAdapter_1_15.setSectionAtomic(sections, null, newSection, layer)) { + newSection = BukkitAdapter_1_16_1.newChunkSection(layer, setArr, fastmode); + if (BukkitAdapter_1_16_1.setSectionAtomic(sections, null, newSection, layer)) { updateGet(this, nmsChunk, sections, newSection, setArr, layer); continue; } else { @@ -310,11 +291,11 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { } } } + BukkitAdapter_1_16_1.fieldTickingBlockCount.set(existingSection, (short) 0); //ensure that the server doesn't try to tick the chunksection while we're editing it. - BukkitAdapter_1_15.fieldTickingBlockCount.set(existingSection, (short) 0); + DelegateLock lock = BukkitAdapter_1_16_1.applyLock(existingSection); - DelegateLock lock = BukkitAdapter_1_15.applyLock(existingSection); synchronized (this) { synchronized (lock) { lock.untilFree(); @@ -330,8 +311,10 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { } else if (lock.isModified()) { this.reset(layer); } - newSection = BukkitAdapter_1_15.newChunkSection(layer, this::load, setArr, fastmode); - if (!BukkitAdapter_1_15.setSectionAtomic(sections, existingSection, newSection, layer)) { + newSection = BukkitAdapter_1_16_1 + .newChunkSection(layer, this::load, setArr, fastmode); + if (!BukkitAdapter_1_16_1 + .setSectionAtomic(sections, existingSection, newSection, layer)) { System.out.println("Failed to set chunk section:" + X + "," + Z + " layer: " + layer); continue; } else { @@ -421,7 +404,8 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { final ListTag posTag = (ListTag) entityTagMap.get("Pos"); final ListTag rotTag = (ListTag) entityTagMap.get("Rotation"); if (idTag == null || posTag == null || rotTag == null) { - getLogger(BukkitGetBlocks_1_15.class).debug("Unknown entity tag: " + nativeTag); + getLogger( + BukkitGetBlocks_1_16_1.class).debug("Unknown entity tag: " + nativeTag); continue; } final double x = posTag.getDouble(0); @@ -500,7 +484,7 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { nmsChunk.mustNotSave = false; nmsChunk.markDirty(); // send to player - BukkitAdapter_1_15.sendChunk(nmsWorld, X, Z, finalMask, finalLightUpdate); + BukkitAdapter_1_16_1.sendChunk(nmsWorld, X, Z, finalMask, finalLightUpdate); if (finalizer != null) finalizer.run(); }; } @@ -554,31 +538,27 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { if (data == null || data == FaweCache.IMP.EMPTY_CHAR_4096) { data = new char[4096]; } - DelegateLock lock = BukkitAdapter_1_15.applyLock(section); + DelegateLock lock = BukkitAdapter_1_16_1.applyLock(section); synchronized (lock) { lock.untilFree(); lock.setModified(false); // Efficiently convert ChunkSection to raw data try { - FAWE_Spigot_v1_15_R1 adapter = ((FAWE_Spigot_v1_15_R1) WorldEditPlugin.getInstance().getBukkitImplAdapter()); + FAWE_Spigot_v1_16_R1 adapter = ((FAWE_Spigot_v1_16_R1) WorldEditPlugin.getInstance().getBukkitImplAdapter()); final DataPaletteBlock blocks = section.getBlocks(); - final DataBits bits = (DataBits) BukkitAdapter_1_15.fieldBits.get(blocks); - final DataPalette palette = (DataPalette) BukkitAdapter_1_15.fieldPalette.get(blocks); + final DataBits bits = (DataBits) BukkitAdapter_1_16_1.fieldBits.get(blocks); + final DataPalette palette = (DataPalette) BukkitAdapter_1_16_1.fieldPalette.get(blocks); - //getBits() final int bitsPerEntry = bits.c(); - //getRaw() final long[] blockStates = bits.a(); new BitArray(bitsPerEntry, 4096, blockStates).toRaw(data); int num_palette; if (palette instanceof DataPaletteLinear) { - //Get the size of the palette num_palette = ((DataPaletteLinear) palette).b(); } else if (palette instanceof DataPaletteHash) { - //Get the size of the palette num_palette = ((DataPaletteHash) palette).b(); } else { num_palette = 0; @@ -590,7 +570,6 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { char ordinal = paletteToBlockChars[paletteVal]; if (ordinal == Character.MAX_VALUE) { paletteToBlockInts[num_palette++] = paletteVal; - //palette.a(Object) is palette.idFor(Object) IBlockData ibd = palette.a(data[i]); if (ibd == null) { ordinal = BlockTypes.AIR.getDefaultState().getOrdinalChar(); @@ -614,7 +593,6 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { try { if (num_palette != 1) { for (int i = 0; i < num_palette; i++) { - //palette.a(Object) is palette.idFor(Object) char ordinal = ordinal(palette.a(i), adapter); paletteToOrdinal[i] = ordinal; } @@ -644,7 +622,7 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { } } - private final char ordinal(IBlockData ibd, FAWE_Spigot_v1_15_R1 adapter) { + private final char ordinal(IBlockData ibd, FAWE_Spigot_v1_16_R1 adapter) { if (ibd == null) { return BlockTypes.AIR.getDefaultState().getOrdinalChar(); } else { @@ -705,6 +683,8 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { @Override public boolean trim(boolean aggressive) { + skyLight = new NibbleArray[16]; + blockLight = new NibbleArray[16]; if (aggressive) { sections = null; nmsChunk = null; @@ -718,7 +698,7 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { try { final DataPaletteBlock blocksExisting = existing.getBlocks(); - final DataPalette palette = (DataPalette) BukkitAdapter_1_15.fieldPalette.get(blocksExisting); + final DataPalette palette = (DataPalette) BukkitAdapter_1_16_1.fieldPalette.get(blocksExisting); int paletteSize; if (palette instanceof DataPaletteLinear) { diff --git a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/MapChunkUtil_1_15.java b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_16_1/MapChunkUtil_1_16_1.java similarity index 76% rename from worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/MapChunkUtil_1_15.java rename to worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_16_1/MapChunkUtil_1_16_1.java index afdebf1bc..062f623ac 100644 --- a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/MapChunkUtil_1_15.java +++ b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_16_1/MapChunkUtil_1_16_1.java @@ -1,17 +1,17 @@ -package com.boydti.fawe.bukkit.adapter.mc1_15; +package com.boydti.fawe.bukkit.adapter.mc1_16_1; import com.boydti.fawe.bukkit.adapter.MapChunkUtil; -import net.minecraft.server.v1_15_R1.PacketPlayOutMapChunk; +import net.minecraft.server.v1_16_R1.PacketPlayOutMapChunk; -public class MapChunkUtil_1_15 extends MapChunkUtil { - public MapChunkUtil_1_15() throws NoSuchFieldException { +public class MapChunkUtil_1_16_1 extends MapChunkUtil { + public MapChunkUtil_1_16_1() throws NoSuchFieldException { fieldX = PacketPlayOutMapChunk.class.getDeclaredField("a"); fieldZ = PacketPlayOutMapChunk.class.getDeclaredField("b"); fieldBitMask = PacketPlayOutMapChunk.class.getDeclaredField("c"); fieldHeightMap = PacketPlayOutMapChunk.class.getDeclaredField("d"); - fieldChunkData = PacketPlayOutMapChunk.class.getDeclaredField("e"); - fieldBlockEntities = PacketPlayOutMapChunk.class.getDeclaredField("f"); - fieldFull = PacketPlayOutMapChunk.class.getDeclaredField("g"); + fieldChunkData = PacketPlayOutMapChunk.class.getDeclaredField("f"); + fieldBlockEntities = PacketPlayOutMapChunk.class.getDeclaredField("g"); + fieldFull = PacketPlayOutMapChunk.class.getDeclaredField("h"); fieldX.setAccessible(true); fieldZ.setAccessible(true); fieldBitMask.setAccessible(true); diff --git a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/nbt/LazyCompoundTag_1_15.java b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_16_1/nbt/LazyCompoundTag_1_16_1.java similarity index 88% rename from worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/nbt/LazyCompoundTag_1_15.java rename to worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_16_1/nbt/LazyCompoundTag_1_16_1.java index 6faa934f6..07a6da3d5 100644 --- a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/nbt/LazyCompoundTag_1_15.java +++ b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_16_1/nbt/LazyCompoundTag_1_16_1.java @@ -1,14 +1,14 @@ -package com.boydti.fawe.bukkit.adapter.mc1_15.nbt; +package com.boydti.fawe.bukkit.adapter.mc1_16_1.nbt; import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.ListTag; import com.sk89q.jnbt.StringTag; import com.sk89q.jnbt.Tag; import com.sk89q.worldedit.bukkit.WorldEditPlugin; -import net.minecraft.server.v1_15_R1.NBTBase; -import net.minecraft.server.v1_15_R1.NBTNumber; -import net.minecraft.server.v1_15_R1.NBTTagCompound; -import net.minecraft.server.v1_15_R1.NBTTagList; +import net.minecraft.server.v1_16_R1.NBTBase; +import net.minecraft.server.v1_16_R1.NBTNumber; +import net.minecraft.server.v1_16_R1.NBTTagCompound; +import net.minecraft.server.v1_16_R1.NBTTagList; import java.util.ArrayList; import java.util.Collections; @@ -16,15 +16,15 @@ import java.util.List; import java.util.Map; import java.util.function.Supplier; -public class LazyCompoundTag_1_15 extends CompoundTag { +public class LazyCompoundTag_1_16_1 extends CompoundTag { private final Supplier nmsTag; - public LazyCompoundTag_1_15(Supplier tag) { + public LazyCompoundTag_1_16_1(Supplier tag) { super(null); this.nmsTag = tag; } - public LazyCompoundTag_1_15(NBTTagCompound tag) { + public LazyCompoundTag_1_16_1(NBTTagCompound tag) { this(() -> tag); } @@ -93,7 +93,7 @@ public class LazyCompoundTag_1_15 extends CompoundTag { NBTTagList nbtList = (NBTTagList) tag; for (NBTBase elem : nbtList) { if (elem instanceof NBTTagCompound) { - list.add(new LazyCompoundTag_1_15((NBTTagCompound) elem)); + list.add(new LazyCompoundTag_1_16_1((NBTTagCompound) elem)); } else { list.add(WorldEditPlugin.getInstance().getBukkitImplAdapter().toNative(elem)); } @@ -149,4 +149,4 @@ public class LazyCompoundTag_1_15 extends CompoundTag { public String toString() { return nmsTag.get().toString(); } -} \ No newline at end of file +} diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java index 376111663..ae66a73af 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java @@ -33,7 +33,6 @@ import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.bukkit.adapter.AdapterLoadException; import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter; import com.sk89q.worldedit.bukkit.adapter.BukkitImplLoader; -import com.sk89q.worldedit.bukkit.adapter.impl.FAWE_Spigot_v1_15_R1; import com.sk89q.worldedit.bukkit.adapter.impl.FAWE_Spigot_v1_15_R2; import com.sk89q.worldedit.event.platform.CommandEvent; import com.sk89q.worldedit.event.platform.CommandSuggestionEvent; @@ -371,7 +370,6 @@ public class WorldEditPlugin extends JavaPlugin { //implements TabCompleter BukkitImplLoader adapterLoader = new BukkitImplLoader(); try { adapterLoader.addClass(FAWE_Spigot_v1_14_R4.class); - adapterLoader.addClass(FAWE_Spigot_v1_15_R1.class); adapterLoader.addClass(FAWE_Spigot_v1_15_R2.class); } catch (Throwable throwable) { throwable.printStackTrace(); diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/FAWE_Spigot_v1_15_R1.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/FAWE_Spigot_v1_16_R1.java similarity index 91% rename from worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/FAWE_Spigot_v1_15_R1.java rename to worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/FAWE_Spigot_v1_16_R1.java index 49dfea72f..5cf63b4d3 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/FAWE_Spigot_v1_15_R1.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/FAWE_Spigot_v1_16_R1.java @@ -26,11 +26,8 @@ import com.boydti.fawe.beta.IQueueChunk; import com.boydti.fawe.beta.IQueueExtent; import com.boydti.fawe.beta.implementation.packet.ChunkPacket; import com.boydti.fawe.beta.implementation.queue.SingleThreadQueueExtent; -import com.boydti.fawe.bukkit.adapter.mc1_15.BlockMaterial_1_15; -import com.boydti.fawe.bukkit.adapter.mc1_15.BukkitAdapter_1_15; -import com.boydti.fawe.bukkit.adapter.mc1_15.BukkitGetBlocks_1_15; -import com.boydti.fawe.bukkit.adapter.mc1_15.MapChunkUtil_1_15; -import com.boydti.fawe.bukkit.adapter.mc1_15.nbt.LazyCompoundTag_1_15; +import com.boydti.fawe.bukkit.adapter.mc1_16_1.BlockMaterial_1_16_1; +import com.boydti.fawe.bukkit.adapter.mc1_16_1.nbt.LazyCompoundTag_1_16_1; import com.google.common.io.Files; import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.Tag; @@ -48,7 +45,6 @@ import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.registry.state.Property; import com.sk89q.worldedit.world.biome.BiomeType; -import com.sk89q.worldedit.world.biome.BiomeTypes; import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.*; import com.sk89q.worldedit.world.entity.EntityType; @@ -81,16 +77,16 @@ import java.util.stream.Stream; import static com.google.common.base.Preconditions.checkNotNull; -public final class FAWE_Spigot_v1_15_R1 extends CachedBukkitAdapter implements IDelegateBukkitImplAdapter { - private final Spigot_v1_15_R1 parent; +public final class FAWE_Spigot_v1_16_R1 extends CachedBukkitAdapter implements IDelegateBukkitImplAdapter { + private final Spigot_v1_16_R1 parent; private char[] ibdToStateOrdinal; // ------------------------------------------------------------------------ // Code that may break between versions of Minecraft // ------------------------------------------------------------------------ - public FAWE_Spigot_v1_15_R1() throws NoSuchFieldException, NoSuchMethodException { - this.parent = new Spigot_v1_15_R1(); + public FAWE_Spigot_v1_16_R1() throws NoSuchFieldException, NoSuchMethodException { + this.parent = new Spigot_v1_16_R1(); } @Override @@ -99,11 +95,11 @@ public final class FAWE_Spigot_v1_15_R1 extends CachedBukkitAdapter implements I } private synchronized boolean init() { - if (ibdToStateOrdinal != null) return false; + if (ibdToStateOrdinal != null && ibdToStateOrdinal[1] != 0) return false; ibdToStateOrdinal = new char[Block.REGISTRY_ID.a()]; // size for (int i = 0; i < ibdToStateOrdinal.length; i++) { BlockState state = BlockTypesCache.states[i]; - BlockMaterial_1_15 material = (BlockMaterial_1_15) state.getMaterial(); + BlockMaterial_1_16_1 material = (BlockMaterial_1_16_1) state.getMaterial(); int id = Block.REGISTRY_ID.getId(material.getState()); ibdToStateOrdinal[id] = state.getOrdinalChar(); } @@ -113,13 +109,15 @@ public final class FAWE_Spigot_v1_15_R1 extends CachedBukkitAdapter implements I @Override public BlockMaterial getMaterial(BlockType blockType) { Block block = getBlock(blockType); - return new BlockMaterial_1_15(block); + return new BlockMaterial_1_16_1(block); } @Override public BlockMaterial getMaterial(BlockState state) { IBlockData bs = ((CraftBlockData) Bukkit.createBlockData(state.getAsString())).getState(); - return new BlockMaterial_1_15(bs.getBlock(), bs); + return new BlockMaterial_1_16_1(bs.getBlock(), bs); + + } public Block getBlock(BlockType blockType) { @@ -166,14 +164,14 @@ public final class FAWE_Spigot_v1_15_R1 extends CachedBukkitAdapter implements I World nmsWorld = nmsChunk.getWorld(); BlockPosition blockPos = new BlockPosition(x, y, z); - IBlockData blockData = ((BlockMaterial_1_15) state.getMaterial()).getState(); + IBlockData blockData = ((BlockMaterial_1_16_1) state.getMaterial()).getState(); ChunkSection[] sections = nmsChunk.getSections(); int y4 = y >> 4; ChunkSection section = sections[y4]; IBlockData existing; if (section == null) { - existing = ((BlockMaterial_1_15) BlockTypes.AIR.getDefaultState().getMaterial()).getState(); + existing = ((BlockMaterial_1_16_1) BlockTypes.AIR.getDefaultState().getMaterial()).getState(); } else { existing = section.getType(x & 15, y & 15, z & 15); } @@ -245,7 +243,7 @@ public final class FAWE_Spigot_v1_15_R1 extends CachedBukkitAdapter implements I @Override public OptionalInt getInternalBlockStateId(BlockState state) { - BlockMaterial_1_15 material = (BlockMaterial_1_15) state.getMaterial(); + BlockMaterial_1_16_1 material = (BlockMaterial_1_16_1) state.getMaterial(); IBlockData mcState = material.getCraftBlockData().getState(); return OptionalInt.of(Block.REGISTRY_ID.getId(mcState)); } @@ -286,7 +284,7 @@ public final class FAWE_Spigot_v1_15_R1 extends CachedBukkitAdapter implements I } catch (NullPointerException e) { init(); return adaptToChar(ibd); - } catch (ArrayIndexOutOfBoundsException e1) { + } catch(ArrayIndexOutOfBoundsException e1){ Fawe.debug("Attempted to convert " + ibd.getBlock() + " with ID " + Block.REGISTRY_ID.getId(ibd) + " to char. ibdToStateOrdinal length: " + ibdToStateOrdinal.length + ". Defaulting to air!"); return 0; } @@ -295,7 +293,7 @@ public final class FAWE_Spigot_v1_15_R1 extends CachedBukkitAdapter implements I @Override public > BlockData adapt(B state) { - BlockMaterial_1_15 material = (BlockMaterial_1_15) state.getMaterial(); + BlockMaterial_1_16_1 material = (BlockMaterial_1_16_1) state.getMaterial(); return material.getCraftBlockData(); } @@ -304,12 +302,12 @@ public final class FAWE_Spigot_v1_15_R1 extends CachedBukkitAdapter implements I this.setBlock(position.getChunk(), position.getBlockX(), position.getBlockY(), position.getBlockZ(), previousType, true); } - private MapChunkUtil_1_15 mapUtil = new MapChunkUtil_1_15(); + private MapChunkUtil_1_16_1 mapUtil = new MapChunkUtil_1_16_1(); @Override public void sendFakeChunk(org.bukkit.World world, Player player, ChunkPacket packet) { WorldServer nmsWorld = ((CraftWorld) world).getHandle(); - PlayerChunk map = BukkitAdapter_1_15.getPlayerChunk(nmsWorld, packet.getChunkX(), packet.getChunkZ()); + PlayerChunk map = BukkitAdapter_1_16_1.getPlayerChunk(nmsWorld, packet.getChunkX(), packet.getChunkZ()); if (map != null && map.hasBeenLoaded()) { boolean flag = false; PlayerChunk.d players = map.players; @@ -362,8 +360,8 @@ public final class FAWE_Spigot_v1_15_R1 extends CachedBukkitAdapter implements I @Override public NBTBase fromNative(Tag foreign) { - if (foreign instanceof LazyCompoundTag_1_15) { - return ((LazyCompoundTag_1_15) foreign).get(); + if (foreign instanceof LazyCompoundTag_1_16_1) { + return ((LazyCompoundTag_1_16_1) foreign).get(); } return parent.fromNative(foreign); } @@ -399,7 +397,7 @@ public final class FAWE_Spigot_v1_15_R1 extends CachedBukkitAdapter implements I env, gen){ @Override - public boolean addEntityChunk(net.minecraft.server.v1_15_R1.Entity entity) { + public boolean addEntityChunk(Entity entity) { //Fixes #320; Prevent adding entities so we aren't attempting to spawn them asynchronously return false; } @@ -410,7 +408,7 @@ public final class FAWE_Spigot_v1_15_R1 extends CachedBukkitAdapter implements I Fawe.get().getQueueHandler().startSet(true); try { IQueueExtent extent = new SingleThreadQueueExtent(); - extent.init(null, (x, z) -> new BukkitGetBlocks_1_15(freshWorld, x, z) { + extent.init(null, (x, z) -> new BukkitGetBlocks_1_16_1(freshWorld, x, z) { @Override public Chunk ensureLoaded(World nmsWorld, int X, int Z) { Chunk cached = nmsWorld.getChunkIfLoaded(X, Z); @@ -446,7 +444,7 @@ public final class FAWE_Spigot_v1_15_R1 extends CachedBukkitAdapter implements I @Override public IChunkGet get(org.bukkit.World world, int chunkX, int chunkZ) { - return new BukkitGetBlocks_1_15(world, chunkX, chunkZ); + return new BukkitGetBlocks_1_16_1(world, chunkX, chunkZ); } @Override diff --git a/worldedit-core/src/main/java/com/boydti/fawe/object/brush/CopyPastaBrush.java b/worldedit-core/src/main/java/com/boydti/fawe/object/brush/CopyPastaBrush.java index 582136f57..8a74f5f3d 100644 --- a/worldedit-core/src/main/java/com/boydti/fawe/object/brush/CopyPastaBrush.java +++ b/worldedit-core/src/main/java/com/boydti/fawe/object/brush/CopyPastaBrush.java @@ -31,7 +31,8 @@ public class CopyPastaBrush implements Brush, ResettableTool { private final LocalSession session; private final Player player; - public boolean autoRotate, randomRotate; + public boolean autoRotate; + public boolean randomRotate; public CopyPastaBrush(Player player, LocalSession session, boolean randomRotate, boolean autoRotate) { session.setClipboard(null);