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
- Definitions — Animal Definition: species config (rarity, catalyst items, fuel, economy, fusion, mount stats, model variants).
- Manifests — Research Category: tech-tree folder with mob-kill requirements. Research Recipe: catalyst/fuel research recipe. Adventure Map: dimension template, chunk grid, fatigue default. Delivery Shop: rotating merchant schedule and item pool. Breeding Recipe: parent species pair → offspring. Challenge: daily/weekly objective and reward. Staff: hireable role, cost, and upkeep. Animal Contract: delivery requirement and reward. Decoration: placeable block, cost, and bonuses. Control Panel Configuration: dynamic-list slot templates for every tab.
- Actions — Control Panel: opens the 4│1│4 menu. Catalyst Activate: use the fuel item to attempt research. Category Unlock: unlock a category once its kill threshold is met. Revenue Collect: collect accumulated zoo income. Animal XP: grant experience to owned animals. Fusion: same-species fusion into an incubating egg. Prestige: reset a max-level animal for a permanent bonus. Expedition Start: send an animal on a timed mission. Customize Animal: rename, skin, and equip accessories.
- Artifacts — Player Data: per-player zoo profile (animals, revenue, research, staff, challenges, decorations). Market Listings: active player-market listings.
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
| Command | Description | Permission |
|---|
/zoo | Open the Control Panel on the Info tab | none |
/zoo visit <player> | Teleport to another player's zoo | none |
/adventure | Open the Control Panel on the Adventure tab | none |
/mounts | Open the Control Panel on the Mounts tab | none |
/collect | Manually collect accumulated revenue | none |
Admin
All /tycoon subcommands (other than the GUI's own internal actions) require tycoon.admin.
| Command | Description | Permission |
|---|
/tycoon give <player> <animalId> | Give an animal to a player | tycoon.admin |
/tycoon remove <player> <animalId> | Remove an animal | tycoon.admin |
/tycoon setlevel <player> <animalId> <level> | Set animal level | tycoon.admin |
/tycoon info [player] | Show player tycoon profile | tycoon.admin |
/tycoon reload | Force save all profiles | tycoon.admin |
/tycoon spawnshop <shopId> | Force spawn a delivery shop | tycoon.admin |
/tycoon resetfatigue [player] | Reset adventure fatigue | tycoon.admin |
/tycoon unlockcategory <player> <catId> | Unlock a research category | tycoon.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
| Placeholder | Description |
|---|
%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
| Placeholder | Description |
|---|
%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
| Placeholder | Description |
|---|
%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
| Placeholder | Description |
|---|
%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
| Placeholder | Description |
|---|
%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
| Permission | Description |
|---|
tycoon.admin | Administrate the tycoon system (all /tycoon admin subcommands). |
Dependencies
| Extension | Required | Purpose |
|---|
| EntityExtension | Yes | Entity definitions for animal models |
| Typewriter-GUIExtension | Yes | Control Panel rendering (FrameLayout, data-driven buttons) |
| TypeWriter-VehicleExtension | No | Mount system (optional, PacketEvents-based) |
| TypeWriter-RPGCOREExtension | No | Profession level gating for capture limits |
| TypeWriter-TemporaryDimensionExtension | No | Adventure map dimension cloning (SlimeWorldManager) |
| TypeWriter-ShopsExtension | No | Economy abstractions (Vault/Points/Placeholder) |
| TypeWriter-MySqlExtension | No | Redis pub/sub for the cross-server leaderboard and player market |