Skip to content

Commit 9071ea8

Browse files
author
BuildTools
committed
Added validators
1 parent a56cd82 commit 9071ea8

49 files changed

Lines changed: 556 additions & 90 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

StructureBoxes-Bukkit/build.gradle.kts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,7 @@ tasks.shadowJar {
6868
include(project(":structureboxes-factionsuuid"))
6969
include(dependency("org.bstats:bstats-bukkit:3.1.0"))
7070
}
71-
7271
relocate("org.bstats", "io.github.eirikh1996.structureboxes.metrics")
73-
74-
7572
}
7673

7774
description = "StructureBoxes-Bukkit"

StructureBoxes-Bukkit/src/main/java/io/github/eirikh1996/structureboxes/StructureBoxes.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
import io.github.eirikh1996.structureboxes.listener.BlockListener;
1919
import io.github.eirikh1996.structureboxes.listener.InventoryListener;
2020
import io.github.eirikh1996.structureboxes.localisation.I18nSupport;
21+
import io.github.eirikh1996.structureboxes.processing.validators.RegionValidatorManager;
22+
import io.github.eirikh1996.structureboxes.processing.validators.FactionsRegionValidator;
23+
import io.github.eirikh1996.structureboxes.processing.validators.WorldGuardRegionValidator;
2124
import io.github.eirikh1996.structureboxes.region.FactionsFlagManager;
2225
import io.github.eirikh1996.structureboxes.region.RedProtectFlagManager;
2326
import io.github.eirikh1996.structureboxes.region.WorldGuardFlagManager;
@@ -32,7 +35,6 @@
3235
import io.github.eirikh1996.structureboxes.utils.IslandWorldUtils;
3336
import io.github.eirikh1996.structureboxes.utils.LandClaimingUtils;
3437
import io.github.eirikh1996.structureboxes.utils.LandsUtils;
35-
import io.github.eirikh1996.structureboxes.utils.MathUtils;
3638
import io.github.eirikh1996.structureboxes.utils.PlotSquaredUtils;
3739
import io.github.eirikh1996.structureboxes.utils.RedProtectUtils;
3840
import io.github.eirikh1996.structureboxes.utils.RegionUtils;
@@ -46,7 +48,6 @@
4648
import me.zombie_striker.landclaiming.LandClaiming;
4749
import net.countercraft.movecraft.Movecraft;
4850
import net.kyori.adventure.text.Component;
49-
import net.kyori.adventure.text.TextComponent;
5051
import org.Bukkitters.SkyBlock.Main;
5152
import org.bstats.bukkit.Metrics;
5253
import org.bukkit.Bukkit;
@@ -166,15 +167,6 @@ public void onEnable() {
166167
getServer().getPluginManager().disablePlugin(this);
167168
return;
168169
}
169-
//if on 1.13 and up, Check if FAWE is installed
170-
if (!Settings.IsLegacy) {
171-
try {
172-
Class.forName("com.boydti.fawe.bukkit.FaweBukkit");
173-
Settings.FAWE = true;
174-
} catch (ClassNotFoundException e) {
175-
Settings.FAWE = false;
176-
}
177-
}
178170
final Map data;
179171
try {
180172
File weConfig = new File(getWorldEditPlugin().getDataFolder(), "config" + (Settings.FAWE ? "-legacy" : "") + ".yml");
@@ -190,7 +182,6 @@ public void onEnable() {
190182
File schemDir = new File(worldEditPlugin.getDataFolder(), (String) ((Map) data.get("saving")).get("dir"));
191183

192184
//Check if there is a compatible version of WorldEdit
193-
worldEditHandler = new WorldEditHandler(schemDir, this);
194185

195186
boolean foundRegionProvider = false;
196187
//Check for WorldGuard
@@ -205,6 +196,7 @@ public void onEnable() {
205196
listener,
206197
EventPriority.NORMAL,
207198
new WorldGuardFlagManager(), this);
199+
RegionValidatorManager.getInstance().registerRegionValidator(new WorldGuardRegionValidator(), worldGuardPlugin.getName());
208200
}
209201
Plugin f = getServer().getPluginManager().getPlugin("Factions");
210202
try {
@@ -240,6 +232,7 @@ public void onEnable() {
240232
EventPriority.NORMAL,
241233
FactionsFlagManager.getInstance(),
242234
this);
235+
RegionValidatorManager.getInstance().registerRegionValidator(new FactionsRegionValidator(), factionsPlugin.getName());
243236
} else if (factionsUUIDInstalled && FactionsUUIDUtils.isFactionsUUID(f)) { //Check for FactionsUUID
244237
getLogger().info(I18nSupport.getInternationalisedString("Startup - Factions detected"));
245238
foundRegionProvider = true;
@@ -383,6 +376,7 @@ public void onEnable() {
383376
Settings.RestrictToRegionsEnabled = false;
384377
getLogger().info(I18nSupport.getInternationalisedString("Startup - Restrict to regions set to false"));
385378
}
379+
worldEditHandler = new WorldEditHandler(schemDir, this);
386380
if (Settings.Metrics) {
387381
metrics = new Metrics(this);
388382
final boolean noRegionProvider = !foundRegionProvider;
@@ -693,6 +687,7 @@ public void logMessage(Level level, String message) {
693687
getLogger().log(level, message);
694688
}
695689

690+
696691
@Override
697692
public void clearInterior(Collection<Location> interior) {
698693
for (Location location : interior){
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package io.github.eirikh1996.structureboxes.processing;
2+
3+
import com.sk89q.worldedit.util.Location;
4+
import org.bukkit.entity.Player;
5+
import org.bukkit.plugin.Plugin;
6+
import org.jetbrains.annotations.NotNull;
7+
8+
public interface BukkitRegionPredicate extends RegionPredicate<Player> {
9+
10+
@Override
11+
@NotNull Result validate(@NotNull Player player, @NotNull Location location);
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package io.github.eirikh1996.structureboxes.processing.validators;
2+
3+
import com.massivecraft.factions.entity.BoardColl;
4+
import com.massivecraft.factions.entity.Faction;
5+
import com.massivecraft.factions.entity.MPerm;
6+
import com.massivecraft.factions.entity.MPlayer;
7+
import com.massivecraft.massivecore.ps.PS;
8+
import com.sk89q.worldedit.bukkit.BukkitAdapter;
9+
import com.sk89q.worldedit.util.Location;
10+
import io.github.eirikh1996.structureboxes.processing.BukkitRegionPredicate;
11+
import io.github.eirikh1996.structureboxes.processing.Result;
12+
import org.bukkit.entity.Player;
13+
import org.jetbrains.annotations.NotNull;
14+
15+
public class FactionsRegionValidator implements BukkitRegionPredicate {
16+
@Override
17+
public @NotNull Result validate(@NotNull Player player, @NotNull Location location) {
18+
PS ps = PS.valueOf(BukkitAdapter.adapt(location));
19+
MPlayer mp = MPlayer.get(player);
20+
Faction f = BoardColl.get().getFactionAt(ps);
21+
return Result.of(!mp.isOverriding() && (f.isPermitted(MPerm.getPermBuild().getId(), f.getRelationTo(mp).getId()) || BoardColl.get().getTerritoryAccessAt(ps).isGranted(mp)));
22+
}
23+
24+
@Override
25+
public @NotNull Result regionPresent(@NotNull Location location) {
26+
return Result.of(BoardColl.get().getFactionAt(PS.valueOf(BukkitAdapter.adapt(location))) != null);
27+
}
28+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.github.eirikh1996.structureboxes.processing.validators;
2+
3+
import com.sk89q.worldedit.bukkit.BukkitAdapter;
4+
import com.sk89q.worldedit.util.Location;
5+
import io.github.eirikh1996.structureboxes.StructureBoxes;
6+
import io.github.eirikh1996.structureboxes.processing.BukkitRegionPredicate;
7+
import io.github.eirikh1996.structureboxes.processing.Result;
8+
import org.bukkit.entity.Player;
9+
import org.jetbrains.annotations.NotNull;
10+
11+
public class GriefPreventionRegionValidator implements BukkitRegionPredicate {
12+
@Override
13+
public @NotNull Result validate(@NotNull Player player, @NotNull Location location) {
14+
return Result.of(StructureBoxes.getInstance().getGriefPreventionPlugin().allowBuild(player, BukkitAdapter.adapt(location)) == null);
15+
}
16+
17+
@Override
18+
public @NotNull Result regionPresent(@NotNull Location location) {
19+
return Result.of(StructureBoxes.getInstance().getGriefPreventionPlugin().dataStore.getClaimAt(BukkitAdapter.adapt(location), false, null) != null);
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package io.github.eirikh1996.structureboxes.processing.validators;
2+
3+
public class LandsRegionValidator {
4+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.github.eirikh1996.structureboxes.processing.validators;
2+
3+
import com.sk89q.worldedit.util.Location;
4+
import io.github.eirikh1996.structureboxes.processing.BukkitRegionPredicate;
5+
import io.github.eirikh1996.structureboxes.processing.Result;
6+
import org.bukkit.entity.Player;
7+
import org.jetbrains.annotations.NotNull;
8+
9+
public class PlotSquaredRegionValidator implements BukkitRegionPredicate {
10+
@Override
11+
public @NotNull Result validate(@NotNull Player player, @NotNull Location location) {
12+
return null;
13+
}
14+
15+
@Override
16+
public @NotNull Result regionPresent(@NotNull Location location) {
17+
return null;
18+
}
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package io.github.eirikh1996.structureboxes.processing.validators;
2+
3+
public class RedProtectRegionValidator {
4+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.github.eirikh1996.structureboxes.processing.validators;
2+
3+
import com.sk89q.worldedit.util.Location;
4+
import io.github.eirikh1996.structureboxes.processing.BukkitRegionPredicate;
5+
import io.github.eirikh1996.structureboxes.processing.Result;
6+
import org.bukkit.entity.Player;
7+
import org.jetbrains.annotations.NotNull;
8+
9+
public class TownyRegionValidator implements BukkitRegionPredicate {
10+
@Override
11+
public @NotNull Result validate(@NotNull Player player, @NotNull Location location) {
12+
return null;
13+
}
14+
15+
@Override
16+
public @NotNull Result regionPresent(@NotNull Location location) {
17+
return null;
18+
}
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package io.github.eirikh1996.structureboxes.processing.validators;
2+
3+
import com.sk89q.worldedit.util.Location;
4+
import com.sk89q.worldedit.world.World;
5+
import com.sk89q.worldguard.LocalPlayer;
6+
import com.sk89q.worldguard.WorldGuard;
7+
import com.sk89q.worldguard.protection.ApplicableRegionSet;
8+
import com.sk89q.worldguard.protection.managers.RegionManager;
9+
import io.github.eirikh1996.structureboxes.StructureBoxes;
10+
import io.github.eirikh1996.structureboxes.processing.BukkitRegionPredicate;
11+
import io.github.eirikh1996.structureboxes.processing.Result;
12+
import net.kyori.adventure.text.Component;
13+
import org.bukkit.entity.Player;
14+
import org.jetbrains.annotations.NotNull;
15+
16+
public class WorldGuardRegionValidator implements BukkitRegionPredicate {
17+
@Override
18+
public @NotNull Result validate(@NotNull Player player, @NotNull Location location) {
19+
if (!(location.getExtent() instanceof World)) {
20+
throw new IllegalArgumentException("Extent of supplied location must be of type World");
21+
}
22+
LocalPlayer lp = StructureBoxes.getInstance().getWorldGuardPlugin().wrapPlayer(player);
23+
RegionManager manager = WorldGuard.getInstance().getPlatform().getRegionContainer().get((World) location.getExtent());
24+
ApplicableRegionSet regions = manager.getApplicableRegions(location.toVector().toBlockPoint());
25+
final Result res = Result.of(regions.isMemberOfAll(lp) || regions.isOwnerOfAll(lp));
26+
if (res.isFailure()) {
27+
player.sendMessage(Component.text());
28+
}
29+
return res;
30+
}
31+
32+
@Override
33+
public @NotNull Result regionPresent(@NotNull Location location) {
34+
return Result.of(WorldGuard.getInstance().getPlatform().getRegionContainer().get((World) location.getExtent()).getApplicableRegions(location.toVector().toBlockPoint()).size() > 0);
35+
}
36+
}

0 commit comments

Comments
 (0)