101 lines
3.8 KiB
Markdown
101 lines
3.8 KiB
Markdown
---
|
|
title: Gameplay Systems
|
|
type: docs
|
|
weight: 3
|
|
---
|
|
|
|
The Gameplay Systems provide quest mechanics, progression systems, and gameplay features for the adventure mode.
|
|
|
|
**Package:** `com.hypixel.hytale.builtin.adventure`
|
|
|
|
{{< cards >}}
|
|
{{< card link="objectives" title="Objectives" subtitle="Quest and goal system" >}}
|
|
{{< card link="farming" title="Farming" subtitle="Crop growth and agriculture" >}}
|
|
{{< card link="npc-objectives" title="NPC Objectives" subtitle="NPC-related quests" >}}
|
|
{{< card link="memories" title="Memories" subtitle="Persistent state tracking" >}}
|
|
{{< card link="shop" title="Shop" subtitle="Trading and commerce" >}}
|
|
{{< card link="camera-effects" title="Camera Effects" subtitle="Cinematic camera control" >}}
|
|
{{< card link="reputation" title="Reputation" subtitle="Faction standing system" >}}
|
|
{{< /cards >}}
|
|
|
|
## Architecture Overview
|
|
|
|
The Adventure system is composed of multiple plugins:
|
|
|
|
```
|
|
Adventure System
|
|
├── ObjectivePlugin (objectives/)
|
|
│ ├── Objective - Quest instance with TaskSets
|
|
│ ├── ObjectiveTask - Individual task types
|
|
│ ├── ObjectiveCompletion - Reward handlers
|
|
│ └── ObjectiveHistoryComponent - Progress tracking
|
|
├── FarmingPlugin (farming/)
|
|
│ ├── FarmingBlock/FarmingBlockState - Crop state
|
|
│ ├── TilledSoilBlock - Farmland mechanics
|
|
│ ├── GrowthModifier - Fertilizer, water, light
|
|
│ └── CoopBlock/CoopResidentComponent - Animal coops
|
|
├── NPCObjectivesPlugin (npcobjectives/)
|
|
│ ├── KillTask/BountyTask - Combat objectives
|
|
│ ├── KillTrackerSystem - Kill counting
|
|
│ └── NPC Actions (StartObjective, CompleteTask)
|
|
├── MemoriesPlugin (memories/)
|
|
│ ├── PlayerMemories - Player memory component
|
|
│ ├── Memory/MemoryProvider - Memory types
|
|
│ └── NPCMemory - NPC-related memories
|
|
├── ShopPlugin (shop/)
|
|
│ ├── ShopAsset - Shop definitions
|
|
│ ├── BarterShopAsset - Trade-based shops
|
|
│ └── ShopElement/GiveItemInteraction
|
|
├── CameraPlugin (camera/)
|
|
│ ├── CameraShake - Screen shake effects
|
|
│ ├── ViewBobbing - Movement camera bob
|
|
│ └── CameraEffectSystem
|
|
└── ReputationPlugin (reputation/)
|
|
├── ReputationGroup - Faction definitions
|
|
├── ReputationRank - Standing levels
|
|
└── ReputationGroupComponent - NPC faction
|
|
```
|
|
|
|
## Subpackages
|
|
|
|
| Package | Files | Description |
|
|
|---------|-------|-------------|
|
|
| `objectives/` | 82 | Quest and objective system |
|
|
| `farming/` | 24 | Agriculture mechanics |
|
|
| `npcobjectives/` | 22 | NPC-related objectives (kill tasks) |
|
|
| `memories/` | 19 | State persistence and collectibles |
|
|
| `shop/` | 16 | Trading and barter system |
|
|
| `camera/` | 13 | Camera effects (shake, bobbing) |
|
|
| `reputation/` | 12 | Faction reputation system |
|
|
| `objectivereputation/` | 4 | Reputation rewards for objectives |
|
|
| `npcreputation/` | 2 | NPC attitude based on reputation |
|
|
| `shopreputation/` | 1 | Reputation-gated shop items |
|
|
|
|
## Quick Example
|
|
|
|
```java
|
|
// Start an objective for a player
|
|
ObjectivePlugin objectives = ObjectivePlugin.get();
|
|
objectives.startObjective(player, "collect_wood");
|
|
|
|
// Change reputation with a faction
|
|
ReputationPlugin rep = ReputationPlugin.get();
|
|
rep.changeReputation(player, "village_faction", 10, componentAccessor);
|
|
|
|
// Get reputation rank
|
|
ReputationRank rank = rep.getReputationRank(store, playerRef, "village_faction");
|
|
|
|
// Check if player has a memory
|
|
MemoriesPlugin memories = MemoriesPlugin.get();
|
|
boolean hasMemory = memories.hasRecordedMemory(someMemory);
|
|
```
|
|
|
|
## Plugin Registration
|
|
|
|
Each adventure subsystem is a separate plugin that registers:
|
|
- **Components** on EntityStore or ChunkStore
|
|
- **Interactions** for block/entity interactions
|
|
- **Assets** loaded from JSON/YAML files
|
|
- **Systems** for ECS processing
|
|
- **Commands** for administration
|