diff --git a/pom.xml b/pom.xml
index d39a4dd3a..36ea015e7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -340,7 +340,7 @@
us.myles
ViaVersion
- 2.1.3
+ 4.7.0
system
${basedir}/lib/ViaVersion.jar
diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/bridges/ViaVersionBridge.java b/src/main/java/com/denizenscript/depenizen/bukkit/bridges/ViaVersionBridge.java
index 79aba2eac..a7c34bccd 100644
--- a/src/main/java/com/denizenscript/depenizen/bukkit/bridges/ViaVersionBridge.java
+++ b/src/main/java/com/denizenscript/depenizen/bukkit/bridges/ViaVersionBridge.java
@@ -1,14 +1,12 @@
package com.denizenscript.depenizen.bukkit.bridges;
-import com.denizenscript.denizen.objects.PlayerTag;
-import com.denizenscript.denizencore.objects.properties.PropertyParser;
import com.denizenscript.depenizen.bukkit.Bridge;
-import com.denizenscript.depenizen.bukkit.properties.viaversion.ViaVersionPlayerProperties;
+import com.denizenscript.depenizen.bukkit.properties.viaversion.ViaVersionPlayerExtensions;
public class ViaVersionBridge extends Bridge {
@Override
public void init() {
- PropertyParser.registerProperty(ViaVersionPlayerProperties.class, PlayerTag.class);
+ ViaVersionPlayerExtensions.register();
}
}
diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/properties/viaversion/ViaVersionPlayerExtensions.java b/src/main/java/com/denizenscript/depenizen/bukkit/properties/viaversion/ViaVersionPlayerExtensions.java
new file mode 100644
index 000000000..6936ec7e4
--- /dev/null
+++ b/src/main/java/com/denizenscript/depenizen/bukkit/properties/viaversion/ViaVersionPlayerExtensions.java
@@ -0,0 +1,48 @@
+package com.denizenscript.depenizen.bukkit.properties.viaversion;
+
+import com.denizenscript.denizen.objects.PlayerTag;
+import com.denizenscript.denizencore.objects.core.ElementTag;
+import com.viaversion.viaversion.api.Via;
+import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
+
+public class ViaVersionPlayerExtensions {
+
+ public static void register() {
+
+ // <--[tag]
+ // @attribute
+ // @returns ElementTag(Number)
+ // @plugin Depenizen, ViaVersion
+ // @deprecated Use 'PlayerTag.viaversion_protocol'
+ // @description
+ // Deprecated in favor of <@link tag PlayerTag.viaversion_protocol>.
+ // -->
+
+ // <--[tag]
+ // @attribute
+ // @returns ElementTag(Number)
+ // @plugin Depenizen, ViaVersion
+ // @description
+ // Returns the protocol version number of the player's client.
+ // See <@link url https://wiki.vg/Protocol_version_numbers> as a reference list.
+ // See also <@link tag PlayerTag.viaversion_version>
+ // -->
+ PlayerTag.registerOnlineOnlyTag(ElementTag.class, "viaversion_protocol", (attribute, object) -> {
+ return new ElementTag(Via.getAPI().getPlayerVersion(object.getUUID()));
+ }, "viaversion");
+
+ // <--[tag]
+ // @attribute
+ // @returns ElementTag
+ // @plugin Depenizen, ViaVersion
+ // @description
+ // Returns the player's client version ("1.19.4", "1.18.2"...).
+ // See also <@link tag PlayerTag.viaversion_protocol>
+ // -->
+ PlayerTag.registerOnlineOnlyTag(ElementTag.class, "viaversion_version", (attribute, object) -> {
+ int version = Via.getAPI().getPlayerVersion(object.getUUID());
+ return new ElementTag(ProtocolVersion.getProtocol(version).getName(), true);
+ });
+ }
+
+}
diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/properties/viaversion/ViaVersionPlayerProperties.java b/src/main/java/com/denizenscript/depenizen/bukkit/properties/viaversion/ViaVersionPlayerProperties.java
deleted file mode 100644
index d20d5579a..000000000
--- a/src/main/java/com/denizenscript/depenizen/bukkit/properties/viaversion/ViaVersionPlayerProperties.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.denizenscript.depenizen.bukkit.properties.viaversion;
-
-import com.denizenscript.denizen.objects.PlayerTag;
-import com.denizenscript.denizencore.objects.Mechanism;
-import com.denizenscript.denizencore.objects.ObjectTag;
-import com.denizenscript.denizencore.objects.core.ElementTag;
-import com.denizenscript.denizencore.objects.properties.Property;
-import com.denizenscript.denizencore.tags.Attribute;
-import us.myles.ViaVersion.api.ViaAPI;
-import us.myles.ViaVersion.api.Via;
-
-public class ViaVersionPlayerProperties implements Property {
-
- @Override
- public String getPropertyString() {
- return null;
- }
-
- @Override
- public String getPropertyId() {
- return "PlayerViaVersion";
- }
-
- public static boolean describes(ObjectTag object) {
- return object instanceof PlayerTag;
- }
-
- public static ViaVersionPlayerProperties getFrom(ObjectTag object) {
- if (!describes(object)) {
- return null;
- }
- else {
- return new ViaVersionPlayerProperties((PlayerTag) object);
- }
- }
-
- public static final String[] handledTags = new String[] {
- "viaversion"
- };
-
- public static final String[] handledMechs = new String[] {
- }; // None
-
- public ViaVersionPlayerProperties(PlayerTag player) {
- this.player = player;
- }
-
- PlayerTag player;
-
- @Override
- public ObjectTag getObjectAttribute(Attribute attribute) {
- if (attribute == null) {
- return null;
- }
-
- // <--[tag]
- // @attribute
- // @returns ElementTag(Number)
- // @plugin Depenizen, ViaVersion
- // @description
- // Returns the protocol version number of the player's client.
- // See <@link url https://wiki.vg/Protocol_version_numbers> as a reference list.
- // -->
- if (attribute.startsWith("viaversion")) {
- ViaAPI api = Via.getAPI();
- return new ElementTag(api.getPlayerVersion(player.getUUID()))
- .getObjectAttribute(attribute.fulfill(1));
- }
-
- return null;
- }
-
- @Override
- public void adjust(Mechanism mechanism) {
- }
-}