9
0
mirror of https://gitlab.com/SamB440/rpgregions-2.git synced 2026-01-03 22:16:18 +00:00

Implements #14

This commit is contained in:
Sam
2020-05-15 14:44:32 +01:00
parent 97d62b0360
commit e30c890c5d
3 changed files with 73 additions and 1 deletions

View File

@@ -41,6 +41,7 @@ dependencies {
compileOnly 'org.spigotmc:spigot-api:1.13-R0.1-SNAPSHOT' // spigot
compileOnly 'net.islandearth:languagy:2.0.0-SNAPSHOT' // languagy
compileOnly 'net.zrips:residence:4.9.0.6' // residence
compileOnly 'me.ryanhamshire:griefprevention:16.13.0' // griefprevention
compileOnly project(':api')
compileOnly project(':rpgregions')
}

View File

@@ -0,0 +1,70 @@
package net.islandearth.rpgregions.api.integrations.griefprevention;
import com.bekvon.bukkit.residence.Residence;
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
import me.ryanhamshire.GriefPrevention.Claim;
import me.ryanhamshire.GriefPrevention.GriefPrevention;
import net.islandearth.rpgregions.RPGRegions;
import net.islandearth.rpgregions.api.events.RegionsEnterEvent;
import net.islandearth.rpgregions.api.integrations.IntegrationManager;
import net.islandearth.rpgregions.managers.data.region.ConfiguredRegion;
import net.islandearth.rpgregions.requirements.RegionRequirement;
import net.islandearth.rpgregions.translation.Translations;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerMoveEvent;
import java.util.ArrayList;
import java.util.List;
public class GriefPreventionIntegration implements IntegrationManager {
private final RPGRegions plugin;
public GriefPreventionIntegration(RPGRegions plugin) {
this.plugin = plugin;
}
@Override
public boolean isInRegion(Location location) {
Claim claim = GriefPrevention.instance.dataStore.getClaimAt(location, false, null);
return claim != null;
}
@Override
public void handleMove(PlayerMoveEvent pme) {
Player player = pme.getPlayer();
Claim oldClaim = GriefPrevention.instance.dataStore.getClaimAt(pme.getFrom(), false, null);
Claim claim = GriefPrevention.instance.dataStore.getClaimAt(pme.getTo(), false, null);
if (oldClaim == null || claim == null) return;
List<String> stringClaim = new ArrayList<>();
ConfiguredRegion configuredRegion = plugin.getManagers().getRegionsCache().getConfiguredRegion("" + claim.getID());
if (configuredRegion != null && configuredRegion.getRequirements() != null) {
for (RegionRequirement requirement : configuredRegion.getRequirements()) {
if (!player.hasPermission("rpgregions.bypassentry") && !requirement.meetsRequirements(player)) {
requirement.getPreventType().prevent(pme);
Translations.CANNOT_ENTER.send(player, requirement.getText(player));
return;
}
}
}
stringClaim.add("" + claim.getID());
Bukkit.getPluginManager().callEvent(new RegionsEnterEvent(player, stringClaim, !oldClaim.equals(claim)));
}
@Override
public ConfiguredRegion getPrioritisedRegion(Location location) {
Claim claim = GriefPrevention.instance.dataStore.getClaimAt(location, false, null);
return plugin.getManagers().getRegionsCache().getConfiguredRegions().get("" + claim.getID());
}
@Override
public boolean exists(World location, String region) {
Claim claim = GriefPrevention.instance.dataStore.getClaim(Long.parseLong(region));
return claim != null;
}
}

View File

@@ -9,7 +9,8 @@ import java.util.Optional;
public enum IntegrationType {
WORLDGUARD_LEGACY("worldguard.WorldGuardLegacyIntegration"),
WORLDGUARD("worldguard.WorldGuardIntegration"),
RESIDENCE("residence.ResidenceIntegration");
RESIDENCE("residence.ResidenceIntegration"),
GRIEFPREVENTION("griefprevention.GriefPrevention");
private final String path;