Aller au contenu principal

Tycoon

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éfinitionsAnimal Definition : configuration de l'espèce (rareté, items de catalyseur, carburant, économie, fusion, stats de monture, variantes de modèle).
  • ManifestesResearch 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.
  • ActionsControl 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.
  • ArtefactsPlayer 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

CommandeDescriptionPermission
/zooOuvre le Control Panel sur l'onglet Infoaucune
/zoo visit <player>Téléporte vers le zoo d'un autre joueuraucune
/adventureOuvre le Control Panel sur l'onglet Aventureaucune
/mountsOuvre le Control Panel sur l'onglet Monturesaucune
/collectCollecte manuellement le revenu accumuléaucune

Admin

Toutes les sous-commandes /tycoon (hors actions internes du menu) nécessitent tycoon.admin.

CommandeDescriptionPermission
/tycoon give <player> <animalId>Donne un animal à un joueurtycoon.admin
/tycoon remove <player> <animalId>Retire un animaltycoon.admin
/tycoon setlevel <player> <animalId> <level>Définit le niveau d'un animaltycoon.admin
/tycoon info [player]Affiche le profil tycoon d'un joueurtycoon.admin
/tycoon reloadForce la sauvegarde de tous les profilstycoon.admin
/tycoon spawnshop <shopId>Force l'apparition d'une boutique de livraisontycoon.admin
/tycoon resetfatigue [player]Réinitialise la fatigue d'aventuretycoon.admin
/tycoon unlockcategory <player> <catId>Débloque une catégorie de recherchetycoon.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

PlaceholderDescription
%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

PlaceholderDescription
%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

PlaceholderDescription
%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é

PlaceholderDescription
%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

PlaceholderDescription
%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

PermissionDescription
tycoon.adminAdministrer le système tycoon (toutes les sous-commandes admin /tycoon).

Dépendances

ExtensionRequisUtilisation
EntityExtensionOuiDéfinitions d'entité pour les modèles d'animaux
Typewriter-GUIExtensionOuiRendu du Control Panel (FrameLayout, boutons pilotés par les données)
TypeWriter-VehicleExtensionNonSystème de monture (optionnel, basé sur PacketEvents)
TypeWriter-RPGCOREExtensionNonRestriction de capture selon le niveau de profession
TypeWriter-TemporaryDimensionExtensionNonClonage de la dimension de la carte d'aventure (SlimeWorldManager)
TypeWriter-ShopsExtensionNonAbstractions d'économie (Vault/Points/Placeholder)
TypeWriter-MySqlExtensionNonRedis pub/sub pour le classement cross-serveur et le marché entre joueurs