Skip to main content

Tycoon

The Tycoon Extension delivers a complete Zoo Tycoon game mode. Players progress through a research tree by killing mobs to unlock categories, feed catalysts with resources, and activate research attempts with fuel items. Owned animals generate passive income when placed in the zoo, can be ridden as mounts in temporary adventure dimensions, bred into hybrid eggs, prestiged for permanent bonuses, and sent on timed expeditions. A single Control Panel menu — 100% data-driven, with zero hardcoded visuals — hosts every system across 16 tabs.

Features

  • Control Panel — One FrameLayout menu in a 4│1│4 layout (sidebar tabs │ scroll nav │ content), cloned from the BTCSky pattern. 16 tabs (info, bestiary, zoo, research, expeditions, mounts, shop, adventure, prestige, ranking, challenges, breeding, staff, market, contracts, decorations) share the same window; content resolves per-tab and sub-views (tab:context, e.g. research:reptiles) reuse the parent tab's highlight. Every visual, title, and button comes from Typewriter Pages — the code only fills live data tags and attaches interactions.
  • Research Tree — Category-based tech tree unlocked by killing mobs. Each animal requires a catalyst (fed with configurable resource items) and a fuel item for the final activation roll.
  • Passive Economy — Placed zoo animals generate revenue over time. Biome affinities, habitat blocks, staff, decorations, and happiness affect income. Offline catch-up on reconnect.
  • Adventure Map — Explore a temporary dimension cloned on demand from a template world (via BTC-CORE / Advanced Slime Paper). Teleport to configured chunks to discover them; a fatigue gauge (extended by mounts) drains while exploring and forces a return to origin at zero. The world unloads automatically once empty.
  • Mounts — Ride owned animals with ZQSD controls via PacketEvents STEER_VEHICLE interception. Fatigue gauge drains over time, recharges outside adventure dimensions.
  • Fusion — Action-triggered same-species fusion: combines a player's two highest-level animals of one species into an incubating egg, with a configurable rarity-upgrade and cosmetic-mutation chance.
  • Breeding — Recipe-driven cross-species breeding from the Breeding tab. Select two eligible parents (persisted per-player while browsing), start an incubation matching a configured recipe, and collect the hatched offspring once ready.
  • Prestige — Reset a max-level animal to level 1 for a permanent revenue bonus. Stacks per prestige count.
  • Delivery Shop — Rotating NPC merchant with a real schedule (fixed interval like 30m/2h/1d, a daily HH:MM time, or a cooldown fallback) and a weighted item pool. FOMO mechanics — inventory changes each rotation.
  • Expeditions — Send an eligible animal on a timed idle mission from the Expeditions tab (empty slot → pick an animal in the expeditions:start sub-view). Duration is reduced by a hired Expedition Guide. Returns with resources, XP, catalyst items, or rare bonus animals.
  • Animal Levels & XP — Each animal has its own level, XP curve, and max level. Gain XP via mount usage, expeditions, and zoo placement time.
  • Personalization — Rename animals, apply skin variants (ref-based EntityDefinitions), equip accessories (hat, collar, saddle).
  • Happiness System — Animals have 0–100 happiness affecting revenue. Boosted by matching biomes, habitat blocks, feeding, staff, and decorations. Penalized by overcrowding.
  • Daily/Weekly Challenges — Rotating challenges (capture an animal, place an animal, kill mobs, earn revenue, prestige, research an animal) on independent daily/weekly cycles. Claim from the Challenges tab for money and command rewards.
  • Zoo Staff — Hire staff with a passive role effect: Revenue Collector (revenue multiplier), Caretaker (happiness floor), Expedition Guide (faster expeditions), Researcher (faster research). Charges periodic upkeep; auto-fired if unpaid.
  • Cross-Server Leaderboard — Ranking by total earned, animals owned, prestige total, or animals placed (cycle sort in the Ranking tab). Synced across the network over Redis pub/sub when TypeWriter-MySqlExtension is present; falls back to this server's own players otherwise.
  • Player Market — List an owned animal for sale and buy from other players, including across servers. A Redis pub/sub protocol (list/unlist/buy/confirm/deny) keeps the listing-owning server authoritative over the sale, with buyer-side refunds on denial or disconnect. Falls back to a local-only market without Redis.
  • Animal Delivery Contracts — Hand over animals matching a species/category, minimum level, and count for a money + command reward. Contracts can be one-time or repeatable.
  • Decorations & Enclosures — Place real blocks as zoo decorations from the Decorations tab, each granting a happiness and/or revenue bonus, capped per player. Remove them to reclaim the slot.

Architecture

Entries

Quick Start

This extension is fully data-driven — nothing renders without Pages content:

  • 1. Build the Control Panel page — Create a tycoon_menu entry with a FrameLayout layoutPool: a sidebar frame (tabs, tycoon_tab:<id> buttons), a nav frame (scroll), and one <tabId>_content layout per tab using tycoon_button: buttons for dynamic content.
  • 2. Configure the dynamic templates — Fill in tycoon_menu_config with the SlotItemConfig templates for every list your pages use (bestiary entries, research animals, ranking rows, market listings, …). Any template left empty renders as an empty slot.
  • 3. Define the content — Start with animal_definition, research_category, and adventure_map for the core loop, then add tycoon_breeding_recipe, tycoon_challenge, tycoon_staff, tycoon_decoration, tycoon_animal_contract, and delivery_shop for the extra systems you want to enable.

Commands

Player

CommandDescriptionPermission
/zooOpen the Control Panel on the Info tabnone
/zoo visit <player>Teleport to another player's zoonone
/adventureOpen the Control Panel on the Adventure tabnone
/mountsOpen the Control Panel on the Mounts tabnone
/collectManually collect accumulated revenuenone

Admin

All /tycoon subcommands (other than the GUI's own internal actions) require tycoon.admin.

CommandDescriptionPermission
/tycoon give <player> <animalId>Give an animal to a playertycoon.admin
/tycoon remove <player> <animalId>Remove an animaltycoon.admin
/tycoon setlevel <player> <animalId> <level>Set animal leveltycoon.admin
/tycoon info [player]Show player tycoon profiletycoon.admin
/tycoon reloadForce save all profilestycoon.admin
/tycoon spawnshop <shopId>Force spawn a delivery shoptycoon.admin
/tycoon resetfatigue [player]Reset adventure fatiguetycoon.admin
/tycoon unlockcategory <player> <catId>Unlock a research categorytycoon.admin

Every Control Panel button click also routes through /tycoon <action> ... (e.g. cp, list_scroll, market_buy, breed_start) — these are generated by the menu itself and open to any player on their own session, not meant for manual use.

Placeholders

Prefix: %typewriter_tycoon_*%

Global Stats

PlaceholderDescription
%typewriter_tycoon_total_animals%Total owned animals
%typewriter_tycoon_placed_animals%Currently placed in zoo
%typewriter_tycoon_unplaced_animals%Owned but not placed
%typewriter_tycoon_total_revenue%Lifetime revenue (formatted)
%typewriter_tycoon_total_revenue_raw%Lifetime revenue (raw number)
%typewriter_tycoon_categories_unlocked%Unlocked research categories
%typewriter_tycoon_categories_total%Total research categories
%typewriter_tycoon_categories_locked%Locked research categories
%typewriter_tycoon_milestones_count%Collection milestones completed
%typewriter_tycoon_prestige_bonuses_count%Active prestige bonuses
%typewriter_tycoon_expeditions_active%Active expeditions
%typewriter_tycoon_expeditions_completed%Completed expeditions (currently always 0)
%typewriter_tycoon_zoo_visitors%Total zoo visitors
%typewriter_tycoon_active_mount_id%Currently selected mount ID
%typewriter_tycoon_last_revenue_collect%Last revenue collect timestamp

Category-Specific

PlaceholderDescription
%typewriter_tycoon_category_<id>_unlocked%Whether category is unlocked
%typewriter_tycoon_category_<id>_mobs_killed%Mobs killed toward unlock
%typewriter_tycoon_category_<id>_required_kills%Required kills to unlock
%typewriter_tycoon_category_<id>_progress_percent%Unlock progress percentage
%typewriter_tycoon_category_<id>_name%Category display name

Animal-Specific

PlaceholderDescription
%typewriter_tycoon_animal_<id>_level%Animal level
%typewriter_tycoon_animal_<id>_owned%Owns animal (true/false)
%typewriter_tycoon_animal_<id>_prestige%Prestige count
%typewriter_tycoon_animal_<id>_xp%Current XP
%typewriter_tycoon_animal_<id>_rarity%Rarity name
%typewriter_tycoon_animal_<id>_rarity_color%Rarity hex color
%typewriter_tycoon_animal_<id>_placed%Placed in zoo (true/false)
%typewriter_tycoon_animal_<id>_custom_name%Custom name
%typewriter_tycoon_animal_<id>_is_mountable%Mountable (true/false)
%typewriter_tycoon_animal_<id>_mount_speed%Mount speed multiplier
%typewriter_tycoon_animal_<id>_fatigue_capacity%Fatigue capacity (seconds)
%typewriter_tycoon_animal_<id>_max_level%Maximum level
%typewriter_tycoon_animal_<id>_revenue_rate%Base revenue rate
%typewriter_tycoon_animal_<id>_fusion_level%Minimum fusion level
%typewriter_tycoon_animal_<id>_display_name%Display name
%typewriter_tycoon_animal_<id>_catalyst_progress%Catalyst fill percentage
%typewriter_tycoon_animal_<id>_catalyst_power%Catalyst current power
%typewriter_tycoon_animal_<id>_catalyst_items%Donated item types count

Placed Animal Info

PlaceholderDescription
%typewriter_tycoon_placed_<id>_happiness%Happiness level
%typewriter_tycoon_placed_<id>_biome%Current biome
%typewriter_tycoon_placed_<id>_world%World name
%typewriter_tycoon_placed_<id>_coords%Coordinates (x, y, z)
%typewriter_tycoon_placed_<id>_chunk%Chunk (x, z)

Prestige & Expeditions

PlaceholderDescription
%typewriter_tycoon_prestige_<id>%Prestige bonus percentage
%typewriter_tycoon_expedition_count%Total expedition count
%typewriter_tycoon_expedition_<n>_animal%Animal ID in expedition slot N
%typewriter_tycoon_expedition_<n>_remaining_seconds%Seconds until return
%typewriter_tycoon_expedition_<n>_remaining_minutes%Minutes until return
%typewriter_tycoon_expedition_<n>_duration_hours%Total duration in hours
%typewriter_tycoon_expedition_<n>_ready%Ready to collect (true/false)

Permissions

PermissionDescription
tycoon.adminAdministrate the tycoon system (all /tycoon admin subcommands).

Dependencies

ExtensionRequiredPurpose
EntityExtensionYesEntity definitions for animal models
Typewriter-GUIExtensionYesControl Panel rendering (FrameLayout, data-driven buttons)
TypeWriter-VehicleExtensionNoMount system (optional, PacketEvents-based)
TypeWriter-RPGCOREExtensionNoProfession level gating for capture limits
TypeWriter-TemporaryDimensionExtensionNoAdventure map dimension cloning (SlimeWorldManager)
TypeWriter-ShopsExtensionNoEconomy abstractions (Vault/Points/Placeholder)
TypeWriter-MySqlExtensionNoRedis pub/sub for the cross-server leaderboard and player market