Plugin Integration Recipes with RankForge API – Complete Code Samples
This guide provides copy-paste ready recipes for integrating your Minecraft plugin with RankForge. Ensure you have reviewed Dependency Setup.
Plugin Skeleton with RankForge Hook
Section titled “Plugin Skeleton with RankForge Hook”Project structure:
Directorysrc/main/
Directoryjava/com/example/myplugin/
- MyPlugin.java
- RankForgeHook.java
Directoryresources/
- plugin.yml
name: MyPluginversion: 1.0.0main: com.example.myplugin.MyPluginapi-version: '1.21'folia-supported: truesoftdepend: [RankForge]commands: mystats: description: View your RankForge stats usage: /mystatspackage com.example.myplugin;
import org.bukkit.plugin.java.JavaPlugin;
public final class MyPlugin extends JavaPlugin { private RankForgeHook rankForgeHook;
@Override public void onEnable() { this.rankForgeHook = new RankForgeHook(this); if (rankForgeHook.isHooked()) { getLogger().info("RankForge integration successfully activated!"); } }
public RankForgeHook getRankForgeHook() { return rankForgeHook; }}package com.example.myplugin;
import org.bukkit.entity.Player;import xyz.noxlydev.rankforge.api.IRankForgeAPI;import xyz.noxlydev.rankforge.api.RankForgeAPI;import xyz.noxlydev.rankforge.model.Tier;
public class RankForgeHook { private final MyPlugin plugin;
public RankForgeHook(MyPlugin plugin) { this.plugin = plugin; }
public boolean isHooked() { return RankForgeAPI.isAvailable(); }
public int getPlayerPoints(Player player) { if (!isHooked()) return 0; return RankForgeAPI.get().getPoints(player); }
public String getTierDisplay(Player player) { if (!isHooked()) return "Unranked"; Tier tier = RankForgeAPI.get().getTier(player); return tier != null ? tier.display : "Unranked"; }}Folia-Safe Point Mutation
Section titled “Folia-Safe Point Mutation”When calling from async or scheduled tasks on Paper & Folia:
import io.papermc.paper.threadedregions.scheduler.GlobalRegionScheduler;import org.bukkit.Bukkit;import xyz.noxlydev.rankforge.api.RankForgeAPI;
public void addPointsAsyncSafe(Player player, int points) { // Schedules synchronously onto the global/entity thread Bukkit.getGlobalRegionScheduler().execute(plugin, () -> { if (RankForgeAPI.isAvailable()) { RankForgeAPI.get().addPoints(player, points); } });}