mirror of
https://github.com/PikaMug/Quests.git
synced 2024-09-27 06:32:39 +02:00
Move new Denizen imports to separate class, fixes #876
This commit is contained in:
parent
1b6acef6c1
commit
88cd5ad048
@ -1,3 +1,15 @@
|
|||||||
|
/*******************************************************************************************************
|
||||||
|
* Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
||||||
|
* NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
|
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*******************************************************************************************************/
|
||||||
|
|
||||||
package me.blackvein.quests.util;
|
package me.blackvein.quests.util;
|
||||||
|
|
||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
@ -13,16 +25,10 @@ import org.bukkit.OfflinePlayer;
|
|||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.bukkit.entity.Player;
|
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;
|
import net.citizensnpcs.api.npc.NPC;
|
||||||
|
|
||||||
public class DenizenAPI {
|
public class DenizenAPI {
|
||||||
private Object denizen = null;
|
private Class<?> denizen = null;
|
||||||
private Class<?> scriptRegistry = null;
|
private Class<?> scriptRegistry = null;
|
||||||
private Method containsScriptGetMethod = null;
|
private Method containsScriptGetMethod = null;
|
||||||
private Method _getScriptNamesGetMethod = null;
|
private Method _getScriptNamesGetMethod = null;
|
||||||
@ -35,7 +41,6 @@ public class DenizenAPI {
|
|||||||
private Method mirrorCitizensNPCGetMethod = null;
|
private Method mirrorCitizensNPCGetMethod = null;
|
||||||
private Class<?> scriptEntryData = null;
|
private Class<?> scriptEntryData = null;
|
||||||
private Class<?> bukkitScriptEntryData = null;
|
private Class<?> bukkitScriptEntryData = null;
|
||||||
public boolean isLegacyVersion = false;
|
|
||||||
|
|
||||||
public boolean isEnabled() {
|
public boolean isEnabled() {
|
||||||
return denizen != null;
|
return denizen != null;
|
||||||
@ -47,7 +52,7 @@ public class DenizenAPI {
|
|||||||
// Denizen 1.1.0+
|
// Denizen 1.1.0+
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
try {
|
try {
|
||||||
//denizen = Class.forName("net.aufdemrand.denizen.Denizen");
|
denizen = Class.forName("net.aufdemrand.denizen.Denizen");
|
||||||
scriptRegistry = Class.forName("net.aufdemrand.denizencore.scripts.ScriptRegistry");
|
scriptRegistry = Class.forName("net.aufdemrand.denizencore.scripts.ScriptRegistry");
|
||||||
scriptContainer = Class.forName("net.aufdemrand.denizencore.scripts.containers.ScriptContainer");
|
scriptContainer = Class.forName("net.aufdemrand.denizencore.scripts.containers.ScriptContainer");
|
||||||
taskScriptContainer = Class.forName("net.aufdemrand.denizencore.scripts.containers.core.TaskScriptContainer");
|
taskScriptContainer = Class.forName("net.aufdemrand.denizencore.scripts.containers.core.TaskScriptContainer");
|
||||||
@ -62,31 +67,31 @@ public class DenizenAPI {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize Denizen <1.1.0 methods
|
||||||
|
*/
|
||||||
private void initialize() {
|
private void initialize() {
|
||||||
if (!isLegacyVersion) {
|
try {
|
||||||
isLegacyVersion = true;
|
containsScriptGetMethod = scriptRegistry.getMethod("containsScript", String.class);
|
||||||
if (denizen == null) {
|
_getScriptNamesGetMethod = scriptRegistry.getMethod("_getScriptNames");
|
||||||
try {
|
getScriptContainerAsGetMethod = scriptRegistry.getMethod("getScriptContainerAs", String.class, taskScriptContainer.getClass());
|
||||||
containsScriptGetMethod = scriptRegistry.getMethod("containsScript", String.class);
|
mirrorBukkitPlayerGetMethod = dPlayer.getMethod("mirrorBukkitPlayer", OfflinePlayer.class);
|
||||||
_getScriptNamesGetMethod = scriptRegistry.getMethod("_getScriptNames");
|
mirrorCitizensNPCGetMethod = dNPC.getMethod("mirrorCitizensNPC", NPC.class);
|
||||||
getScriptContainerAsGetMethod = scriptRegistry.getMethod("getScriptContainerAs", String.class, taskScriptContainer.getClass());
|
} catch (Exception e) {
|
||||||
mirrorBukkitPlayerGetMethod = dPlayer.getMethod("mirrorBukkitPlayer", OfflinePlayer.class);
|
Bukkit.getLogger().log(Level.WARNING, "Quests failed to bind to Denizen, integration will not work!", e);
|
||||||
mirrorCitizensNPCGetMethod = dNPC.getMethod("mirrorCitizensNPC", NPC.class);
|
return;
|
||||||
} catch (Exception e) {
|
|
||||||
Bukkit.getLogger().log(Level.WARNING, "Quests failed to bind to Denizen, integration will not work!", e);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Class<?> getDenizenClass() {
|
||||||
|
return denizen;
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public boolean containsScript(String input) {
|
public boolean containsScript(String input) {
|
||||||
if (denizen != null) {
|
if (denizen.getName().startsWith("c")) { // com.denizenscript.denizen.*
|
||||||
// Denizen 1.1.0+
|
return DenizenAPI_1_1_0.containsScript(input);
|
||||||
return ScriptRegistry.containsScript(input);
|
|
||||||
} else {
|
} else {
|
||||||
// Denizen <1.1.0
|
|
||||||
initialize();
|
initialize();
|
||||||
if (scriptRegistry == null || containsScriptGetMethod == null) return false;
|
if (scriptRegistry == null || containsScriptGetMethod == null) return false;
|
||||||
boolean script = false;
|
boolean script = false;
|
||||||
@ -101,8 +106,8 @@ public class DenizenAPI {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public String getScriptContainerName(String input) {
|
public String getScriptContainerName(String input) {
|
||||||
if (denizen != null) {
|
if (denizen.getName().startsWith("c")) { // com.denizenscript.denizen.*
|
||||||
return ScriptRegistry.getScriptContainer(input).getName();
|
return DenizenAPI_1_1_0.getScriptContainerName(input);
|
||||||
} else {
|
} else {
|
||||||
initialize();
|
initialize();
|
||||||
if (scriptRegistry == null || scriptContainer == null) return null;
|
if (scriptRegistry == null || scriptContainer == null) return null;
|
||||||
@ -122,8 +127,8 @@ public class DenizenAPI {
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Nullable
|
@Nullable
|
||||||
public Set<String> _getScriptNames() {
|
public Set<String> _getScriptNames() {
|
||||||
if (denizen != null) {
|
if (denizen.getName().startsWith("c")) { // com.denizenscript.denizen.*
|
||||||
return ScriptRegistry._getScriptNames();
|
return DenizenAPI_1_1_0._getScriptNames();
|
||||||
} else {
|
} else {
|
||||||
initialize();
|
initialize();
|
||||||
if (scriptRegistry == null || _getScriptNamesGetMethod == null) return null;
|
if (scriptRegistry == null || _getScriptNamesGetMethod == null) return null;
|
||||||
@ -139,8 +144,8 @@ public class DenizenAPI {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public Object getScriptContainerAs(String scriptName) {
|
public Object getScriptContainerAs(String scriptName) {
|
||||||
if (denizen != null) {
|
if (denizen.getName().startsWith("c")) { // com.denizenscript.denizen.*
|
||||||
return ScriptRegistry.getScriptContainerAs(scriptName, TaskScriptContainer.class);
|
return DenizenAPI_1_1_0.getScriptContainerAs(scriptName);
|
||||||
} else {
|
} else {
|
||||||
initialize();
|
initialize();
|
||||||
if (scriptRegistry == null || taskScriptContainer == null) return null;
|
if (scriptRegistry == null || taskScriptContainer == null) return null;
|
||||||
@ -156,8 +161,8 @@ public class DenizenAPI {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public Object mirrorBukkitPlayer(Player player) {
|
public Object mirrorBukkitPlayer(Player player) {
|
||||||
if (denizen != null) {
|
if (denizen.getName().startsWith("c")) { // com.denizenscript.denizen.*
|
||||||
return PlayerTag.mirrorBukkitPlayer(player);
|
return DenizenAPI_1_1_0.mirrorBukkitPlayer(player);
|
||||||
} else {
|
} else {
|
||||||
initialize();
|
initialize();
|
||||||
if (dPlayer == null || mirrorBukkitPlayerGetMethod == null) return null;
|
if (dPlayer == null || mirrorBukkitPlayerGetMethod == null) return null;
|
||||||
@ -173,8 +178,8 @@ public class DenizenAPI {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public Object mirrorCitizensNPC(NPC npc) {
|
public Object mirrorCitizensNPC(NPC npc) {
|
||||||
if (denizen != null) {
|
if (denizen.getName().startsWith("c")) { // com.denizenscript.denizen.*
|
||||||
return NPCTag.mirrorCitizensNPC(npc);
|
return DenizenAPI_1_1_0.mirrorCitizensNPC(npc);
|
||||||
} else {
|
} else {
|
||||||
initialize();
|
initialize();
|
||||||
if (dNPC == null || mirrorCitizensNPCGetMethod == null) return null;
|
if (dNPC == null || mirrorCitizensNPCGetMethod == null) return null;
|
||||||
@ -190,10 +195,8 @@ public class DenizenAPI {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public void runTaskScript(String scriptName, Player player) {
|
public void runTaskScript(String scriptName, Player player) {
|
||||||
if (denizen != null) {
|
if (denizen.getName().startsWith("c")) { // com.denizenscript.denizen.*
|
||||||
TaskScriptContainer taskScript = ScriptRegistry.getScriptContainerAs(scriptName, TaskScriptContainer.class);
|
DenizenAPI_1_1_0.runTaskScript(scriptName, player);
|
||||||
BukkitScriptEntryData entryData = new BukkitScriptEntryData(PlayerTag.mirrorBukkitPlayer(player), null);
|
|
||||||
taskScript.runTaskScript(entryData, null);
|
|
||||||
} else {
|
} else {
|
||||||
initialize();
|
initialize();
|
||||||
if (scriptRegistry == null || bukkitScriptEntryData == null || scriptEntryData == null) return;
|
if (scriptRegistry == null || bukkitScriptEntryData == null || scriptEntryData == null) return;
|
||||||
|
@ -0,0 +1,70 @@
|
|||||||
|
/*******************************************************************************************************
|
||||||
|
* Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
||||||
|
* NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
|
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*******************************************************************************************************/
|
||||||
|
|
||||||
|
package me.blackvein.quests.util;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class's imports must exist separately from DenizenAPI.java in order to not crash from NoClassDefFoundError at runtime
|
||||||
|
*/
|
||||||
|
public class DenizenAPI_1_1_0 {
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public static boolean containsScript(String input) {
|
||||||
|
return ScriptRegistry.containsScript(input);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public static String getScriptContainerName(String input) {
|
||||||
|
return ScriptRegistry.getScriptContainer(input).getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public static Set<String> _getScriptNames() {
|
||||||
|
return ScriptRegistry._getScriptNames();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public static Object getScriptContainerAs(String scriptName) {
|
||||||
|
return ScriptRegistry.getScriptContainerAs(scriptName, TaskScriptContainer.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public static Object mirrorBukkitPlayer(Player player) {
|
||||||
|
return PlayerTag.mirrorBukkitPlayer(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public static Object mirrorCitizensNPC(NPC npc) {
|
||||||
|
return NPCTag.mirrorCitizensNPC(npc);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public static void runTaskScript(String scriptName, Player player) {
|
||||||
|
TaskScriptContainer taskScript = ScriptRegistry.getScriptContainerAs(scriptName, TaskScriptContainer.class);
|
||||||
|
BukkitScriptEntryData entryData = new BukkitScriptEntryData(PlayerTag.mirrorBukkitPlayer(player), null);
|
||||||
|
taskScript.runTaskScript(entryData, null);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user