Code Examples
Practical Java snippets for integrating with the ShyamDuels API on your Spigot/Paper server.
Example 1: Fetching and Modifying ELO Stats
This example demonstrates how to retrieve a player's stats object, view their rating details, add ELO points, and save the data asynchronously:
javaimport com.shyamstudio.shyamduels.api.ShyamDuelsAPI;
import com.shyamstudio.shyamduels.api.ShyamDuelsProvider;
import com.shyamstudio.shyamduels.stats.PlayerStats;
import org.bukkit.entity.Player;
public void rewardElo(Player player, int eloAmount) {
ShyamDuelsAPI api = ShyamDuelsProvider.get();
if (api == null) return;
// Fetch the player stats cached profile
PlayerStats stats = api.stats().getStats(player);
if (stats == null) return;
int oldElo = stats.getElo();
stats.setElo(oldElo + eloAmount); // Update ELO points
// Save changes back to database pool asynchronously
api.stats().saveStats(stats).thenRun(() -> {
player.sendMessage("§aYour ELO has been updated to: " + stats.getElo());
});
}
Example 2: Listening to Duel Concludes
Listen for when a match ends to log victory parameters or trigger custom server-wide rewards:
javaimport org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import com.shyamstudio.shyamduels.duel.event.DuelEndEvent;
import com.shyamstudio.shyamduels.duel.Duel;
public class EndMatchListener implements Listener {
private final JavaPlugin plugin;
public EndMatchListener(JavaPlugin plugin) {
this.plugin = plugin;
}
@EventHandler
public void onDuelEnd(DuelEndEvent event) {
Duel duel = event.getDuel();
String kitName = duel.getKit().getName();
String arenaName = duel.getArena().getName();
plugin.getLogger().info("Duel concluded on arena " + arenaName + " using kit " + kitName);
plugin.getLogger().info("Team 1 Wins: " + duel.getTeam1Wins() + " | Team 2 Wins: " + duel.getTeam2Wins());
}
}
Example 3: Programmatically Inviting Players
Generate a match challenge invite using the API, bypassing user commands:
javaimport com.shyamstudio.shyamduels.api.ShyamDuelsAPI;
import com.shyamstudio.shyamduels.api.ShyamDuelsProvider;
import com.shyamstudio.shyamduels.kit.Kit;
import org.bukkit.entity.Player;
public void challengePlayer(Player challenger, Player target, String kitName, int roundCount) {
ShyamDuelsAPI api = ShyamDuelsProvider.get();
if (api == null) return;
// Resolve the kit configuration template
Kit kit = api.kits().getKit(kitName);
if (kit == null) {
challenger.sendMessage("§cSpecified kit was not found!");
return;
}
// Dispatch the invite directly through the DuelService
api.duels().sendInvite(challenger, target, kit, roundCount);
challenger.sendMessage("§aDuel challenge sent to " + target.getName());
}