mirror of
https://github.com/PikaMug/Quests.git
synced 2025-02-26 01:11:19 +01:00
Support Denizen 1.1.0+ in addition to legacy versions, fixes #845
This commit is contained in:
parent
f898f34e1f
commit
e55a0d9290
@ -58,9 +58,9 @@
|
|||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.aufdemrand</groupId>
|
<groupId>com.denizenscript</groupId>
|
||||||
<artifactId>denizen</artifactId>
|
<artifactId>denizen</artifactId>
|
||||||
<version>1.0.2-SNAPSHOT</version>
|
<version>1.1.0-SNAPSHOT</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -12,20 +12,18 @@
|
|||||||
|
|
||||||
package me.blackvein.quests;
|
package me.blackvein.quests;
|
||||||
|
|
||||||
import net.aufdemrand.denizen.BukkitScriptEntryData;
|
|
||||||
import net.aufdemrand.denizen.objects.dPlayer;
|
|
||||||
import net.aufdemrand.denizencore.scripts.ScriptRegistry;
|
|
||||||
import net.aufdemrand.denizencore.scripts.containers.core.TaskScriptContainer;
|
|
||||||
|
|
||||||
public class DenizenTrigger {
|
public class DenizenTrigger {
|
||||||
|
private Quests plugin;
|
||||||
|
|
||||||
|
public DenizenTrigger(Quests plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
protected boolean runDenizenScript(String scriptName, Quester quester) {
|
protected boolean runDenizenScript(String scriptName, Quester quester) {
|
||||||
if (scriptName == null) {
|
if (scriptName == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (ScriptRegistry.containsScript(scriptName)) {
|
if (plugin.getDependencies().getDenizenAPI().containsScript(scriptName)) {
|
||||||
TaskScriptContainer task_script = ScriptRegistry.getScriptContainerAs(scriptName, TaskScriptContainer.class);
|
plugin.getDependencies().getDenizenAPI().runTaskScript(scriptName, quester.getPlayer());
|
||||||
BukkitScriptEntryData entryData = new BukkitScriptEntryData(dPlayer.mirrorBukkitPlayer(quester.getPlayer()), null);
|
|
||||||
task_script.runTaskScript(entryData, null);
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -14,9 +14,9 @@ package me.blackvein.quests;
|
|||||||
|
|
||||||
import org.bukkit.plugin.RegisteredServiceProvider;
|
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||||
|
|
||||||
|
import me.blackvein.quests.util.DenizenAPI;
|
||||||
import me.blackvein.quests.util.WorldGuardAPI;
|
import me.blackvein.quests.util.WorldGuardAPI;
|
||||||
import me.clip.placeholderapi.PlaceholderAPIPlugin;
|
import me.clip.placeholderapi.PlaceholderAPIPlugin;
|
||||||
import net.aufdemrand.denizen.Denizen;
|
|
||||||
import net.citizensnpcs.api.CitizensPlugin;
|
import net.citizensnpcs.api.CitizensPlugin;
|
||||||
import net.milkbowl.vault.economy.Economy;
|
import net.milkbowl.vault.economy.Economy;
|
||||||
import net.milkbowl.vault.permission.Permission;
|
import net.milkbowl.vault.permission.Permission;
|
||||||
@ -42,7 +42,7 @@ public class Dependencies {
|
|||||||
private static PhatLoots phatLoots = null;
|
private static PhatLoots phatLoots = null;
|
||||||
private static PlaceholderAPIPlugin placeholder = null;
|
private static PlaceholderAPIPlugin placeholder = null;
|
||||||
private static CitizensPlugin citizens = null;
|
private static CitizensPlugin citizens = null;
|
||||||
private static Denizen denizen = null;
|
private static DenizenAPI denizenApi = null;
|
||||||
private static CitizensBooksAPI citizensBooks = null;
|
private static CitizensBooksAPI citizensBooks = null;
|
||||||
private static DungeonsXL dungeons = null;
|
private static DungeonsXL dungeons = null;
|
||||||
private static PartiesAPI parties = null;
|
private static PartiesAPI parties = null;
|
||||||
@ -87,8 +87,8 @@ public class Dependencies {
|
|||||||
citizens = null;
|
citizens = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Denizen getDenizen() {
|
public DenizenAPI getDenizenAPI() {
|
||||||
return denizen;
|
return denizenApi;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CitizensBooksAPI getCitizensBooksApi() {
|
public CitizensBooksAPI getCitizensBooksApi() {
|
||||||
@ -126,7 +126,7 @@ public class Dependencies {
|
|||||||
worldGuardApi = new WorldGuardAPI(plugin.getServer().getPluginManager().getPlugin("WorldGuard"));
|
worldGuardApi = new WorldGuardAPI(plugin.getServer().getPluginManager().getPlugin("WorldGuard"));
|
||||||
}
|
}
|
||||||
if (isPluginAvailable("Denizen")) {
|
if (isPluginAvailable("Denizen")) {
|
||||||
denizen = (Denizen) plugin.getServer().getPluginManager().getPlugin("Denizen");
|
denizenApi = new DenizenAPI();
|
||||||
}
|
}
|
||||||
if (isPluginAvailable("mcMMO")) {
|
if (isPluginAvailable("mcMMO")) {
|
||||||
try {
|
try {
|
||||||
|
@ -96,7 +96,7 @@ import me.blackvein.quests.util.Lang;
|
|||||||
import me.blackvein.quests.util.LocaleQuery;
|
import me.blackvein.quests.util.LocaleQuery;
|
||||||
import me.blackvein.quests.util.MiscUtil;
|
import me.blackvein.quests.util.MiscUtil;
|
||||||
import me.clip.placeholderapi.PlaceholderAPI;
|
import me.clip.placeholderapi.PlaceholderAPI;
|
||||||
import net.aufdemrand.denizencore.scripts.ScriptRegistry;
|
|
||||||
import net.citizensnpcs.api.CitizensAPI;
|
import net.citizensnpcs.api.CitizensAPI;
|
||||||
import net.citizensnpcs.api.npc.NPC;
|
import net.citizensnpcs.api.npc.NPC;
|
||||||
|
|
||||||
@ -1984,8 +1984,8 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
|
|||||||
List<Integer> npcAmountsToKill = new LinkedList<Integer>();
|
List<Integer> npcAmountsToKill = new LinkedList<Integer>();
|
||||||
// Denizen script load
|
// Denizen script load
|
||||||
if (config.contains("quests." + questKey + ".stages.ordered." + s2 + ".script-to-run")) {
|
if (config.contains("quests." + questKey + ".stages.ordered." + s2 + ".script-to-run")) {
|
||||||
if (ScriptRegistry.containsScript(config.getString("quests." + questKey + ".stages.ordered." + s2 + ".script-to-run"))) {
|
if (getDependencies().getDenizenAPI().containsScript(config.getString("quests." + questKey + ".stages.ordered." + s2 + ".script-to-run"))) {
|
||||||
trigger = new DenizenTrigger();
|
trigger = new DenizenTrigger(this);
|
||||||
oStage.script = config.getString("quests." + questKey + ".stages.ordered." + s2 + ".script-to-run");
|
oStage.script = config.getString("quests." + questKey + ".stages.ordered." + s2 + ".script-to-run");
|
||||||
} else {
|
} else {
|
||||||
stageFailed("script-to-run: in Stage " + s2 + " of Quest " + quest.getName() + " is not a Denizen script!");
|
stageFailed("script-to-run: in Stage " + s2 + " of Quest " + quest.getName() + " is not a Denizen script!");
|
||||||
|
210
main/src/main/java/me/blackvein/quests/util/DenizenAPI.java
Normal file
210
main/src/main/java/me/blackvein/quests/util/DenizenAPI.java
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
package me.blackvein.quests.util;
|
||||||
|
|
||||||
|
import java.lang.reflect.Constructor;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.denizenscript.denizen.BukkitScriptEntryData;
|
||||||
|
import com.denizenscript.denizen.objects.NPCTag;
|
||||||
|
import com.denizenscript.denizen.objects.PlayerTag;
|
||||||
|
import com.denizenscript.denizencore.scripts.ScriptRegistry;
|
||||||
|
import com.denizenscript.denizencore.scripts.containers.core.TaskScriptContainer;
|
||||||
|
|
||||||
|
import net.citizensnpcs.api.npc.NPC;
|
||||||
|
|
||||||
|
public class DenizenAPI {
|
||||||
|
private Object denizen = null;
|
||||||
|
private Class<?> scriptRegistry = null;
|
||||||
|
private Method containsScriptGetMethod = null;
|
||||||
|
private Method _getScriptNamesGetMethod = null;
|
||||||
|
private Class<?> scriptContainer = null;
|
||||||
|
private Class<?> taskScriptContainer = null;
|
||||||
|
private Method getScriptContainerAsGetMethod = null;
|
||||||
|
private Class<?> dPlayer = null;
|
||||||
|
private Class<?> dNPC = null;
|
||||||
|
private Method mirrorBukkitPlayerGetMethod = null;
|
||||||
|
private Method mirrorCitizensNPCGetMethod = null;
|
||||||
|
private Class<?> scriptEntryData = null;
|
||||||
|
private Class<?> bukkitScriptEntryData = null;
|
||||||
|
public boolean isLegacyVersion = false;
|
||||||
|
|
||||||
|
public boolean isEnabled() {
|
||||||
|
return denizen != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DenizenAPI() {
|
||||||
|
try {
|
||||||
|
denizen = Class.forName("com.denizenscript.denizen.Denizen");
|
||||||
|
// Denizen 1.1.0+
|
||||||
|
} catch (Exception e) {
|
||||||
|
try {
|
||||||
|
//denizen = Class.forName("net.aufdemrand.denizen.Denizen");
|
||||||
|
scriptRegistry = Class.forName("net.aufdemrand.denizencore.scripts.ScriptRegistry");
|
||||||
|
scriptContainer = Class.forName("net.aufdemrand.denizencore.scripts.containers.ScriptContainer");
|
||||||
|
taskScriptContainer = Class.forName("net.aufdemrand.denizencore.scripts.containers.core.TaskScriptContainer");
|
||||||
|
dPlayer = Class.forName("net.aufdemrand.denizen.objects.dPlayer");
|
||||||
|
dNPC = Class.forName("net.aufdemrand.denizen.objects.dNPC");
|
||||||
|
scriptEntryData = Class.forName("net.aufdemrand.denizencore.scripts.ScriptEntryData");
|
||||||
|
bukkitScriptEntryData = Class.forName("net.aufdemrand.denizen.BukkitScriptEntryData");
|
||||||
|
// Denizen <1.1.0
|
||||||
|
} catch (Exception e2) {
|
||||||
|
// Fail silently
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initialize() {
|
||||||
|
if (!isLegacyVersion) {
|
||||||
|
isLegacyVersion = true;
|
||||||
|
if (denizen == null) {
|
||||||
|
try {
|
||||||
|
containsScriptGetMethod = scriptRegistry.getMethod("containsScript", String.class);
|
||||||
|
_getScriptNamesGetMethod = scriptRegistry.getMethod("_getScriptNames");
|
||||||
|
getScriptContainerAsGetMethod = scriptRegistry.getMethod("getScriptContainerAs", String.class, taskScriptContainer.getClass());
|
||||||
|
mirrorBukkitPlayerGetMethod = dPlayer.getMethod("mirrorBukkitPlayer", OfflinePlayer.class);
|
||||||
|
mirrorCitizensNPCGetMethod = dNPC.getMethod("mirrorCitizensNPC", NPC.class);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Bukkit.getLogger().log(Level.WARNING, "Quests failed to bind to Denizen, integration will not work!", e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public boolean containsScript(String input) {
|
||||||
|
if (denizen != null) {
|
||||||
|
// Denizen 1.1.0+
|
||||||
|
return ScriptRegistry.containsScript(input);
|
||||||
|
} else {
|
||||||
|
// Denizen <1.1.0
|
||||||
|
initialize();
|
||||||
|
if (scriptRegistry == null || containsScriptGetMethod == null) return false;
|
||||||
|
boolean script = false;
|
||||||
|
try {
|
||||||
|
script = (boolean)containsScriptGetMethod.invoke(scriptRegistry, input);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Bukkit.getLogger().log(Level.WARNING, "Quests encountered an error invoking Denizen ScriptRegistry#containsScript", e);
|
||||||
|
}
|
||||||
|
return script;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public String getScriptContainerName(String input) {
|
||||||
|
if (denizen != null) {
|
||||||
|
return ScriptRegistry.getScriptContainer(input).getName();
|
||||||
|
} else {
|
||||||
|
initialize();
|
||||||
|
if (scriptRegistry == null || scriptContainer == null) return null;
|
||||||
|
String name = null;
|
||||||
|
Object instance;
|
||||||
|
try {
|
||||||
|
Constructor<?> constructor = scriptRegistry.getConstructor(YamlConfiguration.class, String.class);
|
||||||
|
instance = constructor.newInstance(null, input);
|
||||||
|
name = (String)instance.getClass().getMethod("getName").invoke(scriptContainer);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Bukkit.getLogger().log(Level.WARNING, "Quests encountered an error invoking Denizen ScriptContainer#getName", e);
|
||||||
|
}
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
@Nullable
|
||||||
|
public Set<String> _getScriptNames() {
|
||||||
|
if (denizen != null) {
|
||||||
|
return ScriptRegistry._getScriptNames();
|
||||||
|
} else {
|
||||||
|
initialize();
|
||||||
|
if (scriptRegistry == null || _getScriptNamesGetMethod == null) return null;
|
||||||
|
Set<String> names = null;
|
||||||
|
try {
|
||||||
|
names = (Set<String>)_getScriptNamesGetMethod.invoke(scriptRegistry);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Bukkit.getLogger().log(Level.WARNING, "Quests encountered an error invoking Denizen ScriptRegistry#_getScriptNames", e);
|
||||||
|
}
|
||||||
|
return names;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public Object getScriptContainerAs(String scriptName) {
|
||||||
|
if (denizen != null) {
|
||||||
|
return ScriptRegistry.getScriptContainerAs(scriptName, TaskScriptContainer.class);
|
||||||
|
} else {
|
||||||
|
initialize();
|
||||||
|
if (scriptRegistry == null || taskScriptContainer == null) return null;
|
||||||
|
Object container = null;
|
||||||
|
try {
|
||||||
|
container = getScriptContainerAsGetMethod.invoke(scriptRegistry, scriptName, taskScriptContainer);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Bukkit.getLogger().log(Level.WARNING, "Quests encountered an error invoking Denizen #getScriptContainerAs", e);
|
||||||
|
}
|
||||||
|
return container;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public Object mirrorBukkitPlayer(Player player) {
|
||||||
|
if (denizen != null) {
|
||||||
|
return PlayerTag.mirrorBukkitPlayer(player);
|
||||||
|
} else {
|
||||||
|
initialize();
|
||||||
|
if (dPlayer == null || mirrorBukkitPlayerGetMethod == null) return null;
|
||||||
|
Object dp = null;
|
||||||
|
try {
|
||||||
|
dp = mirrorBukkitPlayerGetMethod.invoke(dPlayer, player);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Bukkit.getLogger().log(Level.WARNING, "Quests encountered an error invoking Denizen dPlayer#mirrorBukkitPlayer", e);
|
||||||
|
}
|
||||||
|
return dp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public Object mirrorCitizensNPC(NPC npc) {
|
||||||
|
if (denizen != null) {
|
||||||
|
return NPCTag.mirrorCitizensNPC(npc);
|
||||||
|
} else {
|
||||||
|
initialize();
|
||||||
|
if (dNPC == null || mirrorCitizensNPCGetMethod == null) return null;
|
||||||
|
Object dp = null;
|
||||||
|
try {
|
||||||
|
dp = mirrorCitizensNPCGetMethod.invoke(dNPC, npc);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Bukkit.getLogger().log(Level.WARNING, "Quests encountered an error invoking Denizen dNPC#mirrorCitizensNPC", e);
|
||||||
|
}
|
||||||
|
return dp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public void runTaskScript(String scriptName, Player player) {
|
||||||
|
if (denizen != null) {
|
||||||
|
TaskScriptContainer taskScript = ScriptRegistry.getScriptContainerAs(scriptName, TaskScriptContainer.class);
|
||||||
|
BukkitScriptEntryData entryData = new BukkitScriptEntryData(PlayerTag.mirrorBukkitPlayer(player), null);
|
||||||
|
taskScript.runTaskScript(entryData, null);
|
||||||
|
} else {
|
||||||
|
initialize();
|
||||||
|
if (scriptRegistry == null || bukkitScriptEntryData == null || scriptEntryData == null) return;
|
||||||
|
try {
|
||||||
|
Constructor<?> constructor = bukkitScriptEntryData.getConstructors()[0];
|
||||||
|
Object tsc = getScriptContainerAs(scriptName);
|
||||||
|
Method runTaskScript = tsc.getClass().getMethod("runTaskScript", scriptEntryData, Map.class);
|
||||||
|
runTaskScript.invoke(tsc, constructor.newInstance(mirrorBukkitPlayer(player), null), null);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Bukkit.getLogger().log(Level.WARNING, "Quests encountered an error invoking Denizen TaskScriptContainer#runTaskScript", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -17,8 +17,7 @@ import java.util.logging.Level;
|
|||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import me.blackvein.quests.Quests;
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
@ -33,7 +32,6 @@ import com.sk89q.worldguard.protection.managers.RegionManager;
|
|||||||
* @author NathanWolf
|
* @author NathanWolf
|
||||||
*/
|
*/
|
||||||
public class WorldGuardAPI {
|
public class WorldGuardAPI {
|
||||||
private Quests plugin;
|
|
||||||
private Object worldGuard = null;
|
private Object worldGuard = null;
|
||||||
private WorldGuardPlugin worldGuardPlugin = null;
|
private WorldGuardPlugin worldGuardPlugin = null;
|
||||||
private Object regionContainer = null;
|
private Object regionContainer = null;
|
||||||
@ -74,8 +72,8 @@ public class WorldGuardAPI {
|
|||||||
private void initialize() {
|
private void initialize() {
|
||||||
if (!initialized) {
|
if (!initialized) {
|
||||||
initialized = true;
|
initialized = true;
|
||||||
// Super hacky reflection to deal with differences in WorldGuard 6 and 7+
|
|
||||||
if (worldGuard != null) {
|
if (worldGuard != null) {
|
||||||
|
// WorldGuard 7+
|
||||||
try {
|
try {
|
||||||
Method getPlatFormMethod = worldGuard.getClass().getMethod("getPlatform");
|
Method getPlatFormMethod = worldGuard.getClass().getMethod("getPlatform");
|
||||||
Object platform = getPlatFormMethod.invoke(worldGuard);
|
Object platform = getPlatFormMethod.invoke(worldGuard);
|
||||||
@ -85,25 +83,25 @@ public class WorldGuardAPI {
|
|||||||
Class<?> worldEditAdapterClass = Class.forName("com.sk89q.worldedit.bukkit.BukkitAdapter");
|
Class<?> worldEditAdapterClass = Class.forName("com.sk89q.worldedit.bukkit.BukkitAdapter");
|
||||||
worldAdaptMethod = worldEditAdapterClass.getMethod("adapt", World.class);
|
worldAdaptMethod = worldEditAdapterClass.getMethod("adapt", World.class);
|
||||||
regionContainerGetMethod = regionContainer.getClass().getMethod("get", worldEditWorldClass);
|
regionContainerGetMethod = regionContainer.getClass().getMethod("get", worldEditWorldClass);
|
||||||
} catch (Exception ex) {
|
} catch (Exception e) {
|
||||||
plugin.getLogger().log(Level.WARNING, "Failed to bind to WorldGuard, integration will not work!", ex);
|
Bukkit.getLogger().log(Level.WARNING, "Quests failed to bind to WorldGuard, integration will not work!", e);
|
||||||
regionContainer = null;
|
regionContainer = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// WorldGuard <7
|
||||||
regionContainer = worldGuardPlugin.getRegionContainer();
|
regionContainer = worldGuardPlugin.getRegionContainer();
|
||||||
try {
|
try {
|
||||||
regionContainerGetMethod = regionContainer.getClass().getMethod("get", World.class);
|
regionContainerGetMethod = regionContainer.getClass().getMethod("get", World.class);
|
||||||
|
} catch (Exception e) {
|
||||||
} catch (Exception ex) {
|
Bukkit.getLogger().log(Level.WARNING, "Quests failed to bind to WorldGuard, integration will not work!", e);
|
||||||
plugin.getLogger().log(Level.WARNING, "Failed to bind to WorldGuard, integration will not work!", ex);
|
|
||||||
regionContainer = null;
|
regionContainer = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (regionContainer == null) {
|
if (regionContainer == null) {
|
||||||
plugin.getLogger().warning("Failed to find RegionContainer, WorldGuard integration will not function!");
|
Bukkit.getLogger().warning("Quests failed to find RegionContainer, WorldGuard integration will not function!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -115,13 +113,15 @@ public class WorldGuardAPI {
|
|||||||
RegionManager regionManager = null;
|
RegionManager regionManager = null;
|
||||||
try {
|
try {
|
||||||
if (worldAdaptMethod != null) {
|
if (worldAdaptMethod != null) {
|
||||||
|
// WorldGuard 7+
|
||||||
Object worldEditWorld = worldAdaptMethod.invoke(null, world);
|
Object worldEditWorld = worldAdaptMethod.invoke(null, world);
|
||||||
regionManager = (RegionManager)regionContainerGetMethod.invoke(regionContainer, worldEditWorld);
|
regionManager = (RegionManager)regionContainerGetMethod.invoke(regionContainer, worldEditWorld);
|
||||||
} else {
|
} else {
|
||||||
|
// WorldGuard <7
|
||||||
regionManager = (RegionManager)regionContainerGetMethod.invoke(regionContainer, world);
|
regionManager = (RegionManager)regionContainerGetMethod.invoke(regionContainer, world);
|
||||||
}
|
}
|
||||||
} catch (Exception ex) {
|
} catch (Exception e) {
|
||||||
plugin.getLogger().log(Level.WARNING, "An error occurred looking up a WorldGuard RegionManager", ex);
|
Bukkit.getLogger().log(Level.WARNING, "Quests encountered an error getting WorldGuard RegionManager", e);
|
||||||
}
|
}
|
||||||
return regionManager;
|
return regionManager;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user