diff --git a/locales/en.json b/locales/en.json
index 67c8ba9e..51423011 100644
--- a/locales/en.json
+++ b/locales/en.json
@@ -75,7 +75,8 @@
"damage_source.is_magic": "Magic",
"damage_source.is_projectile": "Projectile",
"damage_source.source_entity": "Source Entity",
- "description": "Loot Table Generator for Minecraft",
+ "description.loot-table": "Loot Table Generator for Minecraft",
+ "description.predicate": "Predicate Generator for Minecraft",
"dimension.overworld": "Overworld",
"dimension.the_end": "The End",
"dimension.the_nether": "The Nether",
@@ -290,7 +291,8 @@
"tabs": "Tabs",
"term_add": "Add Term",
"term_remove": "Remove Term",
- "title": "Loot Table Generator",
+ "title.loot-table": "Loot Table Generator",
+ "title.predicate": "Predicate Generator",
"true": "True",
"unset": "Unset"
}
diff --git a/locales/ru.json b/locales/ru.json
index 97302168..fa056989 100644
--- a/locales/ru.json
+++ b/locales/ru.json
@@ -82,7 +82,7 @@
"damage_source.is_magic": "Магия",
"damage_source.is_projectile": "Снаряд",
"damage_source.source_entity": "Сущность-источник урона",
- "description": "Генератор таблицы добычи для Minecraft",
+ "description.loot-table": "Генератор таблицы добычи для Minecraft",
"dimension.overworld": "Обычный мир",
"dimension.the_end": "Энд",
"dimension.the_nether": "Незер",
@@ -298,7 +298,7 @@
"tabs": "Табуляция",
"term_add": "Добавить выражение",
"term_remove": "Удалить выражение",
- "title": "Генератор таблицы добычи",
+ "title.loot-table": "Генератор таблицы добычи",
"true": "Да",
"unset": "Не задано"
}
diff --git a/locales/zh-CN.json b/locales/zh-CN.json
index b70a3023..19ee3d3f 100644
--- a/locales/zh-CN.json
+++ b/locales/zh-CN.json
@@ -82,7 +82,7 @@
"damage_source.is_magic": "魔法",
"damage_source.is_projectile": "弹射物",
"damage_source.source_entity": "根本来源实体",
- "description": "Minecraft 战利品表生成器",
+ "description.loot-table": "Minecraft 战利品表生成器",
"dimension.overworld": "主世界",
"dimension.the_end": "末路之地",
"dimension.the_nether": "下界",
@@ -299,7 +299,7 @@
"tabs": "Tab 缩进",
"term_add": "添加条件",
"term_remove": "移除条件",
- "title": "战利品表生成器",
+ "title.loot-table": "战利品表生成器",
"true": "是",
"unset": "未指定"
}
diff --git a/model.js b/model.js
index b04b39e5..93680f25 100644
--- a/model.js
+++ b/model.js
@@ -148,7 +148,7 @@ function copySource(el) {
function getPath(el) {
let $node = $(el).closest('[data-index]');
let index = $node.attr('data-index');
- if (index === 'table') return [];
+ if (index === 'root') return [];
let parent = getPath($node.parent());
parent = parent.concat(index.split('.'));
return parent;
diff --git a/schemas/1.13.json b/schemas/1.13.json
index d4bc268b..3771403e 100644
--- a/schemas/1.13.json
+++ b/schemas/1.13.json
@@ -1,5 +1,6 @@
{
"root": {
+ "id": "loot-table",
"fields": [
{
"id": "pools",
diff --git a/schemas/1.14.json b/schemas/1.14.json
index b95ec2fc..b4000f31 100644
--- a/schemas/1.14.json
+++ b/schemas/1.14.json
@@ -1,5 +1,6 @@
{
"root": {
+ "id": "loot-table",
"fields": [
{
"id": "type",
diff --git a/schemas/1.15.json b/schemas/1.15.json
index e23e6899..95ad8067 100644
--- a/schemas/1.15.json
+++ b/schemas/1.15.json
@@ -1,29 +1,41 @@
{
- "root": {
- "fields": [
- {
- "id": "type",
- "type": "enum",
- "translate": "table.type",
- "translateValue": "table.type",
- "default": "minecraft:generic",
- "values": [
- "minecraft:empty",
- "minecraft:entity",
- "minecraft:block",
- "minecraft:chest",
- "minecraft:fishing",
- "minecraft:generic"
- ]
- },
- {
- "id": "pools",
- "type": "array",
- "translate": "pool",
- "values": "pool"
- }
- ]
- },
+ "roots": [
+ {
+ "id": "loot-table",
+ "title": "title.loot-table",
+ "description": "description.loot-table",
+ "fields": [
+ {
+ "id": "type",
+ "type": "enum",
+ "translate": "table.type",
+ "translateValue": "table.type",
+ "default": "minecraft:generic",
+ "values": [
+ "minecraft:empty",
+ "minecraft:entity",
+ "minecraft:block",
+ "minecraft:chest",
+ "minecraft:fishing",
+ "minecraft:generic"
+ ]
+ },
+ {
+ "id": "pools",
+ "type": "array",
+ "translate": "pool",
+ "values": "pool"
+ }
+ ]
+ },
+ {
+ "id": "predicate",
+ "title": "title.predicate",
+ "description": "description.predicate",
+ "type": "object",
+ "value": "condition"
+ }
+ ],
"components": [
{
"id": "pool",
diff --git a/view.js b/view.js
index 593ee93c..c15fd461 100644
--- a/view.js
+++ b/view.js
@@ -2,10 +2,16 @@ let structure;
let components;
let collections;
-changeVersion('1.14');
+changeVersion('1.15');
function changeVersion(version) {
$.getJSON('schemas/' + version + '.json', json => {
- structure = json.root;
+ console.log(json);
+ if (json.root) {
+ structure = json.root;
+ } else if (json.roots) {
+ let id = window.location.pathname.replace(/\/$/, '').replace(/^\//, '');
+ structure = json.roots.find(e => e.id === id);
+ }
components = json.components;
collections = json.collections;
}).fail((jqXHR, textStatus, errorThrown) => {
@@ -28,19 +34,31 @@ function changeVersion(version) {
function updateView() {
if (structure) {
- let {out: tableOut, component: $table} = generateTable(table, structure);
- $('#structure').append($table);
+ let {out: sourceOut, component: $component} = generateSourceAndView(table, structure);
+ $('#structure').removeClass('d-none').html('');
+ $('#descriptionSpan').attr('data-i18n', structure.description);
+ $('title').attr('data-i18n', structure.title);
+ $('#structure').append($component);
if (i18next.isInitialized) {
$('html').localize();
}
- $('#source').val(JSON.stringify(tableOut, null, indentation));
+ $('#source').val(JSON.stringify(sourceOut, null, indentation));
+ }
+}
+
+function generateSourceAndView(data, struct) {
+ if (struct.id === 'loot-table') {
+ $('#lootTableToolbar').removeClass('d-none');
+ $('#structure').attr('data-index', 'pools');
+ return generateTable(data, struct);
+ } else {
+ return generateObject(data, struct, false);
}
}
function generateTable(data, struct) {
let out = {};
let $el = $('
');
- $('#structure').removeClass('d-none').html('');
let type = struct.fields.find(e => e.id === 'type');
if (type) {