geforkt von Mirrors/FastAsyncWorldEdit
Fixed console commands not working due to null Worlds.
Dieser Commit ist enthalten in:
Ursprung
b941e21d4d
Commit
d85c0096a9
@ -104,14 +104,14 @@ public class EditSession implements Extent {
|
|||||||
protected final World world;
|
protected final World world;
|
||||||
private final ChangeSet changeSet = new BlockOptimizedHistory();
|
private final ChangeSet changeSet = new BlockOptimizedHistory();
|
||||||
|
|
||||||
private final FastModeExtent fastModeExtent;
|
private @Nullable FastModeExtent fastModeExtent;
|
||||||
private final ChunkLoadingExtent chunkLoadingExtent;
|
private @Nullable ChunkLoadingExtent chunkLoadingExtent;
|
||||||
private final LastAccessExtentCache cacheExtent;
|
private @Nullable LastAccessExtentCache cacheExtent;
|
||||||
private final BlockQuirkExtent quirkExtent;
|
private @Nullable BlockQuirkExtent quirkExtent;
|
||||||
private final DataValidatorExtent validator;
|
private @Nullable DataValidatorExtent validator;
|
||||||
private final BlockBagExtent blockBagExtent;
|
private final BlockBagExtent blockBagExtent;
|
||||||
private final MultiStageReorder reorderExtent;
|
private final MultiStageReorder reorderExtent;
|
||||||
private final ChangeSetExtent changeSetExtent;
|
private @Nullable ChangeSetExtent changeSetExtent;
|
||||||
private final MaskingExtent maskingExtent;
|
private final MaskingExtent maskingExtent;
|
||||||
private final BlockChangeLimiter changeLimiter;
|
private final BlockChangeLimiter changeLimiter;
|
||||||
|
|
||||||
@ -150,36 +150,46 @@ public class EditSession implements Extent {
|
|||||||
*/
|
*/
|
||||||
EditSession(EventBus eventBus, World world, int maxBlocks, @Nullable BlockBag blockBag, EditSessionEvent event) {
|
EditSession(EventBus eventBus, World world, int maxBlocks, @Nullable BlockBag blockBag, EditSessionEvent event) {
|
||||||
checkNotNull(eventBus);
|
checkNotNull(eventBus);
|
||||||
checkNotNull(world);
|
|
||||||
checkArgument(maxBlocks >= -1, "maxBlocks >= -1 required");
|
checkArgument(maxBlocks >= -1, "maxBlocks >= -1 required");
|
||||||
checkNotNull(event);
|
checkNotNull(event);
|
||||||
|
|
||||||
this.world = world;
|
this.world = world;
|
||||||
|
|
||||||
Extent extent;
|
if (world != null) {
|
||||||
|
Extent extent;
|
||||||
|
|
||||||
// This extents are ALWAYS used
|
// This extents are ALWAYS used
|
||||||
extent = fastModeExtent = new FastModeExtent(world, false);
|
extent = fastModeExtent = new FastModeExtent(world, false);
|
||||||
extent = chunkLoadingExtent = new ChunkLoadingExtent(extent, world);
|
extent = chunkLoadingExtent = new ChunkLoadingExtent(extent, world);
|
||||||
extent = cacheExtent = new LastAccessExtentCache(extent);
|
extent = cacheExtent = new LastAccessExtentCache(extent);
|
||||||
extent = wrapExtent(extent, eventBus, event, Stage.BEFORE_CHANGE);
|
extent = wrapExtent(extent, eventBus, event, Stage.BEFORE_CHANGE);
|
||||||
extent = quirkExtent = new BlockQuirkExtent(extent, world);
|
extent = quirkExtent = new BlockQuirkExtent(extent, world);
|
||||||
extent = validator = new DataValidatorExtent(extent, world);
|
extent = validator = new DataValidatorExtent(extent, world);
|
||||||
extent = blockBagExtent = new BlockBagExtent(extent, blockBag);
|
extent = blockBagExtent = new BlockBagExtent(extent, blockBag);
|
||||||
|
|
||||||
// This extent can be skipped by calling rawSetBlock()
|
// This extent can be skipped by calling rawSetBlock()
|
||||||
extent = reorderExtent = new MultiStageReorder(extent, false);
|
extent = reorderExtent = new MultiStageReorder(extent, false);
|
||||||
extent = wrapExtent(extent, eventBus, event, Stage.BEFORE_REORDER);
|
extent = wrapExtent(extent, eventBus, event, Stage.BEFORE_REORDER);
|
||||||
|
|
||||||
// These extents can be skipped by calling smartSetBlock()
|
// These extents can be skipped by calling smartSetBlock()
|
||||||
extent = changeSetExtent = new ChangeSetExtent(extent, changeSet);
|
extent = changeSetExtent = new ChangeSetExtent(extent, changeSet);
|
||||||
extent = maskingExtent = new MaskingExtent(extent, Masks.alwaysTrue());
|
extent = maskingExtent = new MaskingExtent(extent, Masks.alwaysTrue());
|
||||||
extent = changeLimiter = new BlockChangeLimiter(extent, maxBlocks);
|
extent = changeLimiter = new BlockChangeLimiter(extent, maxBlocks);
|
||||||
extent = wrapExtent(extent, eventBus, event, Stage.BEFORE_HISTORY);
|
extent = wrapExtent(extent, eventBus, event, Stage.BEFORE_HISTORY);
|
||||||
|
|
||||||
this.bypassReorderHistory = blockBagExtent;
|
this.bypassReorderHistory = blockBagExtent;
|
||||||
this.bypassHistory = reorderExtent;
|
this.bypassHistory = reorderExtent;
|
||||||
this.bypassNone = extent;
|
this.bypassNone = extent;
|
||||||
|
} else {
|
||||||
|
Extent extent = new NullExtent();
|
||||||
|
extent = blockBagExtent = new BlockBagExtent(extent, blockBag);
|
||||||
|
extent = reorderExtent = new MultiStageReorder(extent, false);
|
||||||
|
extent = maskingExtent = new MaskingExtent(extent, Masks.alwaysTrue());
|
||||||
|
extent = changeLimiter = new BlockChangeLimiter(extent, maxBlocks);
|
||||||
|
this.bypassReorderHistory = extent;
|
||||||
|
this.bypassHistory = extent;
|
||||||
|
this.bypassNone = extent;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Extent wrapExtent(Extent extent, EventBus eventBus, EditSessionEvent event, Stage stage) {
|
private Extent wrapExtent(Extent extent, EventBus eventBus, EditSessionEvent event, Stage stage) {
|
||||||
@ -285,7 +295,9 @@ public class EditSession implements Extent {
|
|||||||
* @param enabled true to enable
|
* @param enabled true to enable
|
||||||
*/
|
*/
|
||||||
public void setFastMode(boolean enabled) {
|
public void setFastMode(boolean enabled) {
|
||||||
fastModeExtent.setEnabled(enabled);
|
if (fastModeExtent != null) {
|
||||||
|
fastModeExtent.setEnabled(enabled);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -296,7 +308,7 @@ public class EditSession implements Extent {
|
|||||||
* @return true if enabled
|
* @return true if enabled
|
||||||
*/
|
*/
|
||||||
public boolean hasFastMode() {
|
public boolean hasFastMode() {
|
||||||
return fastModeExtent.isEnabled();
|
return fastModeExtent != null ? fastModeExtent.isEnabled() : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren