From a22eddc6f4376593f06b314536f47a5de5d60c6d Mon Sep 17 00:00:00 2001 From: John Clardy <31903552+john-clardy@users.noreply.github.com> Date: Tue, 30 Jun 2026 23:18:51 -0400 Subject: [PATCH 1/5] Overload getPlayerRanks and hasRank methods for CraterPlayer --- .../hypherionmc/craterlib/api/compat/ftbranks/FTBRanks.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/api/java/com/hypherionmc/craterlib/api/compat/ftbranks/FTBRanks.java b/src/api/java/com/hypherionmc/craterlib/api/compat/ftbranks/FTBRanks.java index 0b476e16..f28c0151 100644 --- a/src/api/java/com/hypherionmc/craterlib/api/compat/ftbranks/FTBRanks.java +++ b/src/api/java/com/hypherionmc/craterlib/api/compat/ftbranks/FTBRanks.java @@ -1,6 +1,7 @@ package com.hypherionmc.craterlib.api.compat.ftbranks; import com.hypherionmc.craterlib.api.game.authlib.CraterGameProfile; +import com.hypherionmc.craterlib.api.game.world.entity.player.CraterPlayer; import com.hypherionmc.craterlib.core.services.CraterServices; import java.util.List; @@ -12,8 +13,10 @@ static FTBRanks getInstance() { } List getPlayerRanks(CraterGameProfile profile); + List getPlayerRanks(CraterPlayer player); List getAllRanks(); boolean hasRank(CraterGameProfile profile, String rank); + boolean hasRank(CraterPlayer player, String rank); boolean addRank(CraterGameProfile profile, String rank); boolean removeRank(CraterGameProfile profile, String rank); From d82e33f854fe5e8214b5491f5ff568e90c5529a5 Mon Sep 17 00:00:00 2001 From: John Clardy <31903552+john-clardy@users.noreply.github.com> Date: Tue, 30 Jun 2026 23:22:34 -0400 Subject: [PATCH 2/5] Add support for CraterPlayer in FTBRanksImpl --- .../impl/compat/ftb/FTBRanksImpl.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hypherionmc/craterlib/impl/compat/ftb/FTBRanksImpl.java b/src/main/java/com/hypherionmc/craterlib/impl/compat/ftb/FTBRanksImpl.java index 4da6a30a..62a86422 100644 --- a/src/main/java/com/hypherionmc/craterlib/impl/compat/ftb/FTBRanksImpl.java +++ b/src/main/java/com/hypherionmc/craterlib/impl/compat/ftb/FTBRanksImpl.java @@ -3,6 +3,7 @@ import com.hypherionmc.craterlib.api.compat.ftbranks.FTBRanks; import com.hypherionmc.craterlib.api.events.compat.FTBRankEvents; import com.hypherionmc.craterlib.api.game.authlib.CraterGameProfile; +import com.hypherionmc.craterlib.api.game.world.entity.player.CraterPlayer; import com.hypherionmc.craterlib.core.event.CraterEventBus; import com.hypherionmc.craterlib.impl.api.authlib.BridgedGameProfile; import dev.ftb.mods.ftblibrary.platform.event.NativeEventPosting; @@ -10,7 +11,7 @@ import dev.ftb.mods.ftbranks.api.event.PlayerAddedToRankEvent; import dev.ftb.mods.ftbranks.api.event.PlayerRemovedFromRankEvent; import dev.ftb.mods.ftbranks.api.event.RankDeletedEvent; - +import net.minecraft.server.level.ServerPlayer; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @@ -20,19 +21,34 @@ public class FTBRanksImpl implements FTBRanks { private FTBRanksImpl() {} + @Override public List getPlayerRanks(CraterGameProfile profile) { return FTBRanksAPI.manager().getAddedRanks(((BridgedGameProfile) profile).toNameAndId()).stream().map(FTBRankImpl::wrap).toList(); } + @Override + public List getPlayerRanks(CraterPlayer player) { + ServerPlayer serverPlayer = player.unwrap(); + return FTBRanksAPI.manager().getRanks(serverPlayer).stream().map(FTBRankImpl::wrap).toList(); + } + public List getAllRanks() { return FTBRanksAPI.manager().getAllRanks().stream().map(FTBRankImpl::wrap).toList(); } + @Override public boolean hasRank(CraterGameProfile profile, String rank) { return getPlayerRanks(profile) .stream() .anyMatch(r -> r.unwrapInternal().getName().equalsIgnoreCase(rank) || r.unwrapInternal().getId().equalsIgnoreCase(rank)); } + + @Override + public boolean hasRank(CraterPlayer player, String rank) { + return getPlayerRanks(player) + .stream() + .anyMatch(r -> r.unwrapInternal().getName().equalsIgnoreCase(rank) || r.unwrapInternal().getId().equalsIgnoreCase(rank)); + } public boolean addRank(CraterGameProfile profile, String rank) { rank = rank.toLowerCase(); From bbb1598e00c441e8b6c9f12f644c07aa8379c204 Mon Sep 17 00:00:00 2001 From: John Clardy <31903552+john-clardy@users.noreply.github.com> Date: Tue, 30 Jun 2026 23:26:35 -0400 Subject: [PATCH 3/5] Add comments for rank retrieval methods Added comments to clarify the purpose of methods related to player ranks. --- .../hypherionmc/craterlib/impl/compat/ftb/FTBRanksImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/hypherionmc/craterlib/impl/compat/ftb/FTBRanksImpl.java b/src/main/java/com/hypherionmc/craterlib/impl/compat/ftb/FTBRanksImpl.java index 62a86422..3626c810 100644 --- a/src/main/java/com/hypherionmc/craterlib/impl/compat/ftb/FTBRanksImpl.java +++ b/src/main/java/com/hypherionmc/craterlib/impl/compat/ftb/FTBRanksImpl.java @@ -24,12 +24,14 @@ private FTBRanksImpl() {} @Override public List getPlayerRanks(CraterGameProfile profile) { return FTBRanksAPI.manager().getAddedRanks(((BridgedGameProfile) profile).toNameAndId()).stream().map(FTBRankImpl::wrap).toList(); + // Explicitly added ranks via "/ftbranks add player rank" } @Override public List getPlayerRanks(CraterPlayer player) { ServerPlayer serverPlayer = player.unwrap(); return FTBRanksAPI.manager().getRanks(serverPlayer).stream().map(FTBRankImpl::wrap).toList(); + // All ranks the player has. Includes explicitly added ranks and condition-added ranks. } public List getAllRanks() { @@ -41,6 +43,7 @@ public boolean hasRank(CraterGameProfile profile, String rank) { return getPlayerRanks(profile) .stream() .anyMatch(r -> r.unwrapInternal().getName().equalsIgnoreCase(rank) || r.unwrapInternal().getId().equalsIgnoreCase(rank)); + //Original method for compatibility and for SDLink Discord2Minecraft } @Override @@ -48,6 +51,7 @@ public boolean hasRank(CraterPlayer player, String rank) { return getPlayerRanks(player) .stream() .anyMatch(r -> r.unwrapInternal().getName().equalsIgnoreCase(rank) || r.unwrapInternal().getId().equalsIgnoreCase(rank)); + //Updated Method using ServerPlayer } public boolean addRank(CraterGameProfile profile, String rank) { From 85fdda6bc77a47e80b6503e07f166dca022ab69d Mon Sep 17 00:00:00 2001 From: John Clardy <31903552+john-clardy@users.noreply.github.com> Date: Tue, 30 Jun 2026 23:28:59 -0400 Subject: [PATCH 4/5] Refactor FTBRanksImpl.java for clarity and cleanup Updated comments for clarity and removed unused import. --- .../craterlib/impl/compat/ftb/FTBRanksImpl.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/hypherionmc/craterlib/impl/compat/ftb/FTBRanksImpl.java b/src/main/java/com/hypherionmc/craterlib/impl/compat/ftb/FTBRanksImpl.java index 3626c810..8df95583 100644 --- a/src/main/java/com/hypherionmc/craterlib/impl/compat/ftb/FTBRanksImpl.java +++ b/src/main/java/com/hypherionmc/craterlib/impl/compat/ftb/FTBRanksImpl.java @@ -6,7 +6,7 @@ import com.hypherionmc.craterlib.api.game.world.entity.player.CraterPlayer; import com.hypherionmc.craterlib.core.event.CraterEventBus; import com.hypherionmc.craterlib.impl.api.authlib.BridgedGameProfile; -import dev.ftb.mods.ftblibrary.platform.event.NativeEventPosting; +//import dev.ftb.mods.ftblibrary.platform.event.NativeEventPosting; Appears Unused import dev.ftb.mods.ftbranks.api.FTBRanksAPI; import dev.ftb.mods.ftbranks.api.event.PlayerAddedToRankEvent; import dev.ftb.mods.ftbranks.api.event.PlayerRemovedFromRankEvent; @@ -23,15 +23,15 @@ private FTBRanksImpl() {} @Override public List getPlayerRanks(CraterGameProfile profile) { - return FTBRanksAPI.manager().getAddedRanks(((BridgedGameProfile) profile).toNameAndId()).stream().map(FTBRankImpl::wrap).toList(); // Explicitly added ranks via "/ftbranks add player rank" + return FTBRanksAPI.manager().getAddedRanks(((BridgedGameProfile) profile).toNameAndId()).stream().map(FTBRankImpl::wrap).toList(); } @Override public List getPlayerRanks(CraterPlayer player) { + // All ranks the player has. Includes explicitly added ranks and condition-added ranks. ServerPlayer serverPlayer = player.unwrap(); return FTBRanksAPI.manager().getRanks(serverPlayer).stream().map(FTBRankImpl::wrap).toList(); - // All ranks the player has. Includes explicitly added ranks and condition-added ranks. } public List getAllRanks() { @@ -40,18 +40,18 @@ public List getAllRanks() { @Override public boolean hasRank(CraterGameProfile profile, String rank) { + //Original method for compatibility and for SDLink Discord2Minecraft return getPlayerRanks(profile) .stream() .anyMatch(r -> r.unwrapInternal().getName().equalsIgnoreCase(rank) || r.unwrapInternal().getId().equalsIgnoreCase(rank)); - //Original method for compatibility and for SDLink Discord2Minecraft } @Override public boolean hasRank(CraterPlayer player, String rank) { + //Updated Method using ServerPlayer return getPlayerRanks(player) .stream() .anyMatch(r -> r.unwrapInternal().getName().equalsIgnoreCase(rank) || r.unwrapInternal().getId().equalsIgnoreCase(rank)); - //Updated Method using ServerPlayer } public boolean addRank(CraterGameProfile profile, String rank) { From 139707af534578f6cdb974f7b50f255dfe6904cd Mon Sep 17 00:00:00 2001 From: John Clardy <31903552+john-clardy@users.noreply.github.com> Date: Sun, 5 Jul 2026 23:36:23 -0400 Subject: [PATCH 5/5] Uncomment unused NativeEventPosting import Uncommented based on PR change request for compatability --- .../com/hypherionmc/craterlib/impl/compat/ftb/FTBRanksImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hypherionmc/craterlib/impl/compat/ftb/FTBRanksImpl.java b/src/main/java/com/hypherionmc/craterlib/impl/compat/ftb/FTBRanksImpl.java index 8df95583..6a486988 100644 --- a/src/main/java/com/hypherionmc/craterlib/impl/compat/ftb/FTBRanksImpl.java +++ b/src/main/java/com/hypherionmc/craterlib/impl/compat/ftb/FTBRanksImpl.java @@ -6,7 +6,7 @@ import com.hypherionmc.craterlib.api.game.world.entity.player.CraterPlayer; import com.hypherionmc.craterlib.core.event.CraterEventBus; import com.hypherionmc.craterlib.impl.api.authlib.BridgedGameProfile; -//import dev.ftb.mods.ftblibrary.platform.event.NativeEventPosting; Appears Unused +import dev.ftb.mods.ftblibrary.platform.event.NativeEventPosting; import dev.ftb.mods.ftbranks.api.FTBRanksAPI; import dev.ftb.mods.ftbranks.api.event.PlayerAddedToRankEvent; import dev.ftb.mods.ftbranks.api.event.PlayerRemovedFromRankEvent;