TagCore

v1.1.8·Updated 2026-08-27

A unified tagging API for items, blocks, and entities, enabling cross-mod compatibility

About this mod Author’s original text

TagCore

TagCore is a Hytale server mod/plugin that adds a simple, reusable tag system for game content.

It lets you define named groups of IDs such as items, blocks, entities, biomes, effects, fluids, and damage types, then query those groups through a clean Java API.

Features

  • Define tags in JSON
  • Support for these tag types:
  • item
  • block
  • entity
  • biome
  • effect
  • fluid
  • damage_type
  • Reference one tag from another with #namespace:path
  • Resolve fully flattened tag contents at startup
  • Detect invalid values, missing references, wrong-type references, and circular references
  • Load tags from:
  • bundled classpath resources under tags/
  • external.zip and.jar packs from the server mods/ directory
  • Easy-to-use TagService API for other mods/plugins

Installation via Gradle

Add the AzureDoom Maven repository and dependency to your build.gradle.kts:

repositories {

maven("

}

dependencies {

implementation("com.azuredoom.tagcore:TagCore:1.0.0")

}

For Groovy DSL:

repositories {

maven {

url = uri("

}

}

dependencies {

implementation("com.azuredoom.tagcore:TagCore:1.0.0")

}

Maven browser/index:

How Tag IDs Work

Tag IDs use a namespace:path format.

Examples:

  • hytale:logs
  • tagcore:starter_weapons
  • mymod:undead

If a tag ID is written without a namespace, TagCore normalizes it to the default namespace:

hytale

So a bare tag like:

starter_weapons

is treated as:

hytale:starter_weapons

Defining Tags

Tag files are JSON files placed under a tags/ directory.

A tag definition contains:

  • id - the tag ID
  • type - the tag type
  • values - a list of concrete IDs and/or tag references

Example item tag

{

"id": "tagcore:starter_weapons",

"type": "item",

"values": [

"Weapon_Sword_Wood",

"Weapon_Shortbow_Crude",

"#tagcore:starter_ammo"

]

}

Example block tag

{

"id": "tagcore:logs",

"type": "block",

"values": [

"Wood_Amber_Trunk",

"Wood_Ash_Trunk",

"Wood_Aspen_Trunk"

]

}

Example entity tag

{

"id": "tagcore:undead",

"type": "entity",

"values": [

"Zombie",

"Skeleton",

"#tagcore:boss_undead"

]

}

Referencing Other Tags

You can include one tag inside another by prefixing the referenced tag ID with #.

{

"id": "tagcore:all_logs",

"type": "block",

"values": [

"#tagcore:logs",

"#tagcore:modded_logs"

]

}

Rules:

  • referenced tags must exist
  • referenced tags must be the same type
  • circular references are rejected

Where Tags Are Loaded From

TagCore loads tags from two places, in this order:

  • Classpath resources under tags/
  • External.zip or.jar packs in the server mods/ directory

External packs can override built-in tags with the same ID.

Using the API

TagCore exposes a shared TagService for querying tags.

Get the shared service

import com.azuredoom.tagcore.api.TagService;

var tagServiceOptional = TagService.getTagService();

if (tagServiceOptional.isEmpty()) {

return;

}

TagService tagService = tagServiceOptional.get();

Check whether a tag exists

boolean exists = tagService.hasTag("tagcore:starter_weapons");

Resolve a typed tag

var result = tagService.resolveItemTag("tagcore:starter_weapons");

if (result.isSuccess()) {

for (String itemId: result.value()) {

System.out.println(itemId);

}

} else {

System.out.println("Failed to resolve tag: " + result.status());

for (var issue: result.issues()) {

System.out.println(issue.detail());

}

}

Check membership in a tag

var result = tagService.isInItemTag("tagcore:starter_weapons", "Sword_Wooden");

if (result.isSuccess() && result.value()) {

System.out.println("Sword_Wooden is in the tag.");

}

Resolve a block tag

var logs = tagService.resolveBlockTag("tagcore:logs");

if (logs.isSuccess()) {

System.out.println("Resolved block IDs: " + logs.value());

}

Generic membership check

var result = tagService.isInTag("tagcore:starter_weapons", "Sword_Wooden");

if (result.isSuccess()) {

System.out.println("Contained: " + result.value());

}

Understanding Query Res

Install & use Install: follow the bundled instructions

  1. Unzip the archive from playbuff and read the bundled readme / instructions first.
  2. Most mods rely on the game's mod loader — the usual route is a community mod manager (such as r2modman): pick this game, install, and it handles the loader and dependencies.
  3. For a manual install, put the mod files into the matching Mod / plugins folder inside the game directory.
  4. Launch the game to confirm it loaded; mods with listed dependencies need those installed as well.

Install locations vary a lot between mods — the bundled readme is the most reliable guide.

File & checksum

Filename
TagCore-1.1.8.zip
File size
326.0 KiB
SHA-256
0604e03bebfbbded1baea6ed0f0045089d3ada710c09d28f585a040bbd9efc5a
Stored at
2026-10-10 17:36