Skip to main content

Developer API

This page documents the API exposed by the current FioCommunityQuests source.

Package names

Use the real source package names:

import com.itzfabb.fioquests.api.FioCommunityQuestsApi;
import com.itzfabb.fioquests.api.FioCommunityQuestsProvider;

Accessing the API

FioCommunityQuestsApi api = FioCommunityQuestsProvider.get();
if (api != null) {
api.startQuest("daily_miner", 60L * 60L * 1000L);
api.addProgress(player.getUniqueId(), player.getName(), "daily_miner", 1);
}

Use null checks because the provider can return null when FioCommunityQuests is not loaded yet.

Provider methods

FioCommunityQuestsApi get();
boolean isAvailable();

Quest reads

Collection<Quest> getQuests();
Quest getQuest(String questId);
Map<Quest, Long> getActiveQuests();
boolean isQuestActive(String questId);

getActiveQuests() returns active quests mapped to their end time.

Quest lifecycle

boolean startQuest(String questId, long durationMillis);
boolean startQuest(String questId, long durationMillis, boolean showTimeLeftInHologram);
boolean stopQuest(String questId);
int stopAllQuests();

Use milliseconds for durationMillis.

Progress API

int getCommunityProgress(String questId);
void addProgress(UUID uuid, String playerName, String questId, int amount);
PlayerQuestProgress getPlayerProgress(UUID uuid, String questId);
List<PlayerQuestProgress> getPlayerProgress(UUID uuid);
List<PlayerQuestProgress> getQuestProgress(String questId);

addProgress is useful for custom objectives, external events, or manual integrations.

Leaderboard API

List<ContributionEntry> getQuestLeaderboard(String questId, int limit);
List<ContributionEntry> getActiveLeaderboard(int limit);
List<ContributionEntry> getAllTimeLeaderboard(int limit);

Use these methods for menu integrations, external leaderboards, Discord sync, or web dashboards.

Example integration

FioCommunityQuestsApi api = FioCommunityQuestsProvider.get();
if (api == null) {
return;
}

if (api.isQuestActive("daily_miner")) {
api.addProgress(player.getUniqueId(), player.getName(), "daily_miner", 5);
}

plugin.yml advice for integrations

In your own plugin:

softdepend:
- FioCommunityQuests

Then resolve the provider lazily or during onEnable() after the server has loaded soft dependencies.

Page note

This page is source-backed from FioCommunityQuestsApi.java and FioCommunityQuestsProvider.java.