diff --git a/src/main/java/net/coreprotect/worldedit/CoreProtectLogger.java b/src/main/java/net/coreprotect/worldedit/CoreProtectLogger.java index 4bf9e6303..85245cc5c 100755 --- a/src/main/java/net/coreprotect/worldedit/CoreProtectLogger.java +++ b/src/main/java/net/coreprotect/worldedit/CoreProtectLogger.java @@ -85,7 +85,7 @@ public int replaceBlocks(final Region region, final Mask mask, final Pattern pat if (!Config.getConfig(world).WORLDEDIT) { return eventExtent.replaceBlocks(region, mask, pattern); } - processPatternToBlocks(world, region, pattern); + processPatternToBlocks(world, region, mask, pattern); return eventExtent.replaceBlocks(region, mask, pattern); } @@ -129,6 +129,24 @@ private void processPatternToBlocks(org.bukkit.World world, Set vs } } + private void processPatternToBlocks(org.bukkit.World world, Region region, Mask mask, Pattern pattern) { + for (BlockVector3 position : region.clone()) { + if (!mask.test(position)) { + continue; + } + BlockState oldBlock = eventExtent.getBlock(position); + Material oldType = BukkitAdapter.adapt(oldBlock.getBlockType()); + Location location = new Location(world, position.getBlockX(), position.getBlockY(), position.getBlockZ()); + BaseBlock baseBlock = WorldEditLogger.getBaseBlock(eventExtent, position, location, oldType, oldBlock); + + // No clear way to get container content data from within the WorldEdit API + // Data may be available by converting oldBlock.toBaseBlock().getNbtData() + // e.g. BaseBlock block = eventWorld.getBlock(position); + ItemStack[] containerData = CoreProtectEditSessionEvent.isFAWE() ? null : ItemUtils.getContainerContents(oldType, null, location); + WorldEditLogger.postProcess(eventExtent, eventActor, position, location, pattern.applyBlock(position), baseBlock, oldType, oldBlock, containerData); + } + } + private void processPatternToBlocks(org.bukkit.World world, Region region, Pattern pattern) { for (BlockVector3 position : region.clone()) { BlockState oldBlock = eventExtent.getBlock(position);