mirror of
https://gitlab.com/SamB440/rpgregions-2.git
synced 2026-01-03 22:16:18 +00:00
Add dynmap support, remove legacy
This commit is contained in:
@@ -13,6 +13,8 @@ import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -77,4 +79,7 @@ public interface IntegrationManager {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
List<Location> getBoundingBoxPoints(Location regionLocation, @Nullable String regionId);
|
||||
}
|
||||
|
||||
@@ -60,7 +60,6 @@ public interface IStorageManager {
|
||||
default void timing(long ms) {
|
||||
if (TIMINGS.size() >= 3) TIMINGS.remove(2);
|
||||
TIMINGS.add(ms);
|
||||
System.out.println(ms);
|
||||
if (ms >= 20) {
|
||||
RPGRegionsAPI.getAPI().getLogger().warning("Grabbing accounts is taking a long time! (" + ms + "ms)");
|
||||
}
|
||||
|
||||
@@ -74,6 +74,9 @@ public class ConfiguredRegion {
|
||||
@EditableField(material = XMaterial.NETHER_STAR, name = "Set teleport cooldown", description = "Set the cooldown for teleportation")
|
||||
private int teleportCooldown;
|
||||
private boolean showActionbar;
|
||||
@EditableField(material = XMaterial.RED_DYE, name = "Hex display colour", description = "Set the colour of the region. It is a hex colour (e.g 0x42f4f1 for red) and is used in dynmap.")
|
||||
private final String colour;
|
||||
private final String lineColour;
|
||||
|
||||
public ConfiguredRegion(@Nullable World world, String id, String customName,
|
||||
List<DiscoveryReward> rewards, List<RegionEffect> effects) {
|
||||
@@ -98,6 +101,8 @@ public class ConfiguredRegion {
|
||||
this.alwaysShowTitles = false;
|
||||
this.teleportCooldown = 0;
|
||||
this.showActionbar = true;
|
||||
this.colour = String.valueOf(13369344);
|
||||
this.lineColour = String.valueOf(13369344);
|
||||
}
|
||||
|
||||
public ConfiguredRegion(@Nullable World world, String id, String customName,
|
||||
@@ -314,6 +319,21 @@ public class ConfiguredRegion {
|
||||
this.showActionbar = showActionbar;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public List<Location> getBoundingBox() {
|
||||
return RPGRegionsAPI.getAPI().getManagers().getIntegrationManager().getBoundingBoxPoints(location, id);
|
||||
}
|
||||
|
||||
public String getColour() {
|
||||
if (colour == null) return "0";
|
||||
return colour;
|
||||
}
|
||||
|
||||
public String getLineColour() {
|
||||
if (lineColour == null) return "0";
|
||||
return lineColour;
|
||||
}
|
||||
|
||||
public void save(IRPGRegionsAPI plugin) {
|
||||
try {
|
||||
File file = this.findFile(plugin);
|
||||
|
||||
@@ -52,6 +52,9 @@ repositories {
|
||||
|
||||
maven { url 'https://repo.codemc.io/repository/maven-snapshots/' }
|
||||
|
||||
// Dynmap
|
||||
maven { url 'https://repo.mikeprimm.com' }
|
||||
|
||||
flatDir { dir '../libraries' }
|
||||
}
|
||||
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
# Legacy
|
||||
This only exists for historical reasons and will be removed at a future date.
|
||||
@@ -1,70 +0,0 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
}
|
||||
|
||||
group = pluginGroup
|
||||
version = pluginVersion
|
||||
|
||||
sourceCompatibility = 1.8
|
||||
targetCompatibility = 1.8
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
mavenLocal()
|
||||
|
||||
maven { url 'https://jitpack.io' }
|
||||
|
||||
maven {
|
||||
name 'papermc-repo'
|
||||
url 'https://papermc.io/repo/repository/maven-public/'
|
||||
}
|
||||
|
||||
maven {
|
||||
name 'sonatype'
|
||||
url 'https://oss.sonatype.org/content/groups/public/'
|
||||
}
|
||||
|
||||
maven {
|
||||
name 'CodeMC'
|
||||
url 'https://repo.codemc.org/repository/maven-public'
|
||||
}
|
||||
|
||||
maven { url "https://repo.aikar.co/content/groups/aikar/" }
|
||||
|
||||
// worldguard
|
||||
maven { url "https://maven.enginehub.org/repo/" }
|
||||
|
||||
// PAPI
|
||||
maven { url 'http://repo.extendedclip.com/content/repositories/placeholderapi/' }
|
||||
|
||||
// plan
|
||||
maven {
|
||||
name 'bintray'
|
||||
url 'https://dl.bintray.com/rsl1122/Plan-repository'
|
||||
}
|
||||
|
||||
maven { url 'https://hub.spigotmc.org/nexus/content/repositories/public/' }
|
||||
|
||||
// MythicMobs
|
||||
maven { url 'https://mvn.lumine.io/repository/maven-public/' }
|
||||
|
||||
maven { url 'https://repo.codemc.io/repository/maven-snapshots/' }
|
||||
|
||||
flatDir { dir '../libraries' }
|
||||
}
|
||||
|
||||
dependencies {
|
||||
testCompile group: 'junit', name: 'junit', version: '4.12'
|
||||
compileOnly ('com.sk89q.worldguard:worldguard-legacy:6.2') {
|
||||
exclude group: 'com.destroystokyo.paper'
|
||||
exclude group: 'org.spigotmc'
|
||||
}
|
||||
compileOnly ('com.sk89q.worldedit:worldedit-core:6.1.4-SNAPSHOT') {
|
||||
exclude group: 'com.destroystokyo.paper'
|
||||
exclude group: 'org.spigotmc'
|
||||
}
|
||||
implementation 'com.gitlab.samb440:languagy:2.0.3-RELEASE' // languagy
|
||||
compileOnly 'org.spigotmc:spigot-api:1.12.2-R0.1-SNAPSHOT' // spigot
|
||||
compileOnly project(':rpgregions')
|
||||
compileOnly project(':api')
|
||||
}
|
||||
@@ -1,98 +0,0 @@
|
||||
package net.islandearth.rpgregions.api.integrations.worldguard;
|
||||
|
||||
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
|
||||
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
|
||||
import net.islandearth.rpgregions.api.IRPGRegionsAPI;
|
||||
import net.islandearth.rpgregions.api.events.RegionsEnterEvent;
|
||||
import net.islandearth.rpgregions.api.integrations.IntegrationManager;
|
||||
import net.islandearth.rpgregions.managers.data.region.ConfiguredRegion;
|
||||
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;
|
||||
import java.util.Set;
|
||||
|
||||
public class WorldGuardLegacyIntegration implements IntegrationManager {
|
||||
|
||||
private final IRPGRegionsAPI plugin;
|
||||
|
||||
public WorldGuardLegacyIntegration(IRPGRegionsAPI plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInRegion(Location location) {
|
||||
return !this.getProtectedRegions(location).isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMove(PlayerMoveEvent pme) {
|
||||
Player player = pme.getPlayer();
|
||||
int oldX = pme.getFrom().getBlockX();
|
||||
int oldY = pme.getFrom().getBlockY();
|
||||
int oldZ = pme.getFrom().getBlockZ();
|
||||
int x = pme.getTo().getBlockX();
|
||||
int y = pme.getTo().getBlockY();
|
||||
int z = pme.getTo().getBlockZ();
|
||||
Set<ProtectedRegion> oldRegions = this.getProtectedRegions(new Location(player.getWorld(), oldX, oldY, oldZ));
|
||||
Set<ProtectedRegion> regions = this.getProtectedRegions(new Location(player.getWorld(), x, y, z));
|
||||
|
||||
ConfiguredRegion prioritisedRegion = getPrioritisedRegion(pme.getTo());
|
||||
if (prioritisedRegion == null) return;
|
||||
List<String> stringRegions = new ArrayList<>();
|
||||
regions.forEach(region -> {
|
||||
if (!prioritisedRegion.getId().equals(region.getId())
|
||||
&& checkRequirements(pme, region.getId())) stringRegions.add(region.getId());
|
||||
});
|
||||
|
||||
stringRegions.add(0, getPrioritisedRegion(pme.getTo()).getId());
|
||||
Bukkit.getPluginManager().callEvent(new RegionsEnterEvent(player, stringRegions, !oldRegions.equals(regions)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConfiguredRegion getPrioritisedRegion(Location location) {
|
||||
Set<ProtectedRegion> regions = this.getProtectedRegions(location);
|
||||
ProtectedRegion highest = null;
|
||||
for (ProtectedRegion region : regions) {
|
||||
if (highest == null) {
|
||||
highest = region;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (region.getPriority() >= highest.getPriority()) {
|
||||
highest = region;
|
||||
}
|
||||
}
|
||||
|
||||
if (highest == null) return null;
|
||||
return plugin.getManagers().getRegionsCache().getConfiguredRegion(highest.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean exists(World world, String region) {
|
||||
return WorldGuardPlugin.inst()
|
||||
.getRegionContainer()
|
||||
.get(world)
|
||||
.getRegions().containsKey(region);
|
||||
}
|
||||
|
||||
private Set<ProtectedRegion> getProtectedRegions(Location location) {
|
||||
return WorldGuardPlugin.inst()
|
||||
.getRegionContainer()
|
||||
.get(location.getWorld())
|
||||
.getApplicableRegions(location)
|
||||
.getRegions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getAllRegionNames(org.bukkit.World world) {
|
||||
return WorldGuardPlugin.inst()
|
||||
.getRegionContainer()
|
||||
.get(world)
|
||||
.getRegions().keySet();
|
||||
}
|
||||
}
|
||||
BIN
libraries/Dynmap-3.1-spigot.jar
Normal file
BIN
libraries/Dynmap-3.1-spigot.jar
Normal file
Binary file not shown.
@@ -67,6 +67,7 @@ dependencies {
|
||||
compileOnly name: 'Residence4.9.2.2' // residence
|
||||
compileOnly name: 'GriefPrevention' // griefprevention
|
||||
if (ultraRegionsSupport) compileOnly name: 'UltraRegions' // ultraregions
|
||||
compileOnly 'org.jetbrains:annotations:20.1.0'
|
||||
compileOnly project(':api')
|
||||
compileOnly project(':rpgregions')
|
||||
}
|
||||
|
||||
@@ -11,6 +11,8 @@ import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
@@ -65,4 +67,9 @@ public class GriefPreventionIntegration implements IntegrationManager {
|
||||
}
|
||||
return claims;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull List<Location> getBoundingBoxPoints(Location regionLocation, @Nullable String regionId) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,10 @@ import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class ResidenceIntegration implements IntegrationManager {
|
||||
@@ -55,4 +58,9 @@ public class ResidenceIntegration implements IntegrationManager {
|
||||
public Set<String> getAllRegionNames(World world) {
|
||||
return Residence.getInstance().getResidenceManager().getResidences().keySet();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull List<Location> getBoundingBoxPoints(Location regionLocation, @Nullable String regionId) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,10 @@ import net.islandearth.rpgregions.managers.data.region.ConfiguredRegion;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class RPGRegionsIntegration implements IntegrationManager {
|
||||
@@ -34,4 +37,9 @@ public class RPGRegionsIntegration implements IntegrationManager {
|
||||
public Set<String> getAllRegionNames(World world) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull List<Location> getBoundingBoxPoints(Location regionLocation, @Nullable String regionId) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@ import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
@@ -86,6 +88,11 @@ public class UltraRegionsIntegration implements IntegrationManager {
|
||||
return regions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull List<Location> getBoundingBoxPoints(Location regionLocation, @Nullable String regionId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
private List<Region> getProtectedRegions(Location location) {
|
||||
Optional<ManagedWorld> world = UltraRegions.getAPI().getWorlds().find(location.getWorld());
|
||||
if (world.isPresent()) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package net.islandearth.rpgregions.api.integrations.worldguard;
|
||||
|
||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
||||
import com.sk89q.worldedit.math.BlockVector2;
|
||||
import com.sk89q.worldedit.math.BlockVector3;
|
||||
import com.sk89q.worldguard.WorldGuard;
|
||||
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
|
||||
@@ -13,6 +14,8 @@ import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -95,6 +98,22 @@ public class WorldGuardIntegration implements IntegrationManager {
|
||||
.getRegions().keySet();
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<Location> getBoundingBoxPoints(Location regionLocation, @Nullable String regionId) {
|
||||
List<Location> points = new ArrayList<>();
|
||||
for (ProtectedRegion protectedRegion : getProtectedRegions(regionLocation)) {
|
||||
if (regionId != null && !protectedRegion.getId().equals(regionId)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (BlockVector2 point : protectedRegion.getPoints()) {
|
||||
points.add(new Location(regionLocation.getWorld(), point.getX(), regionLocation.getY(), point.getZ()));
|
||||
}
|
||||
}
|
||||
return points;
|
||||
}
|
||||
|
||||
private Set<ProtectedRegion> getProtectedRegions(Location location) {
|
||||
return WorldGuard.getInstance()
|
||||
.getPlatform()
|
||||
|
||||
@@ -50,6 +50,9 @@ repositories {
|
||||
|
||||
maven { url 'https://repo.codemc.io/repository/maven-snapshots/' }
|
||||
|
||||
// Dynmap
|
||||
maven { url 'https://repo.mikeprimm.com' }
|
||||
|
||||
flatDir { dir '../libraries' }
|
||||
}
|
||||
|
||||
@@ -85,6 +88,7 @@ dependencies {
|
||||
compileOnly 'com.github.shynixn.headdatabase:hdb-api:1.0' // head database
|
||||
compileOnly 'com.djrapitops:Plan-api:5.1-R0.4' // plan
|
||||
compileOnly 'io.lumine.xikage:MythicMobs:4.9.1'
|
||||
compileOnly name: 'Dynmap-3.1-spigot' // Dynmap
|
||||
compileOnly 'org.jetbrains:annotations:20.1.0'
|
||||
|
||||
compileOnly project(':api')
|
||||
|
||||
@@ -49,6 +49,7 @@ import net.islandearth.rpgregions.rewards.QuestReward;
|
||||
import net.islandearth.rpgregions.rewards.RegionDiscoverReward;
|
||||
import net.islandearth.rpgregions.rewards.RegionRewardRegistry;
|
||||
import net.islandearth.rpgregions.rewards.TeleportReward;
|
||||
import net.islandearth.rpgregions.tasks.DynmapTask;
|
||||
import net.islandearth.rpgregions.translation.Translations;
|
||||
import net.islandearth.rpgregions.utils.XMaterial;
|
||||
import net.islandearth.rpgregions.utils.XSound;
|
||||
@@ -70,6 +71,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.logging.Level;
|
||||
|
||||
public final class RPGRegions extends JavaPlugin implements IRPGRegionsAPI, LanguagyPluginHook {
|
||||
|
||||
@@ -108,6 +110,7 @@ public final class RPGRegions extends JavaPlugin implements IRPGRegionsAPI, Lang
|
||||
this.registerListeners();
|
||||
this.registerCommands();
|
||||
this.hook(this);
|
||||
this.registerTasks();
|
||||
this.registerMetrics();
|
||||
}
|
||||
|
||||
@@ -163,6 +166,7 @@ public final class RPGRegions extends JavaPlugin implements IRPGRegionsAPI, Lang
|
||||
config.options().header(header);
|
||||
config.addDefault("settings.dev.debug", false);
|
||||
config.addDefault("settings.integration.name", getIntegration());
|
||||
config.addDefault("settings.external.dynmap", true);
|
||||
config.addDefault("settings.storage.mode", "file");
|
||||
config.addDefault("settings.sql.host", "localhost");
|
||||
config.addDefault("settings.sql.port", 3306);
|
||||
@@ -370,6 +374,14 @@ public final class RPGRegions extends JavaPlugin implements IRPGRegionsAPI, Lang
|
||||
return "WorldGuard";
|
||||
}
|
||||
|
||||
private void registerTasks() {
|
||||
if (Bukkit.getPluginManager().getPlugin("Dynmap") != null
|
||||
&& getConfig().getBoolean("settings.external.dynmap")) {
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new DynmapTask(this), 0L, 20L);
|
||||
getLogger().info("Registered support for Dynmap.");
|
||||
}
|
||||
}
|
||||
|
||||
private void registerMetrics() {
|
||||
Metrics metrics = new Metrics(this, 2066);
|
||||
// regions_discovered chart currently causes lag due to bStats not running it async :(
|
||||
@@ -392,4 +404,12 @@ public final class RPGRegions extends JavaPlugin implements IRPGRegionsAPI, Lang
|
||||
public boolean debug() {
|
||||
return this.getConfig().getBoolean("settings.dev.debug");
|
||||
}
|
||||
|
||||
public void debug(String debug) {
|
||||
this.debug(debug, Level.INFO);
|
||||
}
|
||||
|
||||
public void debug(String debug, Level level) {
|
||||
if (debug()) this.getLogger().log(level, "[Debug] " + debug);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
package net.islandearth.rpgregions.tasks;
|
||||
|
||||
import net.islandearth.rpgregions.RPGRegions;
|
||||
import org.bukkit.Location;
|
||||
import org.dynmap.DynmapAPI;
|
||||
import org.dynmap.bukkit.DynmapPlugin;
|
||||
import org.dynmap.markers.AreaMarker;
|
||||
import org.dynmap.markers.MarkerSet;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class DynmapTask implements Runnable {
|
||||
|
||||
private final RPGRegions plugin;
|
||||
private final DynmapAPI dynmapAPI;
|
||||
private final Map<String, AreaMarker> markers;
|
||||
private final MarkerSet markerSet;
|
||||
|
||||
public DynmapTask(final RPGRegions plugin) {
|
||||
this.plugin = plugin;
|
||||
this.dynmapAPI = DynmapPlugin.plugin;
|
||||
this.markers = new HashMap<>();
|
||||
this.markerSet = dynmapAPI.getMarkerAPI().createMarkerSet("rpgregions.regions", "Regions", dynmapAPI.getMarkerAPI().getMarkerIcons(), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
plugin.getManagers().getRegionsCache().getConfiguredRegions().forEach((name, region) -> {
|
||||
List<Location> boundingBox = region.getBoundingBox();
|
||||
if (boundingBox == null) return;
|
||||
if (!markers.containsKey(name)) {
|
||||
if (region.getWorld() == null) return;
|
||||
plugin.debug("Generated bounding box for dynmap integration (" + name + "): " + boundingBox);
|
||||
String markerid = region.getWorld() + "_" + name;
|
||||
AreaMarker am = markerSet.createAreaMarker(markerid, region.getCustomName(), true, region.getWorld().getName(), new double[1000], new double[1000], false);
|
||||
markers.put(name, am);
|
||||
}
|
||||
|
||||
// Update the marker information
|
||||
AreaMarker am = markers.get(name);
|
||||
double[] x = new double[boundingBox.size()];
|
||||
double[] z = new double[boundingBox.size()];
|
||||
for(int i = 0; i < boundingBox.size(); i++) {
|
||||
Location point = boundingBox.get(i);
|
||||
x[i] = point.getX(); z[i] = point.getZ();
|
||||
}
|
||||
|
||||
am.setCornerLocations(x, z);
|
||||
am.setLabel(region.getCustomName(), true);
|
||||
if (!region.getColour().equals("0")) am.setFillStyle(0.5, Integer.parseInt(region.getColour()));
|
||||
if (!region.getLineColour().equals("0")) am.setLineStyle(1, 0.5, Integer.parseInt(region.getLineColour()));
|
||||
am.setDescription("<b>" + region.getCustomName() + "</b>");
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@ name: RPGRegions
|
||||
version: @version@
|
||||
main: net.islandearth.rpgregions.RPGRegions
|
||||
api-version: '1.13'
|
||||
softdepend: [Hyperverse, Multiverse, Languagy, UltraRegions, WorldGuard, PlaceholderAPI, HeadDatabase, Residence, Plan, GriefPrevention, Vault, MythicMobs, AlonsoLevels]
|
||||
softdepend: [Hyperverse, Multiverse, Languagy, UltraRegions, WorldGuard, PlaceholderAPI, HeadDatabase, Residence, Plan, GriefPrevention, Vault, MythicMobs, AlonsoLevels, Dynmap]
|
||||
authors: [SamB440]
|
||||
description: Discoverable regions
|
||||
website: https://fortitude.islandearth.net
|
||||
|
||||
Reference in New Issue
Block a user