From 7c05200909ad5f115a5de678332360c8b427fd91 Mon Sep 17 00:00:00 2001
From: PikaMug <2267126+PikaMug@users.noreply.github.com>
Date: Mon, 7 Feb 2022 02:27:08 -0500
Subject: [PATCH] Support Denizen 1.2.2+, fixes #1877. Bump version
---
api/pom.xml | 4 +-
.../quests/reflect/denizen/DenizenAPI.java | 51 +++++++++++----
.../reflect/denizen/DenizenAPI_1_1_0.java | 13 +++-
.../reflect/denizen/DenizenAPI_1_1_1.java | 39 +++++++++---
.../reflect/denizen/DenizenAPI_1_2_2.java | 62 +++++++++++++++++++
core/pom.xml | 2 +-
dist/pom.xml | 2 +-
pom.xml | 4 +-
v1_8_R1/pom.xml | 2 +-
v1_8_R2/pom.xml | 2 +-
v1_8_R3/pom.xml | 2 +-
11 files changed, 151 insertions(+), 32 deletions(-)
create mode 100644 api/src/main/java/me/blackvein/quests/reflect/denizen/DenizenAPI_1_2_2.java
diff --git a/api/pom.xml b/api/pom.xml
index dd5c976f1..091ec89a7 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -5,7 +5,7 @@
me.blackvein.quests
quests-parent
- 4.2.0
+ 4.2.1
quests-api
@@ -66,7 +66,7 @@
com.denizenscript
denizen
- 1.1.3-SNAPSHOT
+ 1.2.3-SNAPSHOT
provided
diff --git a/api/src/main/java/me/blackvein/quests/reflect/denizen/DenizenAPI.java b/api/src/main/java/me/blackvein/quests/reflect/denizen/DenizenAPI.java
index 7dae73cb1..204b81d05 100644
--- a/api/src/main/java/me/blackvein/quests/reflect/denizen/DenizenAPI.java
+++ b/api/src/main/java/me/blackvein/quests/reflect/denizen/DenizenAPI.java
@@ -24,6 +24,7 @@ public class DenizenAPI {
private Class> denizen_1_0_9 = null;
private Class> denizen_1_1_0 = null;
private Class> denizen_1_1_1 = null;
+ private Class> denizen_1_2_2 = null;
protected Class> scriptRegistry = null;
protected Method containsScriptMethod = null;
protected Method getScriptNamesMethod = null;
@@ -38,12 +39,21 @@ public class DenizenAPI {
protected Class> bukkitScriptEntryData = null;
public DenizenAPI() {
+ try {
+ Class.forName("com.denizenscript.denizencore.utilities.ScriptUtilities");
+ denizen_1_2_2 = Class.forName("com.denizenscript.denizen.Denizen");
+ return;
+ } catch (final Exception e) {
+ // Fail silently
+ }
try {
bukkitScriptEntryData
= Class.forName("com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData");
denizen_1_1_1 = Class.forName("com.denizenscript.denizen.Denizen");
+
+ containsScriptMethod = scriptRegistry.getMethod("containsScript", String.class);
return;
- } catch (final Exception e2) {
+ } catch (final Exception e) {
// Fail silently
}
try {
@@ -57,10 +67,11 @@ public DenizenAPI() {
scriptEntryData = Class.forName("com.denizenscript.denizencore.scripts.ScriptEntryData");
bukkitScriptEntryData = Class.forName("com.denizenscript.denizen.BukkitScriptEntryData");
denizen_1_1_0 = Class.forName("com.denizenscript.denizen.Denizen");
-
+
+ containsScriptMethod = scriptRegistry.getMethod("containsScript", String.class);
getScriptNamesMethod = scriptRegistry.getMethod("_getScriptNames");
return;
- } catch (final Exception e1) {
+ } catch (final Exception e) {
// Fail silently
}
try {
@@ -86,12 +97,14 @@ public DenizenAPI() {
}
public boolean isEnabled() {
- return denizen_1_1_1 != null || denizen_1_1_0 != null || denizen_1_0_9 != null;
+ return denizen_1_2_2 != null || denizen_1_1_1 != null || denizen_1_1_0 != null || denizen_1_0_9 != null;
}
@Nullable
public Class> getDenizenClass() {
- if (denizen_1_1_1 != null) {
+ if (denizen_1_2_2 != null) {
+ return denizen_1_2_2;
+ } else if (denizen_1_1_1 != null) {
return denizen_1_1_1;
} else if (denizen_1_1_0 != null) {
return denizen_1_1_0;
@@ -102,7 +115,9 @@ public Class> getDenizenClass() {
}
public boolean containsScript(final String input) {
- if (denizen_1_1_1 != null) {
+ if (denizen_1_2_2 != null) {
+ return DenizenAPI_1_2_2.containsScript(input);
+ } else if (denizen_1_1_1 != null) {
return DenizenAPI_1_1_1.containsScript(input);
} else if (denizen_1_1_0 != null) {
return DenizenAPI_1_1_0.containsScript(input);
@@ -114,7 +129,9 @@ public boolean containsScript(final String input) {
@Nullable
public String getScriptContainerName(final String input) {
- if (denizen_1_1_1 != null) {
+ if (denizen_1_2_2 != null) {
+ return DenizenAPI_1_2_2.getScriptContainerName(input);
+ } else if (denizen_1_1_1 != null) {
return DenizenAPI_1_1_1.getScriptContainerName(input);
} else if (denizen_1_1_0 != null) {
return DenizenAPI_1_1_0.getScriptContainerName(input);
@@ -126,7 +143,9 @@ public String getScriptContainerName(final String input) {
@Nullable
public Set getScriptNames() {
- if (denizen_1_1_1 != null) {
+ if (denizen_1_2_2 != null) {
+ return DenizenAPI_1_2_2.getScriptNames();
+ } else if (denizen_1_1_1 != null) {
return DenizenAPI_1_1_1.getScriptNames();
} else if (denizen_1_1_0 != null) {
return DenizenAPI_1_1_0.getScriptNames();
@@ -138,7 +157,9 @@ public Set getScriptNames() {
@Nullable
public Object getScriptContainerAs(final String scriptName) {
- if (denizen_1_1_1 != null) {
+ if (denizen_1_2_2 != null) {
+ return DenizenAPI_1_2_2.getScriptContainerAs(scriptName);
+ } else if (denizen_1_1_1 != null) {
return DenizenAPI_1_1_1.getScriptContainerAs(scriptName);
} else if (denizen_1_1_0 != null) {
return DenizenAPI_1_1_0.getScriptContainerAs(scriptName);
@@ -150,7 +171,9 @@ public Object getScriptContainerAs(final String scriptName) {
@Nullable
public Object mirrorBukkitPlayer(final Player player) {
- if (denizen_1_1_1 != null) {
+ if (denizen_1_2_2 != null) {
+ return DenizenAPI_1_2_2.mirrorBukkitPlayer(player);
+ } else if (denizen_1_1_1 != null) {
return DenizenAPI_1_1_1.mirrorBukkitPlayer(player);
} else if (denizen_1_1_0 != null) {
return DenizenAPI_1_1_0.mirrorBukkitPlayer(player);
@@ -162,7 +185,9 @@ public Object mirrorBukkitPlayer(final Player player) {
@Nullable
public Object mirrorCitizensNPC(final NPC npc) {
- if (denizen_1_1_1 != null) {
+ if (denizen_1_2_2 != null) {
+ return DenizenAPI_1_2_2.mirrorCitizensNPC(npc);
+ } else if (denizen_1_1_1 != null) {
return DenizenAPI_1_1_1.mirrorCitizensNPC(npc);
} else if (denizen_1_1_0 != null) {
return DenizenAPI_1_1_0.mirrorCitizensNPC(npc);
@@ -173,7 +198,9 @@ public Object mirrorCitizensNPC(final NPC npc) {
}
public void runTaskScript(final String scriptName, final Player player) {
- if (denizen_1_1_1 != null) {
+ if (denizen_1_2_2 != null) {
+ DenizenAPI_1_2_2.runTaskScript(scriptName, player);
+ } else if (denizen_1_1_1 != null) {
DenizenAPI_1_1_1.runTaskScript(scriptName, player);
} else if (denizen_1_1_0 != null) {
DenizenAPI_1_1_0.runTaskScript(scriptName, player);
diff --git a/api/src/main/java/me/blackvein/quests/reflect/denizen/DenizenAPI_1_1_0.java b/api/src/main/java/me/blackvein/quests/reflect/denizen/DenizenAPI_1_1_0.java
index 9ed38d7b8..d5a6faf80 100644
--- a/api/src/main/java/me/blackvein/quests/reflect/denizen/DenizenAPI_1_1_0.java
+++ b/api/src/main/java/me/blackvein/quests/reflect/denizen/DenizenAPI_1_1_0.java
@@ -33,9 +33,16 @@ public class DenizenAPI_1_1_0 {
private static final QuestsAPI quests = (QuestsAPI) Bukkit.getPluginManager().getPlugin("Quests");
private static final DenizenAPI api = quests != null ? quests.getDependencies().getDenizenApi() : null;
-
+
public static boolean containsScript(final String input) {
- return ScriptRegistry.containsScript(input);
+ if (quests == null || api.scriptRegistry == null || api.containsScriptMethod == null) return false;
+ boolean script = false;
+ try {
+ script = (boolean)api.containsScriptMethod.invoke(api.scriptRegistry, input);
+ } catch (final Exception e) {
+ quests.getLogger().log(Level.WARNING, "Error invoking Denizen ScriptRegistry#containsScript", e);
+ }
+ return script;
}
@Nullable
@@ -67,7 +74,7 @@ public static Object mirrorBukkitPlayer(final Player player) {
}
public static @NotNull Object mirrorCitizensNPC(final NPC npc) {
- return NPCTag.mirrorCitizensNPC(npc);
+ return NPCTag.fromEntity(npc.getEntity());
}
public static void runTaskScript(final String scriptName, final Player player) {
diff --git a/api/src/main/java/me/blackvein/quests/reflect/denizen/DenizenAPI_1_1_1.java b/api/src/main/java/me/blackvein/quests/reflect/denizen/DenizenAPI_1_1_1.java
index d7349059a..60aeceb0f 100644
--- a/api/src/main/java/me/blackvein/quests/reflect/denizen/DenizenAPI_1_1_1.java
+++ b/api/src/main/java/me/blackvein/quests/reflect/denizen/DenizenAPI_1_1_1.java
@@ -17,19 +17,33 @@
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.scripts.ScriptRegistry;
import com.denizenscript.denizencore.scripts.containers.core.TaskScriptContainer;
-import com.denizenscript.denizencore.scripts.queues.ScriptQueue;
import com.denizenscript.denizencore.scripts.queues.core.InstantQueue;
+import me.blackvein.quests.QuestsAPI;
import net.citizensnpcs.api.npc.NPC;
+import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import java.lang.reflect.Method;
+import java.util.List;
import java.util.Set;
+import java.util.logging.Level;
public class DenizenAPI_1_1_1 {
-
+
+ private static final QuestsAPI quests = (QuestsAPI) Bukkit.getPluginManager().getPlugin("Quests");
+ private static final DenizenAPI api = quests != null ? quests.getDependencies().getDenizenApi() : null;
+
public static boolean containsScript(final String input) {
- return ScriptRegistry.containsScript(input);
+ if (quests == null || api.scriptRegistry == null || api.containsScriptMethod == null) return false;
+ boolean script = false;
+ try {
+ script = (boolean)api.containsScriptMethod.invoke(api.scriptRegistry, input);
+ } catch (final Exception e) {
+ quests.getLogger().log(Level.WARNING, "Error invoking Denizen ScriptRegistry#containsScript", e);
+ }
+ return script;
}
@Nullable
@@ -52,14 +66,23 @@ public static Object mirrorBukkitPlayer(final Player player) {
}
public static @NotNull Object mirrorCitizensNPC(final NPC npc) {
- return NPCTag.mirrorCitizensNPC(npc);
+ return NPCTag.fromEntity(npc.getEntity());
}
-
+
public static void runTaskScript(final String scriptName, final Player player) {
final TaskScriptContainer taskScript = ScriptRegistry.getScriptContainerAs(scriptName, TaskScriptContainer.class);
final BukkitScriptEntryData entryData = new BukkitScriptEntryData(PlayerTag.mirrorBukkitPlayer(player), null);
- final ScriptQueue queue = new InstantQueue(taskScript.getName())
- .addEntries(taskScript.getBaseEntries(entryData.clone()));
- queue.start();
+ final InstantQueue queue = new InstantQueue(taskScript.getName());
+
+ if (quests == null) {
+ return;
+ }
+ try {
+ final Method addEntries = queue.getClass().getMethod("addEntries", List.class);
+ addEntries.invoke(queue, taskScript.getBaseEntries(entryData.clone()));
+ queue.start();
+ } catch (final Exception e) {
+ quests.getLogger().log(Level.WARNING, "Error invoking Denizen InstantQueue#addEntries", e);
+ }
}
}
diff --git a/api/src/main/java/me/blackvein/quests/reflect/denizen/DenizenAPI_1_2_2.java b/api/src/main/java/me/blackvein/quests/reflect/denizen/DenizenAPI_1_2_2.java
new file mode 100644
index 000000000..67df23a87
--- /dev/null
+++ b/api/src/main/java/me/blackvein/quests/reflect/denizen/DenizenAPI_1_2_2.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2014 PikaMug and contributors. 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.reflect.denizen;
+
+import com.denizenscript.denizen.objects.NPCTag;
+import com.denizenscript.denizen.objects.PlayerTag;
+import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
+import com.denizenscript.denizencore.scripts.ScriptRegistry;
+import com.denizenscript.denizencore.scripts.containers.core.TaskScriptContainer;
+import com.denizenscript.denizencore.utilities.ScriptUtilities;
+import net.citizensnpcs.api.npc.NPC;
+import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.Set;
+
+public class DenizenAPI_1_2_2 {
+
+ public static boolean containsScript(final String input) {
+ return ScriptRegistry.containsScript(input, TaskScriptContainer.class);
+ }
+
+ @Nullable
+ public static String getScriptContainerName(final String input) {
+ return ScriptRegistry.getScriptContainer(input).getName();
+ }
+
+ public static @NotNull Set getScriptNames() {
+ return ScriptRegistry.scriptContainers.keySet();
+ }
+
+ @Nullable
+ public static Object getScriptContainerAs(final String scriptName) {
+ return ScriptRegistry.getScriptContainerAs(scriptName, TaskScriptContainer.class);
+ }
+
+ @Nullable
+ public static Object mirrorBukkitPlayer(final Player player) {
+ return PlayerTag.mirrorBukkitPlayer(player);
+ }
+
+ public static @NotNull Object mirrorCitizensNPC(final NPC npc) {
+ return NPCTag.fromEntity(npc.getEntity());
+ }
+
+ public static void runTaskScript(final String scriptName, final Player player) {
+ final TaskScriptContainer taskScript = ScriptRegistry.getScriptContainerAs(scriptName, TaskScriptContainer.class);
+ final BukkitScriptEntryData entryData = new BukkitScriptEntryData(PlayerTag.mirrorBukkitPlayer(player), null);
+ ScriptUtilities.createAndStartQueue(taskScript, null, entryData);
+ }
+}
diff --git a/core/pom.xml b/core/pom.xml
index e595e0865..64f4a6ab9 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -5,7 +5,7 @@
me.blackvein.quests
quests-parent
- 4.2.0
+ 4.2.1
quests-core
diff --git a/dist/pom.xml b/dist/pom.xml
index 2c03e2449..f0f629d12 100644
--- a/dist/pom.xml
+++ b/dist/pom.xml
@@ -5,7 +5,7 @@
me.blackvein.quests
quests-parent
- 4.2.0
+ 4.2.1
quests-dist
pom
diff --git a/pom.xml b/pom.xml
index 857257522..9ab05bde6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,12 +6,12 @@
me.blackvein.quests
quests-parent
- 4.2.0
+ 4.2.1
quests
https://github.com/PikaMug/Quests/
- 4.2.0
+ 4.2.1
UTF-8
1.8
1.8
diff --git a/v1_8_R1/pom.xml b/v1_8_R1/pom.xml
index ab3a558c7..aff7ce639 100644
--- a/v1_8_R1/pom.xml
+++ b/v1_8_R1/pom.xml
@@ -6,7 +6,7 @@
me.blackvein.quests
quests-parent
- 4.2.0
+ 4.2.1
diff --git a/v1_8_R2/pom.xml b/v1_8_R2/pom.xml
index 625169beb..fa9ca5e2b 100644
--- a/v1_8_R2/pom.xml
+++ b/v1_8_R2/pom.xml
@@ -6,7 +6,7 @@
me.blackvein.quests
quests-parent
- 4.2.0
+ 4.2.1
diff --git a/v1_8_R3/pom.xml b/v1_8_R3/pom.xml
index f30e43daa..9c4dc5cae 100644
--- a/v1_8_R3/pom.xml
+++ b/v1_8_R3/pom.xml
@@ -6,7 +6,7 @@
me.blackvein.quests
quests-parent
- 4.2.0
+ 4.2.1