Skip to content

Dasturchilar uchun API

API plagin jar'ining ichida — build'ingizga provided/compileOnly bog'liqlik sifatida qo'shing va softdepend / depend ga FinExBans yozing.

Kirish nuqtasi

java
import uz.finex.bans.api.FinExBansAPI;

if (FinExBansAPI.available()) {
    FinExBansAPI api = FinExBansAPI.get();
}

Jazo berish

Har bir chaqiruv plaginning IO oqimida tugaydigan CompletableFuture qaytaradi. Muddatlar millisekundda; FinExBansAPI.PERMANENT — muddatsiz. operator konsol uchun null bo'lishi mumkin.

java
api.ban(uuid, "Cheating", Duration.parse("30d"), staffUuid, "Moder_Ali", false);
api.mute(uuid, "Spam", 3_600_000L, null, "MyPlugin", true);   // jim
api.warn(uuid, "Caps", null, "MyPlugin", false);
api.kick(uuid, "AFK", null, "MyPlugin", false);
api.ipBan(uuid, "Bot", FinExBansAPI.PERMANENT, null, "AntiBot", false);

// nom bo'yicha — noma'lum nik /ban kabi topiladi
api.punishByName(PunishmentType.BAN, "Steve", "Cheating", FinExBansAPI.PERMANENT, null, "MyPlugin", false);

O'yinchi chiqarib yuboriladi/xabar oladi, jazo e'lon qilinadi, webhook'lar ishlaydi — buyruq bilan bir xil.

Bekor qilish

java
api.pardon(PunishmentType.BAN, uuid, staffUuid, "Moder_Ali", "Shikoyat qabul qilindi")
   .thenAccept(rows -> { /* rows == 0 → faol jazo yo'q edi */ });

So'rovlar

java
boolean muted = api.isMuted(uuid);                         // darhol, keshdan (onlayn o'yinchilar)
api.activeBan(uuid).thenAccept(opt -> opt.ifPresent(p -> ...));
api.activeIpBan("1.2.3.4");
api.history(uuid, 50).thenAccept(list -> ...);
api.warnings(uuid, System.currentTimeMillis() - 30L * 86_400_000).thenAccept(count -> ...);
api.alts(uuid).thenAccept(alts -> ...);                    // List<Database.Alt>: name, sharedIps, lastSeen

Punishment da: getType(), getTarget(), getTargetName(), getIp(), getReason(), getOperator(), getOperatorName(), getCreatedAt(), getExpiresAt(), isPermanent(), isSilent(), isCurrentlyActive(now), remaining(now), getServer(), getId().

Hodisalarni tinglash

Platformaga bog'liq bo'lmagan tinglovchi (Paper, Velocity, Bungee'da ishlaydi):

java
api.addListener(new PunishmentListener() {
    @Override public void onPunish(Punishment p) { ... }
    @Override public void onPardon(PunishmentType type, UUID uuid, String ip, long id,
                                   UUID operator, String operatorName, String reason) { ... }
});

Ikkalasi ham IO oqimida chaqiriladi — dunyoga tegishdan oldin o'z platformangiz scheduler'iga qayting.

Paper'da xuddi shu ma'lumot Bukkit hodisasi sifatida ham keladi:

java
@EventHandler
public void on(uz.finex.bans.paper.event.PunishmentEvent e) { e.getPunishment(); }

@EventHandler
public void on(uz.finex.bans.paper.event.PardonEvent e) { e.getType(); e.getTarget(); }

Ikkalasi asinxron hodisa (isAsynchronous() == true).

FinExBans · Paper, Folia, Velocity, BungeeCord · 1.21 → 26.2