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 6c748660b..13f2bc1d4 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 @@ -11,8 +11,11 @@ import com.boydti.fawe.object.collection.AdaptedMap; import com.boydti.fawe.object.collection.BitArray4096; 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; @@ -21,21 +24,47 @@ 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 net.minecraft.server.v1_15_R1.*; +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.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.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; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.annotation.Nullable; -import java.util.*; +import java.util.AbstractSet; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; import java.util.concurrent.Callable; import java.util.concurrent.Future; import java.util.function.Function; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import static org.slf4j.LoggerFactory.getLogger; @@ -217,7 +246,8 @@ public class BukkitGetBlocks_1_15_2 extends CharGetBlocks { // Remove existing tiles { - Map tiles = nmsChunk.getTileEntities(); + // Create a copy so that we can remove blocks + Map tiles = new HashMap<>(nmsChunk.getTileEntities()); if (!tiles.isEmpty()) { for (Map.Entry entry : tiles.entrySet()) { final BlockPosition pos = entry.getKey(); @@ -232,8 +262,8 @@ public class BukkitGetBlocks_1_15_2 extends CharGetBlocks { int ordinal = set.getBlock(lx, ly, lz).getOrdinal(); if (ordinal != 0) { TileEntity tile = entry.getValue(); - tile.hasWorld(); - tile.invalidateBlockCache(); + nmsChunk.removeTileEntity(tile.getPosition()); + nmsChunk.markDirty(); } } }