forked from SteamWar/SteamWar
Improve SpecialArea.reset
This commit is contained in:
+17
-13
@@ -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;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user