forked from SteamWar/SteamWar
Add Region.Area.place which is called ba Region.Area.reset
This commit is contained in:
@@ -123,7 +123,7 @@ public interface Region extends RegionDataStore {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset(PasteBuilder pasteBuilder, boolean extension) {
|
||||
public void place(PasteBuilder pasteBuilder, boolean extension) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -174,7 +174,11 @@ public interface Region extends RegionDataStore {
|
||||
@Nullable
|
||||
File getResetFile();
|
||||
|
||||
void reset(PasteBuilder pasteBuilder, boolean extension);
|
||||
default void reset(PasteBuilder pasteBuilder, boolean extension) {
|
||||
place(pasteBuilder, extension);
|
||||
}
|
||||
|
||||
void place(PasteBuilder pasteBuilder, boolean extension);
|
||||
|
||||
default void forEachChunk(BiConsumer<Integer, Integer> executor) {
|
||||
Point minPoint = getMinPoint(false);
|
||||
|
||||
+7
-2
@@ -48,11 +48,16 @@ public class DynamicRegionCommand extends SWCommand {
|
||||
Tile tile = Tile.fromLocation(player.getLocation()).orElse(null);
|
||||
if (tile == null) return;
|
||||
|
||||
// Check location!
|
||||
|
||||
Class<? extends DynamicRegion> regionClass = DynamicRegionSystem.identifierDataMap.get(regionType);
|
||||
DynamicRegion dynamicRegion = DynamicRegionRepository.constructRegion(regionClass, UUID.randomUUID(), tile.getMinX(), tile.getMinZ());
|
||||
if (dynamicRegion == null) {
|
||||
// TODO: Give error to user
|
||||
return;
|
||||
}
|
||||
|
||||
dynamicRegion.getArea().reset(new PasteBuilder(new PasteBuilder.FileProvider(dynamicRegion.getArea().getResetFile())), false);
|
||||
// TODO: This here still has some kind of error!aww
|
||||
dynamicRegion.getArea().place(new PasteBuilder(new PasteBuilder.FileProvider(dynamicRegion.getArea().getResetFile())), false);
|
||||
dynamicRegion.updateNeighbours();
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@ public class GlobalRegion implements Region {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset(PasteBuilder pasteBuilder, boolean extension) {
|
||||
public void place(PasteBuilder pasteBuilder, boolean extension) {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -191,7 +191,7 @@ public class PathArea implements Region.Area {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset(PasteBuilder pasteBuilder, boolean extension) {
|
||||
public void place(PasteBuilder pasteBuilder, boolean extension) {
|
||||
if (region.isGarden()) {
|
||||
File resetFile = GARDEN.select(regionIdentifier, 0).orElse(null);
|
||||
if (resetFile != null) {
|
||||
|
||||
+30
-2
@@ -19,6 +19,8 @@
|
||||
|
||||
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.Region;
|
||||
import de.steamwar.bausystem.region.dynamic.DynamicRegion;
|
||||
@@ -31,12 +33,14 @@ import org.bukkit.Bukkit;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class SpecialArea implements Region.Area {
|
||||
|
||||
public static final File SPECIAL_PATH_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections/special");
|
||||
|
||||
private final DynamicRegion region;
|
||||
private final UUID regionIdentifier;
|
||||
private final Tile tile;
|
||||
private final Point minPoint;
|
||||
@@ -45,6 +49,7 @@ public class SpecialArea implements Region.Area {
|
||||
private final VariantSelector resetFiles;
|
||||
|
||||
public SpecialArea(Tile tile, DynamicRegion region, VariantSelector resetFiles) {
|
||||
this.region = region;
|
||||
this.regionIdentifier = region.getID();
|
||||
this.tile = tile;
|
||||
|
||||
@@ -75,10 +80,33 @@ public class SpecialArea implements Region.Area {
|
||||
return null;
|
||||
}
|
||||
|
||||
private boolean reseting = false;
|
||||
|
||||
@Override
|
||||
public void reset(PasteBuilder pasteBuilder, boolean extension) {
|
||||
if (reseting) return;
|
||||
List<Region> regions = DynamicRegionSystem.INSTANCE.getConnectedRegions(region).toList();
|
||||
System.out.println(regions.size());
|
||||
regions.forEach(region -> {
|
||||
((SpecialArea) region.getArea()).reseting = true;
|
||||
});
|
||||
|
||||
for (int i = 0; i < regions.size(); i++) {
|
||||
int offset = i / 10;
|
||||
int finalI = i;
|
||||
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
|
||||
SpecialArea specialArea = (SpecialArea) regions.get(finalI).getArea();
|
||||
specialArea.place(null, false);
|
||||
specialArea.reseting = false;
|
||||
}, offset);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void place(PasteBuilder pasteBuilder, boolean extension) {
|
||||
File resetFile = resetFiles.select(regionIdentifier, 0).orElse(null);
|
||||
if (resetFile == null) return;
|
||||
PasteUtils.paste(resetFile, minPoint, 0);
|
||||
if (resetFile != null) {
|
||||
PasteUtils.paste(resetFile, minPoint, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -80,7 +80,7 @@ public final class FixedGlobalRegion implements Region {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset(PasteBuilder pasteBuilder, boolean extension) {
|
||||
public void place(PasteBuilder pasteBuilder, boolean extension) {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
-3
@@ -190,7 +190,7 @@ public class FixedRegion implements Region {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset(PasteBuilder pasteBuilder, boolean extension) {
|
||||
public void place(PasteBuilder pasteBuilder, boolean extension) {
|
||||
pasteBuilder.reset(extension)
|
||||
.minPoint(getMinPoint(extension))
|
||||
.maxPoint(getMaxPoint(extension))
|
||||
@@ -243,7 +243,7 @@ public class FixedRegion implements Region {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset(PasteBuilder pasteBuilder, boolean extension) {
|
||||
public void place(PasteBuilder pasteBuilder, boolean extension) {
|
||||
pasteBuilder.reset(extension)
|
||||
.minPoint(getMinPoint(extension))
|
||||
.maxPoint(getMaxPoint(extension))
|
||||
@@ -297,7 +297,7 @@ public class FixedRegion implements Region {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset(PasteBuilder pasteBuilder, boolean extension) {
|
||||
public void place(PasteBuilder pasteBuilder, boolean extension) {
|
||||
pasteBuilder.reset(extension)
|
||||
.minPoint(getMinPoint(extension))
|
||||
.maxPoint(getMaxPoint(extension))
|
||||
|
||||
Reference in New Issue
Block a user