forked from SteamWar/SteamWar
Remove reset cascade for SpecialArea
This commit is contained in:
+1
-32
@@ -19,8 +19,6 @@
|
|||||||
|
|
||||||
package de.steamwar.bausystem.region.dynamic.special;
|
package de.steamwar.bausystem.region.dynamic.special;
|
||||||
|
|
||||||
import de.steamwar.bausystem.BauSystem;
|
|
||||||
import de.steamwar.bausystem.region.DynamicRegionSystem;
|
|
||||||
import de.steamwar.bausystem.region.Point;
|
import de.steamwar.bausystem.region.Point;
|
||||||
import de.steamwar.bausystem.region.Region;
|
import de.steamwar.bausystem.region.Region;
|
||||||
import de.steamwar.bausystem.region.dynamic.DynamicRegion;
|
import de.steamwar.bausystem.region.dynamic.DynamicRegion;
|
||||||
@@ -31,16 +29,9 @@ import de.steamwar.bausystem.utils.PasteBuilder;
|
|||||||
import de.steamwar.sql.SchematicNode;
|
import de.steamwar.sql.SchematicNode;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
|
||||||
|
|
||||||
public class SpecialArea extends Region.Area {
|
public class SpecialArea extends Region.Area {
|
||||||
|
|
||||||
public static final File SPECIAL_PATH_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections/special");
|
|
||||||
|
|
||||||
private final DynamicRegion region;
|
private final DynamicRegion region;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@@ -76,36 +67,14 @@ public class SpecialArea extends Region.Area {
|
|||||||
return copyPoint;
|
return copyPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean resetting = false;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reset(PasteBuilder pasteBuilder, boolean extension) {
|
public void reset(PasteBuilder pasteBuilder, boolean extension) {
|
||||||
if (resetting) return;
|
place(pasteBuilder, extension);
|
||||||
AtomicBoolean hasResetting = new AtomicBoolean(false);
|
|
||||||
List<Region> regions = DynamicRegionSystem.INSTANCE.getConnectedRegions(region)
|
|
||||||
.peek(region -> {
|
|
||||||
if (((SpecialArea) region.getArea()).resetting) hasResetting.set(true);
|
|
||||||
})
|
|
||||||
.toList();
|
|
||||||
if (hasResetting.get()) return;
|
|
||||||
|
|
||||||
regions.forEach(region -> {
|
|
||||||
((SpecialArea) region.getArea()).resetting = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
for (int i = 0; i < regions.size(); i++) {
|
|
||||||
final int offset = i / 10;
|
|
||||||
final Region region = regions.get(i);
|
|
||||||
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
|
|
||||||
region.getArea().place(null, false); // TODO: Fix this!
|
|
||||||
}, offset);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void place(PasteBuilder pasteBuilder, boolean extension) {
|
public void place(PasteBuilder pasteBuilder, boolean extension) {
|
||||||
SchematicNode reset = resetFiles.select().orElse(null);
|
SchematicNode reset = resetFiles.select().orElse(null);
|
||||||
if (reset != null) PasteUtils.paste(reset, minPoint, 0);
|
if (reset != null) PasteUtils.paste(reset, minPoint, 0);
|
||||||
resetting = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user