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); 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..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 @@ -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,38 @@ public class FTBRanksImpl implements FTBRanks { private FTBRanksImpl() {} + @Override public List getPlayerRanks(CraterGameProfile profile) { + // 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(); + } + public List getAllRanks() { return FTBRanksAPI.manager().getAllRanks().stream().map(FTBRankImpl::wrap).toList(); } + @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)); } + + @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)); + } public boolean addRank(CraterGameProfile profile, String rank) { rank = rank.toLowerCase();