mirror of
https://github.com/misode/misode.github.io.git
synced 2026-04-29 01:22:44 +00:00
Support for text components and float ranges
This commit is contained in:
@@ -214,9 +214,9 @@
|
||||
</div>
|
||||
<input type="text" class="form-control exact d-none rounded-right" value="1" onchange="updateRangeField(this, 'damage')" onclick="this.select()">
|
||||
<span class="input-group-text rounded-0 range d-none">Min</span>
|
||||
<input type="text" class="form-control range min d-none" value="1" onchange="updateRangeField(this, 'damage')" onclick="this.select()">
|
||||
<input type="text" class="form-control range min d-none" value="0" onchange="updateRangeField(this, 'damage')" onclick="this.select()">
|
||||
<span class="input-group-text rounded-0 range d-none">Max</span>
|
||||
<input type="text" class="form-control range max d-none rounded-right" value="2" onchange="updateRangeField(this, 'damage')" onclick="this.select()">
|
||||
<input type="text" class="form-control range max d-none rounded-right" value="1" onchange="updateRangeField(this, 'damage')" onclick="this.select()">
|
||||
<span class="input-group-text rounded-0 binomial d-none">n</span>
|
||||
<input type="text" class="form-control binomial n d-none" value="1" onchange="updateRangeField(this, 'damage')" onclick="this.select()">
|
||||
<span class="input-group-text rounded-0 binomial d-none">p</span>
|
||||
@@ -329,7 +329,7 @@
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Name</span>
|
||||
</div>
|
||||
<input type="text" class="form-control" onchange="updateField(this, 'name')" onclick="this.select()">
|
||||
<input type="text" class="form-control code" onchange="updateJSONField(this, 'name')" onclick="this.select()">
|
||||
</div>
|
||||
<div class="input-group function-limit-range mt-3 d-none" data-type="exact">
|
||||
<div class="input-group-prepend">
|
||||
@@ -355,7 +355,7 @@
|
||||
<button type="button" class="btn btn-light" onclick="addEntry(this)">Add Entry</button>
|
||||
</div>
|
||||
<div class="input-group mt-3 function-lore d-none">
|
||||
<textarea class="form-control code" onchange="updateLoreField(this)" rows=3 placeholder="JSON text component on each line"></textarea>
|
||||
<textarea class="form-control code" onchange="updateLoreField(this)" rows=3></textarea>
|
||||
</div>
|
||||
<div class="input-group mt-3 function-lore-replace d-none">
|
||||
<div class="custom-control custom-checkbox">
|
||||
|
||||
34
model.js
34
model.js
@@ -12,7 +12,7 @@ let table = {
|
||||
pools: []
|
||||
};
|
||||
addPool();
|
||||
addCondition($('#structure .pool').get());
|
||||
addEntry($('#structure .pool').get());
|
||||
|
||||
const params = new URLSearchParams(window.location.search);
|
||||
if (params.has('q')) {
|
||||
@@ -247,7 +247,12 @@ function deleteValue(root, field) {
|
||||
|
||||
function updateField(el, field) {
|
||||
updateValue(getParent(el), field, $(el).val());
|
||||
console.log(getParent(el));
|
||||
invalidated();
|
||||
}
|
||||
|
||||
function updateJSONField(el, field) {
|
||||
let value = parseJSONValue($(el).val());
|
||||
updateValue(getParent(el), field, value);
|
||||
invalidated();
|
||||
}
|
||||
|
||||
@@ -290,13 +295,13 @@ function updateRangeField(el, field) {
|
||||
|
||||
function getRangeField($el, type) {
|
||||
if (type === 'exact') {
|
||||
return parseInt($el.find('.exact').val());
|
||||
return parseFloat($el.find('.exact').val());
|
||||
} else if (type === 'range') {
|
||||
let data = {};
|
||||
let min = $el.find('.range.min').val();
|
||||
let max = $el.find('.range.max').val();
|
||||
if (min) data.min = parseInt(min);
|
||||
if (max) data.max = parseInt(max);
|
||||
if (min) data.min = parseFloat(min);
|
||||
if (max) data.max = parseFloat(max);
|
||||
return data;
|
||||
} else if (type === 'binomial') {
|
||||
let data = {type: "minecraft:binomial"};
|
||||
@@ -406,8 +411,25 @@ function updateScoreField(el) {
|
||||
invalidated();
|
||||
}
|
||||
|
||||
function parseJSONValue(value) {
|
||||
if (value.startsWith('"') || value.startsWith('{') || value.startsWith('[')) {
|
||||
try {
|
||||
return JSON.parse(value);
|
||||
} catch {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
function updateLoreField(el) {
|
||||
console.log($(el).val());
|
||||
let lines = $(el).val().split('\n');
|
||||
let parent = getParent(el);
|
||||
parent.lore = [];
|
||||
for (let line of lines) {
|
||||
parent.lore.push(parseJSONValue(line));
|
||||
}
|
||||
invalidated();
|
||||
}
|
||||
|
||||
function addOperation(el) {
|
||||
|
||||
16
view.js
16
view.js
@@ -230,7 +230,11 @@ function generateFunction(func, i) {
|
||||
|
||||
if (func.function === 'minecraft:set_name') {
|
||||
$function.find('.function-name').removeClass('d-none');
|
||||
$function.find('.function-name input').val(func.name);
|
||||
let value = func.name;
|
||||
if (typeof value !== 'string') {
|
||||
value = JSON.stringify(value);
|
||||
}
|
||||
$function.find('.function-name input').val(value);
|
||||
} else {
|
||||
delete func.name;
|
||||
}
|
||||
@@ -239,7 +243,11 @@ function generateFunction(func, i) {
|
||||
let lore = "";
|
||||
if (func.lore) {
|
||||
for (let j = 0; j < func.lore.length; j += 1) {
|
||||
lore += func.lore[j];
|
||||
let value = func.lore[j];
|
||||
if (typeof value !== 'string') {
|
||||
value = JSON.stringify(value);
|
||||
}
|
||||
lore += value;
|
||||
if (j < func.lore.length - 1) {
|
||||
lore += "\n";
|
||||
}
|
||||
@@ -385,7 +393,6 @@ function generateModifier(modifier, i) {
|
||||
}
|
||||
|
||||
function generateOperation(operation, i) {
|
||||
console.log(operation, i);
|
||||
let $operation = $('#operationTemplate').clone();
|
||||
$operation.removeAttr('id').attr('data-index', i);
|
||||
|
||||
@@ -508,8 +515,6 @@ function generateCondition(condition, i) {
|
||||
}
|
||||
|
||||
if (condition.condition === 'minecraft:match_tool') {
|
||||
console.log('!!');
|
||||
console.log(condition.predicate);
|
||||
let $item = generateItem(condition.predicate);
|
||||
$condition.children('.card-body').append($item);
|
||||
} else {
|
||||
@@ -692,7 +697,6 @@ function generateEntity(entity) {
|
||||
|
||||
function generateItem(item) {
|
||||
let $item = $('#itemTemplate').clone().removeAttr('id').addClass('predicate');
|
||||
console.log(item.nbt);
|
||||
if (!item) {
|
||||
item = {};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user