diff --git a/public/mcdoc/loot-table-modifier.mcdoc b/public/mcdoc/loot-table-modifier.mcdoc new file mode 100644 index 00000000..a56dc5ef --- /dev/null +++ b/public/mcdoc/loot-table-modifier.mcdoc @@ -0,0 +1,96 @@ +use ::java::data::loot::LootPool +use ::java::data::loot::LootContextType + +dispatch minecraft:resource[loot-table-modifier:loot_modifier] to struct { + actions: [Action], + predicate: Predicate, +} + +struct Action { + type: #[id] ActionType, + ...loot-table-modifier:loot_modifier_action_types[[type]], +} + +struct Predicate { + type: #[id] PredicateType, + ...loot-table-modifier:loot_modifier_predicate_types[[type]], +} + +enum(string) ActionType { + PoolAdd = "loot-table-modifier:pool_add", + PoolRemove = "loot-table-modifier:pool_remove", + + + EntryAdd = "loot-table-modifier:entry_add", + EntryRemove = "loot-table-modifier:entry_remove", + + EntryItemSet = "loot-table-modifier:entry_item_set", +} + +enum(string) PredicateType { + Inverted = "loot-table-modifier:inverted", + AnyOf = "loot-table-modifier:any_of", + AllOf = "loot-table-modifier:all_of", + + + EntryItem = "loot-table-modifier:entry_item", + + + Table = "loot-table-modifier:table", +} + + +/// Utils +struct Pattern { + regexPattern: #[regex_pattern] string, +} + + +/// Actions + +dispatch loot-table-modifier:loot_modifier_action_types[loot-table-modifier:pool_add] to struct { + pools: [LootPool], +} +dispatch loot-table-modifier:loot_modifier_action_types[loot-table-modifier:pool_remove] to struct { + +} + + +dispatch loot-table-modifier:loot_modifier_action_types[loot-table-modifier:entry_add] to struct { + entries: [LootPoolEntry], +} +dispatch loot-table-modifier:loot_modifier_action_types[loot-table-modifier:entry_remove] to struct { + +} + +dispatch loot-table-modifier:loot_modifier_action_types[loot-table-modifier:entry_item_set] to struct { + name: #[id="item"] string, + canReplaceEntry?: boolean, +} + + +/// Predicates + +/// # op +dispatch loot-table-modifier:loot_modifier_predicate_types[loot-table-modifier:inverted] to struct { + term: Predicate, +} + +dispatch loot-table-modifier:loot_modifier_predicate_types[loot-table-modifier:any_of] to struct { + terms: [Predicate], +} + +dispatch loot-table-modifier:loot_modifier_predicate_types[loot-table-modifier:all_of] to struct { + terms: [Predicate], +} + +/// # entry +dispatch loot-table-modifier:loot_modifier_predicate_types[loot-table-modifier:entry_item] to struct { + name: (#[id="item"] string | Pattern), +} + +/// # table +dispatch loot-table-modifier:loot_modifier_predicate_types[loot-table-modifier:table] to struct { + identifiers?: [(#[id="loot_table"] string | Pattern)], + types?: [(LootContextType | Pattern)], +} diff --git a/src/config.json b/src/config.json index 576575de..37fd7daf 100644 --- a/src/config.json +++ b/src/config.json @@ -808,6 +808,13 @@ "path": "create", "tags": ["partners"], "dependency": "create" + }, + { + "id": "loot-table-modifier:loot_modifier", + "url": "loot-table-modifier/loot_modifier", + "path": "loot-table-modifier/loot_modifier", + "tags": ["partners"], + "dependency": "loot-table-modifier" } ], "legacyGuides": [ diff --git a/src/locales/en.json b/src/locales/en.json index b528dd65..9597bfab 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -89,6 +89,7 @@ "generator.jukebox_song": "Jukebox Song", "generator.lang": "Language", "generator.loot_table": "Loot Table", + "generator.loot-table-modifier:loot_modifier": "Loot Modifier", "generator.model": "Model", "generator.texture_meta": "Texture Metadata", "generator.neoforge:biome_modifier": "Biome Modifier", @@ -198,6 +199,7 @@ "partner.fabric": "Fabric", "partner.immersive_weathering": "Immersive Weathering", "partner.lithostitched": "Lithostitched", + "partner.loot-table-modifier": "Loot Table Modifier", "partner.neoforge": "NeoForge", "partner.obsidian": "Obsidian", "partner.ohthetreesyoullgrow": "Oh The Trees You'll Grow",