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