Back to portfolio
Development
KebabClan
Clan points and ranking based on members' kills, money and deaths.
- Category
- Development
- Client
- Kebab SMP
- Status
- Live
- Year
- 2026
- Studio
- Crafteva
Overview
KebabClan adds a competitive ranking on top of the server's clans. Each clan earns points from the kills of its members, the money they hold and loses points for their deaths.
Kills stay with the clan even if the player leaves later, while money always counts for the clan a player currently belongs to. The ranking is recalculated automatically and is also used by KebabArena to assign the reserved stands.
Features
- Points = kills × value + money ÷ rate − deaths × value
- Anti-farm: the same killer and victim count once every few minutes
- Ranking menu and PlaceholderAPI placeholders
- Richest players shown in a menu with their heads
- Automatic recalculation at a configurable interval
Code
/** A player died: their clan gets a death, the killer's clan gets a kill. */
void morte(UUID vittima, UUID killer) {
var clanVittima = Guilds.di(vittima);
if (clanVittima.isPresent() && (killer != null || !cfg.getBoolean("morti-solo-pvp", false))) {
stat.computeIfAbsent(clanVittima.get().id(), k -> new int[2])[1]++;
}
if (killer == null || killer.equals(vittima)) return;
var clanKiller = Guilds.di(killer);
if (clanKiller.isEmpty()) return;
// killing a member of your own clan does not count
if (clanVittima.isPresent() && clanVittima.get().id() == clanKiller.get().id()) return;
String coppia = killer + ":" + vittima;
long ora = System.currentTimeMillis();
Long prima = ultimaKill.get(coppia);
if (prima != null && ora - prima < cfg.getLong("anti-farm-minuti", 10) * 60_000L) return;
ultimaKill.put(coppia, ora);
stat.computeIfAbsent(clanKiller.get().id(), k -> new int[2])[0]++;
}Related projects
02
KebabArena
A PvP arena with a warriors' queue, 1v1 duels and spectator stands.
04
KebabRewards
Daily and weekly rewards plus a seasonal battle pass with a free and a VIP track.
