Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -12,8 +13,10 @@ static FTBRanks getInstance() {
}

List<? extends CraterFTBRank> getPlayerRanks(CraterGameProfile profile);
List<? extends CraterFTBRank> getPlayerRanks(CraterPlayer player);
List<? extends CraterFTBRank> 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);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@
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;
import dev.ftb.mods.ftbranks.api.FTBRanksAPI;
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;

Expand All @@ -20,19 +21,38 @@ public class FTBRanksImpl implements FTBRanks {

private FTBRanksImpl() {}

@Override
public List<FTBRankImpl> 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<FTBRankImpl> 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<FTBRankImpl> 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();
Expand Down