From a3311d82db6d881521c8a73478158c9bb4e497fd Mon Sep 17 00:00:00 2001 From: RappyTV Date: Wed, 17 Jul 2024 19:54:08 +0200 Subject: [PATCH 1/6] Add #hasReferred and #getReferrals to PlayerInfo --- .../rappytv/globaltags/types/PlayerInfo.java | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/api/src/main/java/com/rappytv/globaltags/types/PlayerInfo.java b/api/src/main/java/com/rappytv/globaltags/types/PlayerInfo.java index 219a7274..51439df7 100644 --- a/api/src/main/java/com/rappytv/globaltags/types/PlayerInfo.java +++ b/api/src/main/java/com/rappytv/globaltags/types/PlayerInfo.java @@ -19,15 +19,28 @@ public class PlayerInfo { private final String plainTag; private final String position; private final String icon; + private final boolean referred; + private final int referrals; private final List roles; private final Suspension suspension; - public PlayerInfo(UUID uuid, String tag, String position, String icon, String[] roles, Ban ban) { + public PlayerInfo( + UUID uuid, + String tag, + String position, + String icon, + boolean referred, + int referrals, + String[] roles, + Ban ban + ) { this.uuid = uuid; this.tag = Util.translateColorCodes(tag); this.plainTag = tag != null ? tag : ""; this.position = position; this.icon = icon; + this.referred = referred; + this.referrals = referrals; this.roles = new ArrayList<>(); for(String role : roles) { try { @@ -101,6 +114,20 @@ public boolean isAdmin() { return roles.contains(GlobalRole.ADMIN); } + /** + * Returns if the player has referred to another player for inviting them + */ + public boolean hasReferred() { + return referred; + } + + /** + * Returns how many other players were invited by the player + */ + public int getReferrals() { + return referrals; + } + /** * Returns all of the players roles */ From 3caded55f6f2dd56e6349acf1ec45ebccd1308c6 Mon Sep 17 00:00:00 2001 From: RappyTV Date: Wed, 17 Jul 2024 19:54:49 +0200 Subject: [PATCH 2/6] Add ApiHandler#referPlayer, resolve referred and referrals in GetInfo request --- .../rappytv/globaltags/api/ApiHandler.java | 28 +++++++++++++++---- .../rappytv/globaltags/api/ResponseBody.java | 2 ++ 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/api/src/main/java/com/rappytv/globaltags/api/ApiHandler.java b/api/src/main/java/com/rappytv/globaltags/api/ApiHandler.java index 82d40b83..3fac9347 100644 --- a/api/src/main/java/com/rappytv/globaltags/api/ApiHandler.java +++ b/api/src/main/java/com/rappytv/globaltags/api/ApiHandler.java @@ -18,6 +18,7 @@ @SuppressWarnings("unused") public class ApiHandler { + // https://github.com/elysiajs/elysia/issues/495 private static final Map emptyBody = Map.of("body", "placeholder body"); private ApiHandler() {} @@ -61,6 +62,8 @@ public Map getBody() { request.responseBody.tag, request.responseBody.position, request.responseBody.icon, + request.responseBody.referred, + request.responseBody.referrals, request.responseBody.roles, request.responseBody.ban )); @@ -154,7 +157,6 @@ public static void resetTag(UUID uuid, Consumer consumer) { ) { @Override public Map getBody() { - // https://github.com/elysiajs/elysia/issues/495 return emptyBody; } }; @@ -168,6 +170,26 @@ public Map getBody() { }); } + public static void referPlayer(UUID uuid, Consumer consumer) { + ApiRequest request = new ApiRequest( + Method.POST, + "/players/" + uuid + "/referral", + Util.getSessionToken() + ) { + @Override + public Map getBody() { + return emptyBody; + } + }; + request.sendAsyncRequest((response) -> { + if(!request.isSuccessful()) { + consumer.accept(new ApiResponse(false, request.getError())); + return; + } + consumer.accept(new ApiResponse(true, request.getMessage())); + }); + } + public static void reportPlayer(UUID uuid, String reason, Consumer consumer) { ApiRequest request = new ApiRequest( Method.POST, @@ -217,7 +239,6 @@ public static void unbanPlayer(UUID uuid, Consumer consumer) { ) { @Override public Map getBody() { - // https://github.com/elysiajs/elysia/issues/495 return emptyBody; } }; @@ -281,7 +302,6 @@ public static void toggleAdmin(UUID uuid, Consumer consumer) { ) { @Override public Map getBody() { - // https://github.com/elysiajs/elysia/issues/495 return emptyBody; } }; @@ -303,7 +323,6 @@ public static void linkDiscord(Consumer consumer) { ) { @Override public Map getBody() { - // https://github.com/elysiajs/elysia/issues/495 return emptyBody; } }; @@ -325,7 +344,6 @@ public static void unlinkDiscord(Consumer consumer) { ) { @Override public Map getBody() { - // https://github.com/elysiajs/elysia/issues/495 return emptyBody; } }; diff --git a/api/src/main/java/com/rappytv/globaltags/api/ResponseBody.java b/api/src/main/java/com/rappytv/globaltags/api/ResponseBody.java index 6b95f26a..befd3dce 100644 --- a/api/src/main/java/com/rappytv/globaltags/api/ResponseBody.java +++ b/api/src/main/java/com/rappytv/globaltags/api/ResponseBody.java @@ -6,6 +6,8 @@ public class ResponseBody { public String tag; public String position; public String icon; + public boolean referred; + public int referrals; public String[] roles; public String message; public Ban ban; From 7b8e05aacac3ee6c974f8674cc594d3476f50a73 Mon Sep 17 00:00:00 2001 From: RappyTV Date: Wed, 17 Jul 2024 19:55:13 +0200 Subject: [PATCH 3/6] Add bullet point to refer to a player --- .../rappytv/globaltags/GlobalTagAddon.java | 2 + .../interaction/ReferPlayerBulletPoint.java | 39 +++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 core/src/main/java/com/rappytv/globaltags/interaction/ReferPlayerBulletPoint.java diff --git a/core/src/main/java/com/rappytv/globaltags/GlobalTagAddon.java b/core/src/main/java/com/rappytv/globaltags/GlobalTagAddon.java index 8e70f234..159bcb86 100644 --- a/core/src/main/java/com/rappytv/globaltags/GlobalTagAddon.java +++ b/core/src/main/java/com/rappytv/globaltags/GlobalTagAddon.java @@ -4,6 +4,7 @@ import com.rappytv.globaltags.command.GlobalTagCommand; import com.rappytv.globaltags.config.GlobalTagConfig; import com.rappytv.globaltags.interaction.EditBanInfoBulletPoint; +import com.rappytv.globaltags.interaction.ReferPlayerBulletPoint; import com.rappytv.globaltags.interaction.ToggleBanBulletPoint; import com.rappytv.globaltags.interaction.ChangeTagBulletPoint; import com.rappytv.globaltags.interaction.ClearTagBulletPoint; @@ -57,6 +58,7 @@ protected void enable() { labyAPI().interactionMenuRegistry().register(new ChangeTagBulletPoint()); labyAPI().interactionMenuRegistry().register(new ClearTagBulletPoint()); labyAPI().interactionMenuRegistry().register(new EditBanInfoBulletPoint()); + labyAPI().interactionMenuRegistry().register(new ReferPlayerBulletPoint()); labyAPI().interactionMenuRegistry().register(new ReportBulletPoint()); labyAPI().interactionMenuRegistry().register(new ToggleAdminBulletPoint()); labyAPI().interactionMenuRegistry().register(new ToggleBanBulletPoint()); diff --git a/core/src/main/java/com/rappytv/globaltags/interaction/ReferPlayerBulletPoint.java b/core/src/main/java/com/rappytv/globaltags/interaction/ReferPlayerBulletPoint.java new file mode 100644 index 00000000..bf4e6565 --- /dev/null +++ b/core/src/main/java/com/rappytv/globaltags/interaction/ReferPlayerBulletPoint.java @@ -0,0 +1,39 @@ +package com.rappytv.globaltags.interaction; + +import com.rappytv.globaltags.GlobalTagAddon; +import com.rappytv.globaltags.api.ApiHandler; +import com.rappytv.globaltags.types.PlayerInfo; +import com.rappytv.globaltags.util.TagCache; +import net.labymod.api.Laby; +import net.labymod.api.client.component.Component; +import net.labymod.api.client.entity.player.Player; +import net.labymod.api.client.entity.player.interaction.BulletPoint; +import net.labymod.api.client.gui.icon.Icon; + +public class ReferPlayerBulletPoint implements BulletPoint { + + @Override + public Component getTitle() { + return Component.translatable("globaltags.context.referral.name"); + } + + @Override + public Icon getIcon() { + return null; + } + + @Override + public void execute(Player player) { + ApiHandler.referPlayer(player.getUniqueId(), (response) -> Laby.references().chatExecutor().displayClientMessage( + Component.empty() + .append(GlobalTagAddon.prefix) + .append(response.getMessage()) + )); + } + + @Override + public boolean isVisible(Player player) { + PlayerInfo executer = TagCache.get(Laby.labyAPI().getUniqueId()); + return executer != null && !executer.hasReferred(); + } +} From 2679ea0169ab706ac18cdcedbdbaf8724725a374 Mon Sep 17 00:00:00 2001 From: RappyTV Date: Wed, 17 Jul 2024 20:19:03 +0200 Subject: [PATCH 4/6] Clear cache after referring --- api/src/main/java/com/rappytv/globaltags/api/ApiHandler.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/src/main/java/com/rappytv/globaltags/api/ApiHandler.java b/api/src/main/java/com/rappytv/globaltags/api/ApiHandler.java index 3fac9347..50b24308 100644 --- a/api/src/main/java/com/rappytv/globaltags/api/ApiHandler.java +++ b/api/src/main/java/com/rappytv/globaltags/api/ApiHandler.java @@ -186,7 +186,8 @@ public Map getBody() { consumer.accept(new ApiResponse(false, request.getError())); return; } - consumer.accept(new ApiResponse(true, request.getMessage())); + TagCache.clear(); + TagCache.resolveSelf((info) -> consumer.accept(new ApiResponse(true, request.getMessage()))); }); } From cada7ae65b2f71da3acf3c21baea544d52480907 Mon Sep 17 00:00:00 2001 From: RappyTV Date: Wed, 17 Jul 2024 20:19:19 +0200 Subject: [PATCH 5/6] Add translations --- core/src/main/resources/assets/globaltags/i18n/en_us.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/src/main/resources/assets/globaltags/i18n/en_us.json b/core/src/main/resources/assets/globaltags/i18n/en_us.json index 6180d055..fb771ba7 100644 --- a/core/src/main/resources/assets/globaltags/i18n/en_us.json +++ b/core/src/main/resources/assets/globaltags/i18n/en_us.json @@ -122,6 +122,9 @@ "context": { "reason": "Reason", "placeholder": "Please enter a reason...", + "referral": { + "name": "This player invited me to GlobalTags" + }, "report": { "name": "Report GlobalTag", "title": "Report %s", From a54f5bb54fa4c91d049728459b21aaec86bfa038 Mon Sep 17 00:00:00 2001 From: RappyTV Date: Wed, 17 Jul 2024 20:54:50 +0200 Subject: [PATCH 6/6] Bump version --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index b443727a..9afa2ab3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -15,7 +15,7 @@ labyMod { author = "RappyTV" description = "Get yourself a custom Globaltag that's publicly visible to anyone using this addon." minecraftVersion = "*" - version = System.getenv().getOrDefault("VERSION", "1.2.1") + version = System.getenv().getOrDefault("VERSION", "1.2.2") } minecraft {