Improve SpecialArea.reset

This commit is contained in:
2026-03-07 13:21:53 +01:00
parent ade131d737
commit e793d95050
@@ -35,6 +35,7 @@ import org.jetbrains.annotations.Nullable;
import java.io.File; import java.io.File;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.atomic.AtomicBoolean;
public class SpecialArea implements Region.Area { public class SpecialArea implements Region.Area {
@@ -80,24 +81,28 @@ public class SpecialArea implements Region.Area {
return null; return null;
} }
private boolean reseting = false; private boolean resetting = false;
@Override @Override
public void reset(PasteBuilder pasteBuilder, boolean extension) { public void reset(PasteBuilder pasteBuilder, boolean extension) {
if (reseting) return; if (resetting) return;
List<Region> regions = DynamicRegionSystem.INSTANCE.getConnectedRegions(region).toList(); AtomicBoolean hasResetting = new AtomicBoolean(false);
System.out.println(regions.size()); 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 -> { regions.forEach(region -> {
((SpecialArea) region.getArea()).reseting = true; ((SpecialArea) region.getArea()).resetting = true;
}); });
for (int i = 0; i < regions.size(); i++) { for (int i = 0; i < regions.size(); i++) {
int offset = i / 10; final int offset = i / 10;
int finalI = i; final Region region = regions.get(i);
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> { Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
SpecialArea specialArea = (SpecialArea) regions.get(finalI).getArea(); region.getArea().place(null, false);
specialArea.place(null, false);
specialArea.reseting = false;
}, offset); }, offset);
} }
} }
@@ -105,8 +110,7 @@ public class SpecialArea implements Region.Area {
@Override @Override
public void place(PasteBuilder pasteBuilder, boolean extension) { public void place(PasteBuilder pasteBuilder, boolean extension) {
File resetFile = resetFiles.select(regionIdentifier, 0).orElse(null); File resetFile = resetFiles.select(regionIdentifier, 0).orElse(null);
if (resetFile != null) { if (resetFile != null) PasteUtils.paste(resetFile, minPoint, 0);
PasteUtils.paste(resetFile, minPoint, 0); resetting = false;
}
} }
} }