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) { - } -}