SyperCore est un plugin Spigot 1.8.8 qui s'appuie exclusivement sur SyperAPI pour toute persistance de donnees. Le package interne fr.nam2sy.API (DataManager, CacheController, SQLManager, etc.) est obsolete et ne doit pas etre reimplemente.
Modeles SyperAPI utilises par SyperCore
| Modele | Champs principaux |
|---|---|
| SPlayer | uuid, name, syscoins (AtomicLong), pb, power, maxpower, factionID, factionRankID, playerRankID, staffRankID, combat, ignorePlayers |
| Faction | id, name, description, balance (AtomicLong), level, point (AtomicInteger), fhome, relationList, zonesList, ranks |
| FChunk | x, z, factionId, type (0=normal, 2=warzone, 3=safezone) |
| FactionRank | id, name, hierarchy (0=owner, 100=recrue), permissions JSON, factionID |
| Relation | factionID cible, relationPermissions (objet custom), color |
| PlayerRank / StaffRank | id, name, prefix, permissions[] |
Le monde principal du serveur. C'est ici que se deroule l'essentiel du gameplay : construction de bases, claims de territoire, combats PVP et vie de faction. Ce monde ne subit aucun reset sauf lors d'un changement de version majeure du serveur.
| Zone | Description |
|---|---|
| Spawn | Zone protegee (SafeZone type 3). NPC d'accueil, classements, portails. PVP interdit. Fly cosmetique autorise. |
| Warzone centrale | Zone non-claimable autour du spawn. PVP force, micro-events, aucune protection. |
| Territoire libre | Chunks non-claims. Tout le monde peut y construire et miner. PVP actif. |
| Claims faction | Chunks revendiques par des factions. Protection selon permissions de rang. |
Trois mondes additionnels, chacun avec une identite propre. Ces mondes sont reinitialisables independamment du monde faction. Aucun claim permanent n'est possible dans ces mondes.
Caracteristiques communes
| Fonctionnalite | Description |
|---|---|
| PVP / Zones Event | Zones de combat deliminees avec des frontieres claires. PVP actif uniquement dans ces zones. |
| Micro-Events | Evenements aleatoires uniques a chaque monde (Horde de mobs, Ruee sur une ressource, Boss, etc.) lances toutes les 30 a 90 minutes. |
| Farms publiques | Zones de farm ouvertes a tous sur certaines ressources specifiques au monde (see module Mob Farm). |
| Mines speciales | Mines generant des minerais uniques ou des ressources en quantite amplifiee, accessibles selon le grade joueur. |
| Acces par grade | Certaines zones ou mines sont debloquees selon le grade du joueur. Verification via PermissionManager de SyperAPI. |
Specificite Nether
Monde custom generee avec une topographie Nether amplifiee. Ressources : Quartz, Glowstone, Ame de Netherite, Blaze, Wither Skeleton. Event unique : Horde — vague de mobs Nether massives ciblant une zone annoncee, recompense collective a la fin.
Specificite End
Monde End custom. Ressources : Ender Pearl, Chorus, Shulker. Event unique : Dragon Revival — respawn du Dragon de l'End avec drops ameliores, annonce globale, recompense au joueur qui porte le coup fatal.
Specificite Monde Ressource
Monde neutre sans PVP dedie a la collecte de ressources de base. Mines par grade, enclos de mob prives (see module Mob Farm). Filtre minage disponible.
Le grade de faction est distinct du grade joueur. Il represente le niveau d'evolution de la faction dans son ensemble et definit des limites de ressources et de fonctionnalites. Le grade monte via l'accumulation de points de faction (balises) et d'XP de faction (missions, guerres, events).
level de l'objet Faction (SyperAPI). Les limites associees sont lues depuis une configuration YAML dans SyperCore. Jamais en dur dans le code.- MaxMember: 15
- Zone: LIMIT 2
- Rank: LIMIT 3
- MobStack: LIMIT 50
- FactionHome: LIMIT 1
- FactionShop: 0 (desactive)
- Guerre: NON
- Classement: NON
- BreakerLimit: +2/bloc
- Dropper: LIMIT 10
- Redstone: LIMIT 30
- Game: ON
- Zone: LIMIT 4
- Rank: LIMIT 5
- MobStack: LIMIT 100
- FactionHome: LIMIT 2
- FactionShop: LIMIT 1 (5 slots)
- BreakerLimit: +4/bloc
- Spawner: LIMIT 15
- Hopper: LIMIT 10
- Dropper: LIMIT 20
- Redstone: LIMIT 50
- MaxMember: LIMIT 16
- Relation: LIMIT 3
- Zone: LIMIT 6
- Rank: LIMIT 6
- MobStack: LIMIT 500
- FactionShop: LIMIT 1 (10 slots)
- Redstone: LIMIT 70
- Damage: -5% dans claims
- Heal: ON (regen en claim)
- MaxMember: LIMIT 17
- Relation: LIMIT 4
- Classement: ON
- Zone: LIMIT 8
- MobStack: LIMIT 800
- FactionHome: LIMIT 3
- FactionShop: LIMIT 2 (10 slots)
- BreakerLimit: +6/bloc
- Spawner: LIMIT 20
- Dropper: LIMIT 30
- Redstone: LIMIT 100
- Damage: -15% dans claims
- Heal: ON (amplifie)
- MaxMember: LIMIT 18
- Relation: LIMIT 5
- Classement: ON
- Zone: LIMIT 10
- Rank: LIMIT 8
- MobStack: LIMIT 1300
- PvpArena: ON (Bot NPC)
- FactionHome: LIMIT 4
- FactionShop: LIMIT 3 (10 slots)
Gain d'XP faction
| Source | XP gagnes | Notes |
|---|---|---|
| Guerre de faction (victoire) | Eleve (a definir) | Proportionnel au score final |
| F-Missions terminees | Moyen | Selon difficulte de la mission |
| Event Warzone | Faible a moyen | Selon type d'event et participation |
| Kill en PVP | Tres faible | Anti-farm : cooldown par cible |
Systeme de Balise (Points de faction)
Les points de faction sont generes par les balises posees dans les claims. La balise est craftee en plusieurs etapes :
Description des avantages
| Avantage | Description |
|---|---|
| [BreakerLimit] | Augmente la durabilite des blocs du territoire (ObsidianBreaker). Chaque niveau ajoute N resistances supplementaires par bloc. |
| [Spawner] | Limite du nombre de spawners posables par chunk dans les claims de la faction. |
| [Hopper] | Limite du nombre de hoppers par chunk. |
| [Dropper] | Limite du nombre de droppers par chunk. |
| [Redstone] | Limite du nombre d'elements Redstone actifs par chunk (comparateurs, repiteurs, pistons, etc.). |
| [Damage] | Reduction des degats subis par les membres de la faction lorsqu'ils combattent dans leurs claims. |
| [Heal] | Regeneration de vie passive pour les membres en claim (Potion Effect REGENERATION niveau 1 ou 2 selon grade). |
| [MaxMember] | Nombre maximum de membres dans la faction. |
| [Relation] | Nombre maximum de relations actives simultanement. |
| [Classement] | Deverrouille la participation au classement faction global. |
| [Zone] | Nombre maximum de zones definissables dans les claims. |
| [Rank] | Nombre maximum de rangs de faction creables. |
| [MobStack] | Taille maximum d'un stack de mobs (MobStacker). |
| [PvpArena] | Possibilite de definir une zone dans ses claims comme arene PVP, avec un NPC "bot" entrainable. |
| [FactionHome] | Nombre maximum de /f home configurables. |
| [FactionShop] | Nombre maximum de Faction Shops actifs. |
| [FactionShopSlot] | Nombre d'items disponibles par Faction Shop. |
| Commande | Permission | Description |
|---|---|---|
| /f create <nom> | faction.create | Nom 3-20 caracteres, lettres/chiffres uniquement. Unicite verifiee via getFactionByNameAsync(). Cree rang Owner + rang Recrue par defaut. |
| /f disband | Rang hierarchy 0 | Dissout la faction. Notifie tous les membres. Supprime claims et balises. |
| /f show [nom] | — | Affiche nom, description, membres, power, balance, niveau, grade, nombre de claims. |
| /f map [on/off] | — | Carte ASCII des claims autour du joueur. Mode auto-map a chaque changement de chunk. |
| /f invite <joueur> | Rang : recruitment | Invite un joueur. Expiration de l'invite : 120 secondes. Stocke en Map memoire uuid → factionId. |
| /f accept | — | Accepte l'invite pendante. Ajoute via setFactionAsync() avec rang Recrue. |
| /f decline | — | Refuse l'invite pendante. |
| /f kick <joueur> | Rang : kick + hierarchy superieur | Expulse un membre. Appelle removeFromFactionAsync(). Notifie la faction. |
| /f leave | — | Quitter sa faction. Bloque si le joueur est le seul owner avec des membres. |
| /f sethome [nom] | Rang : setfhome | Definit un point de retour nomme. Doit etre en claim faction. Limite selon grade ([FactionHome]). |
| /f home [nom] | Rang : fhome | Teleportation au home choisi. Cooldown 5 secondes. Bloque si en combat. |
| /f fly | Rang : fly + en claim faction | Vol en territoire faction. Coupe si quitte le claim ou entre en combat. |
| /f setlead <joueur> | Rang hierarchy 0 | Transfert du leadership. |
| /f setrank <joueur> <rang> | Rang : modifyPlayerRank | Attribuer un rang. Cible doit avoir hierarchy plus elevee. |
Notifications membres
A la connexion et deconnexion d'un membre de la faction, un message est envoye a tous les membres en ligne : [Faction] Pseudo s'est connecte/deconnecte. Integre a l'evenement SPlayerJoinedEvent et PlayerQuitEvent.
Pseudo au-dessus du joueur (Nametag)
Format du nametag via scoreboard teams (1.8 compatible) : [TAG FACTION] [RANG FACTION] PSEUDO [COEURS]. La couleur du tag varie selon la relation entre la faction du joueur et celle de l'observateur. Les coeurs affichent la vie reelle du joueur (mise a jour via la tache de rafraichissement du scoreboard).
Base impillable hors connexion
Le systeme d'alliance et de treve de l'ancienne version est entierement retire. Il est remplace par un systeme de Relations a permissions customisables. Une faction peut ajouter n'importe quelle autre faction a ses "Relations" et lui attribuer exactement les permissions qu'elle souhaite — ni plus, ni moins.
Commandes
| Commande | Description |
|---|---|
| /f relation <faction> | Ouvre le menu de gestion des permissions pour cette faction. Perm rang : getRelation. |
| /f relation <faction> add | Ajoute une faction aux relations. Limite selon grade ([Relation]). Perm rang : manageRelation. |
| /f relation <faction> remove | Retire la faction des relations. |
| /f relation <faction> home | Si la permission fhome est accordee a cette faction, ses membres peuvent faire /f relation <nom> home pour aller au home de votre faction. |
| /f relation <faction> setperm <perm> <true/false> | Definit une permission specifique pour la faction en relation. |
Permissions disponibles pour une Relation
Chaque relation peut activer individuellement les permissions suivantes pour les membres de la faction ciblee :
| Permission | Effet |
|---|---|
| fhome | Peut utiliser /f relation <nom> home pour acceder au fhome de la faction. |
| build | Peut poser des blocs dans les claims. |
| destroy | Peut casser des blocs dans les claims. |
| chest | Peut ouvrir les coffres. |
| interact | Peut interagir avec les blocs (levier, porte, etc.). |
| pvp_safe | PVP desactive entre les membres des deux factions. |
Couleur et affichage
Le createur de la relation choisit une couleur (format Minecraft §X) appliquee au tag de la faction ciblee au-dessus de la tete des joueurs et dans le chat. Cela permet de distinguer visuellement differents niveaux de relation (allié proche en vert, accord commercial en jaune, etc.).
Limite de claims = Power total de la faction (somme du power de chaque membre). Chaque joueur debute avec 10 power, maximum 15 (augmentable via farm2win). Un joueur mort perd du power (configurable : defaut -1 par mort, minimum 0).
| Commande | Description |
|---|---|
| /f claim [N] | Revendique 1 ou N chunks en spirale. Bloque en safezone/warzone/claim etranger. |
| /f claim on/off | Mode autoclaim continu. |
| /f unclaim [N/all/on/off] | Libere 1, N (max 10), ou tous les claims. |
Anti-grief — Logique d'autorisation
Ordre de verification pour tout evenement Bukkit de bloc/interaction dans un chunk :
Les zones permettent de definir des perimtres specifiques au sein des claims, avec des permissions independantes du rang. Exemple : zone "Ferme" accessible a tous les membres pour build/destroy, zone "Vault" restreinte au co-leader.
| Commande | Description |
|---|---|
| /f setzone <nom> | Mode de selection de zone : deux coins a definir par clic sur blocs. Perm rang : managezone. Limite selon grade ([Zone]). |
| /f zone | Ouvre le menu de gestion des zones (liste, permissions par rang, suppression). |
| /f zone <nom> setperm <rang> <perm> <bool> | Definit une permission specifique pour un rang dans une zone. |
| /f zone delete <nom> | Supprime une zone. |
La detection de zone en temps reel se fait lors de chaque evenement de bloc/interaction : le ZoneManager consulte les zones de la faction concernee et retourne le ZoneLocationResult correspondant a la position du joueur.
Systeme de journalisation des activites dans les claims de la faction, destine a detecter des trahisons ou des comportements suspects. Accessible uniquement aux membres avec la permission canFactionLog.
Evenements journalises
| Categorie | Evenement | Donnees enregistrees |
|---|---|---|
| Coffres | Ouverture de coffre | UUID joueur, position coffre, horodatage |
| Coffres | Modification contenu coffre | UUID joueur, position, items ajoutes/retires, horodatage |
| Coffres | Cassage de coffre | UUID joueur, position, contenu au moment du cassage |
| Blocs | Pose de bloc | UUID joueur, type de bloc, position, horodatage |
| Blocs | Casse de bloc | UUID joueur, type de bloc, position, horodatage |
| Blocs | Pose/casse de spawner | UUID joueur, type de spawner, position, horodatage |
| Teleportations | /f home utilise | UUID joueur, home cible, horodatage |
| Teleportations | TP vers un home dans les claims | UUID joueur (membres faction uniquement), horodatage |
Stockage
Les logs sont stockes en MySQL dans une table faction_logs (faction_id, joueur_uuid, event_type, data JSON, timestamp). Retention : 7 jours glissants. Lecture via pagination (20 entrees par page).
Acces
Les missions faction sont des objectifs collectifs proposes via un PNJ dedie au spawn. La mission choisie est active pour l'ensemble des membres de la faction. Une seule mission peut etre active a la fois.
Acces
| Interaction | Description |
|---|---|
| PNJ Mission (clic) | Ouvre le menu de selection de mission. Permet de bannir des categories. Tire aleatoirement une mission parmi les categories non bannies. |
| /f missions | Ouvre le menu de suivi de la mission en cours et l'historique. |
Categories
| Categorie | Exemples de missions |
|---|---|
| Minage | Miner 500 blocs de charbon, Obtenir 100 diamants, Miner 1000 blocs de pierre |
| Bucheronnage | Couper 300 troncs de chene, Recolter 500 feuilles, Couper 200 arbres complets |
| Chasse | Tuer 200 zombies, Obtenir 50 têtes de joueur, Tuer 100 mobs en warzone |
Difficulte et recompenses
| Parametre | Description |
|---|---|
| Difficulte | Calculee selon le level/xp actuel de la faction. Les missions proposees s'adaptent automatiquement. |
| XP faction | Accordee a la faction a la completion de la mission. |
| Argent joueur | Distribue proportionnellement aux joueurs selon leur taux de participation aux objectifs. |
| Argent banque | Un pourcentage est verse directement dans la balance de la faction. |
Regles
Cooldown entre missions terminees : 2 heures. Annulation : possible, mais impose un cooldown de 24 heures avant d'en relancer une. Nombre de missions : illimite (pool de missions generees proceduralement selon niveau).
Les factions peuvent creer leurs propres boutiques/marches accessibles a tous les joueurs. L'argent des transactions est verse dans ou preleve depuis la banque de faction.
| Caracteristique | Description |
|---|---|
| Nombre de shops | Limite selon grade ([FactionShop]). Nul pour Vagabond. |
| Slots par shop | Limite selon grade ([FactionShopSlot]) : 5 ou 10 items max. |
| Options | Chaque shop peut activer [Boutique (Achat)] et/ou [Marche (Vente)] independamment. |
| Nom + description | Configurables par la faction via menu d'inventaire. |
| Activation | La faction peut activer/desactiver son shop a tout moment. |
Commandes
Une guerre de faction est un evenement competitif structure entre deux factions consentantes, deployant 3 mini-jeux sur 3 jours. Necessite le grade Clan minimum ([Game] : ON). Cooldowns : 48h apres defaite, 72h apres victoire.
Lancement
Le chef de la faction A envoie un defi avec /f guerre declarer <faction>. Le chef de la faction B l'accepte. Une fois les deux accordes, les deux chefs votent les creneaux horaires pour chacun des 3 soirs. Les horaires sont verrouilees. Une annonce globale est effectuee.
Structure
| Jour | Jeu | Duree | Manches |
|---|---|---|---|
| Jour 1 | Les Reliques | 30 min / manche | 2 manches |
| Jour 2 | Temple | 20 min / manche | 2 manches |
| Jour 3 | Bataille de Diamant | 15 min / manche | 3 manches (finale) |
Carte : Map custom 200x200 blocs avec terrain varie. Les reliques (items uniques) sont cachees au debut de la manche. Les deux camps sont positionnes aux extremites opposees.
| Mecanique | Description |
|---|---|
| Possession relique | Ramasser une relique donne des points/seconde. Le porteur ne peut pas sprinter. |
| Depot en base | Ramener une relique dans sa base donne un gros bonus de points. La relique devient "securisee" momentanement. |
| Vol | Tuer un porteur droppe la relique. Attaquer la base adverse peut permettre de voler les reliques securisees. |
| Ressources | Les joueurs peuvent miner (minerais de base) et echanger au camp pour du materiel de fortification (bois, pierre). |
| Fin anticipee | Si toutes les reliques sont ramenes dans une base unique : fin immediate de la manche. |
Configuration : Un temple central avec une entree principale et des echelles laterales. Une faction defend (choisie aleatoirement), l'autre attaque. Materiel de base pre-equippe.
| Mecanique | Description |
|---|---|
| Coeur | Item physique dans le temple. L'attaquant doit le prendre et le ramener a son camp. |
| Defenseur | Ne peut pas quitter le temple tant que le coeur y est. S'il le recupere, la manche est gagnee. |
| Attaquant | Doit forcer l'entree ou escalader les echelles sous les tirs des defenseurs. |
| Restriction | Build et destroy desactives pour les deux factions. Aucun item custom autorise. |
| Victoire | Attaquant ramene le coeur = +1 manche. Defenseur empêche = +1 manche defenseur. |
Configuration : Deux plateformes flottantes face a face. Chaque bloc du sol porte un diamant (item visible). Les explosions detruisent definitivement les diamants dans la zone d'impact.
| Mecanique | Description |
|---|---|
| Diamants | Ramasser des diamants sur la plateforme ennemie marque des points. Sur sa propre plateforme = proteger ses points. |
| Oeufs Creeper | Des oeufs de Creeper tombent du ciel periodiquement. Recuperes et lances (clic gauche = ejecter loin). Au contact d'un bloc, le Creeper est "arme" et explose immediatement. |
| Bombe ejectee | Un Creeper ejete peut aller dans le vide ou atterrir sur la plateforme adverse pour y exploser. |
| Victoire de manche | Faction avec le plus de diamants a la fin du temps ou seule faction avec encore des blocs. |
Victoire et recompenses
La faction ayant le plus de points apres les 3 jours remporte la guerre. Recompenses : coffre d'items defini par l'administration + distribution de syscoins a tous les membres de la faction victorieuse. Les resultats sont publies dans le classement.
Les atouts sont des items speciaux (tetes de joueur avec texture et tags NBT) conferant des bonus. Ils s'achetent via le menu /atout et se portent dans l'inventaire. Un seul atout peut etre actif a la fois. Changer d'atout actif impose un cooldown de 10 minutes.
Achat et prix
Prix eleve intentionnel pour creer de la valeur (configurable, base suggeree : 2 000 000 syscoins par atout). L'achat se fait via le menu /atout ou le NPC dedie. Transaction via api.getMoneyManager().removeSyscoins().
Implementation technique
Chaque atout est identifie via un tag NBT : atout:true, id:<atout_id>, active:<boolean>. L'activation se fait par clic droit dans l'inventaire. Le cooldown de changement d'atout actif est gere en Map memoire (uuid → timestamp). Les effets sont appliques via listeners Bukkit filtres par la presence et l'activation de l'atout dans l'inventaire du joueur.
Trois classes de combat sont disponibles. Un joueur choisit sa classe via un menu dedie. La classe est un attribut du joueur persistant (stocke dans un champ additionnel ou via tag sur item de classe selectionne). On ne peut avoir qu'une classe active.
- +10 coeurs de vie (20 HP)
- Recul reduit lors des impacts
- -20% de degats infliges
- Deplacement legèrement plus lent
- x1.5 degats infliges
- Cooldown Ender Pearl 10s
- -4 coeurs de vie (-8 HP)
- Usure de l'arc divisee par 2
- +2.2% de degats des fleches
- Cooldown Ender Pearl 30s
Les effets de classe sont appliques via les Attributes Bukkit (MAX_HEALTH, MOVEMENT_SPEED, ATTACK_DAMAGE) et des multiplicateurs de degats dans les listeners EntityDamageByEntityEvent. Le cooldown Ender Pearl est gere dans PlayerInteractEvent en detectant l'usage de la perle.
| Comportement | Description |
|---|---|
| Activation | Tout EntityDamageByEntityEvent (joueur vs joueur) pose le tag sur les deux protagonistes. Duree : 15 secondes, rafraichie a chaque degat. |
| ActionBar | Compte a rebours en ActionBar tant que le tag est actif. |
| Deconnexion combat | Deconnexion en combat = mort instantanee. Inventaire droppe a la position. |
| Deconnexion en claim | Deconnexion dans un claim ennemi = 10 minutes pour revenir, ou kill automatique a l'expiration. |
| Restrictions | Bloque : /f home, /spawn, RTP, vol faction, toutes les teleportations. |
| Etat Redis | Stocke via setCombatAsync() dans SyperAPI. Lecture via isCombatAsync() ou getCachedPlayer(). |
Cooldown global Ender Pearl : 15 secondes (modifiable selon la classe active). Detection dans PlayerInteractEvent : si l'item est une Ender Pearl et que le cooldown est actif, l'evenement est annule et un message est affiche. Cooldown stocke en Map memoire (uuid → timestamp).
Message custom affiche dans le chat global a chaque mort de joueur : format configurable avec nom du tueur, arme, et victime. Exemple : [FACTION_A] Pseudo_A a elimine [FACTION_B] Pseudo_B avec une Epee en Diamant (5 coeurs).
Tete du joueur tue : La tete du joueur tue est ajoutee dans l'inventaire du tueur. Si l'inventaire est plein, elle est droppee aux pieds du tueur. Configurable par le tueur (cosmetique).
Faim bloquee : La faim d'un joueur est bloquee a un minimum de 3,5 shanks (7 unites de nourriture). Elle ne descend jamais en dessous de ce seuil (utile en combat pour que le joueur puisse toujours sprinter).
Les metiers offrent une progression parallele au systeme de faction, axee sur le farm et l'exploitation de ressources. Chaque joueur peut avoir un metier actif (possibilite d'en changer avec un cooldown de 48h).
| Metier | Activite principale | Boutique unique |
|---|---|---|
| Mineur | Miner des blocs et minerais | Hammer (mine en zone), pioche amplifiee, explosifs de minage |
| Farmer | Recolter des cultures | Houes de recolte zonale, fertilisant, semences rares |
| Bucheron | Couper des arbres | Hache sylvestre, scie, amplificateur de drop bois |
| Alchimiste | Brasser des potions, collecter des ingredients | Ingredients rares, ingredients de potion amplifies, cauldron ameliore |
| Eleveur | Tuer et gerer des mobs d'elevage | Nourriture d'elevage amplifiee, cage de transport, attracteur de mob |
Systeme de progression (100 paliers)
Chaque metier possede 100 paliers de progression. Chaque action metier (miner un bloc, couper un arbre, etc.) rapporte des points de metier. A chaque palier franchi, une recompense est accordee (items, argent, points de metier bonus). Le palier 100 deverrouille un titre cosmetique de metier.
Boutique de metier
Chaque metier a un PNJ boutique dedie pres du spawn. Les items y sont achetes avec des points de metier (non-echangeables contre des syscoins). Les items proposes sont propres a chaque metier et offrent des avantages significatifs pour l'exploitation du metier (pas disponibles ailleurs).
Shop de vente par metier
Un shop de vente dedie accepte les ressources liees au metier (blocs pour le mineur, cultures pour le farmer, etc.). La vente rapporte moins de syscoins qu'au /shop global, mais rapporte des points de metier supplementaires. Cela incite a specialiser son activite.
Toutes les heures, un nouveau defi est lance automatiquement et accessible a tous les joueurs. Le classement est visible en temps reel via /defi ou /challenge.
| Parametre | Description |
|---|---|
| Frequence | Nouveau defi toutes les heures. Le defi precedent se termine a l'annonce du suivant. |
| Duree | 1 heure pour farmer/recolter/tuer un maximum. |
| Types | Farm d'une ressource precise, kills de joueurs, kills de mobs specifiques, minerais mines, arbres coupes, etc. |
| Classement | Top 5 recompense a la fin. Recompenses progressives (1er place > 2e > ... > 5e). |
| Annonce | Message global au demarrage et a 10/5/1 minutes avant la fin. |
Commandes
Le suivi de progression est en temps reel : chaque action pertinente incremente un compteur en Map memoire (uuid → score). A la fin de l'heure, le classement est fige et les recompenses versees via MoneyManager.
| Parametre | Description |
|---|---|
| Pose | Un joueur peut mettre un contrat sur la tete d'un autre joueur via /contrat <joueur> <montant>. Le montant est preleve immediatement des syscoins du poseur. |
| Limite par cible | Un seul contrat actif par cible a la fois. |
| Duree | Validite maximale : 2 jours. Apres expiration, le montant est rembourse au poseur. |
| Cooldown repose | 1 semaine avant de pouvoir remettre un contrat sur le meme joueur (par poseur). |
| Resolution | Tout joueur qui tue la cible remporte le montant du contrat (via addSyscoins()). Le poseur recoit une notification. |
| Annulation | Le poseur peut annuler son contrat (remboursement si la cible n'est pas encore morte). |
Des micro-evenements apparaissent aleatoirement dans la warzone toutes les 20 a 45 minutes (interval aleatoire). Un seul evenement actif a la fois. Les recompenses s'adaptent au nombre de joueurs participants (plus il y a de joueurs, plus la recompense est elevee).
Le shop global n'est pas a prix fixe : il fonctionne comme une bourse. Plus un item est vendu souvent, moins son prix d'achat et de vente augmente/diminue en consequence. Les prix sont stabilises par un plancher et un plafond configurable.
Commandes
| Commande | Description |
|---|---|
| /shop | Ouvre le menu principal du shop (categories). |
| /shop info <item> | Affiche le prix actuel, la tendance (hausse/baisse), et le volume echange. |
| /sell | Ouvre le menu de vente rapide. Bouton "Tout vendre" scanne l'inventaire. |
Le StickSellAll (item custom, baton avec NBT special) permet de vendre d'un clic droit sur un coffre tout le contenu du coffre aux prix actuels du shop.
Marche entre joueurs (Auction House). Un joueur peut mettre un item en vente a un prix fixe. Un autre joueur peut publier une annonce d'achat a un prix propose.
| Commande | Description |
|---|---|
| /hotel vente <prix> | Met en vente l'item en main au prix indique. Taxe de depot configurable (ex: 5% du prix). |
| /hotel achat <item> <prix> <qte> | Publie une annonce d'achat. Le montant est bloque jusqu'a resolution. |
| /hotel | Ouvre le menu de l'hotel de vente (liste paginee, filtres par categorie/prix). |
| /hotel meslots | Voir ses annonces en cours (vente et achat). |
| /hotel annuler <id> | Annuler une annonce et recuperer l'item/l'argent. |
Duree des annonces : 48 heures max. Apres expiration, l'item est renvoye en notification au vendeur. Notifications : Une notification est envoyee au joueur concernerned lors d'une vente ou d'un achat realise (via NotificationManager).
Systeme de Trade (/trade)
Echange securise d'items entre deux joueurs en temps reel. Chaque joueur voit les items proposes par l'autre dans un menu d'inventaire partage. Les deux joueurs doivent confirmer avant que les items s'echangent. Aucun argent n'est implique directement (pure echange d'items).
Encheres
Systeme d'enchere sur un item unique. Le joueur qui initie met un item en enchere avec un prix de depart et une duree. Tous les joueurs peuvent encherir. A la fin du temps, le plus offrant remporte l'item et son argent est preleve. L'enchere active est visible via /enchere.
Plusieurs types de kits accessibles via /kit.
| Type | Description |
|---|---|
| Kit achetable (achat unique) | Le joueur paye une fois en syscoins et peut reclamer le kit avec un cooldown (ex: 24h). Disponible depuis le menu /kit. |
| Kit achetable (abonnement) | Kit disponible a vie apres un achat avec des Points Boutique. Cooldown de reclamation plus court. |
| Kit de grade joueur | Deblocable uniquement si le grade du joueur l'autorise. Cooldown selon le grade. |
| Kit de grade faction (/f kit) | Disponible si le grade de la faction autorise [Kit]. Contenu defini a venir. |
Inventaire supplementaire portable par le joueur. Le nombre de backpacks autorises et leur taille sont definis par le grade du joueur. Ameliorable contre des syscoins.
| Parametre | Description |
|---|---|
| Acces | /backpack ou /bp — Ouvre le backpack actif. |
| Taille de depart | 9 slots (1 rang d'inventaire). |
| Amelioration | Achat de rangs supplementaires contre syscoins (+9 slots par amelioration). Limite selon grade. |
| Perte a la mort | Le contenu du backpack est droppe a la mort (comme l'inventaire principal). |
| Stockage | Contenu persiste en MySQL (serialisation Base64 de l'inventaire Bukkit). |
Le casino propose 9 jeux distincts accessibles les dimanche et lundi (configurable). L'acces se fait via un batiment dedie au spawn ou la commande /casino. Tous les gains et pertes transitent par MoneyManager.
Implementation du Jackpot
Dans les mondes ressource (Nether, End, Custom), des enclos de farm permettent aux joueurs de tuer des mobs de maniere privee. Chaque mob spawne dans un enclos "appartient" au joueur dont c'est la zone.
| Mecanique | Description |
|---|---|
| Appartenance | Lorsqu'un joueur entre dans un enclos, les mobs qui spawn ont son nom afin de les distinguer. Seul ce joueur peut les tuer (detection via EntityDamageByEntityEvent). |
| Taux de drop | Le taux de drop de ressources des mobs (emeraudes, items rares) varie selon le grade joueur. Configurable en YAML. |
| Protection | Les mobs d'un enclos ne peuvent pas etre attaques par d'autres joueurs. Evenement annule si le tueur n'est pas le proprietaire. |
| Emeraudes | Les poulets de l'ensemble des mondes (et enclos) ont une probabilite configurable de dropper une Emeraude a la mort. |
Tous les items custom sont identifies par un tag NBT custom_item:<id>. Leur comportement est gere par des listeners dedies qui detectent cet identifiant avant d'executer l'action speciale.
Enchantements au-dela des limites vanilla
| Enchantement | Niveaux custom | Application |
|---|---|---|
| Looting | 5, 7, 12 | Epee — Augmente le nombre de drops de mob |
| Fortune | 5, 7, 12 | Pioche/Hache — Multiplie les drops de minerai |
| Efficacite | 6, 7, 8 | Pioche/Hache — Vitesse de minage amplifiee |
| Chatiment | 7, 10 | Epee — Degats amplifies contre undead |
Les enchantements custom sont appliques via NbtTagCompound (tag ench) avec des niveaux au-dela des limites Bukkit normales. Leurs effets sont calcules manuellement dans les listeners d'evenements.
Items speciaux qui placent des blocs en masse dans la direction du regard sur clic droit. L'item a une durabilite limitee (charges). Chaque utilisation consume une charge.
Un bloc custom (item special pose dans le monde) qui accelere la croissance des cultures dans le chunk ou il est place. Effet : les cultures poussent 2x plus rapidement (tick rate de croissance divise par 2). Un seul AgroCore actif par chunk (le second pose remplace le premier). Visible via un holograme au-dessus indiquant son effet et son proprietaire.
Le filtre minage permet a un joueur de definir une liste blanche de minerais. Lors du minage, seuls les minerais selectionnes sont ramasses dans l'inventaire. Les autres ne droppent pas (sont detruits sur place). Cela evite de ramasser de la roche ou du charbon quand on cherche des diamants.
Le filtre actif est stocke en Map memoire (uuid → Set de Material). Il est reinitialise a la deconnexion (optionnellement persiste en Redis).
Les cosmetiques sont le seul systeme d'achat reel sur SyperCraft. Le serveur est 100% Farm-to-Win : aucun avantage de gameplay n'est derriere un paywall. Les cosmetiques sont purement visuels.
Texte personalise affiche en permanence au-dessus du pseudo du joueur (ligne supplementaire dans le nametag). Le joueur choisit son texte librement (50 caracteres max, avec couleurs Minecraft autorisees).
| Option | Cooldown de modification |
|---|---|
| Formule Hebdomadaire | Modification possible 1 fois par semaine |
| Formule Journaliere | Modification possible 1 fois par jour |
| Formule Horaire | Modification possible 1 fois par heure |
Tags visuels dans le chat, au-dessus du pseudo (nametag) et dans la tablist. Lies a un abonnement PB.
| Abonnement | Tag chat | Suffix tablist |
|---|---|---|
| Plus | [+] couleur grise | Suffix distinctif gris |
| Pro | [PRO] couleur bleue | Suffix distinctif bleu |
| Ultra | [ULTRA] couleur or | Suffix distinctif or avec animation |
Auras (20 effets)
Effets de particules permanents autour du joueur : Couronne, Rayon, Aura spirale, Cercle, Trainees de pas, Papillons, Etoiles filantes, Nuage, Flammes, Glace, Foudre, Pluie de confettis, Ange, Demon, Arc-en-ciel, Explosion lente, Cristaux, Bulles, Feuilles, Runes. Chaque joueur voit les auras de tous les joueurs porteurs (sauf option de desactivation).
Effet de kill (20 effets)
Declenche a chaque kill de joueur : Feu d'artifice (3 types de couleur), Explosion de particules colorees, Particules de sang, Tourbillon de feuilles, Explosion de confettis, Eclair fantome, Eruption de flammes, Nuage de fumee, etc.
Effet de victoire d'event
Grand effet visible par tous dans un rayon de 100 blocs lors d'une victoire d'evenement : mega feu d'artifice + spirale de particules + broadcast dans le chat.
Effet de minerai au sol
Particules d'items de minerai (Diamant, Or, Emeraude, Nether Star, Pepite d'or) qui orbitent autour des pieds du joueur. Un seul type actif a la fois.
Ailes (10 types)
Simulates via ArmorStand invisible ancre dans le dos du joueur avec un item en main (texture en fonction de la ressource pack, ou items en main visibles en 1.8). Types : Papillon, Aigle, Oiseau, Petites, Demon, Ange, Membrane, Libellule, Rayons, Neige. Se cachent automatiquement en combat ou en interieur.
Pets (animaux de compagnie)
Mob miniature (taille reduite via NMS) qui suit le joueur. Customisable : nom (affiche en holograme), couleur (pour mouton et slime). Types : tous les mobs passifs classiques + mobs hostiles reduits. Le pet teleporte aupres du joueur si distance superieure a 30 blocs. Disparait en combat.
| Cosmetique | Description |
|---|---|
| Message kill/mort custom | 3 colorations possibles + 20 textes au choix. Configurable si le joueur veut afficher/masquer ses messages de mort. La tete du joueur tue est attribuable (option on/off). |
| Hologrammes en claim | Le joueur peut placer un nombre limite d'hologrammes dans ses claims (persiste tant qu'il est dans la faction et que le territoire est claim). 50 caracteres max, couleurs Minecraft autorisees. |
| Animation s'asseoir | Clic droit avec un item dedie → Spawn d'un escalier en bois invisible + montage du joueur dessus. Annule si le joueur bouge. |
| Canon a mouton | Clic droit → Ejection d'un mouton RGB a haute vitesse. Apres 1 seconde de vol, le mouton explose en feu d'artifice multicolore. Cooldown de 10 secondes. |
| Message join/quit custom | 3 colorations + 20 textes au choix pour les messages de connexion/deconnexion. |
| Fly safezone cosmetique | Vol autorise uniquement dans la safezone (spawn). Particules de nuage sous les pieds. Desactive automatiquement si le joueur sort de la safezone. |
| Mascotte | ArmorStand miniature positionne sur l'epaule droite ou gauche du joueur. Tete du joueur visible, armure en cuir (couleur personnalisable). Se met a jour avec les deplacements. |
| Crates (Caisses) | Systeme de caisses a ouvrir avec des cles correspondantes. Les cles s'obtiennent via events, recompenses, ou PB. Chaque caisse a un pool de recompenses configure. |
Cinq classements distincts, chacun represente par un NPC au spawn avec une GUI de visualisation et un holograme Top 3. Acces via /classement ou clic sur les NPC.
| Classement | Metrique | Acces |
|---|---|---|
| Points Faction | Points totaux de la faction (balises, missions, guerres). Grade Conquete minimum requis ([Classement]). | NPC + /top factions |
| Points PVP | Nombre de kills PVP du joueur (anti-farm : meme cible = cooldown de 30 min). | NPC + /top pvp |
| Points Farm | Ressources farmees (calcul pondère par type de ressource). | NPC + /top farm |
| Points PVE | Mobs tues toutes categories confondues (pondère par difficulte du mob). | NPC + /top pve |
| Points Event | Points gagnes lors des micro-events warzone et evenements mondes. | NPC + /top event |
Les classements sont mis a jour toutes les 5 minutes et caches en Redis (cle LEADERBOARD:<type> avec TTL). Le Top 3 est affiche en holograme permanent au spawn (ArmorStands mis a jour a la meme frequence).
Scoreboard affiche en permanence a droite de l'ecran. Utilise l'API Scoreboard Bukkit (1.8 compatible) avec des equipes pour colorer les lignes. Mis a jour toutes les 2 secondes.
Si le joueur n'a pas de faction, les lignes faction/power sont remplacees par une incitation a en rejoindre une. La zone affichee est determinee par la position du joueur (claim faction, zone nommee, warzone, safezone, libre).
La tablist (TAB) affiche les joueurs en ligne avec leur grade, leur faction et leur ping. Les joueurs sont ordonnes par grade (staff en premier, puis par grade joueur). Le header et footer de la tablist sont personnalises :
Chaque ligne joueur : [PREFIX_GRADE] [TAG_FACTION] Pseudo avec les couleurs associees. Les tags cosmetiques (Plus/Pro/Ultra) apparaissent en suffix.
Recompenses de connexion quotidienne incitant les joueurs a se connecter regulierement. La recompense s'ameliore selon la serie de jours consecutifs.
| Palier | Recompense |
|---|---|
| Jour 1 | Petit montant de syscoins |
| Jours 2-6 | Montant progressivement croissant |
| Jour 7 | Recompense hebdomadaire (montant eleve + item bonus) |
| Jour 14 | Recompense bimensuelle (item rare) |
| Jour 30 | Recompense mensuelle (cosmetique exclusif ou grade temporaire) |
La serie est reinitalisee si le joueur ne se connecte pas un jour. Le pass est revendiquer automatiquement a la connexion (pas de commande necessaire). Notification via ActionBar a la connexion.
Systeme de clear lag cible par type d'item (pas un clear global). Seuls les items en dehors des inventaires (droppes sur le sol) d'un type specifique sont supprimes. Un holograme au-dessus de chaque item en attente de suppression affiche le temps restant avant le clear.
Le delai par defaut est configurable (suggere : 5 minutes). Le holograme (ArmorStand avec nom visible) est place au-dessus de chaque entite Item correspondante et mis a jour chaque seconde.
Affiche les joueurs a proximite dans un rayon de 200 blocs (configurable). Par defaut, cooldown de 10 minutes entre deux utilisations. Des permissions de grade joueur peuvent reduire ce cooldown :
| Grade joueur | Cooldown /near |
|---|---|
| Vagabond (defaut) | 10 minutes |
| Clan (joueur) | 7 minutes |
| Coalition (joueur) | 5 minutes |
| Conquete (joueur) | 3 minutes |
| Suprematie (joueur) | 1 minute |
En 1.8, les enclumes ont une probabilite de se degrader a chaque utilisation. Ce comportement est annule via l'evenement InventoryClickEvent ou PrepareAnvilEvent : la durabilite de l'enclume est preventivment remise a son etat initial apres chaque usage.
Mini-jeux dans le chat lances automatiquement toutes les 15-45 minutes (interval aleatoire). La recompense n'est pas fixe : elle est calculee selon un pourcentage de l'economie actuelle du joueur gagnant. Formule :
Types de jeux
Question/Reponse, TextLess (mot obscurci), WordPuzzle (lettres melangees). Temps de reponse limite a 30 secondes. Si personne ne repond, aucune recompense.
Les grades joueur (distincts des grades faction) se debloquent en jeu via des ressources craftees ou accumulees. Accessible via /grade qui ouvre un menu d'upgrade. Chaque grade joueur offre des avantages de gameplay (cooldown /near reduit, taux de drop ameliore, etc.).
Les grades joueur correspondent aux memes noms que les grades faction (Vagabond, Clan, Coalition, Conquete, Suprematie) mais sont des progressions independantes liees au joueur individuel, pas a sa faction.
| Contrainte | Specification |
|---|---|
| Version Minecraft | Spigot 1.8.8 (NMS v1_8_R3). Toute implementation NMS doit etre compatible avec cette version uniquement. |
| Dependance SyperAPI | depend: [SyperAPI] dans plugin.yml. Si SyperAPI n'est pas charge, SyperCore s'arrete. |
| Threading | Zero acces aux donnees sur le main thread. Toujours utiliser les methodes *Async() de SyperAPI. Les callbacks retournent sur le main thread. |
| Pas de SQL direct | SyperCore ne cree aucune connexion SQL ou Redis. Exception : tables supplementaires (faction_logs, metiers, etc.) peuvent etre creees via la DatabaseService de SyperAPI. |
| Configs YAML | Toutes les valeurs numeriques (prix, cooldowns, limites, taux de drop) sont dans des fichiers YAML de configuration. Aucune valeur en dur dans le code. |
| NBT Items | NbtTagManager (NMS) pour tous les tags custom sur items. Compatible 1.8.8. |
| Monnaie | Toujours stocker en long (centimes ou valeur directe). Jamais de float ou double pour les montants. |
| Nom faction | 3 a 20 caracteres, regex [\\p{L}\\p{N} ]. Pas de couleurs, pas de caracteres speciaux. |
| Teleportation | Cooldown universel de 5 secondes sur toutes les teleportations. Reduit a 2 secondes avec l'atout Teleporteur. |
| Protection base offline | Timer de 30 minutes gere par une tache periodique (BukkitRunnable, toutes les minutes). Stocker le timestamp de derniere deconnexion par faction dans Redis. |
| Limite MobStack | Respecter la limite [MobStack] du grade de faction. Verification dans EntitySpawn. |
| Limites chunk | Spawner, Hopper, Dropper, Redstone : checker les limites dans les evenements BlockPlaceEvent correspondants. Lire les limites depuis la config selon le grade de la faction proprietaire du chunk. |
| Terme | Definition |
|---|---|
| SyperAPI | Plugin d'infrastructure. Gere Redis, MySQL, cache JVM. Expose l'interface API publique. |
| SyperCore | Plugin de jeu. Logique metier, commandes, menus, evenements. Depend de SyperAPI. |
| SPlayer | Objet thread-safe representant un joueur reseau (SyperAPI). |
| Grade faction | Niveau de progression de la faction (Vagabond→Suprematie). Definit les limites de ressources. |
| Grade joueur | Niveau personnel du joueur. Definit cooldowns /near, taux de drop enclos, acces aux zones. |
| Syscoins | Monnaie principale obtenue en jouant. |
| PB (Points Boutique) | Devise premium pour les cosmetiques uniquement. |
| Power | Score de puissance joueur → nombre de claims que sa faction peut posseder. |
| FChunk | Chunk Minecraft revendique, avec type (0=normal, 2=warzone, 3=safezone). |
| FactionRank | Rang interne faction. Hierarchy 0=owner, valeur plus elevee=rang inferieur. |
| Relation | Lien unilateral entre deux factions avec permissions customisees (remplace alliance/treve). |
| Atout | Item special (NBT) conferant un bonus. Un actif a la fois, 10min cooldown de changement, perdu si tue par joueur. |
| Combat Tag | Etat PVP actif. Dure 15s. Bloque les teleportations. Deco en combat = mort instantanee. |
| Balise | Bloc custom craft (Emeraude + Nether Star) generant des points de faction par minute. |
| Dirty | Objet modifie non encore persiste en MySQL. Flush batch toutes les 30s par SyperAPI. |
| SPlayerJoinedEvent | Evenement custom SyperAPI : SPlayer entierement charge apres connexion. SyperCore ecoute cet evenement. |
| TerraLift | Items custom qui placent des blocs en masse dans une direction. |
| ChunkHopper | Hopper custom collectant les ressources droppees sur tout le chunk. |
| AgroCore | Bloc custom accelerant la croissance des cultures dans son chunk (x2). |
| Hotel de vente | Marche entre joueurs (Auction House). Annonces de vente et d'achat avec prix fixes. |
| Filtre minage | Liste blanche de minerais. Seuls les minerais selectionnes sont ramasses lors du minage. |
| Offline shield | Protection des claims 30 minutes apres la deconnexion du dernier membre de la faction. |