Skip to content

Commit 47bdc9f

Browse files
committed
Config option for section editing
1 parent 550f97d commit 47bdc9f

6 files changed

Lines changed: 18 additions & 12 deletions

File tree

worldedit-core/src/main/java/com/sk89q/worldedit/EditSession.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -256,13 +256,14 @@ public String getDisplayName() {
256256
Extent extent;
257257

258258
// These extents are ALWAYS used
259-
extent = traceIfNeeded(sideEffectExtent = new SideEffectExtent(world));
260-
if (world instanceof AbstractWorld internalWorld) {
261-
NativeWorld nativeInterface = internalWorld.getNativeInterface();
262-
if (nativeInterface != null) {
263-
// Forking extent, will not continue to above extents if enabled
264-
extent = traceIfNeeded(new SectionBufferingExtent(extent, nativeInterface, sideEffectExtent));
265-
}
259+
sideEffectExtent = new SideEffectExtent(world);
260+
NativeWorld nativeInterface;
261+
if (WorldEdit.getInstance().getConfiguration().chunkSectionEditing
262+
&& world instanceof AbstractWorld internalWorld
263+
&& (nativeInterface = internalWorld.getNativeInterface()) != null) {
264+
extent = traceIfNeeded(new SectionBufferingExtent(nativeInterface, sideEffectExtent));
265+
} else {
266+
extent = traceIfNeeded(sideEffectExtent);
266267
}
267268
if (watchdog != null) {
268269
// Reset watchdog before world placement

worldedit-core/src/main/java/com/sk89q/worldedit/LocalConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public abstract class LocalConfiguration {
9494
public boolean commandBlockSupport = false;
9595
public String defaultLocaleName = "default";
9696
public Locale defaultLocale = Locale.getDefault();
97+
public boolean chunkSectionEditing = true;
9798

9899
@SuppressWarnings("deprecation")
99100
protected String[] getDefaultDisallowedBlocks() {

worldedit-core/src/main/java/com/sk89q/worldedit/extent/world/internal/SectionBufferingExtent.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
import com.sk89q.worldedit.WorldEditException;
2323
import com.sk89q.worldedit.extent.AbstractBufferingExtent;
24-
import com.sk89q.worldedit.extent.Extent;
2524
import com.sk89q.worldedit.extent.world.SideEffectExtent;
2625
import com.sk89q.worldedit.function.operation.Operation;
2726
import com.sk89q.worldedit.function.operation.RunContext;
@@ -68,12 +67,12 @@ private record SectionData(
6867
private final SideEffectExtent sideEffectExtent;
6968
private boolean enabled;
7069

71-
public SectionBufferingExtent(Extent extent, NativeWorld nativeWorld, SideEffectExtent sideEffectExtent) {
72-
this(extent, nativeWorld, sideEffectExtent, true);
70+
public SectionBufferingExtent(NativeWorld nativeWorld, SideEffectExtent sideEffectExtent) {
71+
this(nativeWorld, sideEffectExtent, true);
7372
}
7473

75-
public SectionBufferingExtent(Extent extent, NativeWorld nativeWorld, SideEffectExtent sideEffectExtent, boolean enabled) {
76-
super(extent);
74+
public SectionBufferingExtent(NativeWorld nativeWorld, SideEffectExtent sideEffectExtent, boolean enabled) {
75+
super(sideEffectExtent);
7776
this.nativeWorld = nativeWorld;
7877
this.sideEffectExtent = sideEffectExtent;
7978
this.enabled = enabled;

worldedit-core/src/main/java/com/sk89q/worldedit/util/PropertiesConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ public void load() {
134134
extendedYLimit = getBool("extended-y-limit", extendedYLimit);
135135
setDefaultLocaleName(getString("default-locale", defaultLocaleName));
136136
commandBlockSupport = getBool("command-block-support", commandBlockSupport);
137+
chunkSectionEditing = getBool("chunk-section-editing", chunkSectionEditing);
137138

138139
LocalSession.MAX_HISTORY_SIZE = Math.max(15, getInt("history-size", 15));
139140

worldedit-core/src/main/java/com/sk89q/worldedit/util/YAMLConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ public void load() {
131131
setDefaultLocaleName(config.getString("default-locale", defaultLocaleName));
132132

133133
commandBlockSupport = config.getBoolean("command-block-support", false);
134+
135+
chunkSectionEditing = config.getBoolean("chunk-section-editing", chunkSectionEditing);
134136
}
135137

136138
public void unload() {

worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/config/ConfigurateConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,5 +145,7 @@ public void load() {
145145
setDefaultLocaleName(node.node("default-locale").getString(defaultLocaleName));
146146

147147
commandBlockSupport = node.node("command-block-support").getBoolean(false);
148+
149+
chunkSectionEditing = node.node("chunk-section-editing").getBoolean(chunkSectionEditing);
148150
}
149151
}

0 commit comments

Comments
 (0)