Add nbt operations

This commit is contained in:
Misode
2019-09-13 13:36:49 +02:00
parent 9e97ccd363
commit 6a4e9a5c38
3 changed files with 61 additions and 1 deletions

View File

@@ -159,6 +159,12 @@
<div class="input-group mt-3" data-type="json-list"> <div class="input-group mt-3" data-type="json-list">
<textarea class="form-control code" onchange="updateJsonListField(this)" rows=3></textarea> <textarea class="form-control code" onchange="updateJsonListField(this)" rows=3></textarea>
</div> </div>
<div class="input-group mt-3" data-type="nbt">
<div class="input-group-prepend">
<span class="input-group-text" data-name></span>
</div>
<textarea type="text" class="form-control code" onchange="updateField(this)" onfocus="this.select()" style="height: 0px"></textarea>
</div>
<div class="input-group mt-3" data-type="error"> <div class="input-group mt-3" data-type="error">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text text-danger" data-i18n="error"></span> <span class="input-group-text text-danger" data-i18n="error"></span>

View File

@@ -190,7 +190,7 @@
}, },
{ {
"id": "tag", "id": "tag",
"type": "string", "type": "nbt",
"require": [ "require": [
"minecraft:set_nbt" "minecraft:set_nbt"
] ]
@@ -319,6 +319,15 @@
"minecraft:set_attributes" "minecraft:set_attributes"
] ]
}, },
{
"id": "ops",
"type": "array",
"button": "field",
"values": "nbt_operation",
"require": [
"minecraft:copy_nbt"
]
},
{ {
"id": "conditions", "id": "conditions",
"type": "array", "type": "array",
@@ -405,6 +414,37 @@
] ]
} }
] ]
},
{
"id": "nbt_operation",
"type": "object",
"color": "dark",
"default": {
"operation": "replace"
},
"fields": [
{
"id": "source",
"type": "string",
"class": "code"
},
{
"id": "target",
"type": "string",
"class": "code"
},
{
"id": "op",
"type": "enum",
"source": "operation.type",
"default": "replace",
"values": [
"replace",
"append",
"merge"
]
}
]
} }
] ]
} }

14
view.js
View File

@@ -51,6 +51,7 @@ function generateComponent(data, struct) {
case 'set': return generateSet(data, struct); case 'set': return generateSet(data, struct);
case 'json': return generateJson(data, struct); case 'json': return generateJson(data, struct);
case 'json-list': return generateJsonList(data, struct); case 'json-list': return generateJsonList(data, struct);
case 'nbt': return generateNbt(data, struct);
case 'array': return generateArray(data, struct); case 'array': return generateArray(data, struct);
case 'object': return generateObject(data, struct); case 'object': return generateObject(data, struct);
default: return generateError('Unknown component type "' + struct.type + '"')}; default: return generateError('Unknown component type "' + struct.type + '"')};
@@ -198,6 +199,14 @@ function generateJsonList(data, struct) {
return $el; return $el;
} }
function generateNbt(data, struct) {
let $el = $('#components').find('[data-type="nbt"]').clone();
$el.attr('data-field', struct.id);
$el.find('[data-name]').attr('data-i18n', struct.id);
$el.find('textarea').val(data).keydown(e => preventNewline(e));
return $el;
}
function generateError(error) { function generateError(error) {
let $el = $('#components').find('[data-type="error"]').clone(); let $el = $('#components').find('[data-type="error"]').clone();
$el.find('[data-name]').val(error); $el.find('[data-name]').val(error);
@@ -239,6 +248,9 @@ function generateObject(data, struct) {
console.error(e); console.error(e);
$field = generateError('Failed generating "' + field.id + '" component'); $field = generateError('Failed generating "' + field.id + '" component');
} }
if (field.class) {
$field.addClass(field.class);
}
if (field.type === 'array') { if (field.type === 'array') {
let color = field.color; let color = field.color;
if (color === undefined) { if (color === undefined) {
@@ -254,6 +266,8 @@ function generateObject(data, struct) {
$field.attr('data-field', field.id); $field.attr('data-field', field.id);
} }
$body.append($field); $body.append($field);
} else {
delete data[field.id];
} }
} }
$body.children().first().removeClass('mt-3'); $body.children().first().removeClass('mt-3');