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