Data Files¶
All plugin data is stored as JSON files in plugins/HTSkyBlock/. This page documents each file and its purpose.
Editing Data Files
It is generally safe to edit config files while the server is stopped. Editing data files (islands.json, economy.json, etc.) while the server is running may cause data loss, as the plugin periodically saves to these files and will overwrite your changes.
Configuration Files¶
config.json¶
The main plugin configuration file. Controls all feature toggles, settings, and defaults.
See Configuration for a full reference of every field.
blockworth.json¶
Defines the score value of each block type for island ranking. Used when calculating island scores.
{
"defaultWorth": 1,
"blocks": {
"Stone": 1,
"Iron Ore": 10,
"Gold Ore": 25,
"Diamond Ore": 100
}
}
Block Names
Block names should match Hytale block IDs. The system supports fuzzy matching (with or without namespace prefix).
challenges.json¶
Defines all available challenges, their requirements, and rewards.
{
"levels": [
{
"id": "beginner",
"friendlyName": "Beginner",
"icon": "Wood Plank",
"order": 1
}
],
"challenges": [
{
"id": "gather_wood",
"friendlyName": "Lumberjack",
"description": "Collect 64 wood planks",
"level": "beginner",
"type": "inventory",
"requiredItems": [{"id": "Wood Plank", "amount": 64}],
"takeItems": true,
"moneyReward": 100,
"repeatable": true,
"maxRepeats": 5
}
]
}
shop.json¶
Contains all shop categories and items. Managed via /htshop commands.
{
"categories": [
{
"name": "Building",
"icon": "Stone",
"order": 1,
"items": [
{
"id": "Stone",
"name": "Stone",
"buyPrice": 5.0,
"sellPrice": 2.0,
"sellable": true
}
]
}
]
}
dungeons.json¶
Stores dungeon template configurations including spawn groups, trigger points, spawn locations, and wave definitions. Managed via /dungeondev commands.
{
"skydungeon1": {
"id": "skydungeon1",
"instanceName": "Skydungeon1",
"displayName": "Sky Dungeon 1",
"spawnGroups": [
{
"id": "room1",
"triggerX": 10.0,
"triggerY": 65.0,
"triggerZ": 20.0,
"triggerRadius": 10.0,
"waveDelaySeconds": 3.0,
"spawnPoints": [
{"x": 12.0, "y": 65.0, "z": 22.0, "yaw": 90.0},
{"x": 8.0, "y": 65.0, "z": 18.0, "yaw": -90.0}
],
"waves": [
{"mobType": "Trork_Warrior", "count": 3},
{"mobType": "Trork_Grunt", "count": 5}
]
}
]
}
}
Key fields per template:
| Field | Description |
|---|---|
id |
Unique template identifier |
instanceName |
Instance asset folder name (from Server/Instances/) |
displayName |
Friendly display name |
spawnGroups |
List of spawn group configurations |
Key fields per spawn group:
| Field | Description |
|---|---|
id |
Group identifier |
triggerX/Y/Z |
Center of the proximity trigger |
triggerRadius |
How close the player must be to activate (default: 10) |
waveDelaySeconds |
Delay between waves after all mobs die (default: 3) |
spawnPoints |
List of locations where mobs appear (x, y, z, yaw) |
waves |
Ordered list of waves (mobType = NPC role name, count = number of mobs) |
In-Game Editing
Use /dungeondev commands to manage dungeons in-game rather than editing this file directly. The commands automatically save positions from your current location.
Player Data Files¶
islands.json¶
Stores all island data including locations, settings, members, scores, and boundaries.
Key fields per island:
| Field | Description |
|---|---|
playerId |
Owner's UUID |
playerName |
Owner's username |
islandName |
Custom island name |
worldName |
World name containing the island |
location |
Island center coordinates (x, y, z) |
homeLocation |
Player home teleport location |
spawnLocation |
Visitor spawn location |
isPublic |
Whether visitors can enter freely |
pvpEnabled |
Whether PvP is allowed |
score |
Island score based on block worth |
rank |
Leaderboard rank position |
sizeTier |
Island size tier (1-4) |
members |
List of trusted member UUIDs and names |
generated |
Whether the island structure has been placed |
gridX / gridZ |
Grid position (single-world mode only) |
economy.json¶
Player balances for the self-hosted economy provider. Not used when an external economy provider is configured.
{
"balances": {
"uuid-here": 1000.00
}
}
homes.json¶
Named home locations per island.
{
"homes": {
"player-uuid": {
"base": {"x": 0, "y": 65, "z": 0},
"farm": {"x": 10, "y": 65, "z": 20}
}
}
}
flytime_data.json¶
Stores banked fly time per player in seconds.
{
"flyTimes": {
"player-uuid": 3600
}
}
challenge_data.json¶
Tracks player challenge completion progress.
{
"playerData": {
"player-uuid": {
"completed": ["gather_wood", "build_house"],
"repeatCounts": {"gather_wood": 3}
}
}
}
Marketplace Files¶
ahlist.json¶
Active auction house listings.
Key fields per listing:
| Field | Description |
|---|---|
sellerUuid |
Seller's UUID |
sellerName |
Seller's username |
itemId |
Item type ID |
quantity |
Number of items |
price |
Listing price |
createdAt |
Timestamp when listed |
expiresAt |
Timestamp when listing expires |
ah_cooldowns.json¶
Tracks cooldowns between auction listings per player to prevent spam.
World Data Files¶
stacked_blocks.json¶
Stores block stack data for the block stacking system.
Key fields per stack:
| Field | Description |
|---|---|
worldName |
World containing the stack |
x / y / z |
Stack position |
blockId |
Block type ID |
count |
Number of blocks in stack |
hologramUuid |
UUID of the count display entity |
npcs.json¶
Stores NPC data including positions, skins, and chat messages.
Key fields per NPC:
| Field | Description |
|---|---|
name |
Display name |
skinPlayerName |
Player whose skin to use |
worldName |
World the NPC is in |
x / y / z |
Position |
yaw / pitch |
Rotation |
chatMessages |
Messages shown on interaction |
cinematics.json¶
Stores cinematic camera sequences.
Key fields per cinematic:
| Field | Description |
|---|---|
name |
Cinematic name |
worldName |
World to play in |
locations |
List of camera positions with settings |
defaultOrbitSpeed |
Default camera orbit speed |
defaultOrbitRadius |
Default camera orbit radius |
defaultCameraHeight |
Default camera height |
defaultCameraPitch |
Default camera angle |
visit_requests.json¶
Stores pending island visit requests.
Language Files¶
lang/en.json¶
English language file containing all translatable messages. Generated automatically on first run from built-in defaults. You can edit this file to customize any message.
Messages support:
- Color codes:
&a(green),&c(red),&f(white),&6(gold), etc. - Bold/italic:
&l(bold),&o(italic),&r(reset) - Hex colors:
#RRGGBBat the start of a message - Placeholders:
{player},{amount},{time}, etc.
Custom Languages
To add a new language, copy lang/en.json to lang/xx.json (e.g., lang/fr.json), translate the values, and set "language": "fr" in config.json.