L'extension Tycoon propose un mode de jeu complet de type Zoo Tycoon. Les joueurs progressent dans un arbre de recherche en tuant des mobs pour débloquer des catégories, nourrissent des catalyseurs avec des ressources, puis déclenchent la recherche avec un item de carburant. Les animaux possédés génèrent un revenu passif une fois placés dans le zoo, peuvent être montés dans des dimensions d'aventure temporaires, croisés pour obtenir des œufs hybrides, prestigiés pour un bonus permanent, et envoyés en expédition minutée. Un seul menu Control Panel — 100 % piloté par les données, sans aucun visuel codé en dur — héberge tous ces systèmes à travers 16 onglets.
Fonctionnalités
- Control Panel — Un unique menu FrameLayout en disposition 4│1│4 (onglets latéraux │ navigation │ contenu), calqué sur le modèle BTCSky. 16 onglets (info, bestiaire, zoo, recherche, expéditions, montures, boutique, aventure, prestige, classement, défis, reproduction, personnel, marché, contrats, décorations) partagent la même fenêtre ; le contenu se résout par onglet, et les sous-vues (
tab:contexte, ex. research:reptiles) conservent la surbrillance de l'onglet parent. Chaque visuel, titre et bouton provient des pages Typewriter — le code se contente de remplir les tags de données en direct et d'attacher les interactions.
- Arbre de recherche — Arbre technologique organisé par catégories, débloqué en tuant des mobs. Chaque animal nécessite un catalyseur (nourri avec des items de ressource configurables) et un item de carburant pour la tentative finale d'activation.
- Économie passive — Les animaux placés dans le zoo génèrent un revenu au fil du temps. Les affinités de biome, les blocs d'habitat, le personnel, les décorations et le bonheur influencent les revenus. Rattrapage hors-ligne à la reconnexion.
- Carte d'aventure — Explorez une dimension temporaire clonée à la demande depuis un monde modèle (via BTC-CORE / Advanced Slime Paper). Téléportez-vous vers des chunks configurés pour les découvrir ; une jauge de fatigue (prolongée par les montures) se vide pendant l'exploration et force un retour à l'origine à zéro. Le monde se décharge automatiquement une fois vide.
- Montures — Montez vos animaux possédés avec des contrôles ZQSD via l'interception du paquet STEER_VEHICLE de PacketEvents. La jauge de fatigue se vide avec le temps et se recharge hors des dimensions d'aventure.
- Fusion — Fusion déclenchée par action entre animaux de même espèce : combine les deux animaux du plus haut niveau d'une espèce en un œuf en incubation, avec une chance configurable d'amélioration de rareté et de mutation cosmétique.
- Reproduction — Croisement inter-espèces piloté par recette, depuis l'onglet Reproduction. Sélectionnez deux parents éligibles (conservés par joueur pendant la navigation), démarrez une incubation correspondant à une recette configurée, puis récupérez la descendance une fois éclose.
- Prestige — Réinitialisez un animal au niveau maximum vers le niveau 1 pour un bonus de revenu permanent. Cumulable par nombre de prestiges.
- Boutique de livraison — Marchand PNJ tournant avec une véritable planification (intervalle fixe type
30m/2h/1d, une heure quotidienne HH:MM, ou un délai de repli) et un pool d'items pondéré. Mécaniques FOMO — l'inventaire change à chaque rotation.
- Expéditions — Envoyez un animal éligible en mission minutée depuis l'onglet Expéditions (slot vide → choisir un animal dans la sous-vue
expeditions:start). La durée est réduite par un Guide d'expédition embauché. Retour avec ressources, XP, items de catalyseur, ou animaux bonus rares.
- Niveaux & XP des animaux — Chaque animal a son propre niveau, sa courbe d'XP et son niveau maximum. Gain d'XP via l'utilisation en monture, les expéditions et le temps passé placé dans le zoo.
- Personnalisation — Renommez vos animaux, appliquez des variantes d'apparence (EntityDefinitions référencées), équipez des accessoires (chapeau, collier, selle).
- Système de bonheur — Les animaux ont un bonheur de 0 à 100 affectant le revenu. Amélioré par les biomes correspondants, les blocs d'habitat, le nourrissage, le personnel et les décorations. Pénalisé par la surpopulation.
- Défis quotidiens/hebdomadaires — Défis tournants (capturer un animal, placer un animal, tuer des mobs, gagner du revenu, prestiger, rechercher un animal) sur des cycles quotidien et hebdomadaire indépendants. Réclamez depuis l'onglet Défis pour de l'argent et des récompenses de commande.
- Personnel du zoo — Embauchez du personnel avec un effet de rôle passif : Collecteur de revenus (multiplicateur de revenu), Soigneur (plancher de bonheur), Guide d'expédition (expéditions plus rapides), Chercheur (recherche plus rapide). Facture un entretien périodique ; renvoyé automatiquement si impayé.
- Classement cross-serveur — Classement par revenu total, animaux possédés, total de prestiges, ou animaux placés (cyclez le tri depuis l'onglet Classement). Synchronisé sur tout le réseau via Redis pub/sub lorsque
TypeWriter-MySqlExtension est présent ; repli sur les joueurs de ce serveur uniquement sinon.
- Marché entre joueurs — Mettez en vente un animal possédé et achetez auprès d'autres joueurs, y compris entre serveurs. Un protocole Redis pub/sub (list/unlist/buy/confirm/deny) garde le serveur propriétaire de l'annonce autoritaire sur la vente, avec remboursement côté acheteur en cas de refus ou de déconnexion. Repli sur un marché local uniquement sans Redis.
- Contrats de livraison d'animaux — Livrez des animaux correspondant à une espèce/catégorie, un niveau minimum et une quantité, contre une récompense en argent et commandes. Les contrats peuvent être uniques ou répétables.
- Décorations & enclos — Placez de vrais blocs comme décorations de zoo depuis l'onglet Décorations, chacun accordant un bonus de bonheur et/ou de revenu, plafonné par joueur. Retirez-les pour récupérer l'emplacement.
Architecture
Entrées
- Définitions — Animal Definition : configuration de l'espèce (rareté, items de catalyseur, carburant, économie, fusion, stats de monture, variantes de modèle).
- Manifestes — Research Category : dossier de l'arbre technologique avec exigences de kills. Research Recipe : recette de recherche catalyseur/carburant. Adventure Map : monde modèle, grille de chunks, fatigue par défaut. Delivery Shop : planification et pool d'items du marchand tournant. Breeding Recipe : couple d'espèces parentes → descendance. Challenge : objectif et récompense quotidien/hebdomadaire. Staff : rôle embauchable, coût et entretien. Animal Contract : exigence de livraison et récompense. Decoration : bloc plaçable, coût et bonus. Control Panel Configuration : templates de slots dynamiques pour chaque onglet.
- Actions — Control Panel : ouvre le menu 4│1│4. Catalyst Activate : utilise l'item de carburant pour tenter la recherche. Category Unlock : débloque une catégorie une fois le seuil de kills atteint. Revenue Collect : collecte le revenu accumulé du zoo. Animal XP : accorde de l'expérience aux animaux possédés. Fusion : fusion entre animaux de même espèce en un œuf en incubation. Prestige : réinitialise un animal au niveau max pour un bonus permanent. Expedition Start : envoie un animal en mission minutée. Customize Animal : renommer, appliquer une apparence et équiper des accessoires.
- Artefacts — Player Data : profil de zoo par joueur (animaux, revenu, recherche, personnel, défis, décorations). Market Listings : annonces actives du marché entre joueurs.
Démarrage rapide
Cette extension est entièrement pilotée par les données — rien ne s'affiche sans contenu de Pages :
- 1. Construire la page du Control Panel — Créez une entrée
tycoon_menu avec un layoutPool de type FrameLayout : un frame sidebar (onglets, boutons tycoon_tab:<id>), un frame nav (défilement), et une disposition <tabId>_content par onglet utilisant des boutons tycoon_button: pour le contenu dynamique.
- 2. Configurer les templates dynamiques — Remplissez
tycoon_menu_config avec les templates SlotItemConfig pour chaque liste utilisée par vos pages (entrées du bestiaire, animaux de recherche, lignes de classement, annonces du marché, …). Tout template laissé vide s'affiche comme un slot vide.
- 3. Définir le contenu — Commencez par
animal_definition, research_category et adventure_map pour la boucle de jeu principale, puis ajoutez tycoon_breeding_recipe, tycoon_challenge, tycoon_staff, tycoon_decoration, tycoon_animal_contract et delivery_shop pour les systèmes supplémentaires que vous souhaitez activer.
Commandes
Joueur
| Commande | Description | Permission |
|---|
/zoo | Ouvre le Control Panel sur l'onglet Info | aucune |
/zoo visit <player> | Téléporte vers le zoo d'un autre joueur | aucune |
/adventure | Ouvre le Control Panel sur l'onglet Aventure | aucune |
/mounts | Ouvre le Control Panel sur l'onglet Montures | aucune |
/collect | Collecte manuellement le revenu accumulé | aucune |
Admin
Toutes les sous-commandes /tycoon (hors actions internes du menu) nécessitent tycoon.admin.
| Commande | Description | Permission |
|---|
/tycoon give <player> <animalId> | Donne un animal à un joueur | tycoon.admin |
/tycoon remove <player> <animalId> | Retire un animal | tycoon.admin |
/tycoon setlevel <player> <animalId> <level> | Définit le niveau d'un animal | tycoon.admin |
/tycoon info [player] | Affiche le profil tycoon d'un joueur | tycoon.admin |
/tycoon reload | Force la sauvegarde de tous les profils | tycoon.admin |
/tycoon spawnshop <shopId> | Force l'apparition d'une boutique de livraison | tycoon.admin |
/tycoon resetfatigue [player] | Réinitialise la fatigue d'aventure | tycoon.admin |
/tycoon unlockcategory <player> <catId> | Débloque une catégorie de recherche | tycoon.admin |
Chaque clic dans le Control Panel passe aussi par /tycoon <action> ... (ex. cp, list_scroll, market_buy, breed_start) — ces commandes sont générées par le menu lui-même et ouvertes à tout joueur sur sa propre session, elles ne sont pas destinées à un usage manuel.
Placeholders
Préfixe : %typewriter_tycoon_*%
Statistiques globales
| Placeholder | Description |
|---|
%typewriter_tycoon_total_animals% | Total d'animaux possédés |
%typewriter_tycoon_placed_animals% | Actuellement placés dans le zoo |
%typewriter_tycoon_unplaced_animals% | Possédés mais non placés |
%typewriter_tycoon_total_revenue% | Revenu total (formaté) |
%typewriter_tycoon_total_revenue_raw% | Revenu total (nombre brut) |
%typewriter_tycoon_categories_unlocked% | Catégories de recherche débloquées |
%typewriter_tycoon_categories_total% | Total de catégories de recherche |
%typewriter_tycoon_categories_locked% | Catégories de recherche verrouillées |
%typewriter_tycoon_milestones_count% | Jalons de collection complétés |
%typewriter_tycoon_prestige_bonuses_count% | Bonus de prestige actifs |
%typewriter_tycoon_expeditions_active% | Expéditions actives |
%typewriter_tycoon_expeditions_completed% | Expéditions complétées (toujours 0 actuellement) |
%typewriter_tycoon_zoo_visitors% | Total de visiteurs du zoo |
%typewriter_tycoon_active_mount_id% | ID de la monture actuellement sélectionnée |
%typewriter_tycoon_last_revenue_collect% | Horodatage de la dernière collecte de revenu |
Par catégorie
| Placeholder | Description |
|---|
%typewriter_tycoon_category_<id>_unlocked% | Si la catégorie est débloquée |
%typewriter_tycoon_category_<id>_mobs_killed% | Mobs tués vers le déblocage |
%typewriter_tycoon_category_<id>_required_kills% | Kills requis pour débloquer |
%typewriter_tycoon_category_<id>_progress_percent% | Pourcentage de progression du déblocage |
%typewriter_tycoon_category_<id>_name% | Nom affiché de la catégorie |
Par animal
| Placeholder | Description |
|---|
%typewriter_tycoon_animal_<id>_level% | Niveau de l'animal |
%typewriter_tycoon_animal_<id>_owned% | Possède l'animal (true/false) |
%typewriter_tycoon_animal_<id>_prestige% | Nombre de prestiges |
%typewriter_tycoon_animal_<id>_xp% | XP actuelle |
%typewriter_tycoon_animal_<id>_rarity% | Nom de la rareté |
%typewriter_tycoon_animal_<id>_rarity_color% | Couleur hexadécimale de la rareté |
%typewriter_tycoon_animal_<id>_placed% | Placé dans le zoo (true/false) |
%typewriter_tycoon_animal_<id>_custom_name% | Nom personnalisé |
%typewriter_tycoon_animal_<id>_is_mountable% | Montable (true/false) |
%typewriter_tycoon_animal_<id>_mount_speed% | Multiplicateur de vitesse en monture |
%typewriter_tycoon_animal_<id>_fatigue_capacity% | Capacité de fatigue (secondes) |
%typewriter_tycoon_animal_<id>_max_level% | Niveau maximum |
%typewriter_tycoon_animal_<id>_revenue_rate% | Taux de revenu de base |
%typewriter_tycoon_animal_<id>_fusion_level% | Niveau minimum pour la fusion |
%typewriter_tycoon_animal_<id>_display_name% | Nom affiché |
%typewriter_tycoon_animal_<id>_catalyst_progress% | Pourcentage de remplissage du catalyseur |
%typewriter_tycoon_animal_<id>_catalyst_power% | Puissance actuelle du catalyseur |
%typewriter_tycoon_animal_<id>_catalyst_items% | Nombre de types d'items donnés |
Infos animal placé
| Placeholder | Description |
|---|
%typewriter_tycoon_placed_<id>_happiness% | Niveau de bonheur |
%typewriter_tycoon_placed_<id>_biome% | Biome actuel |
%typewriter_tycoon_placed_<id>_world% | Nom du monde |
%typewriter_tycoon_placed_<id>_coords% | Coordonnées (x, y, z) |
%typewriter_tycoon_placed_<id>_chunk% | Chunk (x, z) |
Prestige & expéditions
| Placeholder | Description |
|---|
%typewriter_tycoon_prestige_<id>% | Pourcentage de bonus de prestige |
%typewriter_tycoon_expedition_count% | Nombre total d'expéditions |
%typewriter_tycoon_expedition_<n>_animal% | ID de l'animal dans le slot d'expédition N |
%typewriter_tycoon_expedition_<n>_remaining_seconds% | Secondes avant le retour |
%typewriter_tycoon_expedition_<n>_remaining_minutes% | Minutes avant le retour |
%typewriter_tycoon_expedition_<n>_duration_hours% | Durée totale en heures |
%typewriter_tycoon_expedition_<n>_ready% | Prêt à collecter (true/false) |
Permissions
| Permission | Description |
|---|
tycoon.admin | Administrer le système tycoon (toutes les sous-commandes admin /tycoon). |
Dépendances
| Extension | Requis | Utilisation |
|---|
| EntityExtension | Oui | Définitions d'entité pour les modèles d'animaux |
| Typewriter-GUIExtension | Oui | Rendu du Control Panel (FrameLayout, boutons pilotés par les données) |
| TypeWriter-VehicleExtension | Non | Système de monture (optionnel, basé sur PacketEvents) |
| TypeWriter-RPGCOREExtension | Non | Restriction de capture selon le niveau de profession |
| TypeWriter-TemporaryDimensionExtension | Non | Clonage de la dimension de la carte d'aventure (SlimeWorldManager) |
| TypeWriter-ShopsExtension | Non | Abstractions d'économie (Vault/Points/Placeholder) |
| TypeWriter-MySqlExtension | Non | Redis pub/sub pour le classement cross-serveur et le marché entre joueurs |