Lewati ke konten

Custom Events RankForge – PlayerPointsChangeEvent, TierUp & TierDown

RankForge menyediakan custom event Bukkit di package xyz.noxlydev.rankforge.api.event. Dengarkan seperti event Bukkit lain dengan @EventHandler.

Event Cancellable Dipicu saat Syarat
PlayerPointsChangeEvent Ya Sebelum poin diubah lewat API Selalu
PlayerTierUpEvent Tidak Setelah poin naik melewati ambang tier yang lebih tinggi Pemain online
PlayerTierDownEvent Tidak Setelah poin turun ke tier lebih rendah (atau Unranked) Pemain online
PlayerClaimTierRewardEvent Ya Dideklarasikan, belum dipanggil oleh core plugin versi ini –
Method Return Keterangan
getPlayer() OfflinePlayer
getPlayerData() PlayerData
getOldPoints() int
getNewPoints() int
setNewPoints(int) void Ubah nilai akhir poin
getDifference() int new - old
setCancelled(boolean) void Batalkan perubahan
@EventHandler
public void onPointsChange(PlayerPointsChangeEvent event) {
// Contoh 1: VIP mendapat bonus 10% saat poin bertambah
if (event.getDifference() > 0) {
Player online = event.getPlayer().getPlayer();
if (online != null && online.hasPermission("myplugin.vip")) {
int bonus = (int) Math.ceil(event.getDifference() * 0.10);
event.setNewPoints(event.getNewPoints() + bonus);
}
}
// Contoh 2: tolak pengurangan poin di arena latihan
if (event.getDifference() < 0 && isInPracticeArena(event.getPlayer())) {
event.setCancelled(true);
}
}
Method Return Keterangan
getPlayer() Player Pemain online
getPlayerData() PlayerData
getOldTier() Tier (nullable) null jika sebelumnya Unranked
getNewTier() Tier
@EventHandler
public void onTierUp(PlayerTierUpEvent event) {
Player player = event.getPlayer();
Tier newTier = event.getNewTier();
player.sendMessage("Selamat! Kamu naik ke " + newTier.display);
}
Method Return Keterangan
getPlayer() Player Pemain online
getPlayerData() PlayerData
getOldTier() Tier
getNewTier() Tier (nullable) null jika turun menjadi Unranked
@EventHandler
public void onTierDown(PlayerTierDownEvent event) {
Tier now = event.getNewTier();
String name = now != null ? now.display : "Unranked";
event.getPlayer().sendMessage("Tier kamu turun menjadi " + name);
}

Event ini sudah ada di API (getPlayer(), getTier(), getCommands(), cancellable), tetapi core plugin versi ini belum memanggilnya saat reward tier diberikan. Listener yang kamu daftarkan tidak akan menerima event ini sampai plugin mulai memicunya. Untuk reward custom sekarang, gunakan PlayerTierUpEvent.

getServer().getPluginManager().registerEvents(new RankListener(), this);

Pastikan registrasi hanya dilakukan setelah RankForge aktif (lihat Setup Dependency).