This commit is contained in:
Jesse Boyd 2017-06-28 14:15:49 +10:00
parent d7d897d11b
commit 3252c0464d
No known key found for this signature in database
GPG Key ID: 59F1DE6293AF6E1F
4 changed files with 19 additions and 8 deletions

View File

@ -83,6 +83,7 @@ import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.extent.MaskingExtent;
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
import com.sk89q.worldedit.extent.inventory.BlockBag;
import com.sk89q.worldedit.extent.inventory.BlockBagExtent;
import com.sk89q.worldedit.extent.world.SurvivalModeExtent;
import com.sk89q.worldedit.function.GroundFunction;
import com.sk89q.worldedit.function.RegionFunction;
@ -315,14 +316,17 @@ public class EditSession extends AbstractWorld implements HasFaweQueue, Lighting
if (player != null && Fawe.imp().getBlocksHubApi() != null) {
changeSet = LoggingChangeSet.wrap(player, changeSet);
}
if (this.blockBag != null && limit.INVENTORY_MODE > 0) {
changeSet = new BlockBagChangeSet(changeSet, blockBag, limit.INVENTORY_MODE == 1);
}
if (combineStages) {
if (this.blockBag != null) {
changeSet = new BlockBagChangeSet(changeSet, blockBag, limit.INVENTORY_MODE == 1);
}
changeTask = changeSet;
changeSet.addChangeTask(queue);
} else {
this.extent = (history = new HistoryExtent(this, bypassHistory, changeSet, queue));
if (this.blockBag != null) {
this.extent = new BlockBagExtent(this.extent, blockBag, limit.INVENTORY_MODE == 1);
}
}
}
}

View File

@ -895,7 +895,7 @@ public class LocalSession {
@Nullable
public BlockBag getBlockBag(Player player) {
checkNotNull(player);
if (!useInventory) {
if (!useInventory && FawePlayer.wrap(player).getLimit().INVENTORY_MODE == 0) {
return null;
}
return player.getInventoryBlockBag();

View File

@ -298,7 +298,7 @@ public class RegionCommands extends MethodCommands {
@Command(
aliases = {"/replace", "/re", "/rep", "/r"},
usage = "[from-block] <to-block>",
usage = "[from-mask] <to-pattern>",
desc = "Replace all blocks in the selection with another",
flags = "f",
min = 1,

View File

@ -80,7 +80,12 @@ public class BlockBagExtent extends AbstractDelegateExtent {
}
@Override
public boolean setBlock(Vector position, BaseBlock block) throws WorldEditException {
public boolean setBlock(Vector pos, BaseBlock block) throws WorldEditException {
return setBlock(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ(), block);
}
@Override
public boolean setBlock(int x, int y, int z, BaseBlock block) throws WorldEditException {
CompoundTag nbt = block.getNbtData();
final int type = block.getType();
if (type != 0) {
@ -97,10 +102,12 @@ public class BlockBagExtent extends AbstractDelegateExtent {
} catch (BlockBagException e) {
missingBlocks[type]++;
return false;
} catch (Throwable e) {
throw e;
}
}
if (mine) {
BaseBlock lazyBlock = getExtent().getLazyBlock(position);
BaseBlock lazyBlock = getExtent().getLazyBlock(x, y, z);
int existing = lazyBlock.getType();
if (existing != 0) {
try {
@ -109,7 +116,7 @@ public class BlockBagExtent extends AbstractDelegateExtent {
}
}
}
return super.setBlock(position, block);
return super.setBlock(x, y, z, block);
}
public static Class<?> inject() {