Skip to content

Commit e8185c1

Browse files
i need to fix expand sometime
1 parent 79d463e commit e8185c1

File tree

5 files changed

+59
-14
lines changed

5 files changed

+59
-14
lines changed

compat/src/main/java/me/untouchedodin0/privatemines/compat/WorldEditAdapter.java

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.bukkit.Location;
44
import org.bukkit.Material;
55
import redempt.redlib.region.CuboidRegion;
6+
import redempt.redlib.region.Region;
67

78
import java.nio.file.Path;
89
import java.util.EnumMap;

plugin/src/main/java/me/untouchedodin0/plugin/mines/Mine.java

+14-12
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ of this software and associated documentation files (the "Software"), to deal
3939
import org.bukkit.Material;
4040
import org.bukkit.World;
4141
import org.bukkit.entity.Player;
42+
import org.codemc.worldguardwrapper.WorldGuardWrapper;
4243
import org.codemc.worldguardwrapper.region.IWrappedRegion;
4344
import redempt.redlib.config.annotations.ConfigName;
4445
import redempt.redlib.misc.Task;
@@ -301,31 +302,25 @@ public void expand(final int amount) {
301302
Gson gson = gsonBuilder.create();
302303
String fileName = getMineOwner() + ".json";
303304
Path jsonFile = minesDirectory.resolve(fileName);
304-
305+
IWrappedRegion miningRegion = getIWrappedMiningRegion();
306+
String regionName = miningRegion.getId();
305307

306308
if (!canExpand) {
307309
privateMines.getLogger().info("The private mine can't expand anymore!");
308310
} else {
309-
// final Map<Material, Double> materials = getMineTypes();
310-
// if (materials.isEmpty()) {
311-
// throw new IllegalStateException("Mine type " + mineData.getMineType() +
312-
// " has no materials!");
313-
// }
314311

315312
final CuboidRegion mine = getMiningRegion().clone();
316313
final CuboidRegion walls = getMiningRegion().clone();
317314

318315
expandXAndZ(mine, amount);
319316
expandXAndZ(walls, amount);
320317

321-
// privateMines.getWorldEditAdapter()
322-
// .fillRegion(mine, materials);
323318
privateMines.getWorldEditAdapter()
324319
.fillRegion(walls, Material.BEDROCK);
320+
325321
// TODO make this configurable
326322

327323
expandXAndZ(mine, -1);
328-
mineData.setMiningRegion(mine);
329324

330325
mineData.setSpawnX(spawnLocation.getBlockX());
331326
mineData.setSpawnY(spawnLocation.getBlockY());
@@ -337,12 +332,19 @@ public void expand(final int amount) {
337332
e.printStackTrace();
338333
}
339334

340-
setMiningRegion(mine);
335+
Optional<IWrappedRegion> iWrappedRegion =
336+
WorldGuardWrapper.getInstance().getRegion(world, regionName);
337+
WorldGuardWrapper.getInstance().removeRegion(world, regionName);
338+
339+
Player player = Bukkit.getOfflinePlayer(getMineOwner()).getPlayer();
340+
IWrappedRegion expandedMiningRegion = utils.createWorldGuardRegion(player, mine);
341+
mineData.setMiningRegion(mine);
342+
setIWrappedMiningRegion(expandedMiningRegion);
341343
setMineData(mineData);
342344
privateMines.getMineStorage().replaceMine(getMineOwner(), this);
345+
utils.setMineFlags(this);
346+
reset();
343347
}
344-
mineStorage.replaceMine(getMineOwner(), this);
345-
// reset();
346348
}
347349

348350
public double getPercentage() {

plugin/src/main/java/me/untouchedodin0/plugin/util/Utils.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ public IWrappedRegion createWorldGuardRegion(Player player, CuboidRegion cuboidR
6868
).orElseThrow(() -> new RuntimeException("Could not create worldguard region named " + regionName));
6969
}
7070

71-
public void setMineFlags(Mine worldEditMine) {
71+
public void setMineFlags(Mine mine) {
7272
final WorldGuardWrapper worldGuardWrapper = WorldGuardWrapper.getInstance();
73-
IWrappedRegion iWrappedRegion = worldEditMine.getIWrappedMiningRegion();
73+
IWrappedRegion iWrappedRegion = mine.getIWrappedMiningRegion();
7474

7575
Stream.of(
7676
worldGuardWrapper.getFlag("block-place", WrappedState.class),

we_6/src/main/java/me/untouchedodin0/privatemines/we_6/worldedit/WE6Adapter.java

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.sk89q.worldedit.function.pattern.Patterns;
1313
import com.sk89q.worldedit.function.pattern.RandomPattern;
1414
import com.sk89q.worldedit.regions.Region;
15+
import com.sk89q.worldedit.regions.RegionIntersection;
1516
import com.sk89q.worldedit.regions.RegionOperationException;
1617
import com.sk89q.worldedit.session.ClipboardHolder;
1718
import com.sk89q.worldedit.world.World;

we_7/src/main/java/me/untouchedodin0/privatemines/we_7/worldedit/WE7Adapter.java

+41
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.sk89q.worldedit.function.pattern.RandomPattern;
1717
import com.sk89q.worldedit.math.BlockVector3;
1818
import com.sk89q.worldedit.regions.Region;
19+
import com.sk89q.worldedit.regions.RegionIntersection;
1920
import com.sk89q.worldedit.session.ClipboardHolder;
2021
import com.sk89q.worldedit.world.World;
2122
import me.untouchedodin0.privatemines.compat.WorldEditAdapter;
@@ -137,4 +138,44 @@ public List<BlockVector3> findCornerPoints(Region region, Material cornerMateria
137138
});
138139
return corners;
139140
}
141+
142+
public static Region walls(com.sk89q.worldedit.regions.CuboidRegion region) {
143+
BlockVector3 pos1 = region.getPos1();
144+
BlockVector3 pos2 = region.getPos2();
145+
146+
BlockVector3 min = region.getMinimumPoint();
147+
BlockVector3 max = region.getMaximumPoint();
148+
149+
return new RegionIntersection(
150+
// Project to Z-Y plane
151+
new com.sk89q.worldedit.regions.CuboidRegion(pos1.withX(min.getX()), pos2.withX(min.getX())),
152+
new com.sk89q.worldedit.regions.CuboidRegion(pos1.withX(max.getX()), pos2.withX(max.getX())),
153+
154+
// Project to X-Y plane
155+
new com.sk89q.worldedit.regions.CuboidRegion(pos1.withZ(min.getZ()), pos2.withZ(min.getZ())),
156+
new com.sk89q.worldedit.regions.CuboidRegion(pos1.withZ(max.getZ()), pos2.withZ(max.getZ())),
157+
158+
// Project to the X-Z plane
159+
new com.sk89q.worldedit.regions.CuboidRegion(pos1.withY(min.getY()), pos2.withY(min.getY())));
160+
}
161+
162+
public static Region walls(CuboidRegion region) {
163+
BlockVector3 pos1 = BlockVector3.at(region.getStart().getBlockX(), region.getStart().getBlockY(), region.getStart().getBlockZ());
164+
BlockVector3 pos2 = BlockVector3.at(region.getEnd().getBlockX(), region.getEnd().getBlockY(), region.getEnd().getBlockZ());
165+
166+
BlockVector3 min = BlockVector3.at(region.getStart().getBlockX(), region.getStart().getBlockY(), region.getStart().getBlockZ());
167+
BlockVector3 max = BlockVector3.at(region.getEnd().getBlockX(), region.getEnd().getBlockY(), region.getEnd().getBlockZ());
168+
169+
return new RegionIntersection(
170+
// Project to Z-Y plane
171+
new com.sk89q.worldedit.regions.CuboidRegion(pos1.withX(min.getX()), pos2.withX(min.getX())),
172+
new com.sk89q.worldedit.regions.CuboidRegion(pos1.withX(max.getX()), pos2.withX(max.getX())),
173+
174+
// Project to X-Y plane
175+
new com.sk89q.worldedit.regions.CuboidRegion(pos1.withZ(min.getZ()), pos2.withZ(min.getZ())),
176+
new com.sk89q.worldedit.regions.CuboidRegion(pos1.withZ(max.getZ()), pos2.withZ(max.getZ())),
177+
178+
// Project to the X-Z plane
179+
new com.sk89q.worldedit.regions.CuboidRegion(pos1.withY(min.getY()), pos2.withY(min.getY())));
180+
}
140181
}

0 commit comments

Comments
 (0)