Appearance
Developer API
CrestReferrals provides a comprehensive API for developers who want to integrate with the plugin. This allows you to access player referral data, manage referrals, work with the leaderboard, and listen for referral-related events.
Adding as a Dependency
To use the CrestReferrals API in your plugin, you need to add the plugin JAR to your development environment:
Manual JAR Dependency
- Download the CrestReferrals.jar
- Add it to your project's libraries
For Maven:
xml
<dependencies>
<dependency>
<groupId>me.levitate</groupId>
<artifactId>CrestReferrals</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/CrestReferrals.jar</systemPath>
</dependency>
</dependencies>
For Gradle:
kotlin
dependencies {
compileOnly(files("libs/CrestReferrals.jar"))
}
Server Setup
Make sure CrestReferrals is installed on your server and loaded before your plugin. Add it to your plugin.yml dependencies:
yaml
depend: [CrestReferrals]
# or for soft dependency
softdepend: [CrestReferrals]
API Usage
The main API class is CrestReferralsAPI
. You'll need to get the API instance from the plugin.
Getting the API Instance
java
import me.levitate.crestReferrals.api.CrestReferralsAPI;
import org.bukkit.Bukkit;
import org.bukkit.plugin.Plugin;
public class YourPlugin extends JavaPlugin {
private CrestReferralsAPI api;
@Override
public void onEnable() {
Plugin crestReferrals = Bukkit.getPluginManager().getPlugin("CrestReferrals");
if (crestReferrals != null) {
api = ((me.levitate.crestReferrals.CrestReferrals) crestReferrals).getApi();
getLogger().info("Successfully hooked into CrestReferrals API!");
}
}
}
Basic Examples
Get Player Referral Data
java
import me.levitate.crestReferrals.api.CrestReferralsAPI;
import me.levitate.crestReferrals.models.PlayerData;
import org.bukkit.entity.Player;
public void checkReferrals(Player player) {
PlayerData data = api.getPlayerData(player.getUniqueId());
if (data != null) {
int referralCount = data.referrals();
String referrerName = data.referrer();
String referralCode = data.referralCode();
player.sendMessage("You have " + referralCount + " referrals!");
player.sendMessage("Your referral code is: " + (referralCode != null ? referralCode : "Not set"));
if (referrerName != null) {
player.sendMessage("You were referred by: " + referrerName);
}
}
}
Check if a Player Can Add a Referral
java
import me.levitate.crestReferrals.api.CrestReferralsAPI;
import org.bukkit.entity.Player;
public boolean canAddReferral(Player player) {
return api.canAddReferral(player.getUniqueId());
}
Add a Referral Programmatically
java
import me.levitate.crestReferrals.api.CrestReferralsAPI;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
public void addReferral(Player player, OfflinePlayer referrer) {
boolean success = api.addReferral(player, referrer);
if (success) {
player.sendMessage("You have successfully added " + referrer.getName() + " as your referrer!");
} else {
player.sendMessage("Unable to add referral. You may be out of time or already have a referrer.");
}
}
Get the Referral Leaderboard
java
import me.levitate.crestReferrals.api.CrestReferralsAPI;
import me.levitate.crestReferrals.models.LeaderboardEntry;
import java.util.List;
public void displayTopReferrers(Player player) {
List<LeaderboardEntry> leaderboard = api.getLeaderboard();
player.sendMessage("§6§lTop Referrers:");
for (int i = 0; i < Math.min(10, leaderboard.size()); i++) {
LeaderboardEntry entry = leaderboard.get(i);
player.sendMessage("§e#" + (i + 1) + " §f" + entry.playerName() + " §7- §f" + entry.referrals() + " referrals");
}
}
Get Player by Referral Code
java
import me.levitate.crestReferrals.api.CrestReferralsAPI;
import java.util.UUID;
public UUID getPlayerByCode(String code) {
return api.getPlayerByCode(code);
}
Available API Methods
Referral Data Methods
PlayerData getPlayerData(UUID uuid)
- Get a player's referral dataint getReferralCount(UUID uuid)
- Get the number of referrals a player hasString getReferralCode(UUID uuid)
- Get a player's referral codeString getReferrer(UUID uuid)
- Get the name of the player who referred this playerUUID getPlayerByCode(String code)
- Get a player UUID by referral code
Referral Management Methods
boolean canAddReferral(UUID uuid)
- Check if a player can add a referralboolean addReferral(Player player, OfflinePlayer referrer)
- Add a referral
Leaderboard Methods
List<LeaderboardEntry> getLeaderboard()
- Get the current referral leaderboardCompletableFuture<List<LeaderboardEntry>> getTopReferrersAsync(int limit)
- Get the top referrers asynchronously
API Events
CrestReferrals provides several events that you can listen for in your plugin:
PlayerReferralEvent
- Called when a player is referred
java
import me.levitate.crestReferrals.api.events.PlayerReferralEvent;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@EventHandler
public void onPlayerReferral(PlayerReferralEvent event) {
UUID playerUUID = event.getPlayerUUID();
UUID referrerUUID = event.getReferrerUUID();
String playerName = Bukkit.getOfflinePlayer(playerUUID).getName();
String referrerName = Bukkit.getOfflinePlayer(referrerUUID).getName();
getLogger().info(playerName + " was referred by " + referrerName);
// Your custom code here
}
MilestoneReachedEvent
- Called when a player reaches a referral milestone
- Cancellable event - can prevent milestone rewards
java
import me.levitate.crestReferrals.api.events.MilestoneReachedEvent;
import me.levitate.crestReferrals.models.Milestone;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@EventHandler
public void onMilestoneReached(MilestoneReachedEvent event) {
UUID playerUUID = event.getPlayerUUID();
Milestone milestone = event.getMilestone();
String playerName = Bukkit.getOfflinePlayer(playerUUID).getName();
int threshold = milestone.threshold();
getLogger().info(playerName + " has reached the milestone of " + threshold + " referrals!");
// Optional: Check for specific milestone and add custom rewards
if (threshold == 50) {
// Give some special reward for 50 referrals milestone
// You could cancel the default rewards if you want
// event.setCancelled(true);
}
}
Model Classes
The API provides access to various model classes:
PlayerData
java
public class PlayerData {
int referrals(); // Number of referrals
String referrer(); // Referrer's name
Long firstLogin(); // First login timestamp
String ipAddress(); // Player's IP address
int pendingReferrals(); // Pending referrals count
String referralCode(); // Player's referral code
List<String> referredPlayers(); // UUIDs of referred players
Map<Integer, Boolean> completedMilestones(); // Completed milestone map
}
LeaderboardEntry
java
public class LeaderboardEntry {
UUID uuid(); // Player UUID
String playerName(); // Player name
int referrals(); // Number of referrals
}
Milestone
java
public class Milestone {
int threshold(); // Milestone threshold
List<String> rewards(); // Reward commands
String message(); // Message to send
int currentReferrals(); // Current referral count
}