MCStacker/mc2-1.16Pure.js

24454 lines
886 KiB
JavaScript

class CachedNBT {
constructor() {
this.clear(), (this.lastfilterUse = 0);
}
clear() {
(this.nbt = {}), (this.meta = {}), (this.dropChance = {});
}
updateFilterLastUsed() {
this.lastfilterUse = new Date().getTime();
}
setMetaForNBT(e, t, a, o, n) {
this.meta[e] = { data: t, fwClass: a, eventClass: o, stackPos: n };
}
getItemType(e) {
let t = this.nbt[e];
if (void 0 != t && "{}" != t) {
var a = new CMDParser("").parseCompound(
extractSegment("{", "}", t.indexOf("{"), t)
);
return void 0 != a.id ? extractMinecraftID(a.id.val) : -1;
}
return -1;
}
setNBT(e, t) {
this.lastfilterUse + 2e3 < new Date().getTime() &&
(t.length > 0
? 0 == t.indexOf(",Slot:")
? (this.nbt[e] = "{" + t.substr(t.indexOf("b") + 2) + "}")
: (this.nbt[e] = "{" + t.substr(1) + "}")
: (this.nbt[e] = "{}"));
}
setBlockNBT(e, t) {
void 0 != t &&
"{}" != t &&
"" != t &&
this.lastfilterUse + 2e3 < new Date().getTime() &&
(this.nbt[e] = t);
}
getNBT(e) {
return this.nbt[e];
}
loadCachedItemNBT(e) {
let t = this.nbt[e];
if (void 0 != t && "{}" != t)
try {
let n = new CMDParser("");
var a = n.parseCompound(
extractSegment("{", "}", t.indexOf("{"), t)
),
o = $("#" + e).val();
loadItemNBTIntoSlot(a, o, e, n);
} catch (e) {}
}
loadCachedEntityNBT(e) {
let t = "e" + e,
a = this.nbt[t];
if (void 0 != a && "{}" != a)
try {
let t = new CMDParser(""),
o = t.parseCompound(
extractSegment("{", "}", a.indexOf("{"), a)
);
t.loadSummonCommand(o, e);
} catch (e) {}
}
loadCachedBlockNBT(e) {
let t = this.nbt[e];
if (void 0 != t && "{}" != t && "" != t)
try {
let e = new CMDParser(""),
a = e.parseCompound(
extractSegment("{", "}", t.indexOf("{"), t)
);
e.loadBlockDataCommand(a, $("#block").val());
} catch (e) {}
}
}
class Settings {
constructor() {
this.readSettings(),
$("#settings").draggable(),
$("#settings").hide(),
$("#closeSettingsBut").bind("click", function () {
$("#settings").hide();
}),
$("#removeSlash").bind("change", function () {
(settings.removeSlash = $("#removeSlash").is(":checked")),
settings.writeSettings(),
generateCommand();
}),
$("#loadItemUI").bind("change", function () {
(settings.loadItemUI = $("#loadItemUI").is(":checked")),
settings.writeSettings();
}),
$("#namespace").bind("keyup", function () {
(settings.namespace = $("#namespace").val()),
settings.writeSettings(),
generateCommand();
}),
$("#updateNamespace").bind("change", function () {
(settings.updateNamespace = $("#updateNamespace").is(
":checked"
)),
settings.writeSettings();
}),
$("#warnOnClose").bind("change", function () {
(settings.warnOnClose = $("#warnOnClose").is(":checked")),
settings.writeSettings(),
settings.warnOnClose
? window.addEventListener("beforeunload", function (e) {
e.preventDefault(),
(e.returnValue =
"Have you saved your command?");
})
: window.removeEventListener("beforeunload", function (
e
) {
e.preventDefault(),
(e.returnValue =
"Have you saved your command?");
});
});
}
readSettings() {
localStorage.namespace
? (this.namespace = localStorage.namespace)
: (this.namespace = ""),
localStorage.updateNamespace &&
"true" == localStorage.updateNamespace
? (this.updateNamespace = !0)
: (this.updateNamespace = !1),
localStorage.removeSlash && "true" == localStorage.removeSlash
? (this.removeSlash = !0)
: (this.removeSlash = !1),
localStorage.loadItemUI && "true" == localStorage.loadItemUI
? (this.loadItemUI = !0)
: (this.loadItemUI = !1),
localStorage.warnOnClose && "true" == localStorage.warnOnClose
? ((this.warnOnClose = !0),
"true" == localStorage.warnOnClose &&
window.addEventListener("beforeunload", function (e) {
e.preventDefault(),
(e.returnValue = "Have you saved your command?");
}))
: (this.warnOnClose = !1),
$("#namespace").val(this.namespace),
$("#updateNamespace").attr("checked", this.updateNamespace),
$("#loadItemUI").attr("checked", this.loadItemUI),
$("#removeSlash").attr("checked", this.removeSlash),
$("#warnOnClose").attr("checked", this.warnOnClose);
}
modifyNamespace(e) {
this.updateNamespace &&
((this.namespace = e),
$("#namespace").val(this.namespace),
this.writeSettings());
}
writeSettings() {
(localStorage.loadItemUI = this.loadItemUI),
(localStorage.namespace = this.namespace),
(localStorage.updateNamespace = this.updateNamespace),
(localStorage.removeSlash = this.removeSlash),
(localStorage.warnOnClose = this.warnOnClose);
}
}
function showSettings() {
$("#settings").css({ top: mouse.y + 200, left: mouse.x }),
$("#settings").show();
}
function occurrences(e, t, a) {
if (((e += ""), (t += "").length <= 0)) return e.length + 1;
for (var o = 0, n = 0, s = a ? 1 : t.length; (n = e.indexOf(t, n)) >= 0; )
++o, (n += s);
return o;
}
class CMDParser {
constructor(e) {
(this.level = 0),
(this.state = "S"),
(e = e.trim()),
(this.nbt = null),
(this.executeParts = []);
}
parseLootTableNBT(e, t, a) {
(this.nbt = convert_value_to_contents(extractSegment("{", "}", 0, a))),
(this.root = this.parseCompound(this.nbt)),
loadItemNBTIntoSlot(
{ tag: { type: "compound", val: this.root } },
t,
e,
this
);
}
parseTheCommand(e) {
this.preParts = e.split(/\s+/);
for (var t = 0; t < this.preParts.length; t++)
for (
;
t + 1 < this.preParts.length &&
(occurrences(this.preParts[t], "[", !1) !=
occurrences(this.preParts[t], "]", !1) ||
occurrences(this.preParts[t], "{", !1) !=
occurrences(this.preParts[t], "}", !1));
)
(this.preParts[t] += " " + this.preParts[t + 1]),
this.preParts.splice(t + 1, 1);
var a;
if (
-1 != this.preParts[0].indexOf("execute") &&
-1 == e.indexOf("execute if entity")
) {
for (
a = "execute", this.preParts.splice(0, 1);
"run" != this.preParts[0] && this.preParts.length > 0;
)
(a += " " + this.preParts[0]), this.preParts.splice(0, 1);
this.preParts.splice(0, 1);
}
for (t = 0; t < this.preParts.length; t++)
"{" == this.preParts[t].charAt(0)
? (this.nbt = extractSegment("{", "}", 0, this.preParts[t]))
: "[" == this.preParts[t].charAt(0)
? (this.nbt = extractSegment("[", "]", 0, this.preParts[t]))
: "@" == this.preParts[t].charAt(0)
? -1 != this.preParts[t].indexOf("nbt=") &&
(this.nbt = extractSegment(
"{",
"}",
this.preParts[t].indexOf("nbt=") + 4,
this.preParts[t]
))
: -1 != this.preParts[t].indexOf("{") &&
(this.nbt = extractSegment(
"{",
"}",
this.preParts[t].indexOf("{"),
this.preParts[t]
));
if (
((this.nbt = convert_value_to_contents(this.nbt)),
-1 == this.preParts[0].indexOf("tellraw") &&
-1 == this.preParts[0].indexOf("title") &&
(this.root = this.parseCompound(this.nbt)),
$("#disableOutput").prop("checked", !0),
-1 != this.preParts[0].indexOf("summon"))
) {
loadForm("summon");
var o = extractMinecraftID113(this.preParts[1]);
if (
!$("#entity" + entityIndex + " option[value='" + o + "']")
.length
)
throw new MCSException(o + " is not a valid entity id");
$("#entity" + entityIndex).val(o),
$("#entity" + entityIndex).trigger("change"),
$("#Summon").val(
this.preParts[2] +
" " +
this.preParts[3] +
" " +
this.preParts[4]
),
this.loadSummonCommand(this.root, entityIndex);
} else if (
-1 != this.preParts[0].indexOf("execute") &&
-1 != this.preParts[1].indexOf("if") &&
-1 != this.preParts[2].indexOf("entity")
) {
loadForm("execute if entity");
var n = this.preParts[3];
try {
loadTargetSelectorsFromCommand113(n),
this.loadSummonCommand(this.root, entityIndex);
} catch (e) {
throw e;
}
} else if (
-1 != this.preParts[0].indexOf("tp") ||
-1 != this.preParts[0].indexOf("teleport")
) {
loadForm("teleport");
try {
-1 != this.preParts[1].indexOf("@e") &&
($("#entity0").val("entity"),
$("#entity0").trigger("change")),
loadTargetSelectorsFromCommandGeneric(
this.preParts[1],
"entity0"
),
this.preParts.length > 3
? ($("#target0").val("block"),
$("#target0").trigger("change"),
$("#Block").val(
this.preParts[2] +
" " +
this.preParts[3] +
" " +
this.preParts[4]
))
: ($("#target0").val(
"e" == this.preParts[2].charAt(1)
? "entity"
: "player"
),
$("#target0").trigger("change"),
loadTargetSelectorsFromCommandGeneric(
this.preParts[2],
"target0"
));
} catch (e) {
throw e;
}
} else if (-1 != this.preParts[0].indexOf("kill")) {
loadForm("kill");
n = this.preParts[1];
try {
loadTargetSelectorsFromCommand113(n),
this.loadSummonCommand(this.root, entityIndex);
} catch (e) {
throw e;
}
} else if (-1 != this.preParts[0].indexOf("data")) {
if (-1 != this.preParts[2].indexOf("block"))
throw new MCSException(
"Sorry 'data merge block' commands can't be imported into the MCStacker form."
);
if (-1 != this.preParts[2].indexOf("entity")) {
loadForm("data merge entity");
n = this.preParts[3];
for (
var s = 4;
-1 != n.indexOf("[") &&
-1 == n.indexOf("]") &&
s < this.preParts.length;
)
(n += " " + this.preParts[s]), s++;
try {
loadTargetSelectorsFromCommand113(n);
} catch (e) {
throw e;
}
this.loadSummonCommand(this.root, entityIndex);
}
} else if (-1 != this.preParts[0].indexOf("give")) {
loadForm("give");
for (
n = this.preParts[1], s = 2;
-1 != n.indexOf("[") &&
-1 == n.indexOf("]") &&
s < this.preParts.length;
)
(n += " " + this.preParts[s]), s++;
loadTargetSelectorsFromCommand113(n);
var i = {},
r = extractMinecraftID113(this.preParts[s]);
if (
(s++,
isNaN(this.preParts[s])
? (i.Count = { type: "raw", val: 1 })
: (i.Count = { type: "raw", val: this.preParts[s] }),
(i.tag = { type: "compound", val: this.root }),
$("#GiveItem0").length)
) {
if (!$("#GiveItem0 option[value='" + r + "']").length)
throw new MCSException(r + " is not a valid item id");
$("#GiveItem0").val(r),
$("#GiveItem0").trigger("change"),
loadItemNBTIntoSlot(i, r, "GiveItem0", this);
}
} else if (-1 != this.preParts[0].indexOf("effect")) {
loadForm("effect");
(s = 2), (n = this.preParts[s]);
for (
s++;
-1 != n.indexOf("[") &&
-1 == n.indexOf("]") &&
s < this.preParts.length;
)
(n += " " + this.preParts[s]), s++;
-1 != n.indexOf("@e") &&
($("#entity0").val("entity"), $("#entity0").trigger("change")),
loadTargetSelectorsFromCommandGeneric(n, "entity0");
var l = extractMinecraftID113(this.preParts[s]);
$("#effect").val(objectKeyByValue(statuseffects1p13, l)),
s++,
this.preParts.length > s &&
($("#seconds").val(this.preParts[s]),
s++,
this.preParts.length > s &&
($("#amplifier").val(this.preParts[s]),
s++,
this.preParts.length > s &&
$("#hideParticles").val(this.preParts[s])));
} else if (-1 != this.preParts[0].indexOf("replaceitem")) {
if ((loadForm("replaceitem"), "block" == this.preParts[1]))
$("#replaceitem").val("block"),
$("#replaceitem").trigger("change"),
$("#Block").val(
this.preParts[2] +
" " +
this.preParts[3] +
" " +
this.preParts[4]
),
(s = 6);
else {
n = this.preParts[2];
for (
s = 3;
-1 != n.indexOf("[") &&
-1 == n.indexOf("]") &&
s < this.preParts.length;
)
(n += " " + this.preParts[s]), s++;
loadTargetSelectorsFromCommand113(n),
$("#Slot0").val(this.preParts[s]),
s++;
}
(i = {}), (r = extractMinecraftID113(this.preParts[s]));
if (
(s++,
(i.Count = { type: "raw", val: this.preParts[s] }),
(i.tag = { type: "compound", val: this.root }),
!$("#GiveItem0 option[value='" + r + "']").length)
)
throw new MCSException(r + " is not a valid item id");
$("#GiveItem0").val(r),
$("#GiveItem0").trigger("change"),
loadItemNBTIntoSlot(i, r, "GiveItem0", this);
} else if (-1 != this.preParts[0].indexOf("setblock")) {
loadForm("setblock"),
$("#Block").val(
this.preParts[1] +
" " +
this.preParts[2] +
" " +
this.preParts[3]
);
o = extractMinecraftID113(this.preParts[4]);
if (!$("#block option[value='" + o + "']").length)
throw new MCSException(o + " is not a block id");
$("#block").val(o),
$("#block").trigger("change"),
this.parseBlockState113(this.preParts[4], "BS0"),
$("#blockHandle option[value='" + this.preParts[5] + "']")
.length > 0 && $("#blockHandle").val(this.preParts[5]),
this.loadBlockDataFromNBT($("#block").val());
} else if (-1 != this.preParts[0].indexOf("loot")) {
loadForm("loot");
s = 2;
if (
("replace" == this.preParts[1] &&
((this.preParts[1] =
this.preParts[1] + " " + this.preParts[2]),
this.preParts.splice(2, 1)),
$("#targetType").val(this.preParts[1]),
$("#targetType").trigger("change"),
"spawn" == this.preParts[1] ||
"insert" == this.preParts[1] ||
"replace block" == this.preParts[1])
)
$("#Loot").val(
this.preParts[s] +
" " +
this.preParts[s + 1] +
" " +
this.preParts[s + 2]
),
(s += 3);
else if (
"give" == this.preParts[1] ||
"replace entity" == this.preParts[1]
) {
for (
n = this.preParts[s];
-1 != n.indexOf("[") &&
-1 == n.indexOf("]") &&
s < this.preParts.length;
)
(n += " " + this.preParts[s]), s++;
loadTargetSelectorsFromCommandGeneric(n, "entity0"), s++;
}
if (
(("replace entity" != this.preParts[1] &&
"replace block" != this.preParts[1]) ||
($("#slot").val(this.preParts[s]), s++),
$("#sourceType").val(this.preParts[s]),
$("#sourceType").trigger("change"),
"loot" == this.preParts[s] || "fish" == this.preParts[s])
) {
if (
(s++,
$("#LootTable").val(this.preParts[s]),
"fish" == this.preParts[s - 1])
) {
$("#Fishing").val(
this.preParts[s + 1] +
" " +
this.preParts[s + 2] +
" " +
this.preParts[s + 3]
),
(s += 4);
(i = {}), (r = extractMinecraftID113(this.preParts[s]));
if (
((i.Count = { type: "raw", val: 1 }),
(i.tag = { type: "compound", val: this.root }),
!$("#FishingTool0 option[value='" + r + "']").length)
)
throw new MCSException(r + " is not a valid item id");
$("#FishingTool0").val(r),
$("#FishingTool0").trigger("change"),
loadItemNBTIntoSlot(i, r, "FishingTool0", this);
}
} else if ("mine" == this.preParts[s]) {
$("#Mining").val(
this.preParts[s + 1] +
" " +
this.preParts[s + 2] +
" " +
this.preParts[s + 3]
),
(s += 4);
(i = {}), (r = extractMinecraftID113(this.preParts[s]));
if (
((i.Count = { type: "raw", val: 1 }),
(i.tag = { type: "compound", val: this.root }),
!$("#MiningTool0 option[value='" + r + "']").length)
)
throw new MCSException(r + " is not a valid item id");
$("#MiningTool0").val(r),
$("#MiningTool0").trigger("change"),
loadItemNBTIntoSlot(i, r, "MiningTool0", this);
} else if ("kill" == this.preParts[s]) {
s++;
for (
n = this.preParts[s];
-1 != n.indexOf("[") &&
-1 == n.indexOf("]") &&
s < this.preParts.length;
)
(n += " " + this.preParts[s]), s++;
loadTargetSelectorsFromCommandGeneric(n, "kill0");
}
} else if (-1 != this.preParts[0].indexOf("bossbar")) {
if (
(loadForm("bossbar"),
$("#action").val(this.preParts[1]),
$("#ID0").val(this.preParts[2]),
"set" == this.preParts[1])
) {
if (
($("#action").trigger("change"),
$("#set").val(this.preParts[3]),
"name" == this.preParts[3])
)
importTellrawJSON("bossbarPane", JSON.parse(this.nbt));
else if ("players" == this.preParts[3]) {
$("#set").trigger("change");
for (
n = this.preParts[4], s = 5;
-1 != n.indexOf("[") &&
-1 == n.indexOf("]") &&
s < this.preParts.length;
)
(n += " " + this.preParts[s]), s++;
loadTargetSelectorsFromCommand113(n);
}
} else if ("add" == this.preParts[1]) {
importTellrawJSON("bossbarPane", JSON.parse(this.nbt));
}
} else if (-1 != this.preParts[0].indexOf("scoreboard")) {
loadForm("scoreboard"),
$("#add_modify").val(this.preParts[2]),
$("#add_modify").trigger("change"),
$("#objective").val(this.preParts[3]),
"add" == this.preParts[2] &&
$("#Criteria0").val(this.preParts[4]),
importTellrawJSON("scoreboardPane", JSON.parse(this.nbt));
} else if (-1 != this.preParts[0].indexOf("team")) {
loadForm("team"),
$("#add_modify").val(this.preParts[1]),
$("#add_modify").trigger("change"),
$("#team").val(this.preParts[2]),
"modify" == this.preParts[1] &&
$("#Part0").val(this.preParts[3]),
importTellrawJSON("teamPane", JSON.parse(this.nbt));
} else if (
-1 != this.preParts[0].indexOf("tellraw") ||
-1 != this.preParts[0].indexOf("title")
) {
for (
n = this.preParts[1], s = 2;
-1 != n.indexOf("[") &&
-1 == n.indexOf("]") &&
s < this.preParts.length;
)
(n += " " + this.preParts[s]), s++;
-1 != this.preParts[0].indexOf("tellraw")
? loadForm("tellraw")
: (loadForm("title"), $("#titleType").val(this.preParts[s])),
loadTargetSelectorsFromCommand113(n),
importTellrawJSON("tellrawPane", JSON.parse(this.nbt));
} else if (-1 != this.preParts[0].indexOf("particle")) {
loadForm("particle"),
$("#name").val(this.preParts[1]),
$("#name").trigger("change");
s = 2;
var c,
d = 8;
if (
"dust" == this.preParts[1] ||
-1 != this.preParts[1].indexOf("entity_effect")
)
"dust" == this.preParts[1]
? ((c =
floatToHex(this.preParts[2]) +
floatToHex(this.preParts[3]) +
floatToHex(this.preParts[4])),
$("#dustSize").val(this.preParts[5]),
(s = 6),
(d = 12))
: -1 != this.preParts[1].indexOf("entity_effect") &&
(c =
floatToHex(this.preParts[5]) +
floatToHex(this.preParts[6]) +
floatToHex(this.preParts[7])),
new jscolor.color(
document.getElementById("mobSpell_color"),
{}
).fromString(c.toUpperCase()),
changeParticelXdYdZd($("#mobSpell_color").val());
else if ("item" == this.preParts[1])
$("#item0").val(extractMinecraftID(this.preParts[2])), (s = 3);
else if (
"block" == this.preParts[1] ||
"falling_dust" == this.preParts[1]
) {
o = extractMinecraftID113(this.preParts[2]);
if (!$("#block option[value='" + o + "']").length)
throw new MCSException(o + " is not a block id");
$("#block").val(o),
$("#block").trigger("change"),
this.parseBlockState113(this.preParts[2], "BS0"),
(s = 3);
}
if (
($("#Location").val(
this.preParts[s] +
" " +
this.preParts[++s] +
" " +
this.preParts[++s]
),
"item" == this.preParts[1] ||
"falling_dust" == this.preParts[1] ||
"block" == this.preParts[1]
? ((s = 6), (d = 9))
: "dust" == this.preParts[1]
? ((s = 9), (d = 12))
: "entity_effect" == this.preParts[1] ||
"ambient_entity_effect" == this.preParts[1]
? ((d = 8), (s = 5))
: (s = 5),
-1 == this.preParts[1].indexOf("entity_effect") &&
($("#xd").val(this.preParts[s]),
$("#yd").val(this.preParts[++s]),
$("#zd").val(this.preParts[++s])),
$("#speed").val(this.preParts[d]),
this.preParts.length > 9 &&
($("#count").val(this.preParts[++d]),
this.preParts.length > 10 &&
"force" == this.preParts[++d] &&
$("#mode").val("force"),
this.preParts.length - 1 > d))
) {
for (
n = this.preParts[++d];
-1 != n.indexOf("[") &&
-1 == n.indexOf("]") &&
d < this.preParts.length;
)
(n += " " + this.preParts[d]), d++;
showHide("TSPane", "TSPaneSH"),
loadTargetSelectorsFromCommand113(n);
}
} else if (-1 != this.preParts[0].indexOf("playsound")) {
loadForm("playsound"),
$("#sound").val(this.preParts[1]),
$("#source").val(this.preParts[2]);
for (
n = this.preParts[3], s = 4;
-1 != n.indexOf("[") &&
-1 == n.indexOf("]") &&
s < this.preParts.length;
)
(n += " " + this.preParts[s]), s++;
loadTargetSelectorsFromCommand113(n);
try {
$("#Position").val(
this.preParts[s] +
" " +
this.preParts[s + 1] +
" " +
this.preParts[s + 2]
),
$("#volume").val(this.preParts[s + 3]),
$("#pitch").val(this.preParts[s + 4]),
$("#minvolume").val(this.preParts[s + 5]);
} catch (e) {}
} else {
if (-1 == this.preParts[0].indexOf("fill"))
throw new MCSException(
"MCStacker can't import '" +
this.preParts[0] +
"' commands ."
);
loadForm("fill"),
$("#Corner").val(
this.preParts[1] +
" " +
this.preParts[2] +
" " +
this.preParts[3]
),
$("#Opposite").val(
this.preParts[4] +
" " +
this.preParts[5] +
" " +
this.preParts[6]
);
o = extractMinecraftID113(this.preParts[7]);
if (!$("#block option[value='" + o + "']").length)
throw new MCSException(o + " is not a block id");
if (
($("#block").val(o),
$("#block").trigger("change"),
this.parseBlockState113(this.preParts[7], "BS0"),
$("#blockHandle option[value='" + this.preParts[8] + "']")
.length > 0 && $("#blockHandle").val(this.preParts[8]),
this.preParts.length > 9)
) {
if (
((o = extractMinecraftID113(this.preParts[9])),
!$("#replaceblock option[value='" + o + "']").length)
)
throw new MCSException(o + " is not a valid block id.");
$("#replaceblock").val(o),
$("#replaceblock").trigger("change"),
this.parseBlockState113(this.preParts[9], "ReplaceBS0");
}
this.loadBlockDataFromNBT($("#block").val());
}
void 0 != a && (createExecuteForm(), $("#exeString").val(a + " run")),
$("#disableOutput").prop("checked", !1),
generateCommand();
}
parseBlockState113(e, t) {
for (var a = "", o = 0; o < e.length; o++) {
if ("{" == e.charAt(o)) return;
if ("[" == e.charAt(o)) {
a = (a = e.substr(o + 1)).substr(0, a.indexOf("]"));
break;
}
}
if (a.length) {
var n = a.split(",");
for (o = 0; o < n.length; o++) {
var s = n[o].split("=");
$("#" + s[0] + t).val(s[1]);
}
}
}
loadBlockDataFromNBT(e) {
if (-1 != e.indexOf("_banner")) {
if (void 0 != this.root.Patterns) {
let e = compoundToNBTString(this.root);
$("#BlockEntityTag0").val(
"Patterns:" +
extractSegment("[", "]", e.indexOf("Patterns") + 9, e)
);
}
this.loadBlockDataCommand(this.root, e);
} else if (
("player_head" != e && "player_wall_head" != e) ||
void 0 == this.root.Owner
)
if ("campfire" == e || "soul_campfire" == e) {
if (
(this.loadBlockDataCommand(this.root, e),
void 0 != this.root.CookingTimes)
)
for (
var t = 0;
t < 4 && t < this.root.CookingTimes.val.length;
t++
)
$("#" + t + "CookingTime0").val(
this.root.CookingTimes.val[t].trim()
);
if (void 0 != this.root.CookingTotalTimes)
for (
t = 0;
t < 4 && t < this.root.CookingTotalTimes.val.length;
t++
)
$("#" + t + "CookingTotalTime0").val(
this.root.CookingTotalTimes.val[t].trim()
);
} else
"jukebox" == e
? (void 0 != this.root.RecordItem &&
(showHide("RecordItem0Pane", "RecordItem0SH"),
setupItemSlotForNBT(
"RecordItem0",
this.root.RecordItem.val,
this
)),
void 0 != this.root.Record &&
$("#Record0").val(this.root.Record.val))
: "lectern" == e
? (void 0 != this.root.Book &&
(showHide("Book0Pane", "Book0SH"),
setupItemSlotForNBT(
"Book0",
this.root.Book.val,
this
)),
void 0 != this.root.Page &&
$("#Page0").val(this.root.Page.val))
: "spawner" == e
? (void 0 != this.root.SpawnData &&
loadSpawnPotentialFromNBT(
this,
"SpawnData",
[this.root.SpawnData.val],
0
),
void 0 != this.root.SpawnPotentials &&
loadSpawnPotentialFromNBT(
this,
"SpawnPotentials",
this.root.SpawnPotentials.val,
0
),
this.loadBlockDataCommand(this.root, e))
: "beehive" == e || "bee_nest" == e
? loadBeeHiveNestFromNBT(this, this.root, 0)
: -1 != e.indexOf("sign")
? (loadSignFromNBT("blockSpec0SignPane", this.root),
this.loadBlockDataCommand(this.root, e))
: this.loadBlockDataCommand(this.root, e);
else
$("#SkullOwner0").val(
"Owner:" + compoundToNBTString(this.root.Owner.val)
);
}
loadPosition(e, t, a) {
a && t.length > 1
? $("#" + e).val(t.substr(1))
: a || $("#" + e).val(t);
}
padding() {
return "<span style='padding-left:" + 50 * this.level + "px'></span>";
}
loadBlockDataCommand(e, t) {
for (var a in e) {
var o = e[a];
"raw" == o.type || "string" == o.type
? block.loadValue(this, a, o.val)
: "compound" == o.type
? this.loadBlockDataCommand(o.val, t)
: "arrayOfVals" == o.type || "arrayOfStrings" == o.type
? block.loadValue(this, a, o.val)
: "arrayOfCompounds" == o.type &&
block.loadValue(this, a, o.val);
}
}
loadSummonCommand(e, t) {
for (var a in e) {
var o = e[a];
if ("raw" == o.type || "string" == o.type)
entityDescriptors["e" + t].loadValue(this, a, o.val, t);
else if ("compound" == o.type)
"Item" == a
? "potion" == entityDescriptors["e" + t].entityType
? entityDescriptors["e" + t].loadPotionNBT(o.val)
: (showHide("Item" + t + "Pane", "Item" + t + "SH"),
setupItemSlotForNBT("Item" + t, o.val, this))
: "Trident" == a
? (showHide("Trident" + t + "Pane", "Trident" + t + "SH"),
setupItemSlotForNBT("Trident" + t, o.val, this))
: "SelectedItem" == a
? setupItemSlotForNBT("SelectedItem" + t, o.val, this)
: "Pose" == a
? entityDescriptors["e" + t].loadPoseNBT(o.val)
: "Offers" == a
? entityDescriptors["e" + t].loadVillagerTradesNBT(
o.val,
this
)
: "VillagerData" == a
? loadVillagerData(o.val, t)
: "Leash" == a
? entityDescriptors["e" + t].loadLeashNBT(o.val)
: "SaddleItem" == a
? entityDescriptors["e" + t].loadSaddleItemNBT(o.val)
: "ArmorItem" == a
? (showHide(
"ArmorItem" + t + "Pane",
"ArmorItem" + t + "SH"
),
void 0 != o.val.id &&
-1 != o.val.id.val.indexOf("minecraft:")
? setupItemSlotForNBT("ArmorItem" + t, o.val, this)
: $("#ArmorItem" + t).val("none"))
: "DecorItem" == a
? entityDescriptors["e" + t].loadDecorItemNBT(o.val)
: "Potion" == a
? entityDescriptors["e" + t].loadPotionNBT(o.val)
: "BeamTarget" == a
? entityDescriptors["e" + t].loadBeamTargetNBT(o.val)
: "PatrolTarget" == a
? entityDescriptors["e" + t].loadPatrolTargetNBT(o.val)
: "WanderTarget" == a
? entityDescriptors["e" + t].loadWanderTargetNBT(o.val)
: "FlowerPos" == a || "HivePos" == a
? entityDescriptors["e" + t].loadFlowerOrHovePost(o.val, a)
: "Owner" == a || "owner" == a
? entityDescriptors["e" + t].loadOwnerNBT(o.val)
: "Target" == a
? entityDescriptors["e" + t].loadTargetNBT(o.val)
: "Brain" == a
? loadMemories(o.val, t)
: "FireworksItem" == a
? void 0 != o.val.tag &&
void 0 != o.val.tag.val.Fireworks &&
loadFireworksItemNBT(
"Explosion" + t + "Pane",
o.val.tag.val.Fireworks.val
)
: "BlockState" == a ||
"carriedBlockState" == a ||
"DisplayState" == a
? entityDescriptors["e" + t].loadBlockStateFallingBlock(
o.val
)
: "TileEntityData" == a
? entityDescriptors["e" + t].loadFallingBlockEntityData(
o.val,
this
)
: "Properties" == a
? entityDescriptors["e" + t].loadFallingBlockBSProperties(
o.val
)
: "abilities" == a
? entityDescriptors["e" + t].loadAbilities(this, o.val)
: "SpawnData" == a
? entityDescriptors["e" + t].loadValue(this, a, [o.val], t)
: this.loadSummonCommand(o.val, t);
else if ("arrayOfVals" == o.type || "arrayOfStrings" == o.type)
entityDescriptors["e" + t].loadValue(this, a, o.val, t);
else if ("arrayOfArrays" == o.type) {
if ("Trusted" == a)
for (let e = 0; e < o.val.length; e++)
addFoxTrusts("Trusts", t),
loadUUIDArrayNBT("Trusts" + t + "_" + e, o.val[e]);
} else
"arrayOfCompounds" == o.type &&
("Gossips" == a
? loadGossips(o.val, t)
: "Inventory" == a
? "player" == entityDescriptors["e" + t].entityType
? entityDescriptors["e" + t].loadPlayerInventory(
this,
o.val,
t
)
: "piglin" == entityDescriptors["e" + t].entityType
? entityDescriptors["e" + t].loadPiglinInventory(
this,
o.val,
t
)
: loadInventory(o.val, t, this)
: entityDescriptors["e" + t].loadValue(
this,
a,
o.val,
t
));
}
}
traverseObjectToNBT(e, t) {
for (var a in e) {
t += ",";
var o = e[a];
if ("raw" == o.type) t += a + ":" + o.val;
else if ("string" == o.type) t += a + ":'" + o.val + "'";
else if ("compound" == o.type)
t += a + ":{" + this.traverseObjectToNBT(o.val, "") + "}";
else if ("arrayOfStrings" == o.type) {
t += a + ":[";
let e = "";
for (var n = 0; n < o.val.length; n++)
e += ',"' + o.val[n] + '"';
t += e.substr(1) + "]";
} else if ("arrayOfVals" == o.type) {
t += a + ":[I;";
let e = "";
for (n = 0; n < o.val.length; n++) e += "," + o.val[n];
t += e.substr(1) + "]";
} else if ("arrayOfCompounds" == o.type) {
let e = "";
for (n = 0; n < o.val.length; n++)
e += ",{" + this.traverseObjectToNBT(o.val[n], "") + "}";
t += a + ":[" + e.substr(1) + "]";
} else if ("arrayOfArrays" == o.type) {
let e = "";
for (n = 0; n < o.val.length; n++) e += ",[I;" + o.val[n] + "]";
t += a + ":[" + e.substr(1) + "]";
}
}
return t.substr(1);
}
traverseObject(e, t) {
for (var a in (this.level++, $("#" + t).append("{"), e)) {
var o = e[a];
if ("raw" == o.type)
$("#" + t).append(
"<br>" +
this.padding() +
"<span class='nbtKey'>" +
a +
"</span>:<span class='nbtVal'>" +
o.val +
"</span>"
);
else if ("string" == o.type)
$("#" + t).append(
"<br>" +
this.padding() +
"<span class='nbtKey'>" +
a +
"</span>:<span class='nbtVal'>" +
o.val +
"</span>"
);
else if ("compound" == o.type)
$("#" + t).append(
"<br>" +
this.padding() +
"<span class='nbtKey'>" +
a +
"</span>"
),
this.traverseObject(o.val, t);
else if ("arrayOfVals" == o.type || "arrayOfStrings" == o.type) {
$("#" + t).append(
"<br>" +
this.padding() +
"<span class='nbtKey'>" +
a +
"</span>:["
),
this.level++;
for (var n = 0; n < o.val.length; n++)
$("#" + t).append(
"<br>" +
this.padding() +
"<span class='nbtVal'>" +
o.val[n] +
"</span>"
);
this.level--, $("#" + t).append("<br>" + this.padding() + "]");
} else if ("arrayOfCompounds" == o.type) {
$("#" + t).append(
"<br>" +
this.padding() +
"<span class='nbtKey'>" +
a +
"</span>:["
),
this.level++;
for (n = 0; n < o.val.length; n++)
this.traverseObject(o.val[n], t);
this.level--, $("#" + t).append("<br>" + this.padding() + "]");
}
}
this.level--, $("#" + t).append("<br>" + this.padding() + "}");
}
parseCompound(e) {
var t = 0,
a = {};
if (null == e) return {};
do {
var o, n, s;
if (
(t++,
(t = this.skipSpaces(t, e)),
'"' == e.charAt(t)
? (t++, (s = this.getStringToNextSymbol('"', e, t)), t++)
: (s = this.getStringToNextSymbol(":}", e, t)),
(t += s.length),
s.length)
)
if (
((o = s.trim()),
t++,
(t = this.skipSpaces(t, e)),
"{" == e.charAt(t))
)
(t += (l = extractSegment("{", "}", t, e)).length),
(n = this.parseCompound(l)),
this.getStringToNextSymbol(",", e, t),
(a[o] = { type: "compound", val: n });
else if ("[" == e.charAt(t))
if (
((n = []),
(t += (s = extractSegment("[", "]", t, e)).length),
"{" == s.charAt(1))
) {
var i = 1;
let e;
do {
(i += (e = extractSegment("{", "}", i, s)).length),
n.push(this.parseCompound(e)),
"," == s.charAt(i) && i++;
} while ("{" == s.charAt(i));
a[o] = { type: "arrayOfCompounds", val: n };
} else if ('"' == s.charAt(1)) {
i = 1;
for (var r = []; "]" != s.charAt(i); )
"," == s.charAt(i) && i++,
(i += (n = this.getStringToNextSymbolInsideString(
",}",
s,
i
)).length),
r.push(n.substr(1, n.length - 2));
a[o] = { type: "arrayOfStrings", val: r };
} else if ("'" == s.charAt(1)) {
var l;
((l = (l = replaceAll(
"', '",
"','",
(l = extractSegment("[", "]", (i = 1), s))
)).split("','"))[0] = l[0].substr(1)),
(l[l.length - 1] = replaceAll(
"']",
"",
l[l.length - 1]
));
for (var c = 0; c < l.length; c++)
l[c] = l[c]
.replace(/"/g, '\\"')
.replace(/\\'/g, "'");
a[o] = { type: "arrayOfStrings", val: l };
} else if ("[" == s.charAt(1)) {
i = 1;
let e,
t = [];
do {
i += (e = extractSegment("[", "]", i, s)).length;
let a = e.substr(1, e.length - 2).trim();
"I" == a.charAt(0) &&
";" == a.charAt(1) &&
(a = a.substr(2)),
t.push(a.split(",")),
"," == s.charAt(i) && i++;
} while ("[" == s.charAt(i));
a[o] = { type: "arrayOfArrays", val: t };
} else
"I" ==
(s = s.substr(1, s.length - 2).trim()).charAt(0) &&
";" == s.charAt(1) &&
(s = s.substr(2)),
(a[o] = { type: "arrayOfVals", val: s.split(",") });
else
'"' == e.charAt(t)
? ((n = this.getStringToNextSymbolInsideString(
",}",
e,
t
)),
(a[o] = {
type: "string",
val: n.substr(1, n.length - 2),
}),
(t += n.length))
: "'" == e.charAt(t)
? ((n = this.getStringToNextSymbolInsideString_SingleQuoteSurounds(
",}",
e,
t
)),
(a[o] = {
type: "string",
val: n.substr(1, n.length - 2),
}),
(t += n.length))
: ((t += (n = this.getStringToNextSymbol(",}", e, t))
.length),
(a[o] = { type: "raw", val: n }));
} while ("}" != e.charAt(t) && t < e.length);
return a;
}
skipSpaces(e, t) {
for (; e < t.length && " " == t.charAt(e); ) e++;
return e;
}
getStringToNextSymbolInsideString(e, t, a) {
for (var o = !0, n = ""; a < t.length && o; )
(n += t.charAt(a)),
a++,
'"' == t.charAt(a) &&
"\\" != t.charAt(a - 1) &&
((o = !1), (n += t.charAt(a)));
return this.getStringToNextSymbol(e, t, a), n;
}
getStringToNextSymbolInsideString_SingleQuoteSurounds(e, t, a) {
for (var o = !0, n = ""; a < t.length && o; )
(n += t.charAt(a)),
a++,
"'" == t.charAt(a) &&
"\\" != t.charAt(a - 1) &&
((o = !1), (n += t.charAt(a)));
return this.getStringToNextSymbol(e, t, a), n;
}
getStringToNextSymbol(e, t, a) {
for (; "," == t.charAt(a) || "{" == t.charAt(a); ) a++;
for (var o = ""; a < t.length && -1 == e.indexOf(t.charAt(a)); )
(o += t.charAt(a)), a++;
return o;
}
}
function extractSegment(e, t, a, o) {
var n = 1,
s = e;
for (a += 1; 0 != n && a < o.length; a++)
o.charAt(a) == e ? n++ : o.charAt(a) == t && n--, (s += o.charAt(a));
return s;
}
class Entity {
constructor(e, t) {
(this.stackPos = e),
(this.entityType = t),
(this.passengersAllowed = !0),
(this.entityNBT = {
MotionX: {
type: "text",
format: "special",
tip: "entity.Motion",
},
MotionY: {
type: "text",
format: "special",
tip: "entity.Motion",
},
MotionZ: {
type: "text",
format: "special",
tip: "entity.Motion",
},
Yaw: { type: "text", format: "special", tip: "entity" },
Pitch: { type: "text", format: "special", tip: "entity" },
Fire: { type: "ticks", tip: "entity" },
Air: { type: "ticks", tip: "entity" },
OnGround: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
NoGravity: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
Silent: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
Invulnerable: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
Glowing: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
UUID: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: "entity",
},
CustomNameVisible: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
CustomName: {
type: "customNameJSON",
format: "special",
tip: "entity",
},
Team: { type: "text", format: "string", tip: "mob" },
Tags: {
type: "text",
format: "special",
tip: "entity",
fwClass: "bigTF",
},
});
}
addSpawnPotentialFields() {
(this.spNBT = {
PosX: {
type: "text",
label: "Pos X",
format: "special",
tip: "entity.Pos",
},
PosY: { type: "text", label: "Pos Y", format: "special" },
PosZ: { type: "text", label: "Pos Z", format: "special" },
Weight: { type: "text", format: "special", tip: "entity" },
}),
Object.assign(this.entityNBT, this.spNBT);
}
getEntityNBT() {
var e = "";
for (var t in this.entityNBT)
e += getNBTforKey(t, this.entityNBT[t], this.stackPos);
return (
(e +=
getMotion(this.stackPos, "Motion") +
getRotation(this.stackPos)),
(e += getTargetingTags(this.stackPos)),
(e += getPassengersNBT(this.stackPos)),
(e += getCustomNameAndColor("#CustomName", this.stackPos))
);
}
loadBlockStateFallingBlock(e) {
if (
(void 0 != e.Name &&
($("#block" + this.stackPos).val(
extractMinecraftID(e.Name.val)
),
$("#block" + this.stackPos).trigger("change")),
void 0 != e.Properties)
)
for (var t in e.Properties.val)
$("#" + t + "BS" + this.stackPos).val(e.Properties.val[t].val);
}
generateForm() {
for (var e in ("entitydata" != currentCommand &&
"data merge entity" != currentCommand &&
this.passengersAllowed &&
(this.entityNBT.Passengers = {
type: "passenger",
format: "special",
tip: "entity",
cssClass: "dummy",
align: "B",
}),
this.entityNBT))
createComponent(
"entityPane" + this.stackPos,
e,
this.entityNBT[e],
this.stackPos
);
}
loadOwnerNBT(e) {
"evoker_fangs" == this.entityType || "llama_spit" == this.entityType
? convertLeastMostToArray(
"Owner" + this.stackPos,
parseInt(e.OwnerUUIDLeast.val),
parseInt(e.OwnerUUIDMost.val)
)
: void 0 != e.L &&
void 0 != e.M &&
convertLeastMostToArray(
"Owner" + this.stackPos,
parseInt(e.L.val),
parseInt(e.M.val)
);
}
loadTargetNBT(e) {
void 0 != e.L &&
void 0 != e.M &&
convertLeastMostToArray(
"Target" + this.stackPos,
parseInt(e.L.val),
parseInt(e.M.val)
);
}
loadValue(e, t, a, o) {
if (void 0 == this.entityNBT[t])
if ("HandItems" == t || "ArmorItems" == t)
for (
var n =
"HandItems" == t
? ["Holding", "Offhand"]
: ["Boot", "Leg", "Body", "Head"],
s = 0;
s < a.length;
s++
)
setupItemSlotForNBT(n[s] + o, a[s], e);
else if ("HandDropChances" == t || "ArmorDropChances" == t)
for (
n =
"HandDropChances" == t
? ["Holding", "Offhand"]
: ["Boot", "Leg", "Body", "Head"],
s = 0;
s < a.length;
s++
)
(cachedNBT.dropChance[n[s] + o] = parseFloat(a[s])),
$("#" + n[s] + o + "Pane").append(
"<br>Drop Chance=" + cachedNBT.dropChance[n[s] + o]
),
$("#" + n[s] + o + "DropChance").val(parseFloat(a[s]));
else if ("Items" == t)
for (s = 0; s < a.length; s++) {
setupItemSlotForNBT(
replaceAll("b", "", a[s].Slot.val) + "Slot" + o,
a[s],
e
);
}
else if (
"Motion" == t ||
"power" == t ||
"direction" == t ||
"Pos" == t
)
$("#" + t + "X" + o).val(parseFloat(a[0])),
$("#" + t + "Y" + o).val(parseFloat(a[1])),
$("#" + t + "Z" + o).val(parseFloat(a[2]));
else if ("Rotation" == t)
$("#Yaw" + o).val(parseFloat(a[0])),
$("#Pitch" + o).val(parseFloat(a[1]));
else if ("DisabledSlots" == t) this.loadDisabledSlotsNBT(a);
else if ("Attributes" == t)
for (s = 0; s < a.length; s++) {
var i = a[s].Name.val;
(i = i.substr(i.indexOf(".") + 1)),
-1 != mobAttributes116.indexOf(i)
? $("#" + i + o).val(parseFloat(a[s].Base.val))
: -1 != mobAttributes.indexOf(i) &&
$(
"#" +
mobAttributes116[
mobAttributes.indexOf(i)
] +
o
).val(parseFloat(a[s].Base.val));
}
else if ("SpawnData" == t || "SpawnPotentials" == t)
loadSpawnPotentialFromNBT(e, t, a, o);
else if ("OwnerUUID" == t) convertHexUUIDToArray("Owner" + o, a);
else if ("UUIDMost" == t) convertMostToArray("UUID" + o, a);
else if ("UUIDLeast" == t) convertLeastToArray("UUID" + o, a);
else if ("OwnerUUIDMost" == t) convertMostToArray("Owner" + o, a);
else if ("OwnerUUIDLeast" == t) convertLeastToArray("Owner" + o, a);
else if ("ConversionPlayerMost" == t)
convertMostToArray("ConversionPlayer" + o, a);
else if ("ConversionPlayerLeast" == t)
convertLeastToArray("ConversionPlayer" + o, a);
else if ("LoveCauseMost" == t)
convertMostToArray("LoveCause" + o, a);
else {
if ("LoveCauseLeast" != t) return;
convertLeastToArray("LoveCause" + o, a);
}
else if ($("#" + t + o).length)
if (
"text" == this.entityNBT[t].type ||
"choice" == this.entityNBT[t].type ||
"makeSelect" == this.entityNBT[t].type ||
"makeSelectWithIndexAndValues" == this.entityNBT[t].type ||
"makeSelectWithIndexes" == this.entityNBT[t].type
) {
if ("string" == this.entityNBT[t].format)
"Potion" == t
? $("#" + t + o).val(extractMinecraftID(a))
: $("#" + t + o).val(a);
else if (
"b" == this.entityNBT[t].format ||
"short" == this.entityNBT[t].format ||
"long" == this.entityNBT[t].format ||
"int" == this.entityNBT[t].format
) {
var r = parseInt(a);
("text" == this.entityNBT[t].type ||
$("#" + t + o + " option[value='" + r + "']").length) &&
$("#" + t + o).val(r);
} else if (
"f" == this.entityNBT[t].format ||
"d" == this.entityNBT[t].format
)
$("#" + t + o).val(parseFloat(a));
else if ("special" == this.entityNBT[t].format)
if ("Tags" == t) {
var l = "";
for (s = 0; s < a.length; s++) l += "," + a[s];
$("#Tags" + o).val(l.substr(1));
} else
"Variant" == t
? this.loadVariantNBT(a)
: "Dimension" == t
? $("#Dimension" + o).val(a)
: "Motive" == t
? $("#Motive" + o).val(extractMinecraftID(a))
: "Particle" == t
? $("#Particle" + o).val(extractMinecraftID(a))
: "SoundEvent" == t && $("#SoundEvent" + o).val(a);
} else
"ticks" == this.entityNBT[t].type
? $("#" + t + o).val(a)
: "blockSelect" == this.entityNBT[t].type &&
($("#" + t + o).val(a), $("#" + t + o).trigger("change"));
else if ("CustomName" == t) {
var c;
(deferJSONOutput = !0), (deferOutput = !0);
try {
c = JSON.parse(JSON.parse('"' + a + '"'));
} catch (e) {
c = JSON.parse(
JSON.parse(
'"' + a.replace(/"/g, '\\"').replace(/\\'/g, "'") + '"'
)
);
}
importTellrawJSON("CustomName" + o, c),
showHide(
"CustomName" + o + "EntityName",
"CustomName" + o + "EntityNameSH"
),
(deferJSONOutput = !1),
(deferOutput = !1);
} else if ("Passengers" == t)
for (s = 0; s < a.length; s++) {
addPassenger("Passengers" + o + "Pane");
var d = a[s],
p = extractMinecraftID(d.id.val);
$("#entity" + entityIndex).val(p),
$("#entity" + entityIndex).trigger("change"),
e.loadSummonCommand(d, entityIndex);
}
else
"ActiveEffects" == t || "Effects" == t || "CustomPotionEffects" == t
? loadCustomEffectsNBT(t + o, a)
: "Color" == t && "colorChooser" == this.entityNBT[t].type
? loadColorIntNBT(t + o, a)
: "AngryAt" == t
? Array.isArray(a)
? loadUUIDArrayNBT(t + o, a)
: convertHexUUIDToArray(t + o, a)
: "UUIDArray" == this.entityNBT[t].type &&
loadUUIDArrayNBT(t + o, a);
}
}
function loadUUIDArrayNBT(e, t) {
for (let a = 0; a < 4; a++) $("#" + e + a).val(t[a]);
}
function loadCustomEffectsNBT(e, t) {
showHide(e + "Pane", e + "SH");
for (var a = 0; a < t.length; a++) {
var o = parseInt(t[a].Id.val);
void 0 != t[a].Amplifier &&
$("#" + e + "Amp_" + o).val(parseInt(t[a].Amplifier.val)),
void 0 != t[a].Duration &&
$("#" + e + "Ticks_" + o).val(parseInt(t[a].Duration.val)),
void 0 != t[a].ShowParticles &&
$("#" + e + "ShowParticles_" + o).val(t[a].ShowParticles.val);
}
}
function loadStewEffectsNBT(e, t) {
showHide(e + "Pane", e + "SH");
for (var a = 0; a < t.length; a++) {
var o = parseInt(t[a].EffectId.val);
void 0 != t[a].EffectDuration &&
$("#" + e + "Ticks_" + o).val(parseInt(t[a].EffectDuration.val));
}
}
class Mob extends Entity {
constructor(e, t, a) {
super(e, t),
(this.mobNBT = {
FallDistance: { type: "text", format: "f", tip: "mob" },
PortalCooldown: { type: "ticks", tip: "mob" },
HurtTime: { type: "ticks", tip: "mob", align: "R" },
DeathTime: { type: "ticks", tip: "mob", align: "R" },
DeathLootTable: {
type: "text",
format: "string",
tip: "mob",
align: "R",
},
LeftHanded: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "mob",
align: "R",
},
Leashed: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "mob",
align: "R",
},
Leash: {
label: "Leashed To",
type: "UUIDArray",
format: "special",
align: "R",
tip: "mob",
},
LeashedToPostX: {
type: "text",
format: "special",
tip: "mob",
align: "R",
},
LeashedToPostY: {
type: "text",
format: "special",
tip: "mob",
align: "R",
},
LeashedToPostZ: {
type: "text",
format: "special",
tip: "mob",
align: "R",
},
FallFlying: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "mob",
align: "R",
},
ActiveEffects: {
type: "statusEffects",
format: "special",
tip: "mob",
align: "R",
},
PersistenceRequired: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "mob",
align: "R",
},
NoAI: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "mob",
align: "R",
},
CanPickUpLoot: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "mob",
align: "R",
},
Holding: {
type: "itemselect",
format: "special",
doDropChance: !0,
hide: !0,
tip: "mob",
align: "R",
},
Offhand: {
type: "itemselect",
format: "special",
doDropChance: !0,
hide: !0,
tip: "mob",
align: "R",
},
Head: {
type: "itemselect",
format: "special",
doDropChance: !0,
hide: !0,
tip: "mob",
align: "R",
},
Body: {
type: "itemselect",
format: "special",
doDropChance: !0,
hide: !0,
tip: "mob",
align: "R",
},
Leg: {
type: "itemselect",
format: "special",
doDropChance: !0,
hide: !0,
tip: "mob",
align: "R",
},
Boot: {
type: "itemselect",
format: "special",
doDropChance: !0,
hide: !0,
tip: "mob",
align: "R",
},
AbsorptionAmount: {
type: "text",
format: "f",
tip: "mob",
align: "R",
},
Health: { type: "text", format: "f", tip: "mob", align: "R" },
SleepingX: {
type: "text",
format: "int",
tip: "mob.sleeping",
align: "R",
},
SleepingY: {
type: "text",
format: "int",
tip: "mob.sleeping",
align: "R",
},
SleepingZ: {
type: "text",
format: "int",
tip: "mob.sleeping",
align: "R",
},
});
for (var o = 0; o < 8; o++)
this.mobNBT[mobAttributes116[o]] = {
type: "text",
format: "special",
tip: "mob." + mobAttributes116[o],
align: "R",
};
"zombie" == this.entityType ||
"husk" == this.entityType ||
"drowned" == this.entityType
? (this.mobNBT.spawn_reinforcements = {
type: "text",
format: "special",
tip: "mob.spawn_reinforcements",
align: "R",
})
: -1 !=
$.inArray(this.entityType, [
"horse",
"zombie_horse",
"skeleton_horse",
"donkey",
"mule",
])
? (this.mobNBT.jump_strength = {
type: "text",
format: "special",
tip: "mob.jump_strength",
align: "R",
})
: "parrot" == this.entityType &&
(this.mobNBT.flying_speed = {
type: "text",
format: "special",
tip: "mob.flying_speed",
align: "R",
}),
void 0 != a && Object.assign(this.mobNBT, a);
}
loadLeashNBT(e) {
void 0 != e.UUIDLeast && void 0 != e.UUIDMost
? convertLeastMostToArray(
"Leash" + this.stackPos,
parseInt(e.UUIDLeast.val),
parseInt(e.UUIDMost.val)
)
: void 0 != e.X &&
void 0 != e.Y &&
void 0 != e.Z &&
($("#LeashedToPostX" + this.stackPos).val(parseInt(e.X.val)),
$("#LeashedToPostY" + this.stackPos).val(parseInt(e.Y.val)),
$("#LeashedToPostZ" + this.stackPos).val(parseInt(e.Z.val)));
}
getEntitySpecificCommand(e) {
return this.getMobNBT();
}
getMobNBT() {
return (
super.getEntityNBT() +
getHandAndArmorItmes(this.stackPos) +
getStatusEffectsNBT(
"ActiveEffects",
"ActiveEffects" + this.stackPos
) +
this.getMobAttributes() +
this.getLeashedTo()
);
}
generateForm() {
Object.assign(this.entityNBT, this.mobNBT), super.generateForm();
}
getLeashedTo() {
return $("#Leash" + this.stackPos + 0).val() &&
$("#Leash" + this.stackPos + 1).val() &&
$("#Leash" + this.stackPos + 2).val() &&
$("#Leash" + this.stackPos + 3).val()
? ",Leash:{UUID:[I;" +
$("#Leash" + this.stackPos + 0).val() +
"," +
$("#Leash" + this.stackPos + 1).val() +
"," +
$("#Leash" + this.stackPos + 2).val() +
"," +
$("#Leash" + this.stackPos + 3).val() +
"]}"
: $("#LeashedToPostX" + this.stackPos).val().length &&
$("#LeashedToPostY" + this.stackPos).val().length &&
$("#LeashedToPostZ" + this.stackPos).val().length
? ",Leash:{X:" +
$("#LeashedToPostX" + this.stackPos).val() +
",Y:" +
$("#LeashedToPostY" + this.stackPos).val() +
",Z:" +
$("#LeashedToPostZ" + this.stackPos).val() +
"}"
: "";
}
getMobAttributes() {
for (var e = "", t = 0; t < 8; t++)
$("#" + mobAttributes116[t] + this.stackPos).val().length > 0 &&
(e +=
"{Name:generic." +
mobAttributes116[t] +
",Base:" +
$("#" + mobAttributes116[t] + this.stackPos).val() +
"},");
return (
("zombie" != this.entityType &&
"husk" != this.entityType &&
"drowned" != this.entityType) ||
!$("#spawn_reinforcements" + this.stackPos).val().length
? -1 !=
$.inArray(this.entityType, [
"horse",
"zombie_horse",
"skeleton_horse",
"donkey",
"mule",
]) && $("#jump_strength" + this.stackPos).val().length
? (e +=
"{Name:horse.jump_strength,Base:" +
$("#jump_strength" + this.stackPos).val() +
"},")
: "parrot" == this.entityType &&
$("#flying_speed" + this.stackPos).val().length &&
(e +=
"{Name:generic.flying_speed,Base:" +
$("#flying_speed" + this.stackPos).val() +
"},")
: (e +=
"{Name:zombie.spawn_reinforcements,Base:" +
$("#spawn_reinforcements" + this.stackPos).val() +
"},"),
e.length ? ",Attributes:[" + e.substring(0, e.length - 1) + "]" : e
);
}
}
class SimpleEntity extends Entity {
constructor(e, t, a) {
super(e, t),
(this.entityNBT = {
MotionX: {
type: "text",
format: "special",
tip: "entity.Motion",
},
MotionY: {
type: "text",
format: "special",
tip: "entity.Motion",
},
MotionZ: {
type: "text",
format: "special",
tip: "entity.Motion",
},
Yaw: { type: "text", format: "special", tip: "entity" },
Pitch: { type: "text", format: "special", tip: "entity" },
NoGravity: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
Fire: { type: "ticks", tip: "entity" },
Glowing: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
UUID: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: "entity",
},
CustomName: {
type: "customNameJSON",
format: "special",
tip: "entity",
},
CustomNameVisible: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
Team: { type: "text", format: "string", tip: "mob" },
Tags: {
type: "text",
format: "special",
tip: "entity",
fwClass: "bigTF",
},
}),
void 0 != a && Object.assign(this.entityNBT, a);
}
getEntityNBT() {
var e = "";
for (var t in this.entityNBT)
e += getNBTforKey(t, this.entityNBT[t], this.stackPos);
return (
(e +=
getMotion(this.stackPos, "Motion") +
getRotation(this.stackPos)),
(e += getTargetingTags(this.stackPos)),
(e += getPassengersNBT(this.stackPos)),
(e += getCustomNameAndColor("#CustomName", this.stackPos))
);
}
getEntitySpecificCommand(e) {
return this.getEntityNBT();
}
generateForm() {
super.generateForm();
}
}
class falling_block extends SimpleEntity {
constructor(e, t) {
super(e, t),
delete this.entityNBT.CustomName,
delete this.entityNBT.CustomNameVisible,
Object.assign(this.entityNBT, {
Time: { type: "ticks", value: "1", tip: t, align: "R" },
DropItem: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
align: "R",
},
HurtEntities: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
align: "R",
},
FallHurtMax: {
type: "text",
format: "int",
tip: t,
align: "R",
},
FallDistance: {
type: "text",
format: "f",
tip: "mob",
align: "R",
},
FallHurtAmount: {
type: "text",
format: "f",
tip: t,
align: "R",
},
});
}
generateForm() {
var e = "<br><span class='fLabel200'>Block</span>";
e +=
"<select id='block" +
this.stackPos +
"' onchange='javascript:fallingBlockChange(" +
this.stackPos +
");'>";
for (var t = 0; t < tiles.length; t++)
e +=
"<option value='" +
tiles[t][0] +
"'>" +
tiles[t][1] +
"</option>";
(e +=
"</select><input type='text' id='block_filter" +
this.stackPos +
"' placeholder='Filter' class='medTF' onkeyup=\"updateFallingBlockOptions('block'," +
this.stackPos +
")\"><span id='blockSpec" +
this.stackPos +
"'></span>"),
super.generateForm(),
$("#entityPane" + this.stackPos + "R").append(e);
}
getEntitySpecificCommand(e) {
var t = "";
if (-1 != $("#block" + e).val()) {
if (
((t =
',BlockState:{Name:"minecraft:' +
$("#block" + e).val() +
'"'),
$("#block" + e).val() in blockStates)
) {
var a = blockStates[$("#block" + e).val()],
o = "";
for (var n in a)
"unset" != $("#" + n + "BS" + e).val() &&
(o +=
"," + n + ':"' + $("#" + n + "BS" + e).val() + '"');
0 != o.length && (t += ",Properties:{" + o.substr(1) + "}");
}
t += "}";
var s = blocks[e].getBlockNBT(e);
s.length && (t += ",TileEntityData:" + s);
}
for (var n in this.entityNBT)
t += getNBTforKey(n, this.entityNBT[n], e);
return (
(t += getMotion(e, "Motion")),
(t += getTargetingTags(e)),
(t += getPassengersNBT(e))
);
}
loadFallingBlockEntityData(e, t) {
if (-1 != blocks[this.stackPos].bType.indexOf("_banner"))
$("#BlockEntityTag" + this.stackPos).val(compoundToNBTString(e));
else if (-1 != blocks[this.stackPos].bType.indexOf("command_block")) {
if (void 0 != e.CommandStats) {
var a = e.CommandStats.val;
for (var o in a) $("#" + o + this.stackPos).val(a[o].val);
}
} else
"end_gateway" == blocks[this.stackPos].bType
? void 0 != e.ExitPortal &&
($("#X" + this.stackPos).val(e.ExitPortal.val.X.val),
$("#Y" + this.stackPos).val(e.ExitPortal.val.Y.val),
$("#Z" + this.stackPos).val(e.ExitPortal.val.Z.val))
: -1 != blocks[this.stackPos].bType.indexOf("spawner")
? (void 0 != e.SpawnData &&
loadSpawnPotentialFromNBT(
t,
"SpawnData",
[e.SpawnData.val],
this.stackPos
),
void 0 != e.SpawnPotentials &&
loadSpawnPotentialFromNBT(
t,
"SpawnPotentials",
e.SpawnPotentials.val,
this.stackPos
))
: "sign" == blocks[this.stackPos].bType ||
"wall_sign" == blocks[this.stackPos].bType
? loadSignFromNBT("blockSpec" + this.stackPos, e)
: ("player_head" != blocks[this.stackPos].bType &&
"player_wall_head" != blocks[this.stackPos].bType) ||
$("#SkullOwner" + this.stackPos).val(compoundToNBTString(e));
for (var n in e)
blocks[this.stackPos].loadValue(t, n, e[n].val, this.stackPos);
}
}
class lightning_bolt extends Entity {
constructor(e, t) {
super(e, t),
(this.passengersAllowed = !1),
(this.entityNBT = {
Tags: {
type: "text",
format: "special",
tip: "entity",
fwClass: "bigTF",
},
});
}
getEntitySpecificCommand(e) {
return getTargetingTags(this.stackPos);
}
}
class fishing_bobber extends Entity {
constructor(e, t) {
super(e, t),
(this.passengersAllowed = !1),
(this.entityNBT = {
OnGround: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
},
});
}
getEntitySpecificCommand(e) {
return -1 != $("#OnGround" + e).val()
? ",OnGround:" + $("#OnGround" + e).val() + "b"
: "";
}
}
class pillager extends Mob {
constructor(e, t, a) {
super(e, t, a),
(this.myNBT = {
PatrolLeader: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "pillager.PatrolLeader",
align: "R",
},
Patrolling: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "pillager.Patrolling",
align: "R",
},
HasRaidGoal: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "pillager.HasRaidGoal",
align: "R",
},
PatrolTargetX: {
type: "text",
format: "special",
tip: "pillager.PatrolTarget",
align: "R",
},
PatrolTargetY: { type: "text", format: "special", align: "R" },
PatrolTargetZ: { type: "text", format: "special", align: "R" },
Wave: {
type: "text",
format: "int",
tip: "pillager.Wave",
align: "R",
},
RaidId: {
type: "text",
format: "int",
tip: "pillager.RaidId",
align: "R",
},
}),
void 0 != this.specificNBT &&
Object.assign(this.myNBT, this.specificNBT);
}
getEntitySpecificCommand(e) {
return (
super.getEntityNBT() +
getTargetCompound(this.stackPos, "PatrolTarget") +
getHandAndArmorItmes(this.stackPos) +
getStatusEffectsNBT(
"ActiveEffects",
"ActiveEffects" + this.stackPos
) +
this.getMobAttributes() +
this.getLeashedTo()
);
}
loadPatrolTargetNBT(e) {
$("#PatrolTargetX" + this.stackPos).val(parseInt(e.X.val)),
$("#PatrolTargetY" + this.stackPos).val(parseInt(e.Y.val)),
$("#PatrolTargetZ" + this.stackPos).val(parseInt(e.Z.val));
}
generateForm() {
Object.assign(this.mobNBT, this.myNBT), super.generateForm();
}
}
class ender_crystal extends Entity {
constructor(e, t) {
super(e, t),
(this.myNBT = {
ShowBottom: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
align: "R",
},
BeamTargetX: {
type: "text",
format: "special",
tip: "ender_crystal.BeamTarget",
align: "R",
},
BeamTargetY: {
type: "text",
format: "special",
tip: "ender_crystal.BeamTarget",
align: "R",
},
BeamTargetZ: {
type: "text",
format: "special",
tip: "ender_crystal.BeamTarget",
align: "R",
},
});
}
getEntitySpecificCommand(e) {
return (
super.getEntityNBT() +
getTargetCompound(this.stackPos, "BeamTarget")
);
}
loadBeamTargetNBT(e) {
$("#BeamTargetX" + this.stackPos).val(parseInt(e.X.val)),
$("#BeamTargetY" + this.stackPos).val(parseInt(e.Y.val)),
$("#BeamTargetZ" + this.stackPos).val(parseInt(e.Z.val));
}
generateForm() {
Object.assign(this.entityNBT, this.myNBT), super.generateForm();
}
}
class evoker_fangs extends Entity {
constructor(e, t) {
super(e, t),
(this.myNBT = {
Warmup: { type: "ticks", tip: t, align: "R" },
Owner: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: t,
},
});
}
getEntitySpecificCommand(e) {
return super.getEntityNBT();
}
generateForm() {
Object.assign(this.entityNBT, this.myNBT), super.generateForm();
}
}
class llama_spit extends SimpleEntity {
constructor(e, t) {
super(e, t),
(this.myNBT = {
Owner: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: t,
},
});
}
getEntitySpecificCommand(e) {
return super.getEntityNBT();
}
generateForm() {
Object.assign(this.entityNBT, this.myNBT), super.generateForm();
}
}
class item extends SimpleEntity {
constructor(e, t) {
super(e, t),
(this.myNBT = {
Item: {
type: "itemselect",
format: "special",
hide: !1,
tip: t,
align: "R",
forceConstruct: !0,
},
Age: { type: "ticks", tip: t, align: "R" },
Health: { type: "text", format: "short", tip: t, align: "R" },
PickupDelay: { type: "ticks", tip: t, align: "R" },
Thrower: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: t,
},
Fire: { type: "ticks", tip: "entity" },
});
}
getEntitySpecificCommand(e) {
return super.getEntityNBT() + ",Item:" + getItemNBT("Item" + e);
}
generateForm() {
Object.assign(this.entityNBT, this.myNBT), super.generateForm();
}
}
class painting extends SimpleEntity {
getEntitySpecificCommand(e) {
return (
super.getEntityNBT() +
',Motive:"minecraft:' +
$("#Motive" + e).val() +
'"'
);
}
}
class item_frame extends SimpleEntity {
constructor(e, t) {
super(e, t),
(this.myNBT = {
Item: {
type: "itemselect",
format: "special",
hide: !1,
tip: "item",
align: "R",
forceConstruct: !0,
},
Facing: {
type: "choice",
values: [
[-1, "unset"],
["0", "Down"],
["1", "Up"],
["2", "North"],
["3", "South"],
["4", "West"],
["5", "East"],
],
format: "b",
tip: t,
align: "R",
},
ItemRotation: {
type: "choice",
values: [
[-1, "unset"],
["1", "45&deg;"],
["2", "90&deg;"],
["3", "135&deg;"],
["4", "180&deg;"],
["5", "225&deg;"],
["6", "270&deg;"],
["7", "315&deg;"],
],
format: "b",
tip: t,
align: "R",
},
Invulnerable: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
align: "R",
},
Invisible: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
align: "R",
},
Fixed: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
align: "R",
},
});
}
getEntitySpecificCommand(e) {
return super.getEntityNBT() + ",Item:" + getItemNBT("Item" + e);
}
generateForm() {
Object.assign(this.entityNBT, this.myNBT), super.generateForm();
}
}
class shulker_bullet extends SimpleEntity {
constructor(e, t) {
super(e, t),
(this.myNBT = {
Owner: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: "shlkrblt116",
},
Target: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: "shlkrblt116",
},
TXD: {
type: "text",
format: "d",
tip: "shulker_bullet.offset",
align: "R",
},
TYD: { type: "text", format: "d", align: "R" },
TZD: { type: "text", format: "d", align: "R" },
Steps: { type: "text", format: "int", tip: t, align: "R" },
});
}
getEntitySpecificCommand(e) {
return super.getEntityNBT();
}
generateForm() {
Object.assign(this.entityNBT, this.myNBT), super.generateForm();
}
}
class Player extends Entity {
constructor(e, t) {
super(e, t),
(this.stackPos = e),
(this.entityType = t),
(this.entityNBT = {
FallFlying: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "mob",
},
AbsorptionAmount: { type: "text", format: "f", tip: "mob" },
Health: { type: "text", format: "f", tip: "mob" },
FallDistance: { type: "text", format: "f", tip: "mob" },
PortalCooldown: { type: "ticks", tip: "mob" },
DataVersion: { type: "text", format: "int", tip: t },
Dimension: {
type: "choice",
values: [
[-2, "unset"],
[-1, "The Nether"],
[0, "The Overworld"],
[1, "The End"],
],
format: "special",
tip: t,
},
Score: { type: "text", format: "int", tip: t },
SelectedItemSlot: { type: "text", format: "int", tip: t },
SelectedItem: {
type: "itemselect",
format: "special",
hide: !0,
tip: t,
},
Inventory: {
type: "multiitem",
hide: !0,
slotNumbers: !0,
tip: t,
},
SpawnX: { type: "text", format: "int", tip: "player.spawn" },
SpawnY: { type: "text", format: "int" },
SpawnZ: { type: "text", format: "int" },
SpawnForced: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
},
Sleeping: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
},
foodLevel: { type: "text", format: "int", tip: t, align: "R" },
XpLevel: { type: "text", format: "int", tip: t, align: "R" },
XpP: { type: "text", format: "f", tip: t, align: "R" },
XpTotal: { type: "text", format: "int", tip: t, align: "R" },
walkSpeed: {
type: "text",
format: "special",
tip: t,
align: "R",
},
flySpeed: {
type: "text",
format: "special",
tip: t,
align: "R",
},
mayfly: {
type: "choice",
values: unsetTrueFalse,
format: "special",
tip: t,
align: "R",
},
flying: {
type: "choice",
values: unsetTrueFalse,
format: "special",
tip: t,
align: "R",
},
invulnerable: {
type: "choice",
values: unsetTrueFalse,
format: "special",
tip: t,
align: "R",
},
mayBuild: {
type: "choice",
values: unsetTrueFalse,
format: "special",
tip: t,
align: "R",
},
instaBuild: {
type: "choice",
values: unsetTrueFalse,
format: "special",
tip: t,
align: "R",
},
seenCredits: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
align: "R",
},
});
}
loadAbilities(e, t) {
for (var a in t)
-1 != t[a].val.indexOf("b")
? $("#" + a + this.stackPos).val(parseInt(t[a].val))
: $("#" + a + this.stackPos).val(parseFloat(t[a].val));
}
loadPlayerInventory(e, t, a) {
let o = "Inventory" + a + "MultiItem";
showHide(o + "Pane", o + "PaneSH");
for (let a = 0; a < t.length; a++)
addMultiItem(o + "Pane", !0),
showHide(o + "Pane_" + a + "Pane", o + "Pane_" + a + "PaneSH"),
setupItemSlotForNBT(o + "Pane_" + a, t[a], e),
void 0 != t[a].Slot &&
$("#" + o + "Pane_" + a + "Slot").val(
parseInt(t[a].Slot.val)
);
}
getAbilities(e) {
var t = "";
return (
$("#walkSpeed" + e).val().length &&
(t += ",walkSpeed:" + $("#walkSpeed" + e).val() + "f"),
$("#flySpeed" + e).val().length &&
(t += ",flySpeed:" + $("#flySpeed" + e).val() + "f"),
-1 != $("#mayfly" + e).val() &&
(t += ",mayfly:" + $("#mayfly" + e).val() + "b"),
-1 != $("#flying" + e).val() &&
(t += ",flying:" + $("#flying" + e).val() + "b"),
-1 != $("#invulnerable" + e).val() &&
(t += ",invulnerable:" + $("#invulnerable" + e).val() + "b"),
-1 != $("#mayBuild" + e).val() &&
(t += ",mayBuild:" + $("#mayBuild" + e).val() + "b"),
-1 != $("#instaBuild" + e).val() &&
(t += ",instaBuild:" + $("#instaBuild" + e).val() + "b"),
t.length ? ",abilities:{" + t.substr(1) + "}" : t
);
}
getEntitySpecificCommand(e) {
var t = "",
a = getItemNBT("SelectedItem" + e);
"{}" != a && (t += ",SelectedItem:" + a),
-2 != $("#Dimension" + e).val() &&
(t += ",Dimension:" + $("#Dimension" + e).val());
let o = "";
return (
$("#Inventory" + e + "MultiItemPane > .itemSelectControl").each(
function (e) {
var t = this.id.substr(0, this.id.lastIndexOf("Pane"));
"-1" != $("#" + t).val() &&
(o += "," + getItemNBT(t, "CountOptional"));
}
),
o.length && (t += ",Inventory:[" + o.substr(1) + "]"),
(t += this.getAbilities(e)) + this.getEntityNBT()
);
}
getEntityNBT() {
var e = "";
for (var t in this.entityNBT)
e += getNBTforKey(t, this.entityNBT[t], this.stackPos);
return e;
}
generateForm() {
for (var e in this.entityNBT)
createComponent(
"entityPane" + this.stackPos,
e,
this.entityNBT[e],
this.stackPos
);
}
}
var booksJson,
quillsJson,
tellrawJson,
signJson,
jsonColors = [
"unset",
"Hex Code",
"reset",
"white",
"black",
"dark_blue",
"dark_green",
"dark_aqua",
"dark_red",
"dark_purple",
"gold",
"gray",
"dark_gray",
"blue",
"green",
"aqua",
"red",
"light_purple",
"yellow",
];
class Book {
constructor() {
(this.formats = [
"bold",
"italic",
"underlined",
"strikethrough",
"obfuscated",
]),
(this.books = []),
(this.context = "book"),
(this.htmlColorMap = {
reset: "#000000",
unset: "#000000",
black: "#000000",
dark_blue: "#0000aa",
dark_green: "#00aa00",
dark_aqua: "#00aaaa",
dark_red: "#aa0000",
dark_purple: "#aa00aa",
gold: "#ffaa00",
gray: "#aaaaaa",
dark_gray: "#555555",
blue: "#5555ff",
green: "#55ff55",
aqua: "#55ffff",
red: "#ff5555",
light_purple: "#ff55ff",
yellow: "#ffff55",
white: "#ffffff",
});
}
makeNewBook(e) {
(this.books[e] = { pages: [], cPage: 0, cSection: 0, cHoverEvent: 0 }),
this.books[e].pages.push([]),
this.books[e].pages[0].push(new Section());
}
getLineSection(e, t, a) {
var o = void 0 == a ? this.books[e].cSection : a;
return this.books[e].pages[t][o].data;
}
flipSection(e, t) {
t + this.books[e].cSection >= this.sectionsLength(e)
? (this.books[e].cSection = 0)
: t + this.books[e].cSection < 0
? (this.books[e].cSection = this.sectionsLength(e) - 1)
: (this.books[e].cSection += t),
(this.books[e].cHoverEvent = 0),
displaySectionValues(e, this.getSection(e), this.context);
}
flipPage(e, t) {
t + this.books[e].cPage >= this.books[e].pages.length
? (this.books[e].cPage = 0)
: t + this.books[e].cPage < 0
? (this.books[e].cPage = this.books[e].pages.length - 1)
: (this.books[e].cPage += t),
(this.books[e].cSection = 0),
(this.books[e].cHoverEvent = 0),
displaySectionValues(e, this.getSection(e), this.context);
}
getSection(e, t) {
var a = void 0 == t ? this.books[e].cSection : t;
return this.books[e].pages[this.books[e].cPage][a].data;
}
sectionsLength(e) {
return this.books[e].pages[this.books[e].cPage].length;
}
hoverSectionsLength(e) {
try {
if (
null !=
this.books[e].pages[this.books[e].cPage][this.books[e].cSection]
.data.hoverEvent.contents
)
return this.books[e].pages[this.books[e].cPage][
this.books[e].cSection
].data.hoverEvent.contents.length;
} catch (e) {}
return 0;
}
updateSection(e, t) {
this.books[e].pages[this.books[e].cPage][
this.books[e].cSection
].data = t;
}
getJsonForBook(e) {
for (var t = "", a = 0; a < this.books[e].pages.length; a++) {
var o = [this.books[e].pages[a][0].data],
n = this.getFirstFormats(o[0]);
if (
(this.removeUnrequiredFormatting(n, o[0]),
this.books[e].pages[a].length > 1)
) {
for (var s = 1; s < this.books[e].pages[a].length; s++)
"" != this.books[e].pages[a][s].data.text &&
(o.push(this.books[e].pages[a][s].data),
this.removeUnrequiredFormatting(n, o[o.length - 1]));
t +=
"," +
jsonConvert(
JSON.stringify(removeUnsetFromJSON(JSON.stringify(o)))
);
} else
t +=
"," +
jsonConvert(
JSON.stringify(
removeUnsetFromJSON(JSON.stringify(o[0]))
)
);
}
return t.length
? 1 == this.books[e].pages.length &&
1 == this.books[e].pages[0].length &&
void 0 != this.books[e].pages[0][0].data.text &&
"" == this.books[e].pages[0][0].data.text
? ""
: ",pages:[" + t.substr(1) + "]"
: t;
}
removeUnrequiredFormatting(e, t) {
for (var a = 0; a < this.formats.length; a++)
this.formats[a] in e ||
t[this.formats[a]] ||
delete t[this.formats[a]];
}
getFirstFormats(e) {
for (var t = {}, a = 0; a < this.formats.length; a++)
e[this.formats[a]] && (t[this.formats[a]] = !0);
return t;
}
swapSection(e, t) {
var a;
if (
(a =
t + this.books[e].cSection >= this.sectionsLength(e)
? 0
: t + this.books[e].cSection < 0
? this.sectionsLength(e) - 1
: this.books[e].cSection + t) != this.books[e].cSection
) {
var o = this.books[e].pages[this.books[e].cPage][
this.books[e].cSection
].data;
(this.books[e].pages[this.books[e].cPage][
this.books[e].cSection
].data = this.books[e].pages[this.books[e].cPage][a].data),
(this.books[e].pages[this.books[e].cPage][a].data = o),
(this.books[e].cSection = a);
}
displaySectionValues(e, this.getSection(e), this.context);
}
swapPage(e, t) {
var a;
if (
(a =
t + this.books[e].cPage >= this.books[e].pages.length
? 0
: t + this.books[e].cPage < 0
? this.books[e].pages.length - 1
: this.books[e].cPage + t) != this.books[e].cPage
) {
var o = this.books[e].pages[this.books[e].cPage];
(this.books[e].pages[this.books[e].cPage] = this.books[e].pages[a]),
(this.books[e].pages[a] = o),
(this.books[e].cPage = a);
}
(this.books[e].cSection = 0),
displaySectionValues(e, this.getSection(e), this.context);
}
flipPage(e, t) {
t + this.books[e].cPage >= this.books[e].pages.length
? (this.books[e].cPage = 0)
: t + this.books[e].cPage < 0
? (this.books[e].cPage = this.books[e].pages.length - 1)
: (this.books[e].cPage += t),
(this.books[e].cSection = 0),
displaySectionValues(e, this.getSection(e), this.context);
}
addPage(e) {
this.books[e].pages.push([]),
(this.books[e].cPage = this.books[e].pages.length - 1),
this.books[e].pages[this.books[e].cPage].push(new Section()),
(this.books[e].cSection = 0),
displaySectionValues(e, this.getSection(e), this.context);
}
deletePage(e) {
return (
this.books[e].pages.splice(this.books[e].cPage, 1),
this.books[e].cPage >= this.books[e].pages.length &&
(this.books[e].cPage = this.books[e].pages.length - 1),
(this.books[e].cSection = 0),
this.getSection(e)
);
}
deleteSection(e) {
return (
this.books[e].pages[this.books[e].cPage].splice(
this.books[e].cSection,
1
),
this.books[e].cSection >= this.sectionsLength(e) &&
(this.books[e].cSection = this.sectionsLength(e) - 1),
this.getSection(e)
);
}
flipHoverSection(e, t) {
t + this.books[e].cHoverEvent >= this.hoverSectionsLength(e)
? (this.books[e].cHoverEvent = 0)
: t + this.books[e].cHoverEvent < 0
? (this.books[e].cHoverEvent = this.hoverSectionsLength(e) - 1)
: (this.books[e].cHoverEvent += t),
displaySectionValues(e, this.getSection(e), this.context);
}
swapHoverSection(e, t) {
let a;
if (
(a =
t + this.books[e].cHoverEvent >= this.hoverSectionsLength(e)
? 0
: t + this.books[e].cHoverEvent < 0
? this.hoverSectionsLength(e) - 1
: this.books[e].cHoverEvent + t) !=
this.books[e].cHoverEvent
) {
var o = this.books[e].pages[this.books[e].cPage][
this.books[e].cSection
].data.hoverEvent.contents[this.books[e].cHoverEvent];
(this.books[e].pages[this.books[e].cPage][
this.books[e].cSection
].data.hoverEvent.contents[this.books[e].cHoverEvent] = this.books[
e
].pages[this.books[e].cPage][
this.books[e].cSection
].data.hoverEvent.contents[a]),
(this.books[e].pages[this.books[e].cPage][
this.books[e].cSection
].data.hoverEvent.contents[a] = o),
(this.books[e].cHoverEvent = a);
}
displaySectionValues(e, this.getSection(e), this.context);
}
deleteHoverSection(e) {
this.books[e].pages[this.books[e].cPage][
this.books[e].cSection
].data.hoverEvent.contents.splice(this.books[e].cHoverEvent, 1),
this.books[e].cHoverEvent >= this.hoverSectionsLength(e) &&
((this.books[e].cHoverEvent = this.hoverSectionsLength(e) - 1),
this.books[e].cHoverEvent < 0 &&
(this.books[e].cHoverEvent = 0)),
displaySectionValues(e, this.getSection(e), this.context);
}
addHoverSection(e) {
if (
Array.isArray(
this.books[e].pages[this.books[e].cPage][this.books[e].cSection]
.data.hoverEvent.contents
)
)
this.books[e].pages[this.books[e].cPage][
this.books[e].cSection
].data.hoverEvent.contents.push({ text: "" });
else {
let t = this.books[e].pages[this.books[e].cPage][
this.books[e].cSection
].data.hoverEvent.contents;
this.books[e].pages[this.books[e].cPage][
this.books[e].cSection
].data.hoverEvent.contents = [{ text: t }];
}
this.books[e].cHoverEvent++,
$("#" + e + "hoverColor_colsettings").hide(),
displaySectionValues(e, this.getSection(e), this.context);
}
addSection(e) {
this.books[e].pages[this.books[e].cPage].push(new Section()),
(this.books[e].cSection = this.sectionsLength(e) - 1),
displaySectionValues(e, this.getSection(e), this.context);
}
addSectionFromObject(e, t) {
this.books[e].pages[this.books[e].cPage].push(t),
(this.books[e].cSection = this.sectionsLength(e) - 1),
displaySectionValues(e, this.getSection(e), this.context);
}
}
class Section {
constructor(e) {
this.data =
void 0 == e
? {
text: "",
font: "",
color: "unset",
bold: "unset",
italic: "unset",
underlined: "unset",
strikethrough: "unset",
obfuscated: "unset",
}
: e;
}
}
class WritableBook {
constructor() {
this.books = [];
}
makeNewBook(e) {
(this.books[e] = { pages: [], cPage: 0 }), this.books[e].pages.push("");
}
addPage(e) {
this.books[e].pages.push(""),
(this.books[e].cPage = this.books[e].pages.length - 1),
displayWriteablePage(e);
}
flipPage(e, t) {
t + this.books[e].cPage >= this.books[e].pages.length
? (this.books[e].cPage = 0)
: t + this.books[e].cPage < 0
? (this.books[e].cPage = this.books[e].pages.length - 1)
: (this.books[e].cPage += t),
displayWriteablePage(e);
}
deletePage(e) {
this.books[e].pages.splice(this.books[e].cPage, 1),
this.books[e].cPage >= this.books[e].pages.length &&
(this.books[e].cPage = this.books[e].pages.length - 1),
displayWriteablePage(e);
}
swapPage(e, t) {
var a;
if (
(a =
t + this.books[e].cPage >= this.books[e].pages.length
? 0
: t + this.books[e].cPage < 0
? this.books[e].pages.length - 1
: this.books[e].cPage + t) != this.books[e].cPage
) {
var o = this.books[e].pages[this.books[e].cPage];
(this.books[e].pages[this.books[e].cPage] = this.books[e].pages[a]),
(this.books[e].pages[a] = o),
(this.books[e].cPage = a);
}
displayWriteablePage(e);
}
updatePage(e, t) {
this.books[e].pages[this.books[e].cPage] = t;
}
}
function deletePage(e) {
1 == booksJson.books[e].pages.length
? alertify.alert(
"MCStacker requires books to have at least one page. So it aint gonna let you delete this page."
)
: displaySectionValues(e, booksJson.deletePage(e), this.context);
}
function deleteLoreLine(e) {
1 == tellrawJson.books[e].pages.length
? alertify.alert(
"MCStacker requires Lore to have at least one line. So you can't delete this line."
)
: displaySectionValues(e, tellrawJson.deletePage(e), "lore");
}
function deleteWritablePage(e) {
if (1 == quillsJson.books[e].pages.length)
alertify.alert(
"MCStacker requires writable books to have at least one page. So it aint gonna let you delete this page."
);
else {
quillsJson.deletePage(e);
displayWriteablePage(e);
}
}
function deleteSection(e) {
1 == booksJson.sectionsLength(e)
? alertify.alert(
"MCStacker requires pages to have at least one section. So it aint gonna let you delete this section."
)
: displaySectionValues(
e,
booksJson.deleteSection(e),
booksJson.context
);
}
function deleteHoverSection(e, t) {
"book" == t
? booksJson.deleteHoverSection(e)
: tellrawJson.deleteHoverSection(e);
}
function deleteTellrawSection(e) {
1 == tellrawJson.sectionsLength(e)
? alertify.alert(
"MCStacker requires Json elements to have at least one section. So it aint gonna let you delete this section."
)
: displaySectionValues(
e,
tellrawJson.deleteSection(e),
tellrawJson.context
);
}
function clearSectionUI(e) {
$("#" + e + "bookText_choice").val("text"),
$("#" + e + "bookText_txt").val(""),
$("#" + e + "objective").val(""),
$("#" + e + "font").val(""),
$("#" + e + "color").val("unset"),
$("#" + e + "boldunset").prop("checked", !0),
$("#" + e + "italicunset").prop("checked", !0),
$("#" + e + "underlinedunset").prop("checked", !0),
$("#" + e + "strikethroughunset").prop("checked", !0),
$("#" + e + "obfuscatedunset").prop("checked", !0),
$("#" + e + "hoverEvent_txt").val(""),
$("#" + e + "clickEvent_txt").val("");
}
function bookPreview(e) {
$("#" + e + "Preview").html("");
for (
var t = booksJson.books[e].cPage, a = booksJson.getSection(e, 0), o = 0;
o < booksJson.sectionsLength(e);
o++
) {
var n = booksJson.getSection(e, o);
$("#" + e + "Preview").append(
sectionJSONPreview(e, o, t, n, a, booksJson)
);
}
}
function displayWriteablePage(e) {
$("#" + e + "bookText").val(
quillsJson.books[e].pages[quillsJson.books[e].cPage]
),
$("#" + e + "pageNo").html(
"Page " +
(quillsJson.books[e].cPage + 1) +
" of " +
quillsJson.books[e].pages.length
),
generateCommand();
}
function getFormatUIValueFromData(e) {
return void 0 == e ? "unset" : e;
}
function displaySectionValues(e, t, a) {
clearSectionUI(e);
var o = "";
("text" in t
? ($("#" + e + "bookText_choice").val("text"), (o = t.text))
: "translate" in t
? ($("#" + e + "bookText_choice").val("translate"), (o = t.translate))
: "score" in t
? ($("#" + e + "bookText_choice").val("score"),
$("#" + e + "bookText_choice").trigger("change"),
(o = t.score.name),
$("#" + e + "objective").val(t.score.objective))
: "selector" in t
? ($("#" + e + "bookText_choice").val("selector"), (o = t.selector))
: "selector" in t
? ($("#" + e + "bookText_choice").val("selector"), (o = t.selector))
: "nbt" in t &&
($("#" + e + "bookText_choice").val("nbt"),
$("#" + e + "bookText_choice").trigger("change"),
(o = t.nbt),
"entity" in t
? ($("#" + e + "targetType").val("entity"),
$("#" + e + "targetType").trigger("change"),
$("#" + e + "nbtEntityTarget").val(t.entity))
: "storage" in t
? ($("#" + e + "targetType").val("storage"),
$("#" + e + "targetType").trigger("change"),
$("#" + e + "nbtStorageTarget").val(t.storage))
: "block" in t &&
($("#" + e + "targetType").val("block"),
$("#" + e + "targetType").trigger("change"),
$("#" + e + "BlockNBT").val(t.block)),
"interpret" in t &&
$("#" + e + "interpret").val(t.interpret ? 1 : 0)),
"font" in t && $("#" + e + "font").val(t.font),
(o = replaceAll("\n", "\\n", o)),
$("#" + e + "bookText_txt").val(o),
"color" in t)
? "#" == t.color.charAt(0)
? ($("#" + e + "color").val("Hex Code"),
$("#" + e + "_color").val(t.color.substr(1)),
new jscolor.color(
document.getElementById(e + "_color"),
{}
).fromString(t.color.substr(1)),
$("#" + e + "_colsettings").show())
: ($("#" + e + "color").val(t.color),
$("#" + e + "_colsettings").hide())
: ($("#" + e + "color").val("unset"),
$("#" + e + "_colsettings").hide());
if (
($("#" + e + "bold" + getFormatUIValueFromData(t.bold)).prop(
"checked",
!0
),
$("#" + e + "italic" + getFormatUIValueFromData(t.italic)).prop(
"checked",
!0
),
$("#" + e + "underlined" + getFormatUIValueFromData(t.underlined)).prop(
"checked",
!0
),
$(
"#" +
e +
"strikethrough" +
getFormatUIValueFromData(t.strikethrough)
).prop("checked", !0),
$("#" + e + "obfuscated" + getFormatUIValueFromData(t.obfuscated)).prop(
"checked",
!0
),
"hoverEvent" in t)
) {
$("#" + e + "hoverEvent_choice").val(t.hoverEvent.action);
try {
if (Array.isArray(t.hoverEvent.contents)) {
let o;
if (
((o = "book" == a ? booksJson : tellrawJson).books[e]
.cHoverEvent >= t.hoverEvent.contents.length &&
(o.books[e].cHoverEvent = 0),
$("#" + e + "hoverEvent_txt").val(
replaceAll(
"\n",
"\\n",
t.hoverEvent.contents[o.books[e].cHoverEvent].text
)
),
$("#" + e + "hoverfont").val(
t.hoverEvent.contents[o.books[e].cHoverEvent].font
),
"color" in t.hoverEvent.contents[o.books[e].cHoverEvent])
) {
let a = t.hoverEvent.contents[o.books[e].cHoverEvent].color;
if ("#" == a.charAt(0))
$("#" + e + "hoverColor").val("Hex Code"),
$("#" + e + "hover_color").val(a.substr(1)),
new jscolor.color(
document.getElementById(e + "hover_color"),
{}
).fromString(a.substr(1)),
$("#" + e + "hoverColor_colsettings").show();
else
$("#" + e + "hoverColor").val(a),
$("#" + e + "hoverColor_colsettings").hide();
} else $("#" + e + "hoverColor").val("unset");
$(
"#" +
e +
"hoverbold" +
getFormatUIValueFromData(
t.hoverEvent.contents[o.books[e].cHoverEvent].bold
)
).prop("checked", !0),
$(
"#" +
e +
"hoveritalic" +
getFormatUIValueFromData(
t.hoverEvent.contents[o.books[e].cHoverEvent]
.italic
)
).prop("checked", !0),
$(
"#" +
e +
"hoverunderlined" +
getFormatUIValueFromData(
t.hoverEvent.contents[o.books[e].cHoverEvent]
.underlined
)
).prop("checked", !0),
$(
"#" +
e +
"hoverstrikethrough" +
getFormatUIValueFromData(
t.hoverEvent.contents[o.books[e].cHoverEvent]
.strikethrough
)
).prop("checked", !0),
$(
"#" +
e +
"hoverobfuscated" +
getFormatUIValueFromData(
t.hoverEvent.contents[o.books[e].cHoverEvent]
.obfuscated
)
).prop("checked", !0);
} else
null != t.hoverEvent.contents
? ($("#" + e + "hoverEvent_txt").val(
replaceAll("\n", "\\n", t.hoverEvent.contents)
),
(t.hoverEvent.contents = [t.hoverEvent.contents]))
: $("#" + e + "hoverEvent_txt").val("");
} catch (t) {
$("#" + e + "hoverEvent_txt").val("");
}
} else $("#" + e + "hoverEvent_txt").val("");
"clickEvent" in t
? ($("#" + e + "clickEvent_choice").val(t.clickEvent.action),
"boolean" == typeof t.clickEvent.value
? $("#" + e + "clickEvent_txt").val(t.clickEvent.value)
: $("#" + e + "clickEvent_txt").val(
replaceAll("\n", "\\n", t.clickEvent.value)
))
: $("#" + e + "clickEvent_txt").val(""),
"book" == a
? ($("#" + e + "sectionNo").html(
"Section " +
(booksJson.books[e].cSection + 1) +
" of " +
booksJson.sectionsLength(e)
),
$("#" + e + "pageNo").html(
"Page " +
(booksJson.books[e].cPage + 1) +
" of " +
booksJson.books[e].pages.length
),
bookPreview(e))
: "tellraw" == a
? ($("#" + e + "sectionNo").html(
"Section " +
(tellrawJson.books[e].cSection + 1) +
" of " +
tellrawJson.sectionsLength(e)
),
$("#" + e + "pageNo").html(
"Line " +
(tellrawJson.books[e].cPage + 1) +
" of " +
tellrawJson.books[e].pages.length
),
tellrawPreview(e))
: "lore" == a
? ($("#" + e + "sectionNo").html(
"Section " +
(tellrawJson.books[e].cSection + 1) +
" of " +
tellrawJson.sectionsLength(e)
),
$("#" + e + "pageNo").html(
"Line " +
(tellrawJson.books[e].cPage + 1) +
" of " +
tellrawJson.books[e].pages.length
),
tellrawPreview(e))
: ($("#" + e + "sectionNo").html(
"Section " +
(signJson.books[e].cSection + 1) +
" of " +
signJson.sectionsLength(e)
),
$("#" + e + "pageNo").html(
"Line " +
(signJson.books[e].cPage + 1) +
" of " +
signJson.books[e].pages.length
),
$("#" + e + "clickEvent_txt").prop(
"disabled",
0 != signJson.books[e].cSection
),
$("#" + e + "clickEvent_choice").prop(
"disabled",
0 != signJson.books[e].cSection
),
signPreview(e)),
$("#" + e + "bookText_txt").trigger("keyup"),
"book" == a
? bookUpdate(e)
: "sign" == a
? signUpdate(e)
: tellrawUpdate(e);
}
function bookUpdate(e) {
var t = {},
a = replaceAll("\\n", "\n", $("#" + e + "bookText_txt").val());
if ("score" == $("#" + e + "bookText_choice").val())
t.score = { name: a, objective: $("#" + e + "objective").val() };
else if ("nbt" == $("#" + e + "bookText_choice").val()) {
if (((t.nbt = a), "entity" == $("#" + e + "targetType").val()))
t.entity = $("#" + e + "nbtEntityTarget").val();
else if ("storage" == $("#" + e + "targetType").val())
t.storage = $("#" + e + "nbtStorageTarget").val();
else {
var o = getCoordsString(e + "BlockNBT");
t.block = o[0] + " " + o[1] + " " + o[2];
}
1 == $("#" + e + "interpret").val()
? (t.interpret = !0)
: 0 == $("#" + e + "interpret").val() && (t.interpret = !1);
} else t[$("#" + e + "bookText_choice").val()] = a;
(t.font = $("#" + e + "font").val()),
"Hex Code" == $("#" + e + "color").val()
? (t.color = "#" + $("#" + e + "_color").val())
: (t.color = $("#" + e + "color").val()),
(t.bold = $("input[name='" + e + "bold']:checked").val()),
(t.italic = $("input[name='" + e + "italic']:checked").val()),
(t.underlined = $("input[name='" + e + "underlined']:checked").val()),
(t.strikethrough = $(
"input[name='" + e + "strikethrough']:checked"
).val()),
(t.obfuscated = $("input[name='" + e + "obfuscated']:checked").val()),
"hoverEvent" in
booksJson.books[e].pages[booksJson.books[e].cPage][
booksJson.books[e].cSection
].data &&
(t.hoverEvent =
booksJson.books[e].pages[booksJson.books[e].cPage][
booksJson.books[e].cSection
].data.hoverEvent),
"show_text" == $("#" + e + "hoverEvent_choice").val()
? "hoverEvent" in t
? ((t.hoverEvent.action = "show_text"),
(t.hoverEvent.contents[booksJson.books[e].cHoverEvent] = {
text: replaceAll(
"\\n",
"\n",
$("#" + e + "hoverEvent_txt").val()
),
}),
(t.hoverEvent.contents[
booksJson.books[e].cHoverEvent
].font = $("#" + e + "hoverfont").val()),
"Hex Code" == $("#" + e + "hoverColor").val()
? (t.hoverEvent.contents[
booksJson.books[e].cHoverEvent
].color = "#" + $("#" + e + "hover_color").val())
: (t.hoverEvent.contents[
booksJson.books[e].cHoverEvent
].color = $("#" + e + "hoverColor").val()),
(t.hoverEvent.contents[
booksJson.books[e].cHoverEvent
].bold = $("input[name='" + e + "hoverbold']:checked").val()),
(t.hoverEvent.contents[
booksJson.books[e].cHoverEvent
].italic = $(
"input[name='" + e + "hoveritalic']:checked"
).val()),
(t.hoverEvent.contents[
booksJson.books[e].cHoverEvent
].underlined = $(
"input[name='" + e + "hoverunderlined']:checked"
).val()),
(t.hoverEvent.contents[
booksJson.books[e].cHoverEvent
].strikethrough = $(
"input[name='" + e + "hoverstrikethrough']:checked"
).val()),
(t.hoverEvent.contents[
booksJson.books[e].cHoverEvent
].obfuscated = $(
"input[name='" + e + "hoverobfuscated']:checked"
).val()))
: ((booksJson.books[e].cHoverEvent = 0),
(t.hoverEvent = {
action: "show_text",
contents: [
{
text: replaceAll(
"\\n",
"\n",
$("#" + e + "hoverEvent_txt").val()
),
},
],
}))
: (t.hoverEvent = {
action: $("#" + e + "hoverEvent_choice").val(),
contents: replaceAll(
"\\n",
"\n",
$("#" + e + "hoverEvent_txt").val()
),
}),
showHideHoverEventFormatting(e, booksJson),
$("#" + e + "clickEvent_txt").val().length &&
(t.clickEvent = {
action: $("#" + e + "clickEvent_choice").val(),
value: $("#" + e + "clickEvent_txt").val(),
}),
booksJson.updateSection(e, t),
deferJSONOutput ||
(bookPreview(e),
hoverEventPreview(e, booksJson),
generateCommand());
}
function getWrittenBookNBT(e) {
var t = "";
return (
(t += ',title:"' + $("#" + e + "title").val() + '"'),
(t += ',author:"' + $("#" + e + "author").val() + '"'),
-1 != $("#" + e + "generation").val() &&
(t += ",generation:" + $("#" + e + "generation").val()),
-1 != $("#" + e + "resolved").val() &&
(t += ",resolved:" + $("#" + e + "resolved").val() + "b"),
(t += booksJson.getJsonForBook(e))
);
}
function loadWritableBookFromNBT(e, t) {
for (var a = 0; a < t.length; a++)
0 != a && quillsJson.addPage(e),
quillsJson.updatePage(e, replaceAll('\\"', '"', t[a]));
quillsJson.flipPage(e, 1);
}
function loadSignFromNBT(e, t) {
for (var a = 0; a < 4; a++) {
if (void 0 != t["Text" + (a + 1)]) {
var o;
try {
o = JSON.parse(
JSON.parse(
'"' +
t["Text" + (a + 1)].val +
'"'.replace(/\\[1]/g, "")
)
);
} catch (e) {
o = JSON.parse(
JSON.parse(
'"' +
t["Text" + (a + 1)].val
.replace(/"/g, '\\"')
.replace(/\\'/g, "'") +
'"'
)
);
}
if (void 0 != o.extra) {
var n = o.extra;
delete o.extra, signJson.updateSection(e, o);
for (var s = 0; s < n.length; s++)
signJson.addSectionFromObject(e, new Section(n[s]));
} else if (Array.isArray(o)) {
for (var i = 0; i < o.length; i++)
signJson.addSectionFromObject(e, new Section(o[i]));
signJson.flipSection(e, 1), signJson.deleteSection(e);
} else
signJson.addSectionFromObject(e, new Section(o)),
signJson.flipSection(e, 1),
signJson.deleteSection(e);
} else
signJson.updateSection(
e,
JSON.parse('{"text":"","color":"black"}')
);
signJson.flipPage(e, 1);
}
}
function createWrittenBookForm(e, t) {
void 0 == booksJson && (booksJson = new Book()),
$("#" + e + "ItemPane").append("<div id='" + e + "BookPane'></div>");
var a = {
title: {
type: "text",
id: (e += "BookPane") + "title",
format: "string",
cssClass: "fLabel100",
tip: "written_book",
},
author: {
type: "text",
id: e + "author",
format: "string",
cssClass: "fLabel100",
tip: "written_book",
},
generation: {
type: "choice",
id: e + "generation",
cssClass: "fLabel100",
values: [
[-1, "unset"],
["0", "Original"],
["1", "Copy of Original"],
["2", "Copy of Copy"],
["3", "Tattered"],
],
format: "int",
tip: "written_book",
},
resolved: {
type: "choice",
id: e + "resolved",
cssClass: "fLabel100",
values: unsetTrueFalse,
format: "b",
tip: "written_book",
},
Pages: {
type: "panel",
cssClass: "fLabel100",
panelID: e + "Pages",
format: "special",
tip: "written_book",
},
};
for (var o in a) createComponent(e, o, a[o], t);
$("#" + e + "Pages").html(
"<span class='pagePreviewFrame'><span><br><a href=\"javascript:booksJson.flipPage('" +
e +
"',-1)\" class='greenPlus' title='Go to previous page'>&#8678;</a><span id='" +
e +
"pageNo'></span><a href=\"javascript:booksJson.flipPage('" +
e +
"',1)\" class='greenPlus' title='Go to next page'>&#8680;</a><a href=\"javascript:booksJson.addPage('" +
e +
"')\" class='greenPlus' title='Add a new page'>+</a><a href=\"javascript:deletePage('" +
e +
"')\" class='redX' title='Delete this page'>X</a><a href=\"javascript:booksJson.swapPage('" +
e +
"', -1)\" class='anchorButton' title='Swap with previous page'>&#8630</a><a href=\"javascript:booksJson.swapPage('" +
e +
"',1)\" class='anchorButton' title='Swap with next page'>&#8631</a></span><br><span id='" +
e +
"Preview' class='pagePreview roundedDiv'></span></span><span id='" +
e +
"Setup' class='pageSetup'><br><span class='fLabel100'></span><span><a href=\"javascript:booksJson.flipSection('" +
e +
"',-1)\" class='greenPlus' title='Go to previous section'>&#8678;</a><span id='" +
e +
"sectionNo'></span><a href=\"javascript:booksJson.flipSection('" +
e +
"',1)\" class='greenPlus' title='Go to next section'>&#8680;</a><a href=\"javascript:booksJson.addSection('" +
e +
"')\" class='greenPlus' title='Add a new section'>+</a><a href=\"javascript:deleteSection('" +
e +
"')\" class='redX' title='Delete this section'>X</a><a href=\"javascript:booksJson.swapSection('" +
e +
"', -1)\" class='anchorButton' title='Swap with previous section'>&#8630</a><a href=\"javascript:booksJson.swapSection('" +
e +
"',1)\" class='anchorButton' title='Swap with next section'>&#8631</a></span></span>"
),
$("#" + e + "Setup").append(
"<br><span class='fLabel100'>component type</span><select id='" +
e +
"bookText_choice'><option value='text'>text</option><option value='translate'>translate</option><option value='score'>score</option><option value='selector'>selector</option><option value='nbt'>nbt</option></select>"
),
$("#" + e + "Setup").append(
"<br><span class='fLabel100'>value</span><input type='text' id='" +
e +
"bookText_txt' class='bookUpdate bigTF'>" +
makeTip("json.value")
),
$("#" + e + "Setup").append(
"<br><span id='" + e + "extraComponents'></span>"
),
createComponent(
e + "Setup",
"color",
{
type: "makeSelect",
id: e + "color",
values: jsonColors,
format: "special",
cssClass: "fLabel100",
tip: "written_book",
eventClass: "jsonHexColorUpdate",
},
t
),
$("#" + e + "Setup").append(
"<span id='" +
e +
"_colsettings'><input id='" +
e +
"_color' value='FF0000' class='medTF' onchange='bookUpdate(\"" +
e +
"\")'></span>"
),
new jscolor.color(document.getElementById(e + "_color"), {}).fromString(
"FF0000"
),
$("#" + e + "_colsettings").hide(),
$(".jsonHexColorUpdate").on("change", function () {
jsonHexColorUpdate(e, booksJson.context);
}),
createComponent(
e + "Setup",
"font",
{
type: "text",
id: e + "font",
cssClass: "fLabel100",
format: "string",
tip: "written_book",
eventClass: "bookUpdate",
},
t
),
createComponent(
e + "Setup",
"jsonFormats",
{
label: " ",
type: "jsonFormats",
id: e,
cssClass: "fLabel100",
format: "special",
eventClass: "bookUpdate",
},
t
),
createComponent(
e + "Setup",
"clickEvent",
{
type: "choicetext",
id: e + "clickEvent",
values: [
"run_command",
"copy_to_clipboard",
"suggest_command",
"open_url",
"change_page",
],
format: "special",
fwClass: "bigTF",
cssClass: "fLabel100",
tip: "written_book",
eventClass: "bookUpdate",
},
t
),
createComponent(
e + "Setup",
"hoverEvent",
{
type: "choicetext",
id: e + "hoverEvent",
values: ["show_text", "show_item", "show_entity"],
format: "special",
cssClass: "fLabel100",
fwClass: "bigTF",
tip: "written_book",
eventClass: "bookUpdate",
},
t
),
createComponent(
e + "Setup",
"hoverEventFormat",
{
type: "panel",
panelID: e + "hoverEventFormat",
cssClass: "fLabel100",
fwClass: "bigTF",
eventClass: "bookUpdate",
},
t
),
makeHoverEventUI(e, "booksJson", "bookUpdate"),
$("#" + e + "bookText_choice").bind("change", function () {
"score" == $("#" + e + "bookText_choice").val()
? ($("#" + e + "extraComponents").html(
"<span class='fLabel100'>objective</span><input type='text' id='" +
e +
"objective' class='bigTF bookUpdate'>"
),
$(".bookUpdate").on("change keyup", function () {
bookUpdate(e);
}))
: "nbt" == $("#" + e + "bookText_choice").val()
? ($("#" + e + "extraComponents").html(
"<span class='fLabel100'>target type</span><select id='" +
e +
"targetType'><option value='entity'>entity</option><option value='block'>block</option><option value='storage'>storage</option></select><br><span id='" +
e +
"nbtTarget'></span>"
),
changeNBTTargetTypeBook(e, t),
bindTargetTypeChangeBook(e, t))
: $("#" + e + "extraComponents").html(""),
$("#" + e + "bookText_txt").trigger("keyup");
}),
booksJson.makeNewBook(e),
$(".bookUpdate").on("change keyup", function () {
bookUpdate(e);
}),
displaySectionValues(e, booksJson.getSection(e), booksJson.context);
}
function bindTargetTypeChangeBook(e, t) {
$("#" + e + "targetType").bind("change", function () {
changeNBTTargetTypeBook(e, t);
});
}
function changeNBTTargetTypeBook(e, t) {
"entity" == $("#" + e + "targetType").val()
? $("#" + e + "nbtTarget").html(
"<span class='fLabel100'>entity </span><input type='text' id='" +
e +
"nbtEntityTarget' class='bookUpdate bigTF'>"
)
: "storage" == $("#" + e + "targetType").val()
? $("#" + e + "nbtTarget").html(
"<span class='fLabel100'>storage </span><input type='text' id='" +
e +
"nbtStorageTarget' class='bookUpdate bigTF'>"
)
: ($("#" + e + "nbtTarget").html(
makeCoords(e + "BlockNBT", "Block", !0, !0)
),
$("#" + e + "nbtTarget span")
.removeClass("fLabel200")
.addClass("fLabel100"),
$("#" + e + "BlockNBT").addClass("bookUpdate")),
createComponent(
e + "nbtTarget",
"interpret",
{
id: e + "interpret",
type: "choice",
values: unsetTrueFalse,
cssClass: "fLabel100",
eventClass: "bookUpdate",
},
t
),
$(".bookUpdate").on("change keyup", function () {
bookUpdate(e);
}),
bookUpdate(e);
}
function loadWrittenBookFromNBT(e, t) {
if (
(void 0 != t.title && $("#" + e + "title").val(t.title.val),
void 0 != t.author && $("#" + e + "author").val(t.author.val),
void 0 != t.generation &&
$("#" + e + "generation").val(parseInt(t.generation.val)),
void 0 != t.resolved &&
$("#" + e + "resolved").val(parseInt(t.resolved.val)),
void 0 != t.pages)
) {
for (var a = t.pages.val, o = 0; o < a.length; o++) {
0 != o && booksJson.addPage(e);
var n = JSON.parse(
JSON.parse('"' + a[o] + '"'.replace(/\\[1]/g, ""))
);
if (void 0 != n.extra) {
var s = n.extra;
delete n.extra, booksJson.updateSection(e, n);
for (var i = 0; i < s.length; i++)
booksJson.addSectionFromObject(e, new Section(s[i]));
} else if (Array.isArray(n)) {
for (var r = 0; r < n.length; r++)
booksJson.addSectionFromObject(e, new Section(n[r]));
booksJson.flipSection(e, 1), booksJson.deleteSection(e);
} else
booksJson.addSectionFromObject(e, new Section(n)),
booksJson.flipSection(e, 1),
booksJson.deleteSection(e);
}
booksJson.flipPage(e, 1);
}
}
function getWritableBookNBT(e) {
return ",pages:" + JSON.stringify(quillsJson.books[e].pages);
}
function createWritableBookForm(e, t) {
void 0 == quillsJson && (quillsJson = new WritableBook()),
$("#" + e + "ItemPane").append("<div id='" + e + "BookPane'></div>"),
createComponent(
(e += "BookPane"),
"Pages",
{
type: "panel",
cssClass: "fLabel100",
panelID: e + "Pages",
format: "special",
tip: "written_book",
},
t
),
$("#" + e + "Pages").html(
"<span class='writableBookFrame'><span><a href=\"javascript:quillsJson.flipPage('" +
e +
"',-1)\" class='greenPlus' title='Go to previous page'>&#8678;</a><span id='" +
e +
"pageNo'></span><a href=\"javascript:quillsJson.flipPage('" +
e +
"',1)\" class='greenPlus' title='Go to next page'>&#8680;</a><a href=\"javascript:quillsJson.addPage('" +
e +
"')\" class='greenPlus' title='Add a new page'>+</a><a href=\"javascript:deleteWritablePage('" +
e +
"')\" class='redX' title='Delete this page'>X</a><a href=\"javascript:quillsJson.swapPage('" +
e +
"', -1)\" class='anchorButton' title='Swap with previous page'>&#8630</a><a href=\"javascript:quillsJson.swapPage('" +
e +
"',1)\" class='anchorButton' title='Swap with next page'>&#8631</a></span>\t\t <br><span class='roundedDiv'><textarea class='writable_book' id='" +
e +
"bookText'></textarea></span></span>"
),
quillsJson.makeNewBook(e),
$("#" + e + "bookText").on("keyup", function () {
writableBookUpdate(e);
}),
$("#" + e + "pageNo").html(
"Page " +
(quillsJson.books[e].cPage + 1) +
" of " +
quillsJson.books[e].pages.length
);
}
function writableBookUpdate(e) {
quillsJson.updatePage(e, $("#" + e + "bookText").val()), generateCommand();
}
function createTellrawForm(e, t, a, o, n) {
(a = a || "ItemPane"),
void 0 == tellrawJson && (tellrawJson = new TellRawJson()),
createComponent(
void 0 != n ? (e += n) : e + (a = a || "ItemPane"),
"Pages",
{
type: "panel",
cssClass: "fLabel100",
panelID: e + "Pages",
format: "special",
tip: "written_book",
},
t
);
var s = "";
"Lore" == n &&
(s =
"<span class='fLabel100'></span><span><a href=\"javascript:tellrawJson.flipPage('" +
e +
"',-1)\" class='greenPlus' title='Go to previous page'>&#8678;</a><span id='" +
e +
"pageNo' class='pageAndSection'></span><a href=\"javascript:tellrawJson.flipPage('" +
e +
"',1)\" class='greenPlus' title='Go to next page'>&#8680;</a><a href=\"javascript:tellrawJson.addPage('" +
e +
"')\" class='greenPlus' title='Add a new page'>+</a><a href=\"javascript:deleteLoreLine('" +
e +
"')\" class='redX' title='Delete this page'>X</a><a href=\"javascript:tellrawJson.swapPage('" +
e +
"', -1)\" class='anchorButton' title='Swap with previous page'>&#8630</a><a href=\"javascript:tellrawJson.swapPage('" +
e +
"',1)\" class='anchorButton' title='Swap with next page'>&#8631</a></span><br>"),
$("#" + e + "Pages").html(
"<span id='" +
e +
"Setup' class='pageSetup'><br>" +
s +
"<span class='fLabel100'></span><span><a href=\"javascript:tellrawJson.flipSection('" +
e +
"',-1)\" class='greenPlus' title='Go to previous section'>&#8678;</a><span id='" +
e +
"sectionNo' class='pageAndSection'></span><a href=\"javascript:tellrawJson.flipSection('" +
e +
"',1)\" class='greenPlus' title='Go to next section'>&#8680;</a><a href=\"javascript:tellrawJson.addSection('" +
e +
"')\" class='greenPlus' title='Add a new section'>+</a><a href=\"javascript:deleteTellrawSection('" +
e +
"')\" class='redX' title='Delete this section'>X</a><a href=\"javascript:tellrawJson.swapSection('" +
e +
"', -1)\" class='anchorButton' title='Swap with previous section'>&#8630</a><a href=\"javascript:tellrawJson.swapSection('" +
e +
"',1)\" class='anchorButton' title='Swap with next section'>&#8631</a></span></span><br><span class='pagePreviewFrame'><span id='" +
e +
"Preview' class='tellrawPreview roundedDiv'></span></span>"
),
$("#" + e + "Setup").append(
"<br><span class='fLabel100'>component type</span><select id='" +
e +
"bookText_choice'><option value='text'>text</option></select>"
),
void 0 != o
? $("#" + e + "bookText_choice").append(
"<option value='translate'>translate</option>"
)
: $("#" + e + "bookText_choice").append(
"<option value='translate'>translate</option><option value='score'>score</option><option value='selector'>selector</option><option value='nbt'>nbt</option>"
),
$("#" + e + "Setup").append(
"<br><span class='fLabel100'>value</span><input type='text' id='" +
e +
"bookText_txt' class='tellrawUpdate bigTF'>" +
makeTip("json.value")
),
$("#" + e + "Setup").append(
"<br><span id='" + e + "extraComponents'></span>"
),
createComponent(
e + "Setup",
"color",
{
type: "makeSelect",
id: e + "color",
values: jsonColors,
format: "special",
cssClass: "fLabel100",
tip: "written_book",
eventClass: "jsonHexColorUpdate",
},
t
),
$("#" + e + "Setup").append(
"<span id='" +
e +
"_colsettings'><input id='" +
e +
"_color' value='FF0000' class='medTF' onchange='tellrawUpdate(\"" +
e +
"\")'></span>"
),
new jscolor.color(document.getElementById(e + "_color"), {}).fromString(
"FF0000"
),
$("#" + e + "_colsettings").hide(),
$(".jsonHexColorUpdate").on("change", function () {
jsonHexColorUpdate(e, tellrawJson.context);
}),
createComponent(
e + "Setup",
"font",
{
type: "text",
id: e + "font",
cssClass: "fLabel100",
format: "string",
tip: "written_book",
eventClass: "tellrawUpdate",
},
t
),
createComponent(
e + "Setup",
"jsonFormats",
{
label: " ",
type: "jsonFormats",
id: e,
cssClass: "fLabel100",
format: "special",
eventClass: "tellrawUpdate",
},
t
),
"tellraw" == currentCommand &&
(createComponent(
e + "Setup",
"clickEvent",
{
type: "choicetext",
id: e + "clickEvent",
values: [
"run_command",
"copy_to_clipboard",
"suggest_command",
"open_url",
],
format: "special",
fwClass: "bigTF",
cssClass: "fLabel100",
tip: "written_book",
eventClass: "tellrawUpdate",
},
t
),
createComponent(
e + "Setup",
"hoverEvent",
{
type: "choicetext",
id: e + "hoverEvent",
values: ["show_text", "show_item", "show_entity"],
format: "special",
cssClass: "fLabel100",
fwClass: "bigTF",
tip: "written_book",
eventClass: "tellrawUpdate",
},
t
),
createComponent(
e + "Setup",
"hoverEventFormat",
{
type: "panel",
panelID: e + "hoverEventFormat",
cssClass: "fLabel100",
fwClass: "bigTF",
eventClass: "tellrawUpdate",
},
t
),
makeHoverEventUI(e, "tellrawJson", "tellrawUpdate")),
$("#" + e + "bookText_choice").bind("change", function () {
"score" == $("#" + e + "bookText_choice").val()
? ($("#" + e + "extraComponents").html(
"<span class='fLabel100'>objective</span><input type='text' id='" +
e +
"objective' class='bigTF tellrawUpdate'>"
),
$(".tellrawUpdate").on("change keyup", function () {
tellrawUpdate(e);
}))
: "nbt" == $("#" + e + "bookText_choice").val()
? ($("#" + e + "extraComponents").html(
"<span class='fLabel100'>target type</span><select id='" +
e +
"targetType'><option value='entity'>entity</option><option value='block'>block</option><option value='storage'>storage</option></select><br><span id='" +
e +
"nbtTarget'></span>"
),
changeNBTTargetType(e, t),
bindTargetTypeChange(e, t))
: $("#" + e + "extraComponents").html(""),
$("#" + e + "bookText_txt").trigger("keyup");
}),
tellrawJson.makeNewTellraw(e),
$(".tellrawUpdate").on("change keyup", function () {
tellrawUpdate(e);
}),
displaySectionValues(e, tellrawJson.getSection(e), tellrawJson.context);
}
function bindTargetTypeChange(e, t) {
$("#" + e + "targetType").bind("change", function () {
changeNBTTargetType(e, t);
});
}
function changeNBTTargetType(e, t) {
"entity" == $("#" + e + "targetType").val()
? $("#" + e + "nbtTarget").html(
"<span class='fLabel100'>entity </span><input type='text' id='" +
e +
"nbtEntityTarget' class='tellrawUpdate bigTF'>"
)
: "storage" == $("#" + e + "targetType").val()
? $("#" + e + "nbtTarget").html(
"<span class='fLabel100'>storage </span><input type='text' id='" +
e +
"nbtStorageTarget' class='tellrawUpdate bigTF'>"
)
: ($("#" + e + "nbtTarget").html(
makeCoords(e + "BlockNBT", "Block", !0, !0)
),
$("#" + e + "nbtTarget span")
.removeClass("fLabel200")
.addClass("fLabel100"),
$("#" + e + "BlockNBT").addClass("tellrawUpdate")),
createComponent(
e + "nbtTarget",
"interpret",
{
id: e + "interpret",
type: "choice",
values: unsetTrueFalse,
cssClass: "fLabel100",
eventClass: "tellrawUpdate",
},
t
),
$(".tellrawUpdate").on("change keyup", function () {
tellrawUpdate(e);
}),
tellrawUpdate(e);
}
class TellRawJson extends Book {
constructor() {
super(), (this.context = "tellraw");
}
sectionsLengthForLine(e, t) {
return this.books[e].pages[t].length;
}
makeNewTellraw(e) {
(this.books[e] = { pages: [], cPage: 0, cSection: 0, cHoverEvent: 0 }),
this.books[e].pages.push([]),
this.books[e].pages[0].push(new Section()),
(this.books[e].pages[0][0].data.color = "unset");
}
getJsonForTellrawExtraStyle(e) {
var t = $.extend({}, this.books[e].pages[0][0].data),
a = this.getFirstFormats(t);
if (
(this.removeUnrequiredFormatting(a, t),
this.books[e].pages[0].length > 1)
) {
t.extra = [];
for (var o = 1; o < this.books[e].pages[0].length; o++)
t.extra.push($.extend({}, this.books[e].pages[0][o].data)),
this.removeUnrequiredFormatting(a, t.extra[o - 1]);
}
return JSON.stringify(t);
}
getJsonForTellraw(e) {
try {
if ("" == this.books[e].pages[0][0].data.text) return "";
var t = [this.books[e].pages[0][0].data],
a = this.getFirstFormats(t[0]);
if (
(this.removeUnrequiredFormatting(a, t[0]),
this.books[e].pages[0].length > 1)
) {
for (var o = 1; o < this.books[e].pages[0].length; o++)
"" != this.books[e].pages[0][o].data.text &&
(t.push(this.books[e].pages[0][o].data),
this.removeUnrequiredFormatting(a, t[t.length - 1]));
return removeUnsetFromJSON(JSON.stringify(t));
}
return removeUnsetFromJSON(JSON.stringify(t[0]));
} catch (e) {
return "";
}
}
getJsonForLore(e) {
try {
for (var t = "", a = 0; a < this.books[e].pages.length; a++) {
var o = [this.books[e].pages[a][0].data],
n = this.getFirstFormats(o[0]);
if (
(this.removeUnrequiredFormatting(n, o[0]),
this.books[e].pages[a].length > 1)
) {
o.extra = [];
for (var s = 1; s < this.books[e].pages[a].length; s++)
"" != this.books[e].pages[a][s].data.text &&
(o.push(this.books[e].pages[a][s].data),
this.removeUnrequiredFormatting(
n,
o[o.length - 1]
));
t +=
"," +
jsonConvert(
JSON.stringify(
removeUnsetFromJSON(JSON.stringify(o))
)
);
} else
"" != this.books[e].pages[a][0].data.text &&
(t +=
"," +
jsonConvert(
JSON.stringify(
removeUnsetFromJSON(JSON.stringify(o[0]))
)
));
}
return t;
} catch (e) {
return "";
}
}
getJsonForLootTableItemName(e) {
try {
if (
!this.books[e].pages[0][0].data.text &&
!this.books[e].pages[0][0].data.translate
)
return [];
var t = [removeUnsetFromObject(this.books[e].pages[0][0].data)],
a = this.getFirstFormats(t[0]);
if (
(this.removeUnrequiredFormatting(a, t[0]),
this.books[e].pages[0].length > 0)
) {
for (var o = 1; o < this.books[e].pages[0].length; o++)
("" == this.books[e].pages[0][o].data.text &&
"" == this.books[e].pages[0][o].data.translate) ||
(t.push(
removeUnsetFromObject(
this.books[e].pages[0][o].data
)
),
this.removeUnrequiredFormatting(a, t[t.length - 1]));
return t;
}
return removeUnsetFromObject(t[0]);
} catch (e) {
return [];
}
}
getJsonLoreForLootTables(e) {
try {
let s = [];
for (var t = 0; t < this.books[e].pages.length; t++) {
var a = [this.books[e].pages[t][0].data],
o = this.getFirstFormats(a[0]);
if (
(this.removeUnrequiredFormatting(o, a[0]),
this.books[e].pages[t].length > 1)
) {
a.extra = [];
for (var n = 1; n < this.books[e].pages[t].length; n++)
"" != this.books[e].pages[t][n].data.text &&
"" != this.books[e].pages[t][n].data.translate &&
(a.push(
removeUnsetFromObject(
this.books[e].pages[t][n].data
)
),
this.removeUnrequiredFormatting(
o,
a[a.length - 1]
));
s.push(a);
} else
"" != this.books[e].pages[t][0].data.text &&
"" != this.books[e].pages[t][0].data.translate &&
s.push(removeUnsetFromObject(a[0]));
}
return s;
} catch (e) {
return [];
}
}
}
function loadLoreFromNBT(e, t, a) {
for (var o = t, n = 0; n < o.length; n++) {
let t;
if (
(0 != n && tellrawJson.addPage(e),
void 0 !=
(t = a
? o[n]
: JSON.parse(
JSON.parse('"' + o[n] + '"'.replace(/\\[1]/g, ""))
)).extra)
) {
var s = t.extra;
delete t.extra, tellrawJson.updateSection(e, t);
for (var i = 0; i < s.length; i++)
tellrawJson.addSectionFromObject(e, new Section(s[i]));
} else if (Array.isArray(t)) {
for (var r = 0; r < t.length; r++)
tellrawJson.addSectionFromObject(e, new Section(t[r]));
tellrawJson.flipSection(e, 1), tellrawJson.deleteSection(e);
} else
tellrawJson.addSectionFromObject(e, new Section(t)),
tellrawJson.flipSection(e, 1),
tellrawJson.deleteSection(e);
}
tellrawJson.flipPage(e, 1);
}
function tellrawUpdate(e) {
var t = {},
a = replaceAll("\\n", "\n", $("#" + e + "bookText_txt").val());
if ("score" == $("#" + e + "bookText_choice").val())
t.score = { name: a, objective: $("#" + e + "objective").val() };
else if ("nbt" == $("#" + e + "bookText_choice").val()) {
if (((t.nbt = a), "entity" == $("#" + e + "targetType").val()))
t.entity = $("#" + e + "nbtEntityTarget").val();
else if ("storage" == $("#" + e + "targetType").val())
t.storage = $("#" + e + "nbtStorageTarget").val();
else {
var o = getCoordsString(e + "BlockNBT");
t.block = o[0] + " " + o[1] + " " + o[2];
}
1 == $("#" + e + "interpret").val()
? (t.interpret = !0)
: 0 == $("#" + e + "interpret").val() && (t.interpret = !1);
} else t[$("#" + e + "bookText_choice").val()] = a;
(t.font = $("#" + e + "font").val()),
"Hex Code" == $("#" + e + "color").val()
? (t.color = "#" + $("#" + e + "_color").val())
: (t.color = $("#" + e + "color").val()),
(t.bold = $("input[name='" + e + "bold']:checked").val()),
(t.italic = $("input[name='" + e + "italic']:checked").val()),
(t.underlined = $("input[name='" + e + "underlined']:checked").val()),
(t.strikethrough = $(
"input[name='" + e + "strikethrough']:checked"
).val()),
(t.obfuscated = $("input[name='" + e + "obfuscated']:checked").val()),
"hoverEvent" in
tellrawJson.books[e].pages[tellrawJson.books[e].cPage][
tellrawJson.books[e].cSection
].data &&
(t.hoverEvent =
tellrawJson.books[e].pages[tellrawJson.books[e].cPage][
tellrawJson.books[e].cSection
].data.hoverEvent),
"tellraw" == currentCommand &&
("show_text" == $("#" + e + "hoverEvent_choice").val()
? "hoverEvent" in t
? ((t.hoverEvent.action = "show_text"),
(t.hoverEvent.contents[
tellrawJson.books[e].cHoverEvent
] = {
text: replaceAll(
"\\n",
"\n",
$("#" + e + "hoverEvent_txt").val()
),
}),
(t.hoverEvent.contents[
tellrawJson.books[e].cHoverEvent
].font = $("#" + e + "hoverfont").val()),
"Hex Code" == $("#" + e + "hoverColor").val()
? (t.hoverEvent.contents[
tellrawJson.books[e].cHoverEvent
].color = "#" + $("#" + e + "hover_color").val())
: (t.hoverEvent.contents[
tellrawJson.books[e].cHoverEvent
].color = $("#" + e + "hoverColor").val()),
(t.hoverEvent.contents[
tellrawJson.books[e].cHoverEvent
].bold = $(
"input[name='" + e + "hoverbold']:checked"
).val()),
(t.hoverEvent.contents[
tellrawJson.books[e].cHoverEvent
].italic = $(
"input[name='" + e + "hoveritalic']:checked"
).val()),
(t.hoverEvent.contents[
tellrawJson.books[e].cHoverEvent
].underlined = $(
"input[name='" + e + "hoverunderlined']:checked"
).val()),
(t.hoverEvent.contents[
tellrawJson.books[e].cHoverEvent
].strikethrough = $(
"input[name='" + e + "hoverstrikethrough']:checked"
).val()),
(t.hoverEvent.contents[
tellrawJson.books[e].cHoverEvent
].obfuscated = $(
"input[name='" + e + "hoverobfuscated']:checked"
).val()))
: ((tellrawJson.books[e].cHoverEvent = 0),
(t.hoverEvent = {
action: "show_text",
contents: [
{
text: replaceAll(
"\\n",
"\n",
$("#" + e + "hoverEvent_txt").val()
),
},
],
}))
: (t.hoverEvent = {
action: $("#" + e + "hoverEvent_choice").val(),
contents: replaceAll(
"\\n",
"\n",
$("#" + e + "hoverEvent_txt").val()
),
})),
showHideHoverEventFormatting(e, tellrawJson),
"tellraw" == currentCommand &&
$("#" + e + "clickEvent_txt").val().length &&
(t.clickEvent = {
action: $("#" + e + "clickEvent_choice").val(),
value: $("#" + e + "clickEvent_txt").val(),
}),
tellrawJson.updateSection(e, t),
deferJSONOutput ||
(tellrawPreview(e),
hoverEventPreview(e, tellrawJson),
generateCommand());
}
function sectionJSONPreview(e, t, a, o, n, s) {
function i(e, t) {
return (
"true" == e ||
1 == e ||
((void 0 == e || "unset" == e) && ("true" == t || 1 == t))
);
}
var r =
"<span onClick=\"loadJSONPartFromPreview('" +
e +
"'," +
t +
"," +
a +
",'" +
s.context +
"')\" style='cursor: pointer;";
i(o.bold, n.bold) && (r += "font-weight:bold;"),
i(o.italic, n.italic) && (r += "font-style:italic;"),
i(o.strikethrough, n.strikethrough) &&
(r += "text-decoration:line-through;"),
t == s.books[e].cSection &&
a == s.books[e].cPage &&
(r += "border:solid 1px red;"),
void 0 == o.color || "unset" == o.color
? (r += "color:" + s.htmlColorMap[n.color] + ";'")
: "#" == o.color.charAt(0)
? (r += "color:" + o.color + ";'")
: (r += "color:" + s.htmlColorMap[o.color] + ";'");
var l,
c = "";
"clickEvent" in o &&
(c +=
"clickEvent: action=" +
o.clickEvent.action +
", value=" +
o.clickEvent.value),
c.length && (r += " title='" + c + "'"),
(r += ">"),
i(o.underlined, n.underlined) && (r += "<u>");
try {
l = replaceAll(
"\n",
"<br>",
(l =
o.text ||
o.translate ||
o.selector ||
o.nbt ||
o.score.name ||
"")
);
} catch (e) {
l = "";
}
return (
i(o.obfuscated, n.obfuscated)
? (r += (function (e) {
for (var t = "", a = 0; a < e.length; a++)
t += "\n" == e.charAt(a) ? "\n" : "*";
return t;
})(l))
: (r += l),
i(o.underlined, n.underlined) && (r += "</u>"),
(r += "</span>")
);
}
function loadJSONPartFromPreview(e, t, a, o) {
"book" == o
? ((booksJson.books[e].cPage = a),
(booksJson.books[e].cSection = t),
(booksJson.books[e].cHoverEvent = 0),
displaySectionValues(e, booksJson.getSection(e), o))
: "tellraw" == o
? ((tellrawJson.books[e].cPage = a),
(tellrawJson.books[e].cSection = t),
(tellrawJson.books[e].cHoverEvent = 0),
displaySectionValues(e, tellrawJson.getSection(e), o))
: "sign" == o &&
((signJson.books[e].cPage = a),
(signJson.books[e].cSection = t),
displaySectionValues(e, signJson.getSection(e), o));
}
function makeHoverEventUI(e, t, a) {
let o = "booksJson" == t ? "book" : "tellraw";
$("#" + e + "hoverEventFormat").html(
'Hover Text Formatting<br><span><a href="javascript:' +
t +
".flipHoverSection('" +
e +
"',-1)\" class='greenPlus' title='Go to previous section'>&#8678;</a><span id='" +
e +
"hoverSectionNo'></span><a href=\"javascript:" +
t +
".flipHoverSection('" +
e +
"',1)\" class='greenPlus' title='Go to next section'>&#8680;</a><a href=\"javascript:" +
t +
".addHoverSection('" +
e +
"')\" class='greenPlus' title='Add a new section'>+</a><a href=\"javascript:deleteHoverSection('" +
e +
"','" +
o +
"')\" class='redX' title='Delete this section'>X</a><a href=\"javascript:" +
t +
".swapHoverSection('" +
e +
"', -1)\" class='anchorButton' title='Swap with previous section'>&#8630</a><a href=\"javascript:" +
t +
".swapHoverSection('" +
e +
"',1)\" class='anchorButton' title='Swap with next section'>&#8631</a></span><br><span id='" +
e +
"HoverEventPreview' class='hoverPreview'>"
),
$("#" + e + "hoverEventFormat").addClass("roundedDiv"),
createComponent(
e + "hoverEventFormat",
"color",
{
type: "makeSelect",
id: e + "hoverColor",
values: jsonColors,
format: "special",
cssClass: "fLabel100",
tip: "written_book",
eventClass: "jsonHoverHexColorUpdate",
},
0
),
$("#" + e + "hoverEventFormat").append(
"<span id='" +
e +
"hoverColor_colsettings'><input id='" +
e +
"hover_color' value='FF0000' class='medTF' onchange='" +
o +
'Update("' +
e +
"\")'></span>"
),
new jscolor.color(
document.getElementById(e + "hover_color"),
{}
).fromString("FF0000"),
$("#" + e + "hoverColor_colsettings").hide(),
$(".jsonHoverHexColorUpdate").on("change", function () {
"Hex Code" == $("#" + e + "hoverColor").val()
? $("#" + e + "hoverColor_colsettings").show()
: $("#" + e + "hoverColor_colsettings").hide(),
"book" == o
? bookUpdate(e)
: "sign" == o
? signUpdate(e)
: tellrawUpdate(e);
}),
createComponent(
e + "hoverEventFormat",
"font",
{
type: "text",
id: e + "hoverfont",
cssClass: "fLabel100",
format: "string",
tip: "written_book",
eventClass: a,
},
0
),
createComponent(
e + "hoverEventFormat",
"jsonFormats",
{
label: " ",
type: "jsonFormats",
id: e + "hover",
cssClass: "fLabel100",
format: "special",
eventClass: a,
},
0
);
}
function showHideHoverEventFormatting(e, t) {
$("#" + e + "hoverEvent_txt") &&
("show_text" == $("#" + e + "hoverEvent_choice").val()
? $("#" + e + "hoverEventFormat").show()
: $("#" + e + "hoverEventFormat").hide());
}
function tellrawPreview(e) {
$("#" + e + "Preview").html("");
for (var t = 0; t < tellrawJson.books[e].pages.length; t++) {
for (
var a = tellrawJson.getLineSection(e, t, 0), o = 0;
o < tellrawJson.sectionsLengthForLine(e, t);
o++
) {
var n = tellrawJson.getLineSection(e, t, o);
$("#" + e + "Preview").append(
sectionJSONPreview(e, o, t, n, a, tellrawJson)
);
}
$("#" + e + "Preview").append("<br>");
}
}
function hoverEventPreview(e, t) {
$("#" + e + "hoverSectionNo").html(
t.books[e].cHoverEvent + 1 + " of " + t.hoverSectionsLength(e)
),
$("#" + e + "HoverEventPreview").html("");
let a = t.getLineSection(e, t.books[e].cPage, t.books[e].cSection);
if ("hoverEvent" in a && "contents" in a.hoverEvent)
for (let o = 0; o < a.hoverEvent.contents.length; o++)
$("#" + e + "HoverEventPreview").append(
hoverEventJSONPreview(
e,
o,
a.hoverEvent.contents[o],
a.hoverEvent.contents[0],
t
)
);
}
function loadJSONHoverPartFromPreview(e, t, a) {
"book" == a
? ((booksJson.books[e].cHoverEvent = t),
displaySectionValues(e, booksJson.getSection(e), a))
: "tellraw" == a &&
((tellrawJson.books[e].cHoverEvent = t),
displaySectionValues(e, tellrawJson.getSection(e), a));
}
function hoverEventJSONPreview(e, t, a, o, n) {
function s(e, t) {
return (
"true" == e ||
1 == e ||
((void 0 == e || "unset" == e) && ("true" == t || 1 == t))
);
}
var i,
r =
"<span onClick=\"loadJSONHoverPartFromPreview('" +
e +
"'," +
t +
",'" +
n.context +
"')\" style='cursor: pointer;";
s(a.bold, o.bold) && (r += "font-weight:bold;"),
s(a.italic, o.italic) && (r += "font-style:italic;"),
s(a.strikethrough, o.strikethrough) &&
(r += "text-decoration:line-through;"),
t == n.books[e].cHoverEvent && (r += "border:solid 1px red;"),
void 0 == a.color || "unset" == a.color
? (r += "color:" + n.htmlColorMap.white + ";'")
: "#" == a.color.charAt(0)
? (r += "color:" + a.color + ";'")
: (r += "color:" + n.htmlColorMap[a.color] + ";'"),
(r += ">"),
s(a.underlined, o.underlined) && (r += "<u>");
try {
i = replaceAll(
"\n",
"<br>",
(i =
a.text ||
a.translate ||
a.selector ||
a.nbt ||
a.score.name ||
"")
);
} catch (e) {
i = "";
}
return (
s(a.obfuscated, o.obfuscated)
? (r += (function (e) {
for (var t = "", a = 0; a < e.length; a++)
t += "\n" == e.charAt(a) ? "\n" : "*";
return t;
})(i))
: (r += i),
s(a.underlined, o.underlined) && (r += "</u>"),
(r += "</span>")
);
}
class Block {
constructor(e, t) {
(this.blockNBT = t || {}), (this.bType = e);
}
getBlockNBT(e) {
e = e || 0;
var t = "";
for (var a in this.blockNBT) t += getNBTforKey(a, this.blockNBT[a], e);
return (
"CustomName" in this.blockNBT &&
(t += getCustomNameAndColor("#CustomName", e)),
t.length ? "{" + t.substr(1) + "}" : t
);
}
generateForm(e) {
for (var t in ((e = e || 0), this.blockNBT))
createComponent("blockSpec" + e, t, this.blockNBT[t], e);
}
generateFormForFalling(e) {
for (var t in this.blockNBT)
createComponent("blockSpec" + e, t, this.blockNBT[t], e);
}
loadValue(e, t, a, o) {
var n = o || 0;
if ($("#" + t + n).length && void 0 != this.blockNBT[t])
if (
"text" == this.blockNBT[t].type ||
"choice" == this.blockNBT[t].type ||
"makeSelect" == this.blockNBT[t].type ||
"makeSelectWithIndexAndValues" == this.blockNBT[t].type ||
"makeSelectWithIndexes" == this.blockNBT[t].type
) {
if ("string" == this.blockNBT[t].format)
"Potion" == t
? $("#" + t + n).val(extractMinecraftID(a))
: $("#" + t + n).val(a);
else if (
"b" == this.blockNBT[t].format ||
"short" == this.blockNBT[t].format ||
"long" == this.blockNBT[t].format ||
"int" == this.blockNBT[t].format
)
$("#" + t + n).val(parseInt(a));
else if (
"f" == this.blockNBT[t].format ||
"d" == this.blockNBT[t].format
)
$("#" + t + n).val(parseFloat(a));
else if ("special" == this.blockNBT[t].format)
if ("Tags" == t) {
for (var s = "", i = 0; i < a.length; i++)
s += "," + a[i];
$("#Tags" + n).val(s.substr(1));
} else if ("CustomName" == t) {
var r = JSON.parse(JSON.parse('"' + a + '"'));
r.text && $("#CustomName0").val(r.text);
}
} else
"ticks" == this.blockNBT[t].type
? $("#" + t + n).val(a)
: "blockSelect" == this.blockNBT[t].type
? ($("#" + t + n).val(a), $("#" + t + n).trigger("change"))
: "RecordItem" == t &&
(showHide(t + n + "Pane", t + n + "SH"),
setupItemSlotForNBT(t + n, a, e));
else if ("Items" == t)
for (i = 0; i < a.length; i++) {
setupItemSlotForNBT(
replaceAll("b", "", a[i].Slot.val) + "Slot" + n,
a[i],
e
);
}
else if ("CustomName" == t) {
var l;
try {
l = JSON.parse(JSON.parse('"' + a + '"'));
} catch (e) {
l = JSON.parse(
JSON.parse(
'"' + a.replace(/"/g, '\\"').replace(/\\'/g, "'") + '"'
)
);
}
importTellrawJSON("CustomName" + n, l),
showHide(
"CustomName" + n + "EntityName",
"CustomName" + n + "EntityNameSH"
);
} else
void 0 != this.blockNBT[t] &&
"UUIDArray" == this.blockNBT[t].type &&
loadUUIDArrayNBT(t + n, a);
}
}
class Banner extends Block {
getBlockNBT(e) {
e = e || 0;
var t = $("#BlockEntityTag" + e).val();
return (
t.length &&
(-1 != t.indexOf("BlockEntityTag:") &&
(t = (t = (t = t.substr(
t.indexOf("BlockEntityTag:{")
)).replace("BlockEntityTag:{", "")).replace("}}", "")),
(t = "," + t)),
(t += getCustomNameAndColor("#CustomName", e)).length
? "{" + t.substr(1) + "}"
: t
);
}
}
class Beacon extends Block {
constructor(e) {
var t = statusEffects.slice();
t.splice(0, 1, [0, "None"]),
super(e, {
Lock: { type: "text", format: "string", tip: "block.Lock" },
Levels: { type: "text", format: "int", tip: e },
Primary: { type: "choice", values: t, format: "int", tip: e },
Secondary: { type: "choice", values: t, format: "int", tip: e },
});
}
}
class BlockWithSlots extends Block {
constructor(e, t, a) {
var o = {
CustomName: {
type: "customNameJSON",
format: "special",
tip: "block.CustomName",
},
Lock: { type: "text", format: "string", tip: "block.Lock" },
};
Object.assign(o, t);
for (var n = 0; n < a; n++)
o[n + "Slot"] = {
type: "itemselect",
format: "special",
hide: !0,
label: "Slot " + n,
};
super(e, o), (this.slots = a);
}
getBlockNBT(e) {
e = e || 0;
var t = "";
for (var a in this.blockNBT) t += getNBTforKey(a, this.blockNBT[a], e);
for (var o = "", n = 0; n < this.slots; n++) {
var s = getItemNBT(n + "Slot" + e);
"{}" != s && (o += ",{Slot:" + n + "b," + s.substr(1));
}
return (
o.length && (t += ",Items:[" + o.substr(1) + "]"),
(t += getCustomNameAndColor("#CustomName", e)).length
? "{" + t.substr(1) + "}"
: t
);
}
}
class BeeHiveNest extends Block {
constructor(e) {
initBeeHiveNestNBT(), super(e, beeHiveNestNBT);
}
setFlowerCoords(e, t, a) {}
getBlockNBT(e) {
let t = getFlowerCoords("FlowerPos", (e = e || 0));
return (t += getBeesForHiveNBT(e)).length ? "{" + t.substr(1) + "}" : t;
}
}
class campfire extends BlockWithSlots {
constructor(e, t, a) {
for (var o = {}, n = 0; n < a; n++)
(o[n + "Slot"] = {
type: "itemselect",
format: "special",
hide: !0,
label: "Slot " + n,
}),
(o[n + "CookingTime"] = {
type: "ticks",
format: "special",
tip: "campfire.CookingTime",
label: "CookingTime " + n,
}),
(o[n + "CookingTotalTime"] = {
type: "ticks",
format: "special",
tip: "campfire.CookingTotalTime",
label: "CookingTotalTime " + n,
});
super(e, o),
delete this.blockNBT.CustomName,
delete this.blockNBT.Lock,
(this.slots = a);
}
getBlockNBT(e) {
e = e || 0;
var t = "";
for (var a in this.blockNBT) t += getNBTforKey(a, this.blockNBT[a], e);
for (var o = "", n = "", s = "", i = 0; i < this.slots; i++) {
var r = getItemNBT(i + "Slot" + e);
"{}" != r && (s += ",{Slot:" + i + "b," + r.substr(1));
}
for (i = 0; i < this.slots; i++)
$("#" + i + "CookingTime" + e).val().length
? (o += "," + $("#" + i + "CookingTime" + e).val())
: (o += ",0"),
$("#" + i + "CookingTotalTime" + e).val().length
? (n += "," + $("#" + i + "CookingTotalTime" + e).val())
: (n += ",0");
return (
",0,0,0,0" != o && (t += ",CookingTimes:[I;" + o.substr(1) + "]"),
",0,0,0,0" != n &&
(t += ",CookingTotalTimes:[I;" + n.substr(1) + "]"),
s.length && (t += ",Items:[" + s.substr(1) + "]"),
t.length ? "{" + t.substr(1) + "}" : t
);
}
}
class BrewingStand extends Block {
constructor(e) {
for (
var t = {
CustomName: {
type: "customNameJSON",
format: "special",
tip: "block.CustomName",
},
Lock: { type: "text", format: "string", tip: "block.Lock" },
BrewTime: { type: "ticks", tip: e },
Fuel: { type: "text", format: "b", tip: e },
},
a = 0;
a < 5;
a++
)
t[a + "Slot"] = {
type: "itemselect",
format: "special",
hide: !0,
label: "Slot " + a,
};
super(e, t), (this.slots = 5);
}
}
function getCommandStatsFormNBT() {
return {
SuccessCountName: {
type: "text",
format: "string",
tip: "commandStats",
},
SuccessCountObjective: {
type: "text",
format: "string",
tip: "commandStats",
},
AffectedBlocksName: {
type: "text",
format: "string",
tip: "commandStats",
},
AffectedBlocksObjective: {
type: "text",
format: "string",
tip: "commandStats",
},
AffectedEntitiesName: {
type: "text",
format: "string",
tip: "commandStats",
},
AffectedEntitiesObjective: {
type: "text",
format: "string",
tip: "commandStats",
},
AffectedItemsName: {
type: "text",
format: "string",
tip: "commandStats",
},
AffectedItemsObjective: {
type: "text",
format: "string",
tip: "commandStats",
},
QueryResultName: {
type: "text",
format: "string",
tip: "commandStats",
},
QueryResultObjective: {
type: "text",
format: "string",
tip: "commandStats",
},
};
}
function getCommandBlockFieldsFormNBT() {
return {
CustomName: {
type: "customNameJSON",
format: "special",
tip: "block.CustomName",
},
Command: { type: "text", format: "string", tip: "command_block" },
SuccessCount: { type: "text", format: "int", tip: "command_block" },
TrackOutput: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "command_block",
},
powered: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "command_block",
},
auto: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "command_block",
},
conditionMet: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "command_block",
},
UpdateLastExecution: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "command_block",
},
LastExecution: { type: "text", format: "long", tip: "command_block" },
};
}
class CommandBlock extends Block {
constructor(e) {
super(e, {}),
(this.cbNBT = getCommandBlockFieldsFormNBT()),
(this.csNBT = getCommandStatsFormNBT()),
Object.assign(this.blockNBT, this.cbNBT),
Object.assign(this.blockNBT, this.csNBT);
}
getBlockNBT(e) {
e = e || 0;
var t = "";
for (var a in this.cbNBT) t += getNBTforKey(a, this.cbNBT[a], e);
var o = "";
for (var a in this.csNBT) o += getNBTforKey(a, this.csNBT[a], e);
return (
o.length && (t += ",CommandStats:{" + o.substr(1) + "}"),
(t += getCustomNameAndColor("#CustomName", e)).length
? "{" + t.substr(1) + "}"
: t
);
}
}
class EndGateway extends Block {
getBlockNBT(e) {
e = e || 0;
var t = "",
a = getNBTforKey("Age", this.blockNBT.Age, e);
a.length && (t += a),
(a = getNBTforKey("ExactTeleport", this.blockNBT.ExactTeleport, e))
.length && (t += a);
var o = getNBTforKey("X", this.blockNBT.X, e),
n = getNBTforKey("Y", this.blockNBT.Y, e),
s = getNBTforKey("Z", this.blockNBT.Z, e);
return (
0 != o.length &&
0 != n.length &&
0 != s.length &&
(t += ",ExitPortal:{" + o.substr(1) + n + s + "}"),
t.length ? "{" + t.substr(1) + "}" : t
);
}
}
class FlowerPot extends Block {
getBlockNBT(e) {
e = e || 0;
var t = "",
a = $("#Item" + e).val();
return (
-1 != a &&
((t = '{Item:"minecraft:'),
-1 == a.indexOf(":")
? (t += a + '"}')
: (t +=
a.split(":")[0] + '",Data:' + a.split(":")[1] + "}")),
t
);
}
}
class JukeBox extends Block {
getBlockNBT(e) {
var t = "",
a = getItemNBT("RecordItem" + (e = e || 0));
return (
"{}" != a && (t += ",RecordItem:" + a),
(t += getNBTforKey("Record", this.blockNBT.Record, e)).length
? "{" + t.substr(1) + "}"
: t
);
}
}
class Lectern extends Block {
getBlockNBT(e) {
var t = "",
a = getItemNBT("Book" + (e = e || 0));
return (
"{}" != a && (t += ",Book:" + a),
(t += getNBTforKey("Page", this.blockNBT.Page, e)).length
? "{" + t.substr(1) + "}"
: t
);
}
}
class MobSpawner extends Block {
constructor(e) {
super(e), initMobSpawnerNBT(), (this.blockNBT = mobSpawnerNBT);
}
getBlockNBT(e) {
e = e || 0;
var t = "";
for (var a in this.blockNBT) t += getNBTforKey(a, this.blockNBT[a], e);
return (t += getSpawnPotentailsNBT(e, !1)).length
? "{" + t.substr(1) + "}"
: t;
}
}
class HeadBlock extends Block {
getBlockNBT(e) {
e = e || 0;
var t = $("#SkullOwner" + e).val();
for (var a in (t.length &&
(t =
-1 != t.indexOf("SkullOwner:{Id:")
? "," +
(t = (t = (t = (t = (t = t.substr(
t.indexOf("SkullOwner:{Id:")
)).replace("SkullOwner:{Id:", "Owner:{Id:")).replace(
"}]}}}}]}",
"}]}}"
)).replace("}]}}}", "}]}}")).replace(" 1", ""))
: -1 != t.indexOf("Owner:{Id:")
? ",Owner:" +
extractSegment("{", "}", t.indexOf("Owner:") + 6, t)
: ',Owner:{Name:"' + t + '"}'),
this.blockNBT))
t += getNBTforKey(a, this.blockNBT[a], e);
return t.length ? "{" + t.substr(1) + "}" : t;
}
}
class Sign extends Block {
constructor(e) {
super(e, {}),
(this.csNBT = getCommandStatsFormNBT()),
Object.assign(this.blockNBT, this.csNBT);
}
getBlockNBT(e) {
e = e || 0;
var t = "",
a = "";
for (var o in this.csNBT) a += getNBTforKey(o, this.csNBT[o], e);
return (
a.length && (t += ",CommandStats:{" + a.substr(1) + "}"),
(t += signJson.getJsonForSign("blockSpec" + e + "SignPane")).length
? "{" + t.substr(1) + "}"
: t
);
}
generateForm(e) {
(e = e || 0),
$("#blockSpec" + e).append(
"<br><span id='blockSpec" + e + "ItemPane'></span>"
),
createSignForm("blockSpec" + e, e);
}
generateFormForFalling(e) {
this.generateForm(e);
}
}
class SignJson extends Book {
constructor() {
super(), (this.context = "sign");
}
sectionsLengthForLine(e, t) {
return this.books[e].pages[t].length;
}
makeNewSign(e) {
this.books[e] = { pages: [], cPage: 0, cSection: 0 };
for (var t = 0; t < 4; t++)
this.books[e].pages.push([]),
this.books[e].pages[t].push(new Section());
}
getJsonForSign(e) {
for (var t = "", a = 0, o = 0; o < this.books[e].pages.length; o++) {
var n = [this.books[e].pages[o][0].data],
s = this.getFirstFormats(n[0]);
if (
(this.removeUnrequiredFormatting(s, n[0]),
1 == this.books[e].pages[o].length &&
void 0 != this.books[e].pages[o][0].data.text &&
"" == this.books[e].pages[o][0].data.text &&
a++,
this.books[e].pages[o].length > 1)
) {
n.extra = [];
for (var i = 1; i < this.books[e].pages[o].length; i++)
"" != this.books[e].pages[o][i].data.text &&
(n.push(this.books[e].pages[o][i].data),
this.removeUnrequiredFormatting(s, n[n.length - 1]));
"" != this.books[e].pages[o][0].data.text &&
(t +=
",Text" +
(o + 1) +
":" +
jsonConvert(
JSON.stringify(
removeUnsetFromJSON(JSON.stringify(n))
)
));
} else
"" != this.books[e].pages[o][0].data.text &&
(t +=
",Text" +
(o + 1) +
":" +
jsonConvert(
JSON.stringify(
removeUnsetFromJSON(JSON.stringify(n[0]))
)
));
}
return 4 == a ? "" : t;
}
}
function removeUnsetFromJSON(e) {
var t = replaceAll(',"color":"unset"', "", e);
return (t = replaceAll(
',"hoverEvent":{"action":"show_text","contents":[{"text":""}]}',
"",
(t = replaceAll(
':"false"',
":false",
(t = replaceAll(
':"true"',
":true",
(t = replaceAll(
',"obfuscated":"unset"',
"",
(t = replaceAll(
',"strikethrough":"unset"',
"",
(t = replaceAll(
',"underlined":"unset"',
"",
(t = replaceAll(
',"italic":"unset"',
"",
(t = replaceAll(
',"bold":"unset"',
"",
(t = replaceAll(',"font":""', "", t))
))
))
))
))
))
))
))
));
}
function convert_contents_to_value(e) {
let t = replaceAll(
'hoverEvent":{"action":"show_text","contents',
'hoverEvent":{"action":"show_text","value',
e
);
return (t = replaceAll(
'hoverEvent":{"action":"show_entity","contents',
'hoverEvent":{"action":"show_entity","value',
(t = replaceAll(
'hoverEvent":{"action":"show_item","contents',
'hoverEvent":{"action":"show_item","value',
t
))
));
}
function convert_value_to_contents(e) {
if (null == e) return e;
let t = replaceAll(
'hoverEvent":{"action":"show_text","value',
'hoverEvent":{"action":"show_text","contents',
e
);
return (t = replaceAll(
'hoverEvent":{"action":"show_entity","value',
'hoverEvent":{"action":"show_entity","contents',
(t = replaceAll(
'hoverEvent":{"action":"show_item","value',
'hoverEvent":{"action":"show_item","contents',
t
))
));
}
function removeUnsetFromObject(e) {
for (key in e) "unset" == e[key] && delete e[key];
return e;
}
function createSignForm(e, t) {
void 0 == signJson && (signJson = new SignJson()),
$("#" + e + "ItemPane").append("<div id='" + e + "SignPane'></div>"),
createComponent(
(e += "SignPane"),
"Pages",
{
type: "panel",
cssClass: "fLabel100",
panelID: e + "Pages",
format: "special",
tip: "written_book",
},
t
),
$("#" + e + "Pages").append(
"<span class='pagePreviewFrame'><span><br><a href=\"javascript:signJson.flipPage('" +
e +
"',-1)\" class='greenPlus' title='Go to previous line'>&#8678;</a><span id='" +
e +
"pageNo'></span><a href=\"javascript:signJson.flipPage('" +
e +
"',1)\" class='greenPlus' title='Go to next line'>&#8680;</a><a href=\"javascript:signJson.swapPage('" +
e +
"', -1)\" class='anchorButton' title='Swap with previous line'>&#8630</a><a href=\"javascript:signJson.swapPage('" +
e +
"',1)\" class='anchorButton' title='Swap with next line'>&#8631</a></span><br><span id='" +
e +
"Preview' class='signPreview roundedDiv'></span></span><span id='" +
e +
"Setup' class='pageSetup'><br><span class='fLabel100'></span><span><a href=\"javascript:signJson.flipSection('" +
e +
"',-1)\" class='greenPlus' title='Go to previous section'>&#8678;</a><span id='" +
e +
"sectionNo'></span><a href=\"javascript:signJson.flipSection('" +
e +
"',1)\" class='greenPlus' title='Go to next section'>&#8680;</a><a href=\"javascript:signJson.addSection('" +
e +
"')\" class='greenPlus' title='Add a new section'>+</a><a href=\"javascript:deleteSignSection('" +
e +
"')\" class='redX' title='Delete this section'>X</a><a href=\"javascript:signJson.swapSection('" +
e +
"', -1)\" class='anchorButton' title='Swap with previous section'>&#8630</a><a href=\"javascript:signJson.swapSection('" +
e +
"',1)\" class='anchorButton' title='Swap with next section'>&#8631</a></span></span>"
),
$("#" + e + "Setup").append(
"<br><span class='fLabel100'>component type</span><select id='" +
e +
"bookText_choice'><option value='text'>text</option><option value='translate'>translate</option><option value='score'>score</option><option value='selector'>selector</option><option value='nbt'>nbt</option></select>"
),
$("#" + e + "Setup").append(
"<br><span class='fLabel100'>value</span><input type='text' id='" +
e +
"bookText_txt' class='signUpdate bigTF'>"
),
$("#" + e + "Setup").append(
"<br><span id='" + e + "extraComponents'></span>"
),
createComponent(
e + "Setup",
"color",
{
type: "makeSelect",
id: e + "color",
values: jsonColors,
format: "special",
cssClass: "fLabel100",
tip: "written_book",
eventClass: "jsonHexColorUpdate",
},
t
),
$("#" + e + "Setup").append(
"<span id='" +
e +
"_colsettings'><input id='" +
e +
"_color' value='FF0000' class='medTF' onchange='signUpdate(\"" +
e +
"\")'></span>"
),
new jscolor.color(document.getElementById(e + "_color"), {}).fromString(
"FF0000"
),
$("#" + e + "_colsettings").hide(),
$(".jsonHexColorUpdate").on("change", function () {
jsonHexColorUpdate(e, signJson.context);
}),
createComponent(
e + "Setup",
"font",
{
type: "text",
id: e + "font",
cssClass: "fLabel100",
format: "string",
tip: "written_book",
eventClass: "signUpdate",
},
t
),
createComponent(
e + "Setup",
"jsonFormats",
{
label: " ",
type: "jsonFormats",
id: e,
cssClass: "fLabel100",
format: "special",
eventClass: "signUpdate",
},
t
),
createComponent(
e + "Setup",
"clickEvent",
{
type: "choicetext",
id: e + "clickEvent",
values: ["run_command"],
format: "special",
fwClass: "bigTF",
cssClass: "fLabel100",
tip: "written_book",
eventClass: "signUpdate",
},
t
),
$("#" + e + "bookText_choice").bind("change", function () {
"score" == $("#" + e + "bookText_choice").val()
? ($("#" + e + "extraComponents").html(
"<span class='fLabel100'>objective</span><input type='text' id='" +
e +
"objective' class='bigTF signUpdate'>"
),
$(".signUpdate").on("change keyup", function () {
signUpdate(e);
}))
: "nbt" == $("#" + e + "bookText_choice").val()
? ($("#" + e + "extraComponents").html(
"<span class='fLabel100'>target type</span><select id='" +
e +
"targetType'><option value='entity'>entity</option><option value='block'>block</option><option value='storage'>storage</option></select><br><span id='" +
e +
"nbtTarget'></span>"
),
changeNBTTargetTypeSign(e, t),
bindTargetTypeChangeSign(e, t))
: $("#" + e + "extraComponents").html(""),
$("#" + e + "bookText_txt").trigger("keyup");
}),
signJson.makeNewSign(e),
$(".signUpdate").on("change keyup", function () {
signUpdate(e);
}),
displaySectionValues(e, signJson.getSection(e), signJson.context);
}
function bindTargetTypeChangeSign(e, t) {
$("#" + e + "targetType").bind("change", function () {
changeNBTTargetTypeSign(e, t);
});
}
function changeNBTTargetTypeSign(e, t) {
"entity" == $("#" + e + "targetType").val()
? $("#" + e + "nbtTarget").html(
"<span class='fLabel100'>entity </span><input type='text' id='" +
e +
"nbtEntityTarget' class='signUpdate bigTF'>"
)
: "storage" == $("#" + e + "targetType").val()
? $("#" + e + "nbtTarget").html(
"<span class='fLabel100'>storage </span><input type='text' id='" +
e +
"nbtStorageTarget' class='signUpdate bigTF'>"
)
: ($("#" + e + "nbtTarget").html(
"<span class='fLabel100'>block </span> X<input type='text' id='" +
e +
"nbtBlockTargetX' class='signUpdate smallTF'>Y<input type='text' id='" +
e +
"nbtBlockTargetY' class='signUpdate smallTF'>Z<input type='text' id='" +
e +
"nbtBlockTargetZ' class='tellrawUpdate smallTF'>"
),
$("#" + e + "nbtTarget").html(
makeCoords(e + "BlockNBT", "Block", !0, !0)
),
$("#" + e + "nbtTarget span")
.removeClass("fLabel200")
.addClass("fLabel100"),
$("#" + e + "BlockNBT").addClass("signUpdate")),
createComponent(
e + "nbtTarget",
"interpret",
{
id: e + "interpret",
type: "choice",
values: unsetTrueFalse,
cssClass: "fLabel100",
eventClass: "signUpdate",
},
t
),
$(".signUpdate").on("change keyup", function () {
signUpdate(e);
}),
signUpdate(e);
}
function signUpdate(e) {
var t = {},
a = replaceAll("\\n", "\n", $("#" + e + "bookText_txt").val());
if ("score" == $("#" + e + "bookText_choice").val())
t.score = { name: a, objective: $("#" + e + "objective").val() };
else if ("nbt" == $("#" + e + "bookText_choice").val()) {
if (((t.nbt = a), "entity" == $("#" + e + "targetType").val()))
t.entity = $("#" + e + "nbtEntityTarget").val();
else if ("storage" == $("#" + e + "targetType").val())
t.storage = $("#" + e + "nbtStorageTarget").val();
else {
var o = getCoordsString(e + "BlockNBT");
t.block = o[0] + " " + o[1] + " " + o[2];
}
1 == $("#" + e + "interpret").val()
? (t.interpret = !0)
: 0 == $("#" + e + "interpret").val() && (t.interpret = !1);
} else t[$("#" + e + "bookText_choice").val()] = a;
(t.font = $("#" + e + "font").val()),
"Hex Code" == $("#" + e + "color").val()
? (t.color = "#" + $("#" + e + "_color").val())
: (t.color = $("#" + e + "color").val()),
(t.bold = $("input[name='" + e + "bold']:checked").val()),
(t.italic = $("input[name='" + e + "italic']:checked").val()),
(t.underlined = $("input[name='" + e + "underlined']:checked").val()),
(t.strikethrough = $(
"input[name='" + e + "strikethrough']:checked"
).val()),
(t.obfuscated = $("input[name='" + e + "obfuscated']:checked").val()),
$("#" + e + "clickEvent_txt").val().length &&
(t.clickEvent = {
action: $("#" + e + "clickEvent_choice").val(),
value: $("#" + e + "clickEvent_txt").val(),
}),
signJson.updateSection(e, t),
deferJSONOutput || (signPreview(e), generateCommand());
}
function signPreview(e) {
$("#" + e + "Preview").html("");
for (var t = 0; t < 4; t++) {
for (
var a = signJson.getLineSection(e, t, 0), o = 0;
o < signJson.sectionsLengthForLine(e, t);
o++
) {
var n = signJson.getLineSection(e, t, o);
$("#" + e + "Preview").append(
sectionJSONPreview(e, o, t, n, a, signJson)
);
}
$("#" + e + "Preview").append("<br>");
}
}
function deleteSignSection(e) {
1 == signJson.sectionsLength(e)
? alertify.alert(
"MCStacker requires each line in a sign to have at least one section. So it aint gonna let you delete this section. Just leave it blank."
)
: displaySectionValues(e, signJson.deleteSection(e), signJson.context);
}
class area_effect_cloud extends Entity {
constructor(e, t) {
super(e, t);
var a = particles.slice();
a.unshift("unset"),
(this.entityNBT = {
MotionX: {
type: "text",
format: "special",
tip: "entity.Motion",
},
MotionY: {
type: "text",
format: "special",
tip: "entity.Motion",
},
MotionZ: {
type: "text",
format: "special",
tip: "entity.Motion",
},
Yaw: { type: "text", format: "special", tip: "entity" },
Pitch: { type: "text", format: "special", tip: "entity" },
NoGravity: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
UUID: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: "entity",
},
CustomName: {
type: "customNameJSON",
format: "special",
tip: "entity",
},
CustomNameVisible: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
Team: { type: "text", format: "string", tip: "mob" },
Tags: {
type: "text",
format: "special",
tip: "entity",
fwClass: "bigTF",
},
Particle: {
type: "makeSelect",
values: a,
format: "special",
tip: "area_effect_cloud",
align: "R",
},
ReapplicationDelay: {
type: "ticks",
tip: "area_effect_cloud",
align: "R",
},
Radius: {
type: "text",
format: "f",
tip: "area_effect_cloud",
align: "R",
},
RadiusPerTick: {
type: "text",
format: "f",
tip: "area_effect_cloud",
align: "R",
},
RadiusOnUse: {
type: "text",
format: "f",
tip: "area_effect_cloud",
align: "R",
},
Duration: {
type: "ticks",
tip: "area_effect_cloud",
align: "R",
},
DurationOnUse: {
type: "text",
format: "f",
tip: "area_effect_cloud",
align: "R",
},
Age: { type: "ticks", tip: "area_effect_cloud", align: "R" },
WaitTime: {
type: "ticks",
tip: "area_effect_cloud",
align: "R",
},
Owner: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: t,
},
Color: {
type: "colorChooser",
format: "long",
tip: "area_effect_cloud",
align: "R",
},
Potion: {
type: "makeSelectWithIndexAndValues",
values: potions,
format: "string",
tip: "area_effect_cloud",
align: "R",
},
Effects: {
type: "statusEffects",
format: "special",
tip: "area_effect_cloud",
align: "R",
},
});
}
getEntitySpecificCommand(e) {
var t = "";
for (var a in ("unset" != $("#Particle" + this.stackPos).val() &&
(t += ',Particle:"' + $("#Particle" + this.stackPos).val() + '"'),
this.entityNBT))
t += getNBTforKey(a, this.entityNBT[a], e);
return (
(t +=
getMotion(this.stackPos, "Motion") +
getRotation(this.stackPos) +
getTargetingTags(this.stackPos) +
getPassengersNBT(this.stackPos) +
getPotion("Potion", "Potion" + this.stackPos) +
getStatusEffectsNBT("Effects", "Effects" + this.stackPos)),
(t += getCustomNameAndColor("#CustomName", this.stackPos))
);
}
generateForm() {
super.generateForm();
}
}
class armor_stand extends Entity {
constructor(e, t) {
super(e, t),
(this.entityNBT = {
MotionX: {
type: "text",
format: "special",
tip: "entity.Motion",
},
MotionY: {
type: "text",
format: "special",
tip: "entity.Motion",
},
MotionZ: {
type: "text",
format: "special",
tip: "entity.Motion",
},
Yaw: { type: "text", format: "special", tip: "entity" },
Pitch: { type: "text", format: "special", tip: "entity" },
UUID: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: "entity",
},
CustomName: {
type: "customNameJSON",
format: "special",
tip: "entity",
},
CustomNameVisible: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
Team: { type: "text", format: "string", tip: "mob" },
Tags: {
type: "text",
format: "special",
tip: "entity",
fwClass: "bigTF",
},
NoGravity: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
Invulnerable: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
Fire: { type: "ticks", tip: "entity" },
Air: { type: "ticks", tip: "entity" },
Glowing: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
ShowArms: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "armor_stand",
align: "R",
},
Small: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "armor_stand",
align: "R",
},
Marker: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "armor_stand",
align: "R",
},
Invisible: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "armor_stand",
align: "R",
},
NoBasePlate: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "armor_stand",
align: "R",
},
PersistenceRequired: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "mob",
align: "R",
},
Health: { type: "text", format: "f", tip: "mob", align: "R" },
Holding: {
type: "itemselect",
format: "special",
hide: !0,
tip: "mob",
align: "R",
},
Offhand: {
type: "itemselect",
format: "special",
hide: !0,
tip: "mob",
align: "R",
},
Head: {
type: "itemselect",
format: "special",
hide: !0,
tip: "mob",
align: "R",
},
Body: {
type: "itemselect",
format: "special",
hide: !0,
tip: "mob",
align: "R",
},
Leg: {
type: "itemselect",
format: "special",
hide: !0,
tip: "mob",
align: "R",
},
Boot: {
type: "itemselect",
format: "special",
hide: !0,
tip: "mob",
align: "R",
},
}),
(this.poseparts = new Array(
"Body",
"LeftArm",
"RightArm",
"LeftLeg",
"RightLeg",
"Head"
));
}
getEntitySpecificCommand(e) {
var t = "";
for (var a in this.entityNBT)
t += getNBTforKey(a, this.entityNBT[a], e);
return (
(t +=
getMotion(this.stackPos, "Motion") +
getTargetingTags(this.stackPos) +
this.armorStandPose() +
this.armorStandDisabledSlotBitField() +
getPassengersNBT(this.stackPos) +
getRotation(this.stackPos) +
getHandAndArmorItmes(this.stackPos)),
(t += getCustomNameAndColor("#CustomName", this.stackPos))
);
}
loadPoseNBT(e) {
showHide("Pose" + this.stackPos, "Pose" + this.stackPos + "SH");
for (var t = 0; t < this.poseparts.length; t++)
void 0 != e[this.poseparts[t]] &&
($("#Pose" + this.stackPos + "_" + t + "_x").val(
parseFloat(e[this.poseparts[t]].val[0])
),
$("#Pose" + this.stackPos + "_" + t + "_y").val(
parseFloat(e[this.poseparts[t]].val[1])
),
$("#Pose" + this.stackPos + "_" + t + "_z").val(
parseFloat(e[this.poseparts[t]].val[2])
));
}
armorStandPose() {
for (
var e = "", t = new Array("x", "y", "z"), a = 0;
a < this.poseparts.length;
a++
) {
var o = "";
let s = !1;
for (var n = 0; n < t.length; n++)
"f" == o.charAt(o.length - 1) && (o += ","),
$("#Pose" + this.stackPos + "_" + a + "_" + t[n]).val()
.length > 0
? ((s = !0),
(o +=
$(
"#Pose" + this.stackPos + "_" + a + "_" + t[n]
).val() + "f"))
: (o += "0f");
s && (e += "," + this.poseparts[a] + ":[" + o + "]");
}
return e.length ? ",Pose:{" + e.substr(1) + "}" : e;
}
loadDisabledSlotsNBT(e) {
showHide(
"DisabledSlots" + this.stackPos,
"DisabledSlots" + this.stackPos + "SH"
);
var t = [],
a = 1,
o = [1, 256, 65536];
t.push(0);
for (var n = 0; n < 3; n++) {
a = o[n];
for (var s = 0; s < 6; s++) t.push(a), (a *= 2);
}
n = 2;
var i = 5;
for (s = t.length - 2; s >= 0; s--)
e >= t[s + 1] &&
((e -= t[s + 1]),
$(
"#DisabledSlot" +
this.stackPos +
"_" +
i +
"_" +
dsOperation[n]
).prop("checked", !0)),
--i < 0 && (n--, (i = 5));
}
armorStandDisabledSlotBitField() {
for (var e = 0, t = 0; t < 6; t++)
$("#DisabledSlot" + this.stackPos + "_" + t + "_remove").is(
":checked"
) && (e += 1 << (t + 0)),
$("#DisabledSlot" + this.stackPos + "_" + t + "_replace").is(
":checked"
) && (e += 1 << (t + 8)),
$("#DisabledSlot" + this.stackPos + "_" + t + "_place").is(
":checked"
) && (e += 1 << (t + 16));
return 0 != e ? ",DisabledSlots:" + e : "";
}
generateForm() {
super.generateForm(),
$("#entityPane" + this.stackPos + "R").append(
"<br><span class='fLabel200'>Pose</span>" +
mkShowHide(
"Pose" + this.stackPos,
"Pose" + this.stackPos + "SH"
) +
"<div id='Pose" +
this.stackPos +
"' class='PoseControl roundedDiv'></div>" +
makeTip("armor_stand", "Pose")
);
for (
var e = new Array(
"Body",
"Left Arm",
"Right Arm",
"Left Leg",
"Right Leg",
"Head"
),
t = new Array("x", "y", "z"),
a =
"<table class='aTable'><tr><td></td><td>X&nbsp;Rotation</td><td>Y&nbsp;Rotation</td><td>Z&nbspRotation</td></tr>",
o = 0;
o < e.length;
o++
) {
a += "<tr><td>" + e[o] + "</td>";
for (var n = 0; n < t.length; n++)
a +=
"<td><input type='text' class='smallTF' id='Pose" +
this.stackPos +
"_" +
o +
"_" +
t[n] +
"' title='" +
e[o] +
" " +
t[n].toUpperCase() +
" Rotation'></td>";
a += "</tr>";
}
(a +=
"</table>Import Pose<input type='text' id='importPose" +
this.stackPos +
"' class='bigTF'> " +
makeButton(
"Import",
"importPose(" + this.stackPos + ")",
"Import Generated Pose"
) +
makeTip("armor_stand", "ImportPose")),
showHide("Pose" + this.stackPos, "Pose" + this.stackPos + "SH"),
$("#Pose" + this.stackPos).html(a);
for (o = 0; o < e.length; o++)
for (n = 0; n < t.length; n++)
bindGenCom(
"Pose" + this.stackPos + "_" + o + "_" + t[n],
"keyup"
);
$("#entityPane" + this.stackPos + "R").append(
"<br><span class='fLabel200'>Disabled Slots</span>" +
mkShowHide(
"DisabledSlots" + this.stackPos,
"DisabledSlots" + this.stackPos + "SH"
) +
"<div id='DisabledSlots" +
this.stackPos +
"' class='DisabledSlotsControl roundedDiv'></div>" +
makeTip("armor_stand", "DisabledSlots")
);
var s =
"<table class='aTable'><tr><td><input type='checkbox' id='DisabledSlotAll" +
this.stackPos +
"' onClick='allDisabledSlots(" +
this.stackPos +
")'> </td><td width=60 align=left>All</td><td width=60 align=left>Remove</td><td width=60 align=left>Place</td></tr>";
for (o = 0; o < disabledSlots.length; o++) {
s += "<tr><td>" + disabledSlots[o] + "</td>";
for (n = 0; n < dsOperation.length; n++)
s +=
"<td><input type='checkbox' id='DisabledSlot" +
this.stackPos +
"_" +
o +
"_" +
dsOperation[n] +
"'></td>";
s += "</tr>";
}
(s += "</table>"),
showHide(
"DisabledSlots" + this.stackPos,
"DisabledSlots" + this.stackPos + "SH"
),
$("#DisabledSlots" + this.stackPos).html(s);
for (o = 0; o < disabledSlots.length; o++)
for (n = 0; n < dsOperation.length; n++)
bindGenCom(
"DisabledSlot" +
this.stackPos +
"_" +
o +
"_" +
dsOperation[n],
"change"
);
}
}
function importPose(e) {
let t = new Array(
"Body",
"LeftArm",
"RightArm",
"LeftLeg",
"RightLeg",
"Head"
),
a = $("#importPose" + e).val();
a = (a = extractSegment("{", "}", a.indexOf("Pose:") + 5, a)).substr(
1,
a.length - 2
);
for (var o = 0; o < t.length; o++) {
let n = a.indexOf(t[o]);
if (-1 != n) {
(part = extractSegment("[", "]", n + t[o].length + 1, a)),
(part = part.substr(1, part.length - 2));
let s = part.split(",");
$("#Pose" + e + "_" + o + "_x").val(parseFloat(s[0])),
$("#Pose" + e + "_" + o + "_y").val(parseFloat(s[1])),
$("#Pose" + e + "_" + o + "_z").val(parseFloat(s[2]));
} else
$("#Pose" + e + "_" + o + "_x").val(""),
$("#Pose" + e + "_" + o + "_y").val(""),
$("#Pose" + e + "_" + o + "_z").val("");
}
generateCommand();
}
function allDisabledSlots(e) {
$("#disableOutput").prop("checked", !0);
for (var t = 0; t < disabledSlots.length; t++)
for (var a = 0; a < dsOperation.length; a++)
$("#DisabledSlot" + e + "_" + t + "_" + dsOperation[a]).prop(
"checked",
$("#DisabledSlotAll" + e).is(":checked")
);
$("#disableOutput").prop("checked", !1), generateCommand();
}
class BreedableMob extends Mob {
constructor(e, t, a) {
super(e, t),
(this.breedNBT = {
InLove: { type: "ticks", tip: "breedable", align: "R" },
Age: { type: "ticks", tip: "breedable", align: "R" },
ForcedAge: { type: "ticks", tip: "breedable", align: "R" },
AgeLocked: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "breedable",
align: "R",
},
LoveCause: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: "breedable",
},
}),
void 0 != a && Object.assign(this.breedNBT, a);
}
generateForm() {
Object.assign(this.mobNBT, this.breedNBT), super.generateForm();
}
}
class tropical_fish extends Mob {
constructor(e, t, a) {
super(e, t),
(this.myNBT = {
Variant: {
type: "choice",
values: [
[0, "Random"],
[1, "Specified Below"],
],
format: "special",
tip: t,
align: "R",
},
Size: {
type: "choice",
values: [
[0, "Small"],
[1, "Big"],
],
format: "special",
align: "R",
},
Pattern: {
type: "makeSelect",
values: [0, 1, 2, 3, 4, 5],
format: "special",
align: "R",
},
BaseColor: {
type: "choice",
values: colours1,
format: "special",
align: "R",
},
PatternColor: {
type: "choice",
values: colours1,
format: "special",
align: "R",
},
FromBucket: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
align: "R",
},
}),
void 0 != a && Object.assign(this.myNBT, a);
}
generateForm() {
Object.assign(this.mobNBT, this.myNBT), super.generateForm();
}
getEntitySpecificCommand(e) {
if (0 == $("#Variant" + this.stackPos).val()) return super.getMobNBT();
var t = parseInt($("#Size" + this.stackPos).val());
return (
(t += 256 * parseInt($("#Pattern" + this.stackPos).val())),
(t += 65536 * parseInt($("#BaseColor" + this.stackPos).val())),
(t +=
16777216 * parseInt($("#PatternColor" + this.stackPos).val())),
super.getMobNBT() + ",Variant:" + t
);
}
loadVariantNBT(e) {
$("#Variant" + this.stackPos).val(1);
var t = Math.floor(e / 16777216),
a = e % 16777216;
$("#PatternColor" + this.stackPos).val(t),
(t = Math.floor(a / 65536)),
(a %= 65536),
$("#BaseColor" + this.stackPos).val(t),
(t = Math.floor(a / 256)),
(a %= 256),
$("#Pattern" + this.stackPos).val(t),
$("#Size" + this.stackPos).val(a);
}
}
class enderman extends Mob {
constructor(e, t, a) {
super(e, t);
}
generateForm() {
var e = "<br><span class='fLabel200'>Carry</span>";
e +=
"<select id='block" +
this.stackPos +
"' onchange='javascript:fallingBlockChange(" +
this.stackPos +
");'>";
for (var t = 0; t < tiles.length; t++)
e +=
"<option value='" +
tiles[t][0] +
"'>" +
tiles[t][1] +
"</option>";
(e +=
"</select><input type='text' id='block_filter" +
this.stackPos +
"' placeholder='Filter' class='medTF' onkeyup=\"updateFallingBlockOptions('block'," +
this.stackPos +
")\"><span id='blockSpec" +
this.stackPos +
"'></span>"),
super.generateForm(),
$("#entityPane" + this.stackPos + "R").append(e);
}
getEntitySpecificCommand(e) {
var t = "";
if (-1 != $("#block" + e).val()) {
if (
((t =
',carriedBlockState:{Name:"minecraft:' +
$("#block" + e).val() +
'"'),
$("#block" + e).val() in blockStates)
) {
var a = blockStates[$("#block" + e).val()],
o = "";
for (var n in a)
"unset" != $("#" + n + "BS" + e).val() &&
(o +=
"," + n + ':"' + $("#" + n + "BS" + e).val() + '"');
0 != o.length && (t += ",Properties:{" + o.substr(1) + "}");
}
t += "}";
}
return super.getEntitySpecificCommand() + t;
}
loadCarriedBlock(e) {
void 0 != e.Name &&
$("#Carry" + this.stackPos).val(extractMinecraftID(e.Name.val));
}
}
class zombie extends Mob {
constructor(e, t, a) {
super(e, t),
(this.myNBT = {
IsBaby: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "zombie",
align: "R",
},
CanBreakDoors: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "zombie",
align: "R",
},
}),
void 0 != a && Object.assign(this.myNBT, a);
}
generateForm() {
Object.assign(this.mobNBT, this.myNBT), super.generateForm();
}
getEntitySpecificCommand(e) {
var t = "";
if ("zombie_villager" == this.entityType) {
for (
var a = "", o = ["meeting_point", "home", "job_site"], n = 0;
n < o.length;
n++
)
$("#Memories" + this.stackPos + o[n] + "X").val().length &&
$("#Memories" + this.stackPos + o[n] + "Y").val().length &&
$("#Memories" + this.stackPos + o[n] + "Z").val().length &&
(a +=
',"minecraft:' +
o[n] +
'":{value:{pos:[I;' +
$("#Memories" + this.stackPos + o[n] + "X").val() +
"," +
$("#Memories" + this.stackPos + o[n] + "Y").val() +
"," +
$("#Memories" + this.stackPos + o[n] + "Z").val() +
'],dimension:"minecraft:' +
$("#Memories" + this.stackPos + o[n] + "Dim").val() +
'"}}');
a.length && (a = ",Brain:{memories:{" + a.substr(1) + "}}");
var s = "";
$("#Gossips" + this.stackPos + "Pane > .gossip").each(function (e) {
var t = this.id,
a = 'Type:"' + $("#" + t + "Type").val() + '"';
$("#" + t + "Value").val().length &&
(a += ",Value:" + $("#" + t + "Value").val());
let o = getUUIDArray(t + "Target");
o.length && (a += ",Target:" + o),
a.length && (s += ",{" + a + "}");
}),
s.length && (s = ",Gossips:[" + s.substr(1) + "]");
var i = "";
$("#Trades" + this.stackPos + "Pane > .trade").each(function (e) {
var t = this.id,
a = "";
-1 != $("#" + t + "rewardExp").val() &&
(a += ",rewardExp:" + $("#" + t + "rewardExp").val() + "b"),
$("#" + t + "maxUses").val().length &&
(a += ",maxUses:" + $("#" + t + "maxUses").val()),
$("#" + t + "uses").val().length &&
(a += ",uses:" + $("#" + t + "uses").val()),
$("#" + t + "xp").val().length &&
(a += ",xp:" + $("#" + t + "xp").val()),
$("#" + t + "priceMultiplier").val().length &&
(a +=
",priceMultiplier:" +
$("#" + t + "priceMultiplier").val() +
"f"),
$("#" + t + "specialPrice").val().length &&
(a +=
",specialPrice:" +
$("#" + t + "specialPrice").val()),
$("#" + t + "demand").val().length &&
(a += ",demand:" + $("#" + t + "demand").val());
var o = getItemNBT(t + "buy");
"{}" != o && (a += ",buy:" + o),
"{}" != (o = getItemNBT(t + "buyB")) && (a += ",buyB:" + o),
"{}" != (o = getItemNBT(t + "sell")) && (a += ",sell:" + o),
a.length && (i += ",{" + a.substr(1) + "}");
}),
$("#NoTrades" + e).is(":checked")
? (i = ",Offers:{}")
: i.length &&
(i = ",Offers:{Recipes:[" + i.substr(1) + "]}"),
(t = getVillagerData(e) + i + a + s);
} else "zombified_piglin" == this.entityType && (t = getAngryAt(e));
return super.getMobNBT() + t;
}
loadVillagerTradesNBT(e, t) {
if (void 0 != e.Recipes)
for (var a = e.Recipes.val, o = 0; o < a.length; o++) {
let e = "Trades" + this.stackPos + "Pane_Trade_" + o;
var n = a[o];
addTrade("Trades" + this.stackPos + "Pane"),
addTradeFromNBT(n, e, t);
}
else $("#NoTrades" + this.stackPos).prop("checked", !0);
}
}
class HorseMob extends BreedableMob {
constructor(e, t) {
if (
(super(e, t),
(this.myNBT = {
Bred: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "horse",
align: "R",
},
EatingHaystack: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "horse",
align: "R",
},
Tame: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "horse",
align: "R",
},
Temper: {
type: "text",
format: "int",
tip: "horse",
align: "R",
},
Owner: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: "mob.Owner",
},
}),
"llama" == this.entityType || "trader_llama" == this.entityType
? ((this.myNBT.Variant = {
type: "choice",
values: [
[-1, "unset"],
[0, "Creamy"],
[1, "White"],
[2, "Brown"],
[3, "Gray"],
],
format: "int",
tip: "llama",
align: "R",
}),
(this.myNBT.Strength = {
type: "choice",
values: [
[-1, "unset"],
[0, "0"],
[1, "1"],
[2, "2"],
[3, "3"],
[4, "4"],
[5, "5"],
],
format: "int",
tip: "llama",
align: "R",
}),
(this.myNBT.DecorItem = {
type: "makeSelect",
values: [
"unset",
"white_carpet",
"orange_carpet",
"magenta_carpet",
"light_blue_carpet",
"yellow_carpet",
"lime_carpet",
"pink_carpet",
"gray_carpet",
"light_gray_carpet",
"cyan_carpet",
"purple_carpet",
"blue_carpet",
"brown_carpet",
"green_carpet",
"red_carpet",
"black_carpet",
],
format: "special",
hasUnset: !0,
tip: "llama",
align: "R",
}))
: (this.myNBT.SaddleItem = {
type: "makeSelect",
values: ["unset", "none", "saddle"],
format: "special",
tip: "horse",
align: "R",
}),
"horse" == this.entityType)
)
(this.myNBT.Variant = {
type: "choice",
values: this.getVariantArray(),
format: "int",
tip: "horse",
align: "R",
}),
(this.myNBT.ArmorItem = {
type: "itemselect",
format: "special",
tip: "horse",
hide: !0,
addNoneAfterUnset: !0,
align: "R",
});
else if (
"mule" == this.entityType ||
"donkey" == this.entityType ||
"llama" == this.entityType ||
"trader_llama" == this.entityType
) {
"trader_llama" == this.entityType &&
(this.myNBT.DespawnDelay = {
type: "ticks",
tip: "trader_llama",
align: "R",
}),
(this.myNBT.ChestedHorse = {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "chested_horse",
align: "R",
});
for (var a = 2; a <= 16; a++)
this.myNBT[a + "Slot"] = {
type: "itemselect",
format: "special",
hide: !0,
label: "Slot " + a,
align: "R",
};
} else
"skeleton_horse" == this.entityType &&
((this.myNBT.SkeletonTrap = {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "skeleton_horse",
align: "R",
}),
(this.myNBT.SkeletonTrapTime = {
type: "ticks",
tip: "skeleton_horse",
align: "R",
}));
}
loadSaddleItemNBT(e) {
void 0 != e.id && "minecraft:saddle" == e.id.val
? $("#SaddleItem" + this.stackPos).val("saddle")
: $("#SaddleItem" + this.stackPos).val("none");
}
loadDecorItemNBT(e) {
void 0 != e.id &&
$("#DecorItem" + this.stackPos).val(extractMinecraftID(e.id.val));
}
getVariantArray() {
var e = new Array(
"White",
"Creamy",
"Chestnut",
"Brown",
"Black",
"Gray",
"Dark Brown"
),
t = new Array(
"None",
"White",
"White Field",
"White Dots",
"Black Dots"
),
a = [];
a.push([-1, "unset"]);
for (var o = 0; o < e.length; o++)
for (var n = 0; n < t.length; n++)
a.push([o + 256 * n, e[o] + " / " + t[n]]);
return a;
}
getEntitySpecificCommand(e) {
var t = "";
if (
"mule" == this.entityType ||
"donkey" == this.entityType ||
"llama" == this.entityType ||
"trader_llama" == this.entityType
) {
for (var a = 2; a <= 16; a++) {
var o = getItemNBT(a + "Slot" + e);
"{}" != o && (t += ",{Slot:" + a + "b," + o.substr(1));
}
t.length && (t = ",Items:[" + t.substr(1) + "]");
}
return (
"llama" == this.entityType || "trader_llama" == this.entityType
? "unset" != $("#DecorItem" + this.stackPos).val() &&
(t +=
',DecorItem:{id:"minecraft:' +
$("#DecorItem" + this.stackPos).val() +
'",Count:1b}')
: "unset" != $("#SaddleItem" + this.stackPos).val() &&
("none" == $("#SaddleItem" + this.stackPos).val()
? (t += ",SaddleItem:{}")
: (t +=
',SaddleItem:{id:"minecraft:' +
$("#SaddleItem" + this.stackPos).val() +
'",Count:1b}')),
"horse" == this.entityType &&
"-1" != $("#ArmorItem" + this.stackPos).val() &&
("none" == $("#ArmorItem" + this.stackPos).val()
? (t += ",ArmorItem:{}")
: (t +=
",ArmorItem:" +
getItemNBT("ArmorItem" + this.stackPos))),
super.getMobNBT() + t
);
}
generateForm() {
Object.assign(this.breedNBT, this.myNBT), super.generateForm();
}
}
class Fox extends BreedableMob {
constructor(e, t) {
super(e, t),
(this.myNBT = {
Owner: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: "mob.Owner",
},
Sitting: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "tameable",
align: "R",
},
Sleeping: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
align: "R",
},
Crouching: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
align: "R",
},
Type: {
type: "choice",
values: [
[-1, "unset"],
["red", "Red"],
["snow", "Snow"],
],
format: "string",
tip: t,
align: "R",
},
Trusted: {
type: "panel",
label: "Trusted",
panelID: "trusted" + e,
tip: t,
align: "R",
},
});
}
generateForm() {
Object.assign(this.breedNBT, this.myNBT),
super.generateForm(),
$("#trusted" + this.stackPos).html(
"<a href=\"javascript:addFoxTrusts('Trusts'," +
this.stackPos +
")\" class='greenPlus'>+</a>" +
makeTip("fox.Trusted")
);
}
getEntitySpecificCommand(e) {
var t = "";
return (
$("#trusted" + e + " > .foxTrust").each(function (e) {
var a = this.id;
let o = getUUIDArray(a);
o.length && (t += "," + o);
}),
t.length && (t = ",Trusted:[" + t.substr(1) + "]"),
super.getMobNBT() + t
);
}
}
function addFoxTrusts(e, t) {
let a = 0;
for (; $("#" + e + t + "_" + a).length; ) a++;
$("#trusted" + t).append(
"<span id='" +
e +
t +
"_" +
a +
"' class='foxTrust'><span class='fLabel200'></span></span>"
),
createComponent(
e + t + "_" + a,
"Trusts UUID",
{
id: "Trusts" + t + "_" + a,
type: "UUIDArray",
format: "intArray",
align: "R",
},
t
),
$("#" + e + t + "_" + a).append(
"<a href=\"javascript:removeContainer('" +
e +
t +
"_" +
a +
"')\" class='redX'>x</a>"
);
}
class Bee extends BreedableMob {
constructor(e, t) {
super(e, t),
(this.myNBT = {
HivePosX: {
type: "text",
format: "special",
align: "R",
tip: t,
},
HivePosY: { type: "text", format: "special", align: "R" },
HivePosZ: { type: "text", format: "special", align: "R" },
FlowerPosX: {
type: "text",
format: "special",
align: "R",
tip: t,
},
FlowerPosY: { type: "text", format: "special", align: "R" },
FlowerPosZ: { type: "text", format: "special", align: "R" },
HasNectar: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
align: "R",
},
HasStung: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
align: "R",
},
TicksSincePollination: {
type: "ticks",
format: "int",
tip: t,
align: "R",
},
CannotEnterHiveTicks: {
type: "ticks",
format: "int",
tip: t,
align: "R",
},
CropsGrownSincePollination: {
type: "text",
format: "int",
tip: t,
align: "R",
},
AngerTime: { type: "ticks", format: "int", tip: t, align: "R" },
AngryAt: {
type: "UUIDArray",
format: "special",
align: "R",
tip: t,
},
});
}
loadFlowerOrHovePost(e, t) {
$("#" + t + "X" + this.stackPos).val(e.X.val),
$("#" + t + "Y" + this.stackPos).val(e.Y.val),
$("#" + t + "Z" + this.stackPos).val(e.Z.val);
}
generateForm() {
Object.assign(this.breedNBT, this.myNBT), super.generateForm();
}
getCoords(e) {
return $("#" + e + "X" + this.stackPos).val().length &&
$("#" + e + "Y" + this.stackPos).val().length &&
$("#" + e + "Z" + this.stackPos).val().length
? "," +
e +
":{X:" +
$("#" + e + "X" + this.stackPos).val() +
",Y:" +
$("#" + e + "Y" + this.stackPos).val() +
",Z:" +
$("#" + e + "Z" + this.stackPos).val() +
"}"
: "";
}
getEntitySpecificCommand(e) {
return (
super.getMobNBT() +
getAngryAt(e) +
this.getCoords("HivePos") +
this.getCoords("FlowerPos")
);
}
}
class Piglin extends Mob {
constructor(e, t, a) {
super(e, t, a);
}
getEntitySpecificCommand(e) {
let t = "",
a = "";
return (
$("#Inventory" + e + "MultiItemPane > .itemSelectControl").each(
function (e) {
var t = this.id.substr(0, this.id.lastIndexOf("Pane"));
"-1" != $("#" + t).val() && (a += "," + getItemNBT(t));
}
),
a.length && (t += ",Inventory:[" + a.substr(1) + "]"),
t + super.getMobNBT()
);
}
loadPiglinInventory(e, t, a) {
let o = "Inventory" + a + "MultiItem";
showHide(o + "Pane", o + "PaneSH");
for (let a = 0; a < t.length; a++)
addMultiItem(o + "Pane", !1),
showHide(o + "Pane_" + a + "Pane", o + "Pane_" + a + "PaneSH"),
setupItemSlotForNBT(o + "Pane_" + a, t[a], e);
}
}
class villager extends BreedableMob {
constructor(e, t) {
super(e, t),
(this.tradeCounter = 0),
(this.myNBT = {
profession: {
type: "makeSelect",
values: [
"unset",
"none",
"armorer",
"butcher",
"cartographer",
"cleric",
"farmer",
"fisherman",
"fletcher",
"leatherworker",
"librarian",
"mason",
"nitwit",
"shepherd",
"toolsmith",
"weaponsmith",
],
format: "special",
tip: "villager",
align: "R",
},
type: {
type: "makeSelect",
values: [
"unset",
"desert",
"jungle",
"plains",
"savanna",
"snow",
"swamp",
"taiga",
],
format: "special",
tip: "villager",
align: "R",
},
level: {
type: "makeSelect",
values: ["unset", 1, 2, 3, 4, 5, 99],
format: "special",
tip: "villager",
align: "R",
},
Willing: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "villager",
align: "R",
},
LastRestock: {
type: "text",
format: "int",
tip: "villager",
align: "R",
},
Xp: {
type: "text",
format: "int",
tip: "villager",
align: "R",
},
Trades: {
type: "villTrade",
format: "special",
tip: "villager",
align: "R",
},
Memories: {
type: "memories",
format: "special",
tip: "villager.memories",
align: "R",
},
Gossips: {
type: "gossips",
format: "special",
tip: "villager.gossips",
align: "R",
},
NoTrades: {
label: "Untradable",
type: "cb",
format: "special",
tip: "villager",
align: "R",
},
});
for (var a = 0; a < 8; a++)
this.myNBT[a + "Inv"] = {
type: "itemselect",
format: "special",
hide: !0,
label: "Inventory " + a,
align: "R",
tip: "villager.Inventory",
};
"wandering_trader" == t &&
(delete this.myNBT.type,
delete this.myNBT.profession,
(this.myNBT.DespawnDelay = {
type: "ticks",
tip: "wandering_trader",
align: "R",
}),
(this.myNBT.WanderTargetX = {
type: "text",
format: "special",
tip: "wandering_trader.WanderTarget",
align: "R",
}),
(this.myNBT.WanderTargetY = {
type: "text",
format: "special",
align: "R",
}),
(this.myNBT.WanderTargetZ = {
type: "text",
format: "special",
align: "R",
}));
}
loadVillagerTradesNBT(e, t) {
if (void 0 != e.Recipes)
for (var a = e.Recipes.val, o = 0; o < a.length; o++) {
let e = "Trades" + this.stackPos + "Pane_Trade_" + o;
var n = a[o];
addTrade("Trades" + this.stackPos + "Pane"),
addTradeFromNBT(n, e, t);
}
else $("#NoTrades" + this.stackPos).prop("checked", !0);
}
loadWanderTargetNBT(e) {
$("#WanderTargetX" + this.stackPos).val(parseInt(e.X.val)),
$("#WanderTargetY" + this.stackPos).val(parseInt(e.Y.val)),
$("#WanderTargetZ" + this.stackPos).val(parseInt(e.Z.val));
}
getEntitySpecificCommand(e) {
for (var t = "", a = 0; a < 8; a++) {
var o = getItemNBT(a + "Inv" + e);
"{}" != o && (t += ",{" + o.substr(1));
}
t.length && (t = ",Inventory:[" + t.substr(1) + "]");
var n = "",
s = "";
if ("villager" == this.entityType) {
var i = ["meeting_point", "home", "job_site"];
for (a = 0; a < i.length; a++)
$("#Memories" + this.stackPos + i[a] + "X").val().length &&
$("#Memories" + this.stackPos + i[a] + "Y").val().length &&
$("#Memories" + this.stackPos + i[a] + "Z").val().length &&
(n +=
',"minecraft:' +
i[a] +
'":{value:{pos:[I;' +
$("#Memories" + this.stackPos + i[a] + "X").val() +
"," +
$("#Memories" + this.stackPos + i[a] + "Y").val() +
"," +
$("#Memories" + this.stackPos + i[a] + "Z").val() +
'],dimension:"minecraft:' +
$("#Memories" + this.stackPos + i[a] + "Dim").val() +
'"}}');
n.length && (n = ",Brain:{memories:{" + n.substr(1) + "}}"),
$("#Gossips" + this.stackPos + "Pane > .gossip").each(function (
e
) {
var t = this.id,
a = 'Type:"' + $("#" + t + "Type").val() + '"';
$("#" + t + "Value").val().length &&
(a += ",Value:" + $("#" + t + "Value").val());
let o = getUUIDArray(t + "Target");
o.length && (a += ",Target:" + o),
a.length && (s += ",{" + a + "}");
}),
s.length && (s = ",Gossips:[" + s.substr(1) + "]");
}
var r = "";
$("#Trades" + this.stackPos + "Pane > .trade").each(function (e) {
let t = getTradeNBT(this.id);
t.length && (r += ",{" + t.substr(1) + "}");
}),
$("#NoTrades" + e).is(":checked")
? (r = ",Offers:{}")
: r.length && (r = ",Offers:{Recipes:[" + r.substr(1) + "]}");
var l = "";
return (
"wandering_trader" == this.entityType &&
(l = getTargetCompound(this.stackPos, "WanderTarget")),
super.getMobNBT() + l + getVillagerData(e) + r + n + s + t
);
}
generateForm() {
Object.assign(this.mobNBT, this.myNBT), super.generateForm();
}
}
function getVillagerData(e) {
let t = "";
return (
"unset" != $("#level" + e).val() &&
(t += ",level:" + $("#level" + e).val()),
$("#profession" + e).length &&
"unset" != $("#profession" + e).val() &&
(t += ',profession:"minecraft:' + $("#profession" + e).val() + '"'),
$("#type" + e).length &&
"unset" != $("#type" + e).val() &&
(t += ',type:"minecraft:' + $("#type" + e).val() + '"'),
t.length > 0 ? ",VillagerData:{" + t.substr(1) + "}" : t
);
}
function loadVillagerData(e, t) {
void 0 != e.type && $("#type" + t).val(extractMinecraftID(e.type.val)),
void 0 != e.profession &&
$("#profession" + t).val(extractMinecraftID(e.profession.val)),
void 0 != e.level && $("#level" + t).val(e.level.val);
}
class small_fireball extends SimpleEntity {
constructor(e, t) {
super(e, t),
(this.myNBT = {
directionX: {
type: "text",
format: "special",
tip: "projectile.direction",
align: "R",
},
directionY: {
type: "text",
format: "special",
tip: "projectile.direction",
align: "R",
},
directionZ: {
type: "text",
format: "special",
tip: "projectile.direction",
align: "R",
},
powerX: {
type: "text",
format: "special",
tip: "projectile.power",
align: "R",
},
powerY: {
type: "text",
format: "special",
tip: "projectile.power",
align: "R",
},
powerZ: {
type: "text",
format: "special",
tip: "projectile.power",
align: "R",
},
life: { type: "ticks", tip: "projectile.life", align: "R" },
}),
("small_fireball" != t && "fireball" != t) ||
Object.assign(this.myNBT, {
Item: {
type: "itemselect",
format: "special",
hide: !1,
tip: "projectile",
align: "R",
},
}),
delete this.entityNBT.MotionX,
delete this.entityNBT.MotionY,
delete this.entityNBT.MotionZ;
}
getEntitySpecificCommand(e) {
var t = getItemNBT("Item" + e),
a = "{}" != t ? ",Item:" + t : "";
return this.getEntityNBT() + a;
}
getEntityNBT() {
var e = "";
for (var t in this.entityNBT)
e += getNBTforKey(t, this.entityNBT[t], this.stackPos);
return (
(e += getMotion(this.stackPos, "direction")),
(e += getMotion(this.stackPos, "power")),
(e += getTargetingTags(this.stackPos)),
(e += getPassengersNBT(this.stackPos)),
(e += getCustomNameAndColor("#CustomName", this.stackPos))
);
}
generateForm() {
Object.assign(this.entityNBT, this.myNBT), super.generateForm();
}
}
class fireball extends small_fireball {
constructor(e, t) {
super(e, t),
(this.fbNBT = {
ExplosionPower: { type: "text", format: "int", align: "R" },
});
}
generateForm() {
Object.assign(this.entityNBT, this.fbNBT), super.generateForm();
}
}
class ThrownThings extends SimpleEntity {
constructor(e, t, a) {
super(e, t),
(this.myNBT = {
Owner: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: "projectile.Owner",
},
}),
void 0 != a && Object.assign(this.myNBT, a);
}
generateForm() {
Object.assign(this.entityNBT, this.myNBT), super.generateForm();
}
getEntitySpecificCommand(e) {
var t = getItemNBT("Item" + e),
a = "{}" != t ? ",Item:" + t : "";
return super.getEntityNBT() + a;
}
}
class potion extends ThrownThings {
constructor(e, t) {
super(e, t),
(this.myNBT = {
Owner: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: "projectile.Owner",
},
Potion: {
type: "makeSelectWithIndexAndValues",
values: potions,
format: "special",
tip: t,
align: "R",
},
Type: {
type: "choice",
values: [
["splash_potion", "Splash"],
["lingering_potion", "Lingering"],
],
format: "special",
tip: t,
align: "R",
},
CustomPotionEffects: {
type: "statusEffects",
format: "special",
tip: t,
align: "R",
},
CustomPotionColor: {
type: "colorChooser",
format: "special",
tip: t,
align: "R",
},
});
}
getEntitySpecificCommand(e) {
var t =
getPotion("Potion", "Potion" + this.stackPos) +
getColorInteger(
"CustomPotionColor" + this.stackPos,
"CustomPotionColor"
) +
getStatusEffectsNBT(
"CustomPotionEffects",
"CustomPotionEffects" + this.stackPos
);
return (
t.length &&
(t =
',Item:{id:"minecraft:' +
$("#Type" + this.stackPos).val() +
'",Count:1b,tag:{' +
t.substr(1) +
"}}"),
this.getEntityNBT() + t
);
}
loadPotionNBT(e) {
if (
(void 0 != e.id &&
$("#Type" + this.stackPos).val(extractMinecraftID(e.id.val)),
void 0 != e.tag && void 0 != e.tag)
) {
var t = e.tag.val;
void 0 != t.Potion &&
$("#Potion" + this.stackPos).val(
extractMinecraftID(t.Potion.val)
),
void 0 != t.CustomPotionColor &&
loadColorIntNBT(
"CustomPotionColor" + this.stackPos,
t.CustomPotionColor.val
),
void 0 != t.CustomPotionEffects &&
loadCustomEffectsNBT(
"CustomPotionEffects" + this.stackPos,
t.CustomPotionEffects.val
);
}
}
generateForm() {
Object.assign(this.entityNBT, this.myNBT), super.generateForm();
}
}
class arrow extends SimpleEntity {
constructor(e, t) {
super(e, t),
(this.myNBT = {
pickup: {
type: "choice",
values: [
[-1, "unset"],
["0", "can't be picked up by players"],
[
"1",
"can be picked up by players in survival or creative",
],
["2", "can only be picked up by players in creative"],
],
format: "b",
tip: "arrow",
align: "R",
},
player: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "arrow",
align: "R",
},
Owner: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: "projectile.Owner",
},
life: { type: "ticks", tip: "arrow", align: "R" },
damage: { type: "text", format: "d", tip: "arrow", align: "R" },
shake: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "arrow",
align: "R",
},
inGround: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "arrow",
align: "R",
},
crit: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "arrow",
align: "R",
},
ShotFromCrossbow: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "arrow",
align: "R",
},
PierceLevel: {
type: "text",
format: "b",
tip: "arrow",
align: "R",
},
SoundEvent: {
type: "makeSelect",
values: ["unset"].concat(soundList),
format: "special",
tip: "arrow",
align: "R",
},
}),
"arrow" == t
? Object.assign(this.myNBT, {
Color: {
type: "colorChooser",
format: "long",
tip: "arrow",
align: "R",
},
Potion: {
type: "makeSelectWithIndexAndValues",
values: potions,
format: "string",
tip: "arrow",
align: "R",
},
CustomPotionEffects: {
type: "statusEffects",
format: "special",
tip: "arrow",
align: "R",
},
})
: "spectral_arrow" == t &&
Object.assign(this.myNBT, {
Duration: {
type: "ticks",
tip: "spectral_arrow",
align: "R",
},
});
}
getEntitySpecificCommand(e) {
let t = "";
"arrow" == this.entityType &&
(t +=
getStatusEffectsNBT(
"CustomPotionEffects",
"CustomPotionEffects" + this.stackPos
) + getPotion("Potion", "Potion" + this.stackPos));
let a = $("#SoundEvent" + this.stackPos).val();
return (
(a = "unset" == a ? "" : ',SoundEvent:"' + a + '"'),
this.getEntityNBT() + a + t
);
}
generateForm() {
Object.assign(this.entityNBT, this.myNBT), super.generateForm();
}
}
class trident extends SimpleEntity {
constructor(e, t) {
super(e, t),
(this.myNBT = {
pickup: {
type: "choice",
values: [
[-1, "unset"],
["0", "can't be picked up by players"],
[
"1",
"can be picked up by players in survival or creative",
],
["2", "can only be picked up by players in creative"],
],
format: "b",
tip: t,
align: "R",
},
Owner: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: "projectile.Owner",
},
player: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
align: "R",
},
life: { type: "ticks", tip: t, align: "R" },
damage: { type: "text", format: "d", tip: t, align: "R" },
shake: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
align: "R",
},
inGround: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
align: "R",
},
crit: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
align: "R",
},
Trident: {
type: "itemselect",
format: "special",
hide: !1,
tip: "item",
align: "R",
},
});
}
getEntitySpecificCommand(e) {
var t = getItemNBT("Trident" + e);
return "{}" != t
? this.getEntityNBT() + ",Trident:" + t
: this.getEntityNBT();
}
generateForm() {
Object.assign(this.entityNBT, this.myNBT), super.generateForm();
}
}
class firework_rocket extends SimpleEntity {
constructor(e, t) {
super(e, t),
(this.myNBT = {
Owner: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: "projectile.Owner",
},
Life: { type: "ticks", tip: t, align: "R" },
LifeTime: { type: "ticks", tip: t, align: "R" },
Explosion: {
type: "fwExplosion",
format: "special",
tip: t,
align: "R",
},
});
}
getEntitySpecificCommand(e) {
var t = "";
return (
$("#Explosion" + this.stackPos + "Pane > .explosion").each(
function (e) {
var a = this.id;
t += getExplosionNBT(a);
}
),
t.length
? super.getEntityNBT() +
",FireworksItem:{id:firework_rocket,Count:1,tag:{Fireworks:{Explosions:[" +
t.substr(1) +
"]}}}"
: super.getEntityNBT()
);
}
generateForm() {
Object.assign(this.entityNBT, this.myNBT), super.generateForm();
}
}
class Vehicle extends Entity {
constructor(e, t, a) {
super(e, t),
(this.entityNBT = {
MotionX: {
type: "text",
format: "special",
tip: "entity.Motion",
},
MotionY: {
type: "text",
format: "special",
tip: "entity.Motion",
},
MotionZ: {
type: "text",
format: "special",
tip: "entity.Motion",
},
Yaw: { type: "text", format: "special", tip: "entity" },
Pitch: { type: "text", format: "special", tip: "entity" },
NoGravity: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
Glowing: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
Invulnerable: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
UUID: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: "entity",
},
CustomName: {
type: "customNameJSON",
format: "special",
tip: "entity",
},
CustomNameVisible: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
Team: { type: "text", format: "string", tip: "mob" },
Tags: {
type: "text",
format: "special",
tip: "entity",
fwClass: "bigTF",
},
}),
void 0 != a && Object.assign(this.entityNBT, a);
}
getEntitySpecificCommand(e) {
return this.getEntityNBT();
}
generateForm() {
super.generateForm();
}
}
class minecart extends Vehicle {
constructor(e, t, a) {
super(e, t),
(this.minecartNBT = {
CustomDisplayTile: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "minecart",
align: "R",
},
DisplayOffset: {
type: "text",
format: "short",
tip: "minecart",
align: "R",
},
}),
void 0 != a && Object.assign(this.minecartNBT, a),
Object.assign(this.entityNBT, this.minecartNBT);
}
loadDisplayStateMinecart(e) {
void 0 != e.Name &&
$("#DisplayTile" + this.stackPos).val(
extractMinecraftID(e.Name.val)
);
}
getEntitySpecificCommand(e) {
var t = "";
if (-1 != $("#block" + e).val()) {
if (
((t =
',DisplayState:{Name:"minecraft:' +
$("#block" + e).val() +
'"'),
$("#block" + e).val() in blockStates)
) {
var a = blockStates[$("#block" + e).val()],
o = "";
for (var n in a)
"unset" != $("#" + n + "BS" + e).val() &&
(o +=
"," + n + ':"' + $("#" + n + "BS" + e).val() + '"');
0 != o.length && (t += ",Properties:{" + o.substr(1) + "}");
}
t += "}";
}
return super.getEntitySpecificCommand() + t;
}
generateForm() {
var e = "<br><span class='fLabel200'>DisplayState</span>";
e +=
"<select id='block" +
this.stackPos +
"' onchange='javascript:fallingBlockChange(" +
this.stackPos +
");'>";
for (var t = 0; t < tiles.length; t++)
e +=
"<option value='" +
tiles[t][0] +
"'>" +
tiles[t][1] +
"</option>";
(e +=
"</select><input type='text' id='block_filter" +
this.stackPos +
"' placeholder='Filter' class='medTF' onkeyup=\"updateFallingBlockOptions('block'," +
this.stackPos +
")\"><span id='blockSpec" +
this.stackPos +
"'></span>"),
$("#entityPane" + this.stackPos + "R").append(e),
super.generateForm();
}
}
class chest_minecart extends minecart {
constructor(e, t, a) {
super(e, t),
(this.slots = a),
(this.myNBT = {
LootTable: {
type: "text",
format: "string",
tip: t,
align: "R",
},
});
for (var o = 0; o < this.slots; o++)
this.myNBT[o + "Slot"] = {
type: "itemselect",
format: "special",
hide: !0,
label: "Slot " + o,
align: "R",
};
}
getEntitySpecificCommand(e) {
for (var t = "", a = 0; a < this.slots; a++) {
var o = getItemNBT(a + "Slot" + e);
"{}" != o && (t += ",{Slot:" + a + "b," + o.substr(1));
}
return (
t.length && (t = ",Items:[" + t.substr(1) + "]"),
super.getEntitySpecificCommand(e) + t
);
}
generateForm() {
Object.assign(this.entityNBT, this.myNBT), super.generateForm();
}
}
class hopper_minecart extends chest_minecart {
constructor(e, t, a) {
super(e, t, a),
(this.hopperNBT = {
Enabled: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: t,
},
TransferCooldown: { type: "text", format: "int", tip: t },
});
}
generateForm() {
Object.assign(this.entityNBT, this.hopperNBT), super.generateForm();
}
}
class spawner_minecart extends minecart {
constructor(e, t) {
for (var a in (super(e, t, 0),
initMobSpawnerNBT(),
(this.myNBT = mobSpawnerNBT),
this.myNBT))
this.myNBT[a].align = "R";
}
getEntitySpecificCommand(e) {
return (
super.getEntitySpecificCommand(e) +
getSpawnPotentailsNBT(this.stackPos)
);
}
generateForm() {
Object.assign(this.entityNBT, this.myNBT), super.generateForm();
}
}
var items = [
["acacia_wood", "Acacia Wood"],
["acacia_door", "Acacia Door"],
["acacia_fence", "Acacia Fence"],
["acacia_fence_gate", "Acacia Fence Gate"],
["acacia_leaves", "Acacia Leaves"],
["acacia_log", "Acacia Log"],
["acacia_planks", "Acacia Planks"],
["acacia_sapling", "Acacia Sapling"],
["acacia_slab", "Acacia Slab"],
["acacia_stairs", "Wooden Stairs (Acacia)"],
["activator_rail", "Activator Rail"],
["allium", "Allium"],
["andesite", "Andesite"],
["anvil", "Anvil"],
["apple", "Apple"],
["armor_stand", "Armor Stand"],
["arrow", "Arrow"],
["azure_bluet", "Azure Bluet"],
["baked_potato", "Baked Potato"],
["barrier", "Barrier"],
["bat_spawn_egg", "Spawn Bat"],
["beacon", "Beacon Block"],
["bedrock", "Bedrock"],
["beef", "Raw Beef"],
["beetroot", "Beetroot"],
["beetroot_seeds", "Beetroot Seeds"],
["beetroot_soup", "Beetroot Soup"],
["birch_wood", "Birch Wood"],
["birch_door", "Birch Door"],
["birch_fence", "Birch Fence"],
["birch_fence_gate", "Birch Fence Gate"],
["birch_leaves", "Birch Leaves"],
["birch_log", "Birch Log"],
["birch_planks", "Birch Planks"],
["birch_sapling", "Birch Sapling"],
["birch_slab", "Birch Slab"],
["birch_stairs", "Birch Wood Stairs"],
["black_banner", "Black Banner"],
["black_bed", "Black Bed"],
["black_carpet", "Black Carpet"],
["black_concrete", "Black Concrete"],
["black_concrete_powder", "Black Concrete Powder"],
["black_glazed_terracotta", "Black Glazed Terracotta"],
["black_shulker_box", "Black Shulker Box"],
["black_stained_glass", "Black Stained Glass"],
["black_stained_glass_pane", "Black Stained Glass Pane"],
["black_terracotta", "Black Terracotta"],
["black_wool", "Black Wool"],
["blaze_powder", "Blaze Powder"],
["blaze_rod", "Blaze Rod"],
["blaze_spawn_egg", "Spawn Blaze"],
["blue_banner", "Blue Banner"],
["blue_bed", "Blue Bed"],
["blue_carpet", "Blue Carpet"],
["blue_concrete", "Blue Concrete"],
["blue_concrete_powder", "Blue Concrete Powder"],
["blue_glazed_terracotta", "Blue Glazed Terracotta"],
["blue_orchid", "Blue Orchid"],
["blue_shulker_box", "Blue Shulker Box"],
["blue_stained_glass", "Blue Stained Glass"],
["blue_stained_glass_pane", "Blue Stained Glass Pane"],
["blue_terracotta", "Blue Terracotta"],
["blue_wool", "Blue Wool"],
["bone", "Bone"],
["bone_block", "Bone Block"],
["bone_meal", "Bone Meal"],
["book", "Book"],
["bookshelf", "Bookshelf"],
["bow", "Bow"],
["bowl", "Bowl"],
["bread", "Bread"],
["brewing_stand", "Brewing Stand"],
["brick", "Brick"],
["bricks", "Bricks"],
["brick_slab", "Bricks Slab"],
["brick_stairs", "Brick Stairs"],
["brown_banner", "Brown Banner"],
["brown_bed", "Brown Bed"],
["brown_carpet", "Brown Carpet"],
["brown_concrete", "Brown Concrete"],
["brown_concrete_powder", "Brown Concrete Powder"],
["brown_glazed_terracotta", "Brown Glazed Terracotta"],
["brown_mushroom", "Brown Mushroom"],
["brown_mushroom_block", "Brown Mushroom Block"],
["brown_shulker_box", "Brown Shulker Box"],
["brown_stained_glass", "Brown Stained Glass"],
["brown_stained_glass_pane", "Brown Stained Glass Pane"],
["brown_terracotta", "Brown Terracotta"],
["brown_wool", "Brown Wool"],
["bucket", "Bucket"],
["cactus", "Cactus"],
["cake", "Cake"],
["carrot", "Carrot"],
["carrot_on_a_stick", "Carrot on a Stick"],
["carved_pumpkin", "Carved Pumpkin"],
["cauldron", "Cauldron"],
["cave_spider_spawn_egg", "Spawn Cave Spider"],
["chain_command_block", "Chain Command Block"],
["chainmail_boots", "Chainmail Boots"],
["chainmail_chestplate", "Chainmail Chestplate"],
["chainmail_helmet", "Chainmail Helmet"],
["chainmail_leggings", "Chainmail Leggings"],
["charcoal", "Charcoal"],
["chest", "Chest"],
["chest_minecart", "Minecart with Chest"],
["chicken", "Raw Chicken"],
["chicken_spawn_egg", "Spawn Chicken"],
["chipped_anvil", "Chipped Anvil"],
["chiseled_quartz_block", "Chiseled Quartz Block"],
["chiseled_red_sandstone", "Chiseled Red Sandstone"],
["chiseled_sandstone", "Chiseled Sandstone"],
["chiseled_stone_bricks", "Chiseled Stone Bricks"],
["chorus_fruit", "Chorus Fruit"],
["popped_chorus_fruit", "Popped Chorus Fruit"],
["chorus_flower", "Chorus Flower"],
["chorus_plant", "Chorus Plant"],
["clay", "Clay"],
["clay_ball", "Clay Ball"],
["clock", "Clock"],
["tropical_fish", "Tropical Fish"],
["coal", "Coal"],
["coal_block", "Block of Coal"],
["coal_ore", "Coal Ore"],
["coarse_dirt", "Coarse Dirt"],
["cobblestone", "Cobblestone"],
["cobblestone_slab", "Cobblestone Slab"],
["cobblestone_stairs", "Cobblestone Stairs"],
["cobweb", "Cobweb"],
["cocoa_beans", "Cocoa Beans"],
["cod", "Raw Cod"],
["command_block", "Command Block"],
["command_block_minecart", "Minecart with Command Block"],
["comparator", "Redstone Comparator"],
["compass", "Compass"],
["cooked_beef", "Steak"],
["cooked_chicken", "Cooked Chicken"],
["cooked_cod", "Cooked Cod"],
["cooked_mutton", "Cooked Mutton"],
["cooked_porkchop", "Cooked Porkchop"],
["cooked_rabbit", "Cooked Rabbit"],
["cooked_salmon", "Cooked Salmon"],
["cookie", "Cookie"],
["cow_spawn_egg", "Spawn Cow"],
["cracked_stone_bricks", "Cracked Stone Bricks"],
["crafting_table", "Crafting Table"],
["creeper_head", "Creeper Head"],
["creeper_spawn_egg", "Spawn Creeper"],
["cut_red_sandstone", "Cut Red Sandstone"],
["cut_sandstone", "Cut Sandstone"],
["cyan_banner", "Cyan Banner"],
["cyan_bed", "Cyan Bed"],
["cyan_carpet", "Cyan Carpet"],
["cyan_concrete", "Cyan Concrete"],
["cyan_concrete_powder", "Cyan Concrete Powder"],
["cyan_glazed_terracotta", "Cyan Glazed Terracotta"],
["cyan_shulker_box", "Cyan Shulker Box"],
["cyan_stained_glass", "Cyan Stained Glass"],
["cyan_stained_glass_pane", "Cyan Stained Glass Pane"],
["cyan_terracotta", "Cyan Terracotta"],
["cyan_wool", "Cyan Wool"],
["damaged_anvil", "Damaged Anvil"],
["dandelion", "Dandelion"],
["dark_oak_wood", "Dark Oak Wood"],
["dark_oak_door", "Dark Oak Door"],
["dark_oak_fence", "Dark Oak Fence"],
["dark_oak_fence_gate", "Dark Oak Fence Gate"],
["dark_oak_leaves", "Dark Oak Leaves"],
["dark_oak_log", "Dark Oak Log"],
["dark_oak_planks", "Dark Oak Planks"],
["dark_oak_sapling", "Dark Oak Sapling"],
["dark_oak_slab", "Dark Oak Slab"],
["dark_oak_stairs", "Wooden Stairs (Dark Oak)"],
["dark_prismarine", "Dark Prismarine"],
["daylight_detector", "Daylight Detector"],
["dead_bush", "Dead Bush"],
["debug_stick", "Debug Stick"],
["detector_rail", "Detector Rail"],
["diamond", "Diamond"],
["diamond_axe", "Diamond Axe"],
["diamond_block", "Diamond Block"],
["diamond_boots", "Diamond Boots"],
["diamond_chestplate", "Diamond Chestplate"],
["diamond_helmet", "Diamond Helmet"],
["diamond_hoe", "Diamond Hoe"],
["diamond_horse_armor", "Diamond Horse Armor"],
["diamond_leggings", "Diamond Leggings"],
["diamond_ore", "Diamond Ore"],
["diamond_pickaxe", "Diamond Pickaxe"],
["diamond_shovel", "Diamond Shovel"],
["diamond_sword", "Diamond Sword"],
["diorite", "Diorite"],
["dirt", "Dirt"],
["dispenser", "Dispenser"],
["donkey_spawn_egg", "Spawn Donkey"],
["dragon_breath", "Dragon's Breath"],
["dragon_egg", "Dragon Egg"],
["dragon_head", "Dragon Head"],
["dropper", "Dropper"],
["dried_kelp", "Dried Kelp"],
["dried_kelp_block", "Dried Kelp Block"],
["egg", "Egg"],
["elder_guardian_spawn_egg", "Spawn Elder Guardian"],
["elytra", "Elytra"],
["emerald", "Emerald"],
["emerald_block", "Emerald Block"],
["emerald_ore", "Emerald Ore"],
["enchanted_book", "Enchanted Book"],
["enchanted_golden_apple", "Enchanted Golden Apple"],
["enchanting_table", "Enchantment Table"],
["end_crystal", "End Crystal"],
["end_rod", "End Rod"],
["end_stone", "End Stone"],
["end_stone_bricks", "End Stone Bricks"],
["ender_chest", "Ender Chest"],
["ender_eye", "Eye of Ender"],
["ender_pearl", "Ender Pearl"],
["enderman_spawn_egg", "Spawn Enderman"],
["endermite_spawn_egg", "Spawn Endermite"],
["evoker_spawn_egg", "Spawn Evoker"],
["experience_bottle", "Bottle o' Enchanting"],
["farmland", "Farmland"],
["feather", "Feather"],
["fermented_spider_eye", "Fermented Spider Eye"],
["fern", "Fern"],
["filled_map", "Filled Map"],
["fire_charge", "Fire Charge"],
["firework_rocket", "Firework Rocket"],
["firework_star", "Firework Star"],
["fishing_rod", "Fishing Rod"],
["flint", "Flint"],
["flint_and_steel", "Flint and Steel"],
["flower_pot", "Flower Pot"],
["furnace", "Furnace"],
["furnace_minecart", "Minecart with Furnace"],
["ghast_spawn_egg", "Spawn Ghast"],
["ghast_tear", "Ghast Tear"],
["glass", "Glass"],
["glass_bottle", "Glass Bottle"],
["glass_pane", "Glass Pane"],
["glowstone", "Glowstone"],
["glowstone_dust", "Glowstone Dust"],
["gold_block", "Gold Block"],
["gold_ingot", "Gold Ingot"],
["gold_nugget", "Gold Nugget"],
["gold_ore", "Gold Ore"],
["golden_apple", "Golden Apple"],
["golden_axe", "Golden Axe"],
["golden_boots", "Golden Boots"],
["golden_carrot", "Golden Carrot"],
["golden_chestplate", "Golden Chestplate"],
["golden_helmet", "Golden Helmet"],
["golden_hoe", "Golden Hoe"],
["golden_horse_armor", "Golden Horse Armor"],
["golden_leggings", "Golden Leggings"],
["golden_pickaxe", "Golden Pickaxe"],
["golden_shovel", "Golden Shovel"],
["golden_sword", "Golden Sword"],
["granite", "Granite"],
["grass", "Grass"],
["grass_block", "Grass Block"],
["grass_path", "Grass Path"],
["gravel", "Gravel"],
["gray_banner", "Gray Banner"],
["gray_bed", "Gray Bed"],
["gray_carpet", "Gray Carpet"],
["gray_concrete", "Gray Concrete"],
["gray_concrete_powder", "Gray Concrete Powder"],
["gray_glazed_terracotta", "Gray Glazed Terracotta"],
["gray_shulker_box", "Gray Shulker Box"],
["gray_stained_glass", "Gray Stained Glass"],
["gray_stained_glass_pane", "Gray Stained Glass Pane"],
["gray_terracotta", "Gray Terracotta"],
["gray_wool", "Gray Wool"],
["green_banner", "Green Banner"],
["green_bed", "Green Bed"],
["green_carpet", "Green Carpet"],
["green_concrete", "Green Concrete"],
["green_concrete_powder", "Green Concrete Powder"],
["green_glazed_terracotta", "Green Glazed Terracotta"],
["green_shulker_box", "Green Shulker Box"],
["green_stained_glass", "Green Stained Glass"],
["green_stained_glass_pane", "Green Stained Glass Pane"],
["green_terracotta", "Green Terracotta"],
["green_wool", "Green Wool"],
["guardian_spawn_egg", "Spawn Guardian"],
["gunpowder", "Gunpowder"],
["hay_block", "Hay Bale"],
["heavy_weighted_pressure_plate", "Weighted Pressure Plate (heavy)"],
["hopper", "Hopper"],
["hopper_minecart", "Minecart with Hopper"],
["horse_spawn_egg", "Spawn Horse"],
["husk_spawn_egg", "Spawn Husk"],
["ice", "Ice"],
["infested_stone", "Infested Stone"],
["infested_cobblestone", "Infested Cobblestone"],
["infested_stone_bricks", "Infested Stone Bricks"],
["infested_cracked_stone_bricks", "Infested Cracked Stone Bricks"],
["infested_mossy_stone_bricks", "Infested Mossy Stone Bricks"],
["infested_chiseled_stone_bricks", "Infested Chiseled Stone Bricks"],
["ink_sac", "Ink Sac"],
["iron_axe", "Iron Axe"],
["iron_bars", "Iron Bars"],
["iron_block", "Iron Block"],
["iron_boots", "Iron Boots"],
["iron_chestplate", "Iron Chestplate"],
["iron_door", "Iron Door"],
["iron_helmet", "Iron Helmet"],
["iron_hoe", "Iron Hoe"],
["iron_horse_armor", "Iron Horse Armor"],
["iron_ingot", "Iron Ingot"],
["iron_leggings", "Iron Leggings"],
["iron_nugget", "Iron Nugget"],
["iron_ore", "Iron Ore"],
["iron_pickaxe", "Iron Pickaxe"],
["iron_shovel", "Iron Shovel"],
["iron_sword", "Iron Sword"],
["iron_trapdoor", "Iron Trap Door"],
["item_frame", "Item Frame"],
["jack_o_lantern", "Jack o'Lantern"],
["jukebox", "Jukebox"],
["jungle_wood", "Jungle Wood"],
["jungle_door", "Jungle Door"],
["jungle_fence", "Jungle Fence"],
["jungle_fence_gate", "Jungle Fence Gate"],
["jungle_leaves", "Jungle Leaves"],
["jungle_log", "Jungle Log"],
["jungle_planks", "Jungle Planks"],
["jungle_sapling", "Jungle Sapling"],
["jungle_slab", "Jungle Slab"],
["jungle_stairs", "Jungle Wood Stairs"],
["kelp", "Kelp"],
["knowledge_book", "Knowledge Book"],
["ladder", "Ladder"],
["lapis_block", "Lapis Lazuli Block"],
["lapis_lazuli", "Lapis Lazuli"],
["lapis_ore", "Lapis Lazuli Ore"],
["large_fern", "Large Fern"],
["lava_bucket", "Lava Bucket"],
["lead", "Lead"],
["leather", "Leather"],
["leather_boots", "Leather Boots"],
["leather_chestplate", "Leather Tunic"],
["leather_helmet", "Leather Cap"],
["leather_leggings", "Leather Pants"],
["lever", "Lever"],
["light_blue_banner", "Light Blue Banner"],
["light_blue_bed", "Light Blue Bed"],
["light_blue_carpet", "Light Blue Carpet"],
["light_blue_concrete", "Light Blue Concrete"],
["light_blue_concrete_powder", "Light Blue Concrete Powder"],
["light_blue_glazed_terracotta", "Light Blue Glazed Terracotta"],
["light_blue_shulker_box", "Light Blue Shulker Box"],
["light_blue_stained_glass", "Light Blue Stained Glass"],
["light_blue_stained_glass_pane", "Light Blue Stained Glass Pane"],
["light_blue_terracotta", "Light Blue Terracotta"],
["light_blue_wool", "Light Blue Wool"],
["light_gray_banner", "Light Gray Banner"],
["light_gray_bed", "Light Gray Bed"],
["light_gray_carpet", "Light Gray Carpet"],
["light_gray_concrete", "Light Gray Concrete"],
["light_gray_concrete_powder", "Light Gray Concrete Powder"],
["light_gray_glazed_terracotta", "Light Gray Glazed Terracotta"],
["light_gray_shulker_box", "Light Gray Shulker Box"],
["light_gray_stained_glass", "Light Gray Stained Glass"],
["light_gray_stained_glass_pane", "Light Gray Stained Glass Pane"],
["light_gray_terracotta", "Light Gray Terracotta"],
["light_gray_wool", "Light Gray Wool"],
["light_weighted_pressure_plate", "Weighted Pressure Plate (light)"],
["lilac", "Lilac"],
["lily_pad", "Lily Pad"],
["lime_banner", "Lime Banner"],
["lime_bed", "Lime Bed"],
["lime_carpet", "Lime Carpet"],
["lime_concrete", "Lime Concrete"],
["lime_concrete_powder", "Lime Concrete Powder"],
["lime_glazed_terracotta", "Lime Glazed Terracotta"],
["lime_shulker_box", "Lime Shulker Box"],
["lime_stained_glass", "Lime Stained Glass"],
["lime_stained_glass_pane", "Lime Stained Glass Pane"],
["lime_terracotta", "Lime Terracotta"],
["lime_wool", "Lime Wool"],
["lingering_potion", "Lingering Potion"],
["llama_spawn_egg", "Spawn Llama"],
["magenta_banner", "Magenta Banner"],
["magenta_bed", "Magenta Bed"],
["magenta_carpet", "Magenta Carpet"],
["magenta_concrete", "Magenta Concrete"],
["magenta_concrete_powder", "Magenta Concrete Powder"],
["magenta_glazed_terracotta", "Magenta Glazed Terracotta"],
["magenta_shulker_box", "Magenta Shulker Box"],
["magenta_stained_glass", "Magenta Stained Glass"],
["magenta_stained_glass_pane", "Magenta Stained Glass Pane"],
["magenta_terracotta", "Magenta Terracotta"],
["magenta_wool", "Magenta Wool"],
["magma_block", "Magma Block"],
["magma_cream", "Magma Cream"],
["magma_cube_spawn_egg", "Spawn Magma Cube"],
["map", "Map"],
["melon", "Melon"],
["melon_slice", "Melon Slice"],
["melon_seeds", "Melon Seeds"],
["milk_bucket", "Milk Bucket"],
["minecart", "Minecart"],
["spawner", "Spawner"],
["mooshroom_spawn_egg", "Spawn Mooshroom"],
["mossy_cobblestone", "Mossy Cobblestone"],
["mossy_stone_bricks", "Mossy Stone Bricks"],
["mule_spawn_egg", "Spawn Mule"],
["mushroom_stem", "Mushroom Stem"],
["mushroom_stem", "Mushroom Stem"],
["mushroom_stew", "Mushroom Stew"],
["music_disc_11", "Music Disc 11"],
["music_disc_13", "Music Disc 13"],
["music_disc_blocks", "Music Disc Blocks"],
["music_disc_cat", "Music Disc Cat"],
["music_disc_chirp", "Music Disc Chirp"],
["music_disc_far", "Music Disc Far"],
["music_disc_mall", "Music Disc Mall"],
["music_disc_mellohi", "Music Disc Mellohi"],
["music_disc_stal", "Music Disc Stal"],
["music_disc_strad", "Music Disc Strad"],
["music_disc_wait", "Music Disc Wait"],
["music_disc_ward", "Music Disc Ward"],
["mutton", "Raw Mutton"],
["mycelium", "Mycelium"],
["name_tag", "Name Tag"],
["nether_brick", "Nether Brick"],
["nether_brick_fence", "Nether Brick Fence"],
["nether_brick_slab", "Nether Bricks Slab"],
["nether_brick_stairs", "Nether Brick Stairs"],
["nether_quartz_ore", "Nether Quartz Ore"],
["nether_star", "Nether Star"],
["nether_wart", "Nether Wart"],
["nether_wart_block", "Nether Wart Block"],
["nether_bricks", "Nether Bricks"],
["netherrack", "Netherrack"],
["note_block", "Note Block"],
["oak_wood", "Oak Wood"],
["oak_button", "Oak Button"],
["spruce_button", "Spruce Button"],
["birch_button", "Birch Button"],
["jungle_button", "Jungle Button"],
["acacia_button", "Acacia Button"],
["dark_oak_button", "Dark Oak Button"],
["oak_door", "Oak Door"],
["oak_fence", "Oak Fence"],
["oak_fence_gate", "Oak Fence Gate"],
["oak_leaves", "Oak Leaves"],
["oak_log", "Oak Log"],
["oak_planks", "Oak Planks"],
["oak_pressure_plate", "Oak Pressure Plate"],
["spruce_pressure_plate", "Spruce Pressure Plate"],
["birch_pressure_plate", "Birch Pressure Plate"],
["jungle_pressure_plate", "Jungle Pressure Plate"],
["acacia_pressure_plate", "Acacia Pressure Plate"],
["dark_oak_pressure_plate", "Dark Oak Pressure Plate"],
["oak_boat", "Oak Boat"],
["spruce_boat", "Spruce Boat"],
["birch_boat", "Birch Boat"],
["jungle_boat", "Jungle Boat"],
["acacia_boat", "Acacia Boat"],
["dark_oak_boat", "Dark Oak Boat"],
["oak_sapling", "Oak Sapling"],
["oak_slab", "Oak Slab"],
["oak_stairs", "Oak Wood Stairs"],
["observer", "Observer"],
["obsidian", "Obsidian"],
["ocelot_spawn_egg", "Spawn Ocelot"],
["orange_banner", "Orange Banner"],
["orange_bed", "Orange Bed"],
["orange_carpet", "Orange Carpet"],
["orange_concrete", "Orange Concrete"],
["orange_concrete_powder", "Orange Concrete Powder"],
["orange_glazed_terracotta", "Orange Glazed Terracotta"],
["orange_shulker_box", "Orange Shulker Box"],
["orange_stained_glass", "Orange Stained Glass"],
["orange_stained_glass_pane", "Orange Stained Glass Pane"],
["orange_terracotta", "Orange Terracotta"],
["orange_tulip", "Orange Tulip"],
["orange_wool", "Orange Wool"],
["oxeye_daisy", "Oxeye Daisy"],
["packed_ice", "Packed Ice"],
["painting", "Painting"],
["paper", "Paper"],
["parrot_spawn_egg", "Spawn Parrot"],
["peony", "Peony"],
["petrified_oak_slab", "Petrified Oak Slab"],
["phantom_spawn_egg", "Spawn Phantom"],
["pig_spawn_egg", "Spawn Pig"],
["pink_banner", "Pink Banner"],
["pink_bed", "Pink Bed"],
["pink_carpet", "Pink Carpet"],
["pink_concrete", "Pink Concrete"],
["pink_concrete_powder", "Pink Concrete Powder"],
["pink_glazed_terracotta", "Pink Glazed Terracotta"],
["pink_shulker_box", "Pink Shulker Box"],
["pink_stained_glass", "Pink Stained Glass"],
["pink_stained_glass_pane", "Pink Stained Glass Pane"],
["pink_terracotta", "Pink Terracotta"],
["pink_tulip", "Pink Tulip"],
["pink_wool", "Pink Wool"],
["piston", "Piston"],
["player_head", "Player Head"],
["podzol", "Podzol"],
["poisonous_potato", "Poisonous Potato"],
["polar_bear_spawn_egg", "Spawn Polar Bear"],
["polished_andesite", "Polished Andesite"],
["polished_diorite", "Polished Diorite"],
["polished_granite", "Polished Granite"],
["poppy", "Poppy"],
["porkchop", "Raw Porkchop"],
["end_portal_frame", "End Portal Frame"],
["potato", "Potato"],
["potion", "Water Bottle"],
["powered_rail", "Powered Rail"],
["prismarine", "Prismarine"],
["prismarine_bricks", "Prismarine Bricks"],
["prismarine_crystals", "Prismarine Crystals"],
["prismarine_shard", "Prismarine Shard"],
["prismarine_stairs", "Prismarine Stairs"],
["prismarine_brick_stairs", "Prismarine Brick Stairs"],
["dark_prismarine_stairs", "Dark Prismarine Stairs"],
["pufferfish", "Pufferfish"],
["pumpkin", "Pumpkin"],
["pumpkin_pie", "Pumpkin Pie"],
["pumpkin_seeds", "Pumpkin Seeds"],
["purple_banner", "Purple Banner"],
["purple_bed", "Purple Bed"],
["purple_carpet", "Purple Carpet"],
["purple_concrete", "Purple Concrete"],
["purple_concrete_powder", "Purple Concrete Powder"],
["purple_glazed_terracotta", "Purple Glazed Terracotta"],
["purple_shulker_box", "Purple Shulker Box"],
["purple_stained_glass", "Purple Stained Glass"],
["purple_stained_glass_pane", "Purple Stained Glass Pane"],
["purple_terracotta", "Purple Terracotta"],
["purple_wool", "Purple Wool"],
["purpur_block", "Purpur Block"],
["purpur_pillar", "Purpur Pillar"],
["purpur_slab", "Purpur Slab"],
["purpur_stairs", "Purpur Stairs"],
["quartz", "Nether Quartz"],
["quartz_block", "Block of Quartz"],
["quartz_pillar", "Quartz Pillar"],
["quartz_slab", "Quartz Slab"],
["quartz_stairs", "Quartz Stairs"],
["rabbit", "Raw Rabbit"],
["rabbit_foot", "Rabbit's Foot"],
["rabbit_hide", "Rabbit Hide"],
["rabbit_spawn_egg", "Spawn Rabbit"],
["rabbit_stew", "Rabbit Stew"],
["rail", "Rails"],
["red_banner", "Red Banner"],
["red_bed", "Red Bed"],
["red_carpet", "Red Carpet"],
["red_concrete", "Red Concrete"],
["red_concrete_powder", "Red Concrete Powder"],
["red_glazed_terracotta", "Red Glazed Terracotta"],
["red_mushroom", "Red Mushroom"],
["red_mushroom_block", "Red Mushroom Block"],
["red_nether_bricks", "Red Nether Bricks"],
["red_sand", "Red Sand"],
["red_sandstone", "Red Sandstone"],
["red_sandstone_slab", "Red Sandstone Slab"],
["red_sandstone_stairs", "Red Sandstone Stairs"],
["red_shulker_box", "Red Shulker Box"],
["red_stained_glass", "Red Stained Glass"],
["red_stained_glass_pane", "Red Stained Glass Pane"],
["red_terracotta", "Red Terracotta"],
["red_tulip", "Red Tulip"],
["red_wool", "Red Wool"],
["redstone", "Redstone Dust"],
["redstone_block", "Redstone Block"],
["redstone_lamp", "Redstone Lamp"],
["redstone_ore", "Redstone Ore"],
["redstone_torch", "Redstone Torch"],
["repeater", "Redstone Repeater"],
["repeating_command_block", "Repeating Command Block"],
["rose_bush", "Rose Bush"],
["rotten_flesh", "Rotten Flesh"],
["saddle", "Saddle"],
["salmon", "Raw Salmon"],
["sand", "Sand"],
["sandstone", "Sandstone"],
["sandstone_slab", "Sandstone Slab"],
["sandstone_stairs", "Sandstone Stairs"],
["seagrass", "Seagrass"],
["sea_lantern", "Sea Lantern"],
["scute", "Scute"],
["shears", "Shears"],
["sheep_spawn_egg", "Spawn Sheep"],
["shield", "Shield"],
["shulker_shell", "Shulker Shell"],
["shulker_spawn_egg", "Spawn Shulker"],
["silverfish_spawn_egg", "Spawn Silverfish"],
["skeleton_horse_spawn_egg", "Spawn Skeleton Horse"],
["skeleton_skull", "Skeleton Skull"],
["skeleton_spawn_egg", "Spawn Skeleton"],
["slime_ball", "Slimeball"],
["slime_block", "Slime Block"],
["slime_spawn_egg", "Spawn Slime"],
["smooth_quartz", "Smooth Quartz"],
["smooth_red_sandstone", "Smooth Red Sandstone"],
["smooth_sandstone", "Smooth Sandstone"],
["smooth_stone", "Smooth Stone"],
["snow", "Snow"],
["snow_block", "Snow Block"],
["snowball", "Snowball"],
["soul_sand", "Soul Sand"],
["glistering_melon_slice", "Glistering Melon Slice"],
["spectral_arrow", "Spectral Arrow"],
["spider_eye", "Spider Eye"],
["spider_spawn_egg", "Spawn Spider"],
["splash_potion", "Splash Potion"],
["sponge", "Sponge"],
["spruce_wood", "Spruce Wood"],
["spruce_door", "Spruce Door"],
["spruce_fence", "Spruce Fence"],
["spruce_fence_gate", "Spruce Fence Gate"],
["spruce_leaves", "Spruce Leaves"],
["spruce_log", "Spruce Log"],
["spruce_planks", "Spruce Planks"],
["spruce_sapling", "Spruce Sapling"],
["spruce_slab", "Spruce Slab"],
["spruce_stairs", "Spruce Wood Stairs"],
["squid_spawn_egg", "Spawn Squid"],
["stick", "Stick"],
["sticky_piston", "Sticky Piston"],
["stone", "Stone"],
["stone_axe", "Stone Axe"],
["stone_brick_slab", "Stone Bricks Slab"],
["stone_brick_stairs", "Stone Brick Stairs"],
["stone_bricks", "Stone Bricks"],
["stone_button", "Stone Button"],
["stone_hoe", "Stone Hoe"],
["stone_pickaxe", "Stone Pickaxe"],
["stone_pressure_plate", "Stone Pressure Plate"],
["stone_shovel", "Stone Shovel"],
["stone_sword", "Stone Sword"],
["stray_spawn_egg", "Spawn Stray"],
["string", "String"],
["sugar", "Sugar"],
["sugar_cane", "Sugar Cane"],
["sunflower", "Sunflower"],
["tall_grass", "Double Tallgrass"],
["terracotta", "Terracotta"],
["tipped_arrow", "Tipped Arrow"],
["tnt", "TNT"],
["tnt_minecart", "Minecart with TNT"],
["torch", "Torch"],
["totem_of_undying", "Totem of Undying"],
["oak_trapdoor", "Oak Trapdoor"],
["spruce_trapdoor", "Spruce Trapdoor"],
["birch_trapdoor", "Birch Trapdoor"],
["jungle_trapdoor", "Jungle Trapdoor"],
["acacia_trapdoor", "Acacia Trapdoor"],
["dark_oak_trapdoor", "Dark Oak Trapdoor"],
["trapped_chest", "Trapped Chest"],
["trident", "Trident"],
["tripwire_hook", "Tripwire Hook"],
["turtle_egg", "Turtle Egg"],
["turtle_helmet", "Turtle Helmet"],
["turtle_spawn_egg", "Spawn Turtle"],
["vex_spawn_egg", "Spawn Vex"],
["villager_spawn_egg", "Spawn Villager"],
["vindicator_spawn_egg", "Spawn Vindicator"],
["vine", "Vines"],
["water_bucket", "Water Bucket"],
["wet_sponge", "Wet Sponge"],
["wheat", "Wheat"],
["wheat_seeds", "Wheat Seeds"],
["white_banner", "White Banner"],
["white_bed", "White Bed"],
["white_carpet", "White Carpet"],
["white_concrete", "White Concrete"],
["white_concrete_powder", "White Concrete Powder"],
["white_glazed_terracotta", "White Glazed Terracotta"],
["shulker_box", "Shulker Box"],
["white_shulker_box", "White Shulker Box"],
["white_stained_glass", "White Stained Glass"],
["white_stained_glass_pane", "White Stained Glass Pane"],
["white_terracotta", "White Terracotta"],
["white_tulip", "White Tulip"],
["white_wool", "White Wool"],
["witch_spawn_egg", "Spawn Witch"],
["wither_skeleton_skull", "Wither Skeleton Skull"],
["wither_skeleton_spawn_egg", "Spawn Wither Skeleton"],
["wolf_spawn_egg", "Spawn Wolf"],
["wooden_axe", "Wooden Axe"],
["wooden_hoe", "Wooden Hoe"],
["wooden_pickaxe", "Wooden Pickaxe"],
["wooden_shovel", "Wooden Shovel"],
["wooden_sword", "Wooden Sword"],
["writable_book", "Book and Quill"],
["written_book", "Written Book"],
["yellow_banner", "Yellow Banner"],
["yellow_bed", "Yellow Bed"],
["yellow_carpet", "Yellow Carpet"],
["yellow_concrete", "Yellow Concrete"],
["yellow_concrete_powder", "Yellow Concrete Powder"],
["yellow_glazed_terracotta", "Yellow Glazed Terracotta"],
["yellow_shulker_box", "Yellow Shulker Box"],
["yellow_stained_glass", "Yellow Stained Glass"],
["yellow_stained_glass_pane", "Yellow Stained Glass Pane"],
["yellow_terracotta", "Yellow Terracotta"],
["yellow_wool", "Yellow Wool"],
["zombie_head", "Zombie Head"],
["zombie_horse_spawn_egg", "Spawn Zombie Horse"],
["zombified_piglin_spawn_egg", "Spawn Zombiefied Piglin"],
["zombie_spawn_egg", "Spawn Zombie"],
["zombie_villager_spawn_egg", "Spawn Zombie Villager"],
["dead_tube_coral_block", "Dead Tube Coral Block"],
["dead_brain_coral_block", "Dead Brain Coral Block"],
["dead_bubble_coral_block", "Dead Bubble Coral Block"],
["dead_fire_coral_block", "Dead Fire Coral Block"],
["dead_horn_coral_block", "Dead Horn Coral Block"],
["dead_tube_coral_fan", "Dead Tube Coral Fan"],
["dead_brain_coral_fan", "Dead Brain Coral Fan"],
["dead_bubble_coral_fan", "Dead Bubble Coral Fan"],
["dead_fire_coral_fan", "Dead Fire Coral Fan"],
["dead_horn_coral_fan", "Dead Horn Coral Fan"],
["dead_tube_coral", "Dead Tube Coral"],
["dead_brain_coral", "Dead Brain Coral"],
["dead_bubble_coral", "Dead Bubble Coral"],
["dead_fire_coral", "Dead Fire Coral"],
["dead_horn_coral", "Dead Horn Coral"],
["tube_coral_block", "Tube Coral Block(Blue)"],
["brain_coral_block", "Brain Coral Block (Pink)"],
["bubble_coral_block", "Bubble Coral Block (Purple)"],
["fire_coral_block", "Fire Coral Block (Red)"],
["horn_coral_block", "Horn Coral Block (Yellow)"],
["tube_coral", "Tube Coral Plant (Blue)"],
["brain_coral", "Brain Coral Plant (Pink)"],
["bubble_coral", "Bubble Coral Plant (Purple)"],
["fire_coral", "Fire Coral Plant (Red)"],
["horn_coral", "Horn Coral Plant (Yellow)"],
["tube_coral_fan", "Tube Coral Fan (Blue)"],
["brain_coral_fan", "Brain Coral Fan (Pink)"],
["bubble_coral_fan", "Bubble Coral Fan (Purple)"],
["fire_coral_fan", "Fire Coral Fan (Red)"],
["horn_coral_fan", "Horn Coral Fan (Yellow)"],
["sea_pickle", "Sea Pickle"],
["stripped_oak_log", "Stripped Oak Log"],
["stripped_spruce_log", "Stripped Spruce Log"],
["stripped_birch_log", "Stripped Birch Log"],
["stripped_jungle_log", "Stripped Jungle Log"],
["stripped_acacia_log", "Stripped Acacia Log"],
["stripped_dark_oak_log", "Stripped Dark Oak Log"],
["stripped_oak_wood", "Stripped Oak Wood"],
["stripped_spruce_wood", "Stripped Spruce Wood"],
["stripped_birch_wood", "Stripped Birch Wood"],
["stripped_jungle_wood", "Stripped Jungle Wood"],
["stripped_acacia_wood", "Stripped Acacia Wood"],
["stripped_dark_oak_wood", "Stripped Dark Oak Wood"],
["prismarine_slab", "Prismarine Slab"],
["prismarine_brick_slab", "Prismarine Bricks Slab"],
["dark_prismarine_slab", "Dark Prismarine Slab"],
["cod_spawn_egg", "Spawn Cod"],
["salmon_spawn_egg", "Spawn Salmon"],
["pufferfish_spawn_egg", "Spawn Pufferfish"],
["tropical_fish_spawn_egg", "Spawn Tropical Fish"],
["drowned_spawn_egg", "Spawn Drowned Zombie"],
["cod_bucket", "Cod Bucket"],
["salmon_bucket", "Salmon Bucket"],
["pufferfish_bucket", "Pufferfish Bucket"],
["tropical_fish_bucket", "Tropical Fish Bucket"],
["phantom_membrane", "Phantom Membrane"],
["heart_of_the_sea", "Heart of the Sea"],
["nautilus_shell", "Nautilus Shell"],
["conduit", "Conduit"],
["blue_ice", "Blue Ice"],
["dolphin_spawn_egg", "Spawn Dolphin"],
["bamboo", "Bamboo"],
["crossbow", "Crossbow"],
["smooth_stone_slab", "Smooth Stone Slab"],
["smooth_red_sandstone_slab", "Smooth Red Sandstone Slab"],
["smooth_sandstone_slab", "Smooth Sandstone Slab"],
["smooth_quartz_slab", "Smooth Quartz Slab"],
["oak_sign", "Oak Sign"],
["spruce_sign", "Spruce Sign"],
["birch_sign", "Birch Sign"],
["jungle_sign", "Jungle Sign"],
["acacia_sign", "Acacia Sign"],
["dark_oak_sign", "Dark Oak Sign"],
["cobblestone_wall", "Cobblestone Wall"],
["mossy_cobblestone_wall", "Mossy Cobblestone Wall"],
["brick_wall", "Brick Wall"],
["prismarine_wall", "Prismarine Wall"],
["red_sandstone_wall", "Red Sandstone Wall"],
["mossy_stone_brick_wall", "Mossy Stone Brick Wall"],
["stone_brick_wall", "Stone Brick Wall"],
["nether_brick_wall", "Nether Brick Wall"],
["andesite_wall", "Andesite Wall"],
["diorite_wall", "Diorite Wall"],
["granite_wall", "Granite Wall"],
["end_stone_brick_wall", "End Stone Brick Wall"],
["sandstone_wall", "Sandstone Wall"],
["red_nether_brick_wall", "Red Nether Brick Wall"],
["stone_stairs", "Stone Stairs"],
["granite_stairs", "Granite Stairs"],
["polished_granite_stairs", "Polished Granite Stairs"],
["diorite_stairs", "Diorite Stairs"],
["polished_diorite_stairs", "Polished Diorite Stairs"],
["andesite_stairs", "Andesite Stairs"],
["polished_andesite_stairs", "Polished Andesite Stairs"],
["smooth_red_sandstone_stairs", "Smooth Red Sandstone Stairs"],
["smooth_quartz_stairs", "Smooth Quartz Stairs"],
["mossy_stone_brick_stairs", "Mossy Stone Brick Stairs"],
["end_stone_brick_stairs", "End Stone Brick Stairs"],
["red_nether_brick_stairs", "Red Nether Brick Stairs"],
["smooth_sandstone_stairs", "Smooth Sandstone Stairs"],
["mossy_cobblestone_stairs", "Mossy Cobblestone Stairs"],
["stone_slab", "Stone Slab"],
["granite_slab", "Granite Slab"],
["polished_granite_slab", "Polished Granite Slab"],
["diorite_slab", "Diorite Slab"],
["polished_diorite_slab", "Polished Diorite Slab"],
["andesite_slab", "Andesite Slab"],
["polished_andesite_slab", "Polished Andesite Slab"],
["smooth_red_sandstone_slab", "Smooth Red Sandstone Slab"],
["smooth_quartz_slab", "Smooth Quartz Slab"],
["mossy_stone_brick_slab", "Mossy Stone Brick Slab"],
["end_stone_brick_slab", "End Stone Brick Slab"],
["red_nether_brick_slab", "Red Nether Brick Slab"],
["smooth_sandstone_slab", "Smooth Sandstone Slab"],
["mossy_cobblestone_slab", "Mossy Cobblestone Slab"],
["black_dye", "Black Dye"],
["red_dye", "Red Dye"],
["green_dye", "Green Dye"],
["brown_dye", "Brown Dye"],
["purple_dye", "Purple Dye"],
["cyan_dye", "Cyan Dye"],
["light_gray_dye", "Light Gray Dye"],
["gray_dye", "Gray Dye"],
["pink_dye", "Pink Dye"],
["lime_dye", "Lime Dye"],
["yellow_dye", "Yellow Dye"],
["light_blue_dye", "Light Blue Dye"],
["magenta_dye", "Magenta Dye"],
["orange_dye", "Orange Dye"],
["blue_dye", "Blue Dye"],
["white_dye", "White Dye"],
["cornflower", "Cornflower"],
["lily_of_the_valley", "Lily of the Valley"],
["wither_rose", "Wither Rose"],
["loom", "Loom"],
["globe_banner_pattern", "Globe Banner Pattern"],
["mojang_banner_pattern", "Mojang Banner Pattern"],
["flower_banner_pattern", "Flower Banner Pattern"],
["creeper_banner_pattern", "Creeper Banner Pattern"],
["skull_banner_pattern", "Skull Banner Pattern"],
["ravager_spawn_egg", "Spawn Ravager"],
["pillager_spawn_egg", "Spawn Pillager"],
["panda_spawn_egg", "Spawn Panda"],
["suspicious_stew", "Suspicious Stew"],
["barrel", "Barrel"],
["bell", "Bell"],
["blast_furnace", "Blast Furnace"],
["smoker", "Smoker"],
["fletching_table", "Fletching Table"],
["smithing_table", "Smithing Table"],
["cartography_table", "Cartography Table"],
["stonecutter", "Stonecutter"],
["grindstone", "Grindstone"],
["lectern", "Lectern"],
["cat_spawn_egg", "Spawn Cat"],
["scaffolding", "Scaffolding"],
["lantern", "Lantern"],
["jigsaw", "Jigsaw Block"],
["sweet_berries", "Sweet Berries"],
["campfire", "Campfire"],
["composter", "Composter"],
["wandering_trader_spawn_egg", "Spawn Wandering Trader"],
["trader_llama_spawn_egg", "Spawn Trader Llama"],
["fox_spawn_egg", "Spawn Fox"],
["leather_horse_armor", "Leather Horse Armor"],
["cut_red_sandstone_slab", "Cut Red Sandstone Slab"],
["cut_sandstone_slab", "Cut Sandstone Slab"],
["structure_block", "Structure Block"],
["structure_void", "Structure Void"],
["beehive", "Beehive"],
["bee_nest", "Bee Nest"],
["bee_spawn_egg", "Spawn Bee"],
["honey_bottle", "Honey Bottle"],
["honeycomb", "Honeycomb"],
["honey_block", "Honey Block"],
["honeycomb_block", "Honeycomb Block"],
["netherite_scrap", "Netherite Scrap"],
["netherite_ingot", "Netherite Ingot"],
["hoglin_spawn_egg", "Spawn Hoglin"],
["ancient_debris", "Ancient Debris"],
["netherite_block", "Netherite Block"],
["basalt", "Basalt"],
["nether_sprouts", "Nether Sprouts"],
["warped_wart_block", "Warped Wart Block"],
["weeping_vines", "Weeping Vines"],
["shroomlight", "Shroomlight"],
["soul_soil", "Soul Soil"],
["soul_lantern", "Soul Lantern"],
["soul_torch", "Soul Torch"],
["warped_button", "Warped Button"],
["warped_door", "Warped Door"],
["warped_fence", "Warped Fence"],
["warped_fence_gate", "Warped Fence Gate"],
["warped_fungus", "Warped Fungus"],
["warped_nylium", "Warped Nylium"],
["warped_planks", "Warped Planks"],
["warped_pressure_plate", "Warped Pressure Plate"],
["warped_roots", "Warped Roots"],
["warped_sign", "Warped Sign"],
["warped_slab", "Warped Slab"],
["warped_stairs", "Warped Stairs"],
["warped_stem", "Warped Stem"],
["warped_trapdoor", "Warped Trapdoor"],
["crimson_button", "Crimson Button"],
["crimson_door", "Crimson Door"],
["crimson_fence", "Crimson Fence"],
["crimson_fence_gate", "Crimson Fence Gate"],
["crimson_fungus", "Crimson Fungus"],
["crimson_nylium", "Crimson Nylium"],
["crimson_planks", "Crimson Planks"],
["crimson_pressure_plate", "Crimson Pressure Plate"],
["crimson_roots", "Crimson Roots"],
["crimson_sign", "Crimson Sign"],
["crimson_slab", "Crimson Slab"],
["crimson_stairs", "Crimson Stairs"],
["crimson_stem", "Crimson Stem"],
["crimson_trapdoor", "Crimson Trapdoor"],
["stripped_crimson_stem", "Stripped Crimson Stem"],
["stripped_warped_stem", "Stripped Warped Stem"],
["netherite_axe", "Netherite Axe"],
["netherite_boots", "Netherite Boots"],
["netherite_chestplate", "Netherite Chestplate"],
["netherite_helmet", "Netherite Helmet"],
["netherite_hoe", "Netherite Hoe"],
["netherite_leggings", "Netherite Leggings"],
["netherite_pickaxe", "Netherite Pickaxe"],
["netherite_shovel", "Netherite Shovel"],
["netherite_sword", "Netherite Sword"],
["piglin_spawn_egg", "Spawn Piglin"],
["piglin_brute_spawn_egg", "Spawn Piglin Brute"],
["target", "Target"],
["crying_obsidian", "Crying Obsidian"],
["stripped_warped_hyphae", "Stripped Warped Hyphae"],
["stripped_crimson_hyphae", "Stripped Crimson Hyphae"],
["warped_hyphae", "Warped Hyphae"],
["crimson_hyphae", "Crimson Hyphae"],
["twisting_vines", "Twisting Vines"],
["nether_gold_ore", "Nether Gold Ore"],
["respawn_anchor", "Respawn Anchor"],
["polished_basalt", "Polished Basalt"],
["warped_fungus_on_a_stick", "Warped Fungus on a Stick"],
["lodestone", "Lodestone"],
["strider_spawn_egg", "Spawn Strider"],
["zoglin_spawn_egg", "Spawn Zoglin"],
["blackstone", "Blackstone"],
["blackstone_slab", "Blackstone Slab"],
["blackstone_stairs", "Blackstone Stairs"],
["blackstone_wall", "Blackstone Wall"],
["chiseled_polished_blackstone", "Chiseled Polished Blackstone"],
[
"cracked_polished_blackstone_bricks",
"Cracked Polished Blackstone Bricks",
],
["gilded_blackstone", "Gilded Blackstone"],
["polished_blackstone", "Polished Blackstone"],
["polished_blackstone_brick_slab", "Polished Blackstone Brick Slab"],
[
"polished_blackstone_brick_stairs",
"Polished Blackstone Brick Stairs",
],
["polished_blackstone_brick_wall", "Polished Blackstone Brick Wall"],
["polished_blackstone_bricks", "Polished Blackstone Bricks"],
["polished_blackstone_button", "Polished Blackstone Button"],
[
"polished_blackstone_pressure_plate",
"Polished Blackstone Pressure Plate",
],
["polished_blackstone_slab", "Polished Blackstone Slab"],
["polished_blackstone_stairs", "Polished Blackstone Stairs"],
["polished_blackstone_wall", "Polished Blackstone Wall"],
["chiseled_nether_bricks", "Chiseled Nether Bricks"],
["cracked_nether_bricks", "Cracked Nether Bricks"],
["quartz_bricks", " Quartz Bricks"],
["soul_campfire", "Soul Campfire"],
["piglin_banner_pattern", "Piglin Banner Pattern"],
["music_disc_pigstep", "Music Disc Pigstep"],
["chain", "Chain"],
],
dsOperation = new Array("remove", "replace", "place"),
disabledSlots = new Array(
"Hand",
"Boot",
"Leg",
"Chest",
"Head",
"Offhand"
),
spawnEggs = [
"bat",
"blaze",
"cat",
"cave_spider",
"chicken",
"cod",
"cow",
"creeper",
"dolphin",
"donkey",
"drowned",
"elder_guardian",
"ender_dragon",
"enderman",
"endermite",
"evoker_fangs",
"evoker",
"fox",
"ghast",
"giant",
"guardian",
"horse",
"husk",
"ravager",
"illusioner",
"llama",
"magma_cube",
"mooshroom",
"mule",
"ocelot",
"panda",
"parrot",
"phantom",
"pig",
"pillager",
"polar_bear",
"pufferfish",
"rabbit",
"salmon",
"sheep",
"shulker",
"silverfish",
"skeleton",
"skeleton_horse",
"slime",
"snow_golem",
"spider",
"squid",
"stray",
"trader_llama",
"tropical_fish",
"turtle",
"vex",
"villager",
"iron_golem",
"vindicator",
"wandering_trader",
"witch",
"wither",
"wither_skeleton",
"wolf",
"zombie",
"zombie_horse",
"zombie_pigman",
"zombie_villager",
],
dyes = [
"Black",
"Red",
"Green",
"Brown",
"Blue",
"Purple",
"Cyan",
"Light Gray",
"Gray",
"Pink",
"Lime",
"Yellow",
"Light Blue",
"Magenta",
"Orange",
"White",
],
woolDyes = [
"White",
"Orange",
"Magenta",
"Light Blue",
"Yellow",
"Lime",
"Pink",
"Gray",
"Light Gray",
"Cyan",
"Purple",
"Blue",
"Brown",
"Green",
"Red",
"Black",
],
soundList = [
"ambient.cave",
"ambient.basalt_deltas.loop",
"ambient.basalt_deltas.additions",
"ambient.basalt_deltas.mood",
"ambient.crimson_forest.loop",
"ambient.crimson_forest.additions",
"ambient.crimson_forest.mood",
"ambient.warped_forest.loop",
"ambient.warped_forest.additions",
"ambient.warped_forest.mood",
"ambient.soul_sand_valley.loop",
"ambient.soul_sand_valley.additions",
"ambient.soul_sand_valley.mood",
"ambient.nether_wastes.loop",
"ambient.nether_wastes.additions",
"ambient.nether_wastes.mood",
"ambient.underwater.enter",
"ambient.underwater.exit",
"ambient.underwater.loop",
"ambient.underwater.loop.additions",
"ambient.underwater.loop.additions.rare",
"ambient.underwater.loop.additions.ultra_rare",
"block.anvil.break",
"block.anvil.destroy",
"block.anvil.fall",
"block.anvil.hit",
"block.anvil.land",
"block.anvil.place",
"block.anvil.step",
"event.raid.horn",
"block.anvil.use",
"block.beacon.activate",
"block.beacon.ambient",
"block.beacon.deactivate",
"block.beacon.power_select",
"block.bamboo.break",
"block.bamboo.fall",
"block.bamboo.hit",
"block.bamboo.place",
"block.bamboo.step",
"block.bamboo_sapling.place",
"block.bamboo_sapling.break",
"block.bamboo_sapling.hit",
"block.barrel.close",
"block.barrel.open",
"block.beehive.enter",
"block.beehive.exit",
"block.beehive.drip",
"block.beehive.shear",
"block.beehive.work",
"block.bell.use",
"block.bell.resonate",
"block.blastfurnace.fire_crackle",
"block.brewing_stand.brew",
"block.bubble_column.bubble_pop",
"block.bubble_column.upwards_ambient",
"block.bubble_column.upwards_inside",
"block.bubble_column.whirlpool_ambient",
"block.bubble_column.whirlpool_inside",
"block.campfire.crackle",
"block.chest.close",
"block.chest.locked",
"block.chest.open",
"block.chorus_flower.death",
"block.chorus_flower.grow",
"block.comparator.click",
"block.composter.fill",
"block.composter.fill_success",
"block.composter.empty",
"block.composter.ready",
"block.conduit.activate",
"block.conduit.ambient",
"block.conduit.ambient.short",
"block.conduit.attack.target",
"block.conduit.deactivate",
"block.dispenser.dispense",
"block.dispenser.fail",
"block.dispenser.launch",
"block.enchantment_table.use",
"block.end_gateway.spawn",
"block.end_portal.spawn",
"block.end_portal_frame.fill",
"block.ender_chest.close",
"block.ender_chest.open",
"block.fence_gate.close",
"block.fence_gate.open",
"block.fire.ambient",
"block.fire.extinguish",
"block.furnace.fire_crackle",
"block.glass.break",
"block.glass.fall",
"block.glass.hit",
"block.glass.place",
"block.glass.step",
"block.grass.break",
"block.grass.fall",
"block.grass.hit",
"block.grass.place",
"block.grass.step",
"block.grindstone.use",
"block.wet_grass.break",
"block.wet_grass.fall",
"block.wet_grass.hit",
"block.wet_grass.place",
"block.wet_grass.step",
"block.coral_block.break",
"block.coral_block.fall",
"block.coral_block.hit",
"block.coral_block.place",
"block.coral_block.step",
"block.respawn_anchor.charge",
"block.respawn_anchor.deplete",
"block.respawn_anchor.set_spawn",
"block.respawn_anchor.ambient",
"block.gravel.break",
"block.gravel.fall",
"block.gravel.hit",
"block.gravel.place",
"block.gravel.step",
"block.honey_block.break",
"block.honey_block.fall",
"block.honey_block.hit",
"block.honey_block.place",
"block.honey_block.slide",
"block.honey_block.step",
"block.iron_door.close",
"block.iron_door.open",
"block.iron_trapdoor.close",
"block.iron_trapdoor.open",
"block.ladder.break",
"block.ladder.fall",
"block.ladder.hit",
"block.ladder.place",
"block.ladder.step",
"block.lantern.break",
"block.lantern.fall",
"block.lantern.hit",
"block.lantern.place",
"block.lantern.step",
"block.lava.ambient",
"block.lava.extinguish",
"block.lava.pop",
"block.lever.click",
"block.lily_pad.place",
"block.lodestone.break",
"block.lodestone.step",
"block.lodestone.place",
"block.lodestone.hit",
"block.lodestone.fall",
"block.chain.break",
"block.chain.fall",
"block.chain.hit",
"block.chain.place",
"block.chain.step",
"block.metal.break",
"block.metal.fall",
"block.metal.hit",
"block.metal.place",
"block.metal.step",
"block.metal_pressure_plate.click_off",
"block.metal_pressure_plate.click_on",
"block.note_block.basedrum",
"block.note_block.bass",
"block.note_block.bell",
"block.note_block.chime",
"block.note_block.flute",
"block.note_block.guitar",
"block.note_block.harp",
"block.note_block.hat",
"block.note_block.snare",
"block.note_block.xylophone",
"block.note_block.cow_bell",
"block.note_block.iron_xylophone",
"block.note_block.didgeridoo",
"block.note_block.bit",
"block.note_block.banjo",
"block.note_block.pling",
"block.piston.contract",
"block.piston.extend",
"block.portal.ambient",
"block.portal.travel",
"block.portal.trigger",
"block.pumpkin.carve",
"block.redstone_torch.burnout",
"block.sand.break",
"block.sand.fall",
"block.sand.hit",
"block.sand.place",
"block.sand.step",
"block.scaffolding.break",
"block.scaffolding.fall",
"block.scaffolding.hit",
"block.scaffolding.place",
"block.scaffolding.step",
"block.shulker_box.close",
"block.shulker_box.open",
"block.slime_block.break",
"block.slime_block.fall",
"block.slime_block.hit",
"block.slime_block.place",
"block.slime_block.step",
"block.smoker.smoke",
"block.smithing_table.use",
"block.snow.break",
"block.snow.fall",
"block.snow.hit",
"block.snow.place",
"block.snow.step",
"block.soul_sand.break",
"block.soul_sand.fall",
"block.soul_sand.hit",
"block.soul_sand.place",
"block.soul_sand.step",
"block.soul_soil.break",
"block.soul_soil.fall",
"block.soul_soil.hit",
"block.soul_soil.place",
"block.soul_soil.step",
"block.nylium.break",
"block.nylium.fall",
"block.nylium.hit",
"block.nylium.place",
"block.nylium.step",
"block.roots.break",
"block.roots.fall",
"block.roots.hit",
"block.roots.place",
"block.roots.step",
"block.fungus.break",
"block.fungus.fall",
"block.fungus.hit",
"block.fungus.place",
"block.fungus.step",
"block.stem.break",
"block.stem.fall",
"block.stem.hit",
"block.stem.place",
"block.stem.step",
"block.vine.step",
"block.weeping_vines.break",
"block.weeping_vines.fall",
"block.weeping_vines.hit",
"block.weeping_vines.place",
"block.weeping_vines.step",
"block.shroomlight.break",
"block.shroomlight.fall",
"block.shroomlight.hit",
"block.shroomlight.place",
"block.shroomlight.step",
"block.basalt.break",
"block.basalt.fall",
"block.basalt.hit",
"block.basalt.place",
"block.basalt.step",
"block.bone_block.break",
"block.bone_block.fall",
"block.bone_block.hit",
"block.bone_block.place",
"block.bone_block.step",
"block.nether_bricks.break",
"block.nether_bricks.fall",
"block.nether_bricks.hit",
"block.nether_bricks.place",
"block.nether_bricks.step",
"block.netherrack.break",
"block.netherrack.fall",
"block.netherrack.hit",
"block.netherrack.place",
"block.netherrack.step",
"block.nether_sprouts.break",
"block.nether_sprouts.fall",
"block.nether_sprouts.hit",
"block.nether_sprouts.place",
"block.nether_sprouts.step",
"block.wart_block.break",
"block.wart_block.fall",
"block.wart_block.hit",
"block.wart_block.place",
"block.wart_block.step",
"block.nether_ore.break",
"block.nether_ore.fall",
"block.nether_ore.hit",
"block.nether_ore.place",
"block.nether_ore.step",
"block.nether_gold_ore.break",
"block.nether_gold_ore.fall",
"block.nether_gold_ore.hit",
"block.nether_gold_ore.place",
"block.nether_gold_ore.step",
"block.gilded_blackstone.break",
"block.gilded_blackstone.fall",
"block.gilded_blackstone.hit",
"block.gilded_blackstone.place",
"block.gilded_blackstone.step",
"block.stone.break",
"block.stone.fall",
"block.stone.hit",
"block.stone.place",
"block.stone.step",
"block.stone_button.click_off",
"block.stone_button.click_on",
"block.stone_pressure_plate.click_off",
"block.stone_pressure_plate.click_on",
"block.sweet_berry_bush.break",
"block.sweet_berry_bush.place",
"block.tripwire.attach",
"block.tripwire.click_off",
"block.tripwire.click_on",
"block.tripwire.detach",
"block.water.ambient",
"block.wood.break",
"block.wood.fall",
"block.wood.hit",
"block.wood.place",
"block.wood.step",
"block.wooden_button.click_off",
"block.wooden_button.click_on",
"block.wooden_door.close",
"block.wooden_door.open",
"block.wooden_pressure_plate.click_off",
"block.wooden_pressure_plate.click_on",
"block.wooden_trapdoor.close",
"block.wooden_trapdoor.open",
"block.wool.break",
"block.wool.fall",
"block.wool.hit",
"block.wool.place",
"block.wool.step",
"enchant.thorns.hit",
"particle.soul_escape",
"entity.armor_stand.break",
"entity.armor_stand.fall",
"entity.armor_stand.hit",
"entity.armor_stand.place",
"entity.arrow.hit",
"entity.arrow.hit_player",
"entity.arrow.shoot",
"entity.bat.ambient",
"entity.bat.death",
"entity.bat.hurt",
"entity.bat.loop",
"entity.bat.takeoff",
"entity.bee.loop",
"entity.bee.loop_aggressive",
"entity.bee.death",
"entity.bee.hurt",
"entity.bee.pollinate",
"entity.bee.sting",
"entity.blaze.ambient",
"entity.blaze.burn",
"entity.blaze.death",
"entity.blaze.hurt",
"entity.blaze.shoot",
"entity.boat.paddle_land",
"entity.boat.paddle_water",
"entity.cat.ambient",
"entity.cat.beg_for_food",
"entity.cat.death",
"entity.cat.eat",
"entity.cat.hiss",
"entity.cat.hurt",
"entity.cat.purr",
"entity.cat.purreow",
"entity.cat.stray_ambient",
"entity.ocelot.ambient",
"entity.ocelot.hurt",
"entity.ocelot.death",
"entity.chicken.ambient",
"entity.chicken.death",
"entity.chicken.egg",
"entity.chicken.hurt",
"entity.chicken.step",
"entity.cod.ambient",
"entity.cod.death",
"entity.cod.flop",
"entity.cod.hurt",
"entity.cow.ambient",
"entity.cow.death",
"entity.cow.hurt",
"entity.cow.milk",
"entity.cow.step",
"entity.creeper.death",
"entity.creeper.hurt",
"entity.creeper.primed",
"entity.dolphin.ambient",
"entity.dolphin.ambient_water",
"entity.dolphin.attack",
"entity.dolphin.death",
"entity.dolphin.eat",
"entity.dolphin.hurt",
"entity.dolphin.jump",
"entity.dolphin.play",
"entity.dolphin.splash",
"entity.dolphin.swim",
"entity.donkey.ambient",
"entity.donkey.angry",
"entity.donkey.chest",
"entity.donkey.death",
"entity.donkey.eat",
"entity.donkey.hurt",
"entity.dragon_fireball.explode",
"entity.drowned.ambient",
"entity.drowned.ambient_water",
"entity.drowned.death",
"entity.drowned.death_water",
"entity.drowned.hurt",
"entity.drowned.hurt_water",
"entity.drowned.shoot",
"entity.drowned.step",
"entity.drowned.swim",
"entity.egg.throw",
"entity.elder_guardian.ambient",
"entity.elder_guardian.ambient_land",
"entity.elder_guardian.curse",
"entity.elder_guardian.death",
"entity.elder_guardian.death_land",
"entity.elder_guardian.flop",
"entity.elder_guardian.hurt",
"entity.elder_guardian.hurt_land",
"entity.ender_dragon.ambient",
"entity.ender_dragon.death",
"entity.ender_dragon.flap",
"entity.ender_dragon.growl",
"entity.ender_dragon.hurt",
"entity.ender_dragon.shoot",
"entity.ender_eye.death",
"entity.ender_eye.launch",
"entity.ender_pearl.throw",
"entity.enderman.ambient",
"entity.enderman.death",
"entity.enderman.hurt",
"entity.enderman.scream",
"entity.enderman.stare",
"entity.enderman.teleport",
"entity.endermite.ambient",
"entity.endermite.death",
"entity.endermite.hurt",
"entity.endermite.step",
"entity.evoker.ambient",
"entity.evoker.cast_spell",
"entity.evoker.celebrate",
"entity.evoker.death",
"entity.evoker.hurt",
"entity.evoker.prepare_attack",
"entity.evoker.prepare_summon",
"entity.evoker.prepare_wololo",
"entity.evoker_fangs.attack",
"entity.experience_bottle.throw",
"entity.experience_orb.pickup",
"entity.firework_rocket.blast",
"entity.firework_rocket.blast_far",
"entity.firework_rocket.large_blast",
"entity.firework_rocket.large_blast_far",
"entity.firework_rocket.launch",
"entity.firework_rocket.shoot",
"entity.firework_rocket.twinkle",
"entity.firework_rocket.twinkle_far",
"entity.fish.swim",
"entity.fishing_bobber.retrieve",
"entity.fishing_bobber.splash",
"entity.fishing_bobber.throw",
"entity.fox.ambient",
"entity.fox.hurt",
"entity.fox.death",
"entity.fox.aggro",
"entity.fox.sniff",
"entity.fox.bite",
"entity.fox.eat",
"entity.fox.screech",
"entity.fox.sleep",
"entity.fox.spit",
"entity.fox.teleport",
"entity.generic.big_fall",
"entity.generic.burn",
"entity.generic.death",
"entity.generic.drink",
"entity.generic.eat",
"entity.generic.explode",
"entity.generic.extinguish_fire",
"entity.generic.hurt",
"entity.generic.small_fall",
"entity.generic.splash",
"entity.generic.swim",
"entity.ghast.ambient",
"entity.ghast.death",
"entity.ghast.hurt",
"entity.ghast.scream",
"entity.ghast.shoot",
"entity.ghast.warn",
"entity.guardian.ambient",
"entity.guardian.ambient_land",
"entity.guardian.attack",
"entity.guardian.death",
"entity.guardian.death_land",
"entity.guardian.flop",
"entity.guardian.hurt",
"entity.guardian.hurt_land",
"entity.hoglin.ambient",
"entity.hoglin.angry",
"entity.hoglin.attack",
"entity.hoglin.converted_to_zombified",
"entity.hoglin.hurt",
"entity.hoglin.death",
"entity.hoglin.retreat",
"entity.hoglin.step",
"entity.zoglin.ambient",
"entity.zoglin.angry",
"entity.zoglin.attack",
"entity.zoglin.hurt",
"entity.zoglin.death",
"entity.zoglin.step",
"entity.horse.ambient",
"entity.horse.angry",
"entity.horse.armor",
"entity.horse.breathe",
"entity.horse.death",
"entity.horse.eat",
"entity.horse.gallop",
"entity.horse.hurt",
"entity.horse.jump",
"entity.horse.land",
"entity.horse.saddle",
"entity.horse.step",
"entity.horse.step_wood",
"entity.hostile.big_fall",
"entity.hostile.death",
"entity.hostile.hurt",
"entity.hostile.small_fall",
"entity.hostile.splash",
"entity.hostile.swim",
"entity.husk.ambient",
"entity.husk.converted_to_zombie",
"entity.husk.death",
"entity.husk.hurt",
"entity.husk.step",
"entity.ravager.ambient",
"entity.ravager.attack",
"entity.ravager.celebrate",
"entity.ravager.death",
"entity.ravager.hurt",
"entity.ravager.step",
"entity.ravager.stunned",
"entity.ravager.roar",
"entity.illusioner.ambient",
"entity.illusioner.cast_spell",
"entity.illusioner.death",
"entity.illusioner.hurt",
"entity.illusioner.mirror_move",
"entity.illusioner.prepare_blindness",
"entity.illusioner.prepare_mirror",
"entity.iron_golem.attack",
"entity.iron_golem.death",
"entity.iron_golem.hurt",
"entity.iron_golem.repair",
"entity.iron_golem.damage",
"entity.iron_golem.step",
"entity.item.break",
"entity.item.pickup",
"entity.item_frame.add_item",
"entity.item_frame.break",
"entity.item_frame.place",
"entity.item_frame.remove_item",
"entity.item_frame.rotate_item",
"entity.leash_knot.break",
"entity.leash_knot.place",
"entity.lightning_bolt.impact",
"entity.lightning_bolt.thunder",
"entity.lingering_potion.throw",
"entity.llama.ambient",
"entity.llama.angry",
"entity.llama.chest",
"entity.llama.death",
"entity.llama.eat",
"entity.llama.hurt",
"entity.llama.spit",
"entity.llama.step",
"entity.llama.swag",
"entity.magma_cube.death",
"entity.magma_cube.death_small",
"entity.magma_cube.hurt",
"entity.magma_cube.hurt_small",
"entity.magma_cube.jump",
"entity.magma_cube.squish",
"entity.magma_cube.squish_small",
"entity.minecart.inside",
"entity.minecart.riding",
"entity.mooshroom.convert",
"entity.mooshroom.eat",
"entity.mooshroom.milk",
"entity.mooshroom.suspicious_milk",
"entity.mooshroom.shear",
"entity.mule.ambient",
"entity.mule.angry",
"entity.mule.chest",
"entity.mule.death",
"entity.mule.eat",
"entity.mule.hurt",
"entity.painting.break",
"entity.painting.place",
"entity.panda.pre_sneeze",
"entity.panda.sneeze",
"entity.panda.ambient",
"entity.panda.bite",
"entity.panda.cant_breed",
"entity.panda.death",
"entity.panda.eat",
"entity.panda.step",
"entity.panda.aggressive_ambient",
"entity.panda.worried_ambient",
"entity.panda.hurt",
"entity.pillager.ambient",
"entity.pillager.hurt",
"entity.pillager.celebrate",
"entity.pillager.death",
"entity.parrot.ambient",
"entity.parrot.death",
"entity.parrot.eat",
"entity.parrot.fly",
"entity.parrot.hurt",
"entity.parrot.imitate.blaze",
"entity.parrot.imitate.creeper",
"entity.parrot.imitate.drowned",
"entity.parrot.imitate.elder_guardian",
"entity.parrot.imitate.ender_dragon",
"entity.parrot.imitate.endermite",
"entity.parrot.imitate.evoker",
"entity.parrot.imitate.ghast",
"entity.parrot.imitate.guardian",
"entity.parrot.imitate.hoglin",
"entity.parrot.imitate.husk",
"entity.parrot.imitate.illusioner",
"entity.parrot.imitate.magma_cube",
"entity.parrot.imitate.phantom",
"entity.parrot.imitate.piglin",
"entity.parrot.imitate.piglin_brute",
"entity.parrot.imitate.pillager",
"entity.parrot.imitate.ravager",
"entity.parrot.imitate.shulker",
"entity.parrot.imitate.silverfish",
"entity.parrot.imitate.skeleton",
"entity.parrot.imitate.slime",
"entity.parrot.imitate.spider",
"entity.parrot.imitate.stray",
"entity.parrot.imitate.vex",
"entity.parrot.imitate.vindicator",
"entity.parrot.imitate.witch",
"entity.parrot.imitate.wither",
"entity.parrot.imitate.wither_skeleton",
"entity.parrot.imitate.zoglin",
"entity.parrot.imitate.zombie",
"entity.parrot.imitate.zombie_villager",
"entity.parrot.step",
"entity.phantom.ambient",
"entity.phantom.bite",
"entity.phantom.death",
"entity.phantom.flap",
"entity.phantom.hurt",
"entity.phantom.swoop",
"entity.pig.ambient",
"entity.pig.death",
"entity.pig.hurt",
"entity.pig.saddle",
"entity.pig.step",
"entity.piglin.ambient",
"entity.piglin.angry",
"entity.piglin.celebrate",
"entity.piglin.converted_to_zombified",
"entity.piglin.hurt",
"entity.piglin.death",
"entity.piglin.retreat",
"entity.piglin.step",
"entity.piglin.jealous",
"entity.piglin.admiring_item",
"entity.piglin_brute.ambient",
"entity.piglin_brute.angry",
"entity.piglin_brute.death",
"entity.piglin_brute.hurt",
"entity.piglin_brute.step",
"entity.piglin_brute.converted_to_zombified",
"entity.player.attack.crit",
"entity.player.attack.knockback",
"entity.player.attack.nodamage",
"entity.player.attack.strong",
"entity.player.attack.sweep",
"entity.player.attack.weak",
"entity.player.big_fall",
"entity.player.breath",
"entity.player.burp",
"entity.player.death",
"entity.player.hurt",
"entity.player.hurt_drown",
"entity.player.hurt_on_fire",
"entity.player.hurt_sweet_berry_bush",
"entity.player.levelup",
"entity.player.small_fall",
"entity.player.splash",
"entity.player.splash.high_speed",
"entity.player.swim",
"entity.polar_bear.ambient",
"entity.polar_bear.ambient_baby",
"entity.polar_bear.death",
"entity.polar_bear.hurt",
"entity.polar_bear.step",
"entity.polar_bear.warning",
"entity.puffer_fish.ambient",
"entity.puffer_fish.blow_out",
"entity.puffer_fish.blow_up",
"entity.puffer_fish.death",
"entity.puffer_fish.flop",
"entity.puffer_fish.hurt",
"entity.puffer_fish.sting",
"entity.rabbit.ambient",
"entity.rabbit.attack",
"entity.rabbit.death",
"entity.rabbit.hurt",
"entity.rabbit.jump",
"entity.salmon.ambient",
"entity.salmon.death",
"entity.salmon.flop",
"entity.salmon.hurt",
"entity.sheep.ambient",
"entity.sheep.death",
"entity.sheep.hurt",
"entity.sheep.shear",
"entity.sheep.step",
"entity.shulker.ambient",
"entity.shulker.close",
"entity.shulker.death",
"entity.shulker.hurt",
"entity.shulker.hurt_closed",
"entity.shulker.open",
"entity.shulker.shoot",
"entity.shulker.teleport",
"entity.shulker_bullet.hit",
"entity.shulker_bullet.hurt",
"entity.silverfish.ambient",
"entity.silverfish.death",
"entity.silverfish.hurt",
"entity.silverfish.step",
"entity.skeleton.ambient",
"entity.skeleton.death",
"entity.skeleton.hurt",
"entity.skeleton.shoot",
"entity.skeleton.step",
"entity.skeleton_horse.ambient",
"entity.skeleton_horse.ambient_water",
"entity.skeleton_horse.death",
"entity.skeleton_horse.gallop_water",
"entity.skeleton_horse.hurt",
"entity.skeleton_horse.jump_water",
"entity.skeleton_horse.step_water",
"entity.skeleton_horse.swim",
"entity.slime.attack",
"entity.slime.death",
"entity.slime.death_small",
"entity.slime.hurt",
"entity.slime.hurt_small",
"entity.slime.jump",
"entity.slime.jump_small",
"entity.slime.squish",
"entity.slime.squish_small",
"entity.snow_golem.ambient",
"entity.snow_golem.death",
"entity.snow_golem.hurt",
"entity.snow_golem.shoot",
"entity.snow_golem.shear",
"entity.snowball.throw",
"entity.spider.ambient",
"entity.spider.death",
"entity.spider.hurt",
"entity.spider.step",
"entity.splash_potion.break",
"entity.splash_potion.throw",
"entity.squid.ambient",
"entity.squid.death",
"entity.squid.hurt",
"entity.squid.squirt",
"entity.stray.ambient",
"entity.stray.death",
"entity.stray.hurt",
"entity.stray.step",
"entity.strider.ambient",
"entity.strider.eat",
"entity.strider.happy",
"entity.strider.hurt",
"entity.strider.death",
"entity.strider.retreat",
"entity.strider.saddle",
"entity.strider.step",
"entity.strider.step_lava",
"entity.tnt.primed",
"entity.tropical_fish.ambient",
"entity.tropical_fish.death",
"entity.tropical_fish.flop",
"entity.tropical_fish.hurt",
"entity.turtle.ambient_land",
"entity.turtle.death",
"entity.turtle.death_baby",
"entity.turtle.egg_break",
"entity.turtle.egg_crack",
"entity.turtle.egg_hatch",
"entity.turtle.hurt",
"entity.turtle.hurt_baby",
"entity.turtle.lay_egg",
"entity.turtle.shamble",
"entity.turtle.shamble_baby",
"entity.turtle.swim",
"entity.vex.ambient",
"entity.vex.charge",
"entity.vex.death",
"entity.vex.hurt",
"entity.villager.ambient",
"entity.villager.celebrate",
"entity.villager.death",
"entity.villager.hurt",
"entity.villager.no",
"entity.villager.trade",
"entity.villager.yes",
"entity.villager.work_armorer",
"entity.villager.work_butcher",
"entity.villager.work_cartographer",
"entity.villager.work_cleric",
"entity.villager.work_farmer",
"entity.villager.work_fisherman",
"entity.villager.work_fletcher",
"entity.villager.work_leatherworker",
"entity.villager.work_librarian",
"entity.villager.work_mason",
"entity.villager.work_shepherd",
"entity.villager.work_toolsmith",
"entity.villager.work_weaponsmith",
"entity.vindicator.ambient",
"entity.vindicator.celebrate",
"entity.vindicator.death",
"entity.vindicator.hurt",
"entity.wandering_trader.ambient",
"entity.wandering_trader.death",
"entity.wandering_trader.hurt",
"entity.wandering_trader.no",
"entity.wandering_trader.trade",
"entity.wandering_trader.yes",
"entity.wandering_trader.drink_milk",
"entity.wandering_trader.drink_potion",
"entity.wandering_trader.disappeared",
"entity.wandering_trader.reappeared",
"entity.witch.ambient",
"entity.witch.celebrate",
"entity.witch.death",
"entity.witch.drink",
"entity.witch.hurt",
"entity.witch.throw",
"entity.wither.ambient",
"entity.wither.break_block",
"entity.wither.death",
"entity.wither.hurt",
"entity.wither.shoot",
"entity.wither.spawn",
"entity.wither_skeleton.ambient",
"entity.wither_skeleton.death",
"entity.wither_skeleton.hurt",
"entity.wither_skeleton.step",
"entity.wolf.ambient",
"entity.wolf.death",
"entity.wolf.growl",
"entity.wolf.howl",
"entity.wolf.hurt",
"entity.wolf.pant",
"entity.wolf.shake",
"entity.wolf.step",
"entity.wolf.whine",
"entity.zombie.ambient",
"entity.zombie.attack_iron_door",
"entity.zombie.attack_wooden_door",
"entity.zombie.break_wooden_door",
"entity.zombie.converted_to_drowned",
"entity.zombie.death",
"entity.zombie.destroy_egg",
"entity.zombie.hurt",
"entity.zombie.infect",
"entity.zombie.step",
"entity.zombie_horse.ambient",
"entity.zombie_horse.death",
"entity.zombie_horse.hurt",
"entity.zombified_piglin.ambient",
"entity.zombified_piglin.angry",
"entity.zombified_piglin.death",
"entity.zombified_piglin.hurt",
"entity.zombie_villager.ambient",
"entity.zombie_villager.converted",
"entity.zombie_villager.cure",
"entity.zombie_villager.death",
"entity.zombie_villager.hurt",
"entity.zombie_villager.step",
"item.armor.equip_chain",
"item.armor.equip_diamond",
"item.armor.equip_elytra",
"item.armor.equip_generic",
"item.armor.equip_gold",
"item.armor.equip_iron",
"item.armor.equip_leather",
"item.armor.equip_netherite",
"item.armor.equip_turtle",
"item.axe.strip",
"item.book.page_turn",
"item.book.put",
"item.honey_bottle.drink",
"item.bottle.empty",
"item.bottle.fill",
"item.bottle.fill_dragonbreath",
"item.bucket.empty",
"item.bucket.empty_fish",
"item.bucket.empty_lava",
"item.bucket.fill",
"item.bucket.fill_fish",
"item.bucket.fill_lava",
"item.chorus_fruit.teleport",
"item.crossbow.quick_charge_1",
"item.crossbow.quick_charge_2",
"item.crossbow.quick_charge_3",
"item.crossbow.loading_start",
"item.crossbow.loading_middle",
"item.crossbow.loading_end",
"item.crossbow.shoot",
"item.crossbow.hit",
"item.elytra.flying",
"item.firecharge.use",
"item.flintandsteel.use",
"item.hoe.till",
"item.lodestone_compass.lock",
"item.nether_wart.plant",
"item.crop.plant",
"block.crop.break",
"block.nether_wart.break",
"block.netherite_block.break",
"block.netherite_block.fall",
"block.netherite_block.hit",
"block.netherite_block.place",
"block.netherite_block.step",
"block.ancient_debris.break",
"block.ancient_debris.fall",
"block.ancient_debris.hit",
"block.ancient_debris.place",
"block.ancient_debris.step",
"item.shield.block",
"item.shield.break",
"item.shovel.flatten",
"item.totem.use",
"item.sweet_berries.pick_from_bush",
"item.trident.hit",
"item.trident.hit_ground",
"item.trident.return",
"item.trident.riptide_1",
"item.trident.riptide_2",
"item.trident.riptide_3",
"item.trident.throw",
"item.trident.thunder",
"music.creative",
"music.credits",
"music.dragon",
"music.end",
"music.game",
"music.menu",
"music.nether.basalt_deltas",
"music.nether.nether_wastes",
"music.nether.soul_sand_valley",
"music.nether.crimson_forest",
"music.nether.warped_forest",
"music.under_water",
"music_disc.11",
"music_disc.13",
"music_disc.blocks",
"music_disc.cat",
"music_disc.chirp",
"music_disc.far",
"music_disc.mall",
"music_disc.mellohi",
"music_disc.pigstep",
"music_disc.stal",
"music_disc.strad",
"music_disc.wait",
"music_disc.ward",
"ui.button.click",
"ui.cartography_table.take_result",
"ui.loom.select_pattern",
"ui.loom.take_result",
"ui.toast.challenge_complete",
"ui.toast.in",
"ui.toast.out",
"ui.stonecutter.select_recipe",
"ui.stonecutter.take_result",
"weather.rain",
"weather.rain.above",
],
particles = [
"ambient_entity_effect",
"angry_villager",
"ash",
"barrier",
"block",
"bubble",
"bubble_column_up",
"bubble_pop",
"campfire_cosy_smoke",
"campfire_signal_smoke",
"cloud",
"composter",
"crimson_spore",
"crit",
"current_down",
"damage_indicator",
"dolphin",
"dragon_breath",
"dripping_honey",
"dripping_lava",
"dripping_obsidian_tear",
"dripping_water",
"dust",
"effect",
"elder_guardian",
"enchant",
"enchanted_hit",
"end_rod",
"entity_effect",
"explosion",
"explosion_emitter",
"falling_dust",
"falling_honey",
"falling_lava",
"falling_nectar",
"falling_obsidian_tear",
"falling_water",
"firework",
"fishing",
"flame",
"flash",
"happy_villager",
"heart",
"instant_effect",
"item",
"item_slime",
"item_snowball",
"landing_honey",
"landing_lava",
"landing_obsidian_tear",
"large_smoke",
"lava",
"mycelium",
"nautilus",
"note",
"poof",
"portal",
"rain",
"reverse_portal",
"smoke",
"sneeze",
"soul",
"soul_fire_flame",
"spit",
"splash",
"squid_ink",
"sweep_attack",
"totem_of_undying",
"underwater",
"warped_spore",
"white_ash",
"witch",
],
statusEffects = [
["-1", "unset"],
["1", "Speed"],
["2", "Slowness"],
["3", "Haste"],
["4", "Mining Fatigue"],
["5", "Strength"],
["6", "Instant Health"],
["7", "Instant Damage"],
["8", "Jump Boost"],
["9", "Nausea"],
["10", "Regeneration"],
["11", "Resistance"],
["12", "Fire Resistance"],
["13", "Water Breathing"],
["14", "Invisibility"],
["15", "Blindness"],
["16", "Night Vision"],
["17", "Hunger"],
["18", "Weakness"],
["19", "Poison"],
["20", "Wither"],
["21", "Health Boost"],
["22", "Absorption"],
["23", "Saturation"],
["24", "Glowing"],
["25", "Levitation"],
["26", "Luck"],
["27", "Bad Luck"],
["28", "Slow Falling"],
["29", "Conduit Power"],
["30", "Dolphins Grace"],
["31", "Bad Omen"],
["32", "Hero of the Village"],
],
statuseffects1p13 = {
1: "speed",
2: "slowness",
3: "haste",
4: "mining_fatigue",
5: "strength",
6: "instant_health",
7: "instant_damage",
8: "jump_boost",
9: "nausea",
10: "regeneration",
11: "resistance",
12: "fire_resistance",
13: "water_breathing",
14: "invisibility",
15: "blindness",
16: "night_vision",
17: "hunger",
18: "weakness",
19: "poison",
20: "wither",
21: "health_boost",
22: "absorption",
23: "saturation",
24: "glowing",
25: "levitation",
26: "luck",
27: "unluck",
28: "slow_falling",
29: "conduit_power",
30: "dolphins_grace",
31: "bad_omen",
32: "hero_of_the_village",
},
mobAttributes = [
"maxHealth",
"followRange",
"knockbackResistance",
"movementSpeed",
"attackDamage",
"armor",
"armorToughness",
"attackKnockback",
"jumpStrength",
"spawnReinforcements",
"flyingSpeed",
],
attributeModifiers = [
"maxHealth",
"followRange",
"knockbackResistance",
"movementSpeed",
"attackDamage",
"armor",
"armorToughness",
"attackSpeed",
"luck",
],
mobAttributes116 = [
"max_health",
"follow_range",
"knockback_resistance",
"movement_speed",
"attack_damage",
"armor",
"armor_toughness",
"attack_knockback",
"jump_strength",
"spawn_reinforcements",
"flying_speed",
],
attributeModifiers116 = [
"max_health",
"follow_range",
"knockback_resistance",
"movement_speed",
"attack_damage",
"armor",
"armor_toughness",
"attack_speed",
"luck",
],
flags = [
"Enchantments",
"Modifiers",
"Unbreakable",
"CanDestroy",
"CanPlaceOn",
"HideOthers",
],
bgPalette = [
"61abaf",
"247F45",
"7F653E",
"FF9999",
"7AF7FF",
"95FFBB",
"FFE9C9",
"FFC2B6",
"B3FFFF",
"48FF8A",
"FFC97D",
"FF826A",
"507C7F",
"4A7F5D",
"7F7465",
"7F615B",
"25C1CC",
"3ACC6E",
"CCA164",
"CC6855",
],
potions = new Array(
["-1", "unset"],
["empty", "Uncraftable Potion"],
["water", "Water Potion"],
["awkward", "Awkward Potion"],
["mundane", "Mundane Potion"],
["thick", "Thick Potion"],
["swiftness", "Swiftness Potion"],
["strong_swiftness", "Swiftness Strong Potion"],
["long_swiftness", "Swiftness Long Potion"],
["slowness", "Slowness Potion"],
["long_slowness", "Slowness Long Potion"],
["strength", "Strength Potion"],
["strong_strength", "Strength Strong Potion"],
["long_strength", "Strength Long Potion"],
["weakness", "Weakness Potion"],
["long_weakness", "Weakness Long Potion"],
["healing", "Healing Potion"],
["strong_healing", "Healing Strong Potion"],
["harming", "Harming Potion"],
["strong_harming", "Harming Strong Potion"],
["leaping", "Leaping Potion"],
["strong_leaping", "Leaping Strong Potion"],
["long_leaping", "Leaping Long Potion"],
["luck", "Luck Potion"],
["regeneration", "Regeneration Potion"],
["strong_regeneration", "Regeneration Strong Potion"],
["long_regeneration", "Regeneration Long Potion"],
["poison", "Poison Potion"],
["strong_poison", "Poison Strong Potion"],
["long_poison", "Poison Long Potion"],
["fire_resistance", "Fire Resistance Potion"],
["long_fire_resistance", "Fire Resistance Long Potion"],
["water_breathing", "Water Breathing Potion"],
["long_water_breathing", "Water Breathing Long Potion"],
["night_vision", "Night Vision Potion"],
["long_night_vision", "Night Vision Long Potion"],
["invisibility", "Invisibility Potion"],
["long_invisibility", "Invisibility Long Potion"],
["turtle_master", "Turtle Master Potion"],
["strong_turtle_master", "Turtle Master Strong Potion"],
["long_turtle_master", "Turtle Master Long Potion"],
["slow_falling", "Slow Falling Potion"],
["long_slow_falling", "Slow Falling Long Potion"]
),
enchantables = [];
(enchantables[0] = [
"Protection",
[
"turtle_helmet",
"leather_helmet",
"chainmail_helmet",
"iron_helmet",
"diamond_helmet",
"golden_helmet",
"leather_chestplate",
"chainmail_chestplate",
"iron_chestplate",
"diamond_chestplate",
"golden_chestplate",
"leather_leggings",
"chainmail_leggings",
"iron_leggings",
"diamond_leggings",
"golden_leggings",
"leather_boots",
"chainmail_boots",
"iron_boots",
"diamond_boots",
"golden_boots",
"netherite_helmet",
"netherite_boots",
"netherite_chestplate",
"netherite_leggings",
],
]),
(enchantables[1] = [
"Fire Protection",
[
"turtle_helmet",
"leather_helmet",
"chainmail_helmet",
"iron_helmet",
"diamond_helmet",
"golden_helmet",
"leather_chestplate",
"chainmail_chestplate",
"iron_chestplate",
"diamond_chestplate",
"golden_chestplate",
"leather_leggings",
"chainmail_leggings",
"iron_leggings",
"diamond_leggings",
"golden_leggings",
"leather_boots",
"chainmail_boots",
"iron_boots",
"diamond_boots",
"golden_boots",
"netherite_helmet",
"netherite_boots",
"netherite_chestplate",
"netherite_leggings",
],
]),
(enchantables[2] = [
"Feather Falling",
[
"leather_boots",
"chainmail_boots",
"iron_boots",
"diamond_boots",
"golden_boots",
"netherite_boots",
],
]),
(enchantables[3] = [
"Blast Protection",
[
"turtle_helmet",
"leather_helmet",
"chainmail_helmet",
"iron_helmet",
"diamond_helmet",
"golden_helmet",
"leather_chestplate",
"chainmail_chestplate",
"iron_chestplate",
"diamond_chestplate",
"golden_chestplate",
"leather_leggings",
"chainmail_leggings",
"iron_leggings",
"diamond_leggings",
"golden_leggings",
"leather_boots",
"chainmail_boots",
"iron_boots",
"diamond_boots",
"golden_boots",
"netherite_helmet",
"netherite_boots",
"netherite_chestplate",
"netherite_leggings",
],
]),
(enchantables[4] = [
"Projectile Protection",
[
"turtle_helmet",
"leather_helmet",
"chainmail_helmet",
"iron_helmet",
"diamond_helmet",
"golden_helmet",
"leather_chestplate",
"chainmail_chestplate",
"iron_chestplate",
"diamond_chestplate",
"golden_chestplate",
"leather_leggings",
"chainmail_leggings",
"iron_leggings",
"diamond_leggings",
"golden_leggings",
"leather_boots",
"chainmail_boots",
"iron_boots",
"diamond_boots",
"golden_boots",
"netherite_helmet",
"netherite_boots",
"netherite_chestplate",
"netherite_leggings",
],
]),
(enchantables[5] = [
"Respiration",
[
"turtle_helmet",
"leather_helmet",
"chainmail_helmet",
"iron_helmet",
"diamond_helmet",
"golden_helmet",
"netherite_helmet",
],
]),
(enchantables[6] = [
"Aqua Affinity",
[
"turtle_helmet",
"leather_helmet",
"chainmail_helmet",
"iron_helmet",
"diamond_helmet",
"golden_helmet",
"netherite_helmet",
],
]),
(enchantables[7] = [
"Thorns",
[
"turtle_helmet",
"leather_helmet",
"chainmail_helmet",
"iron_helmet",
"diamond_helmet",
"golden_helmet",
"leather_chestplate",
"chainmail_chestplate",
"iron_chestplate",
"diamond_chestplate",
"golden_chestplate",
"leather_leggings",
"chainmail_leggings",
"iron_leggings",
"diamond_leggings",
"golden_leggings",
"leather_boots",
"chainmail_boots",
"iron_boots",
"diamond_boots",
"golden_boots",
"netherite_helmet",
"netherite_boots",
"netherite_chestplate",
"netherite_leggings",
],
]),
(enchantables[8] = [
"Depth Strider",
[
"leather_boots",
"chainmail_boots",
"iron_boots",
"diamond_boots",
"golden_boots",
"netherite_boots",
],
]),
(enchantables[9] = [
"Frost Walker",
[
"leather_boots",
"chainmail_boots",
"iron_boots",
"diamond_boots",
"golden_boots",
"netherite_boots",
],
]),
(enchantables[10] = [
"Binding Curse",
[
"turtle_helmet",
"leather_helmet",
"chainmail_helmet",
"iron_helmet",
"diamond_helmet",
"golden_helmet",
"leather_chestplate",
"chainmail_chestplate",
"iron_chestplate",
"diamond_chestplate",
"golden_chestplate",
"leather_leggings",
"chainmail_leggings",
"iron_leggings",
"diamond_leggings",
"golden_leggings",
"leather_boots",
"chainmail_boots",
"iron_boots",
"diamond_boots",
"golden_boots",
"elytra",
"netherite_helmet",
"netherite_boots",
"netherite_chestplate",
"netherite_leggings",
],
]),
(enchantables[16] = [
"Sharpness",
[
"iron_sword",
"wooden_sword",
"stone_sword",
"diamond_sword",
"golden_sword",
"iron_axe",
"wooden_axe",
"stone_axe",
"diamond_axe",
"golden_axe",
"netherite_axe",
"netherite_sword",
],
]),
(enchantables[17] = [
"Smite",
[
"iron_sword",
"wooden_sword",
"stone_sword",
"diamond_sword",
"golden_sword",
"iron_axe",
"wooden_axe",
"stone_axe",
"diamond_axe",
"golden_axe",
"netherite_axe",
"netherite_sword",
],
]),
(enchantables[18] = [
"Bane of Arthropods",
[
"iron_sword",
"wooden_sword",
"stone_sword",
"diamond_sword",
"golden_sword",
"iron_axe",
"wooden_axe",
"stone_axe",
"diamond_axe",
"golden_axe",
"netherite_axe",
"netherite_sword",
],
]),
(enchantables[19] = [
"Knockback",
[
"iron_sword",
"wooden_sword",
"stone_sword",
"diamond_sword",
"golden_sword",
"netherite_sword",
],
]),
(enchantables[20] = [
"Fire Aspect",
[
"iron_sword",
"wooden_sword",
"stone_sword",
"diamond_sword",
"golden_sword",
"netherite_sword",
],
]),
(enchantables[21] = [
"Looting",
[
"iron_sword",
"wooden_sword",
"stone_sword",
"diamond_sword",
"golden_sword",
"netherite_sword",
],
]),
(enchantables[22] = [
"Sweeping",
[
"iron_sword",
"wooden_sword",
"stone_sword",
"diamond_sword",
"golden_sword",
"netherite_sword",
],
]),
(enchantables[32] = [
"Efficiency",
[
"iron_pickaxe",
"wooden_pickaxe",
"stone_pickaxe",
"diamond_pickaxe",
"golden_pickaxe",
"iron_shovel",
"wooden_shovel",
"stone_shovel",
"diamond_shovel",
"golden_shovel",
"iron_axe",
"wooden_axe",
"stone_axe",
"diamond_axe",
"golden_axe",
"shears",
"netherite_pickaxe",
"netherite_shovel",
"netherite_axe",
"wooden_hoe",
"stone_hoe",
"iron_hoe",
"diamond_hoe",
"golden_hoe",
"netherite_hoe",
],
]),
(enchantables[33] = [
"Silk Touch",
[
"iron_pickaxe",
"wooden_pickaxe",
"stone_pickaxe",
"diamond_pickaxe",
"golden_pickaxe",
"iron_shovel",
"wooden_shovel",
"stone_shovel",
"diamond_shovel",
"golden_shovel",
"iron_axe",
"wooden_axe",
"stone_axe",
"diamond_axe",
"golden_axe",
"netherite_pickaxe",
"netherite_shovel",
"netherite_axe",
"wooden_hoe",
"stone_hoe",
"iron_hoe",
"diamond_hoe",
"golden_hoe",
"netherite_hoe",
],
]),
(enchantables[34] = [
"Unbreaking",
[
"iron_pickaxe",
"wooden_pickaxe",
"stone_pickaxe",
"diamond_pickaxe",
"golden_pickaxe",
"iron_shovel",
"wooden_shovel",
"stone_shovel",
"diamond_shovel",
"golden_shovel",
"iron_axe",
"wooden_axe",
"stone_axe",
"diamond_axe",
"golden_axe",
"shears",
"iron_sword",
"wooden_sword",
"stone_sword",
"diamond_sword",
"golden_sword",
"leather_helmet",
"chainmail_helmet",
"iron_helmet",
"diamond_helmet",
"golden_helmet",
"leather_chestplate",
"chainmail_chestplate",
"iron_chestplate",
"diamond_chestplate",
"golden_chestplate",
"leather_leggings",
"chainmail_leggings",
"iron_leggings",
"diamond_leggings",
"golden_leggings",
"leather_boots",
"chainmail_boots",
"iron_boots",
"diamond_boots",
"golden_boots",
"bow",
"fishing_rod",
"carrot_on_a_stick",
"flint_and_steel",
"wooden_hoe",
"stone_hoe",
"iron_hoe",
"diamond_hoe",
"golden_hoe",
"elytra",
"shield",
"trident",
"turtle_helmet",
"crossbow",
"netherite_helmet",
"netherite_boots",
"netherite_chestplate",
"netherite_leggings",
"netherite_pickaxe",
"netherite_shovel",
"netherite_axe",
"netherite_hoe",
"netherite_sword",
"warped_fungus_on_a_stick",
],
]),
(enchantables[35] = [
"Fortune",
[
"iron_pickaxe",
"wooden_pickaxe",
"stone_pickaxe",
"diamond_pickaxe",
"golden_pickaxe",
"iron_shovel",
"wooden_shovel",
"stone_shovel",
"diamond_shovel",
"golden_shovel",
"iron_axe",
"wooden_axe",
"stone_axe",
"diamond_axe",
"golden_axe",
"netherite_pickaxe",
"netherite_shovel",
"netherite_axe",
"wooden_hoe",
"stone_hoe",
"iron_hoe",
"diamond_hoe",
"golden_hoe",
"netherite_hoe",
],
]),
(enchantables[48] = ["Power", ["bow"]]),
(enchantables[49] = ["Punch", ["bow"]]),
(enchantables[50] = ["Flame", ["bow"]]),
(enchantables[51] = ["Infinity", ["bow"]]),
(enchantables[61] = ["Luck of the Sea", ["fishing_rod"]]),
(enchantables[62] = ["Lure", ["fishing_rod"]]),
(enchantables[65] = ["Loyalty", ["trident"]]),
(enchantables[66] = ["Impaling", ["trident"]]),
(enchantables[67] = ["Riptide", ["trident"]]),
(enchantables[68] = ["Channeling", ["trident"]]),
(enchantables[70] = [
"Mending",
[
"iron_pickaxe",
"wooden_pickaxe",
"stone_pickaxe",
"diamond_pickaxe",
"golden_pickaxe",
"iron_shovel",
"wooden_shovel",
"stone_shovel",
"diamond_shovel",
"golden_shovel",
"iron_axe",
"wooden_axe",
"stone_axe",
"diamond_axe",
"golden_axe",
"shears",
"iron_sword",
"wooden_sword",
"stone_sword",
"diamond_sword",
"golden_sword",
"turtle_helmet",
"leather_helmet",
"chainmail_helmet",
"iron_helmet",
"diamond_helmet",
"golden_helmet",
"leather_chestplate",
"chainmail_chestplate",
"iron_chestplate",
"diamond_chestplate",
"golden_chestplate",
"leather_leggings",
"chainmail_leggings",
"iron_leggings",
"diamond_leggings",
"golden_leggings",
"leather_boots",
"chainmail_boots",
"iron_boots",
"diamond_boots",
"golden_boots",
"bow",
"fishing_rod",
"carrot_on_a_stick",
"flint_and_steel",
"wooden_hoe",
"stone_hoe",
"iron_hoe",
"diamond_hoe",
"golden_hoe",
"shield",
"elytra",
"trident",
"crossbow",
"netherite_helmet",
"netherite_boots",
"netherite_chestplate",
"netherite_leggings",
"netherite_pickaxe",
"netherite_shovel",
"netherite_axe",
"netherite_hoe",
"netherite_sword",
"warped_fungus_on_a_stick",
],
]),
(enchantables[71] = [
"Vanishing Curse",
[
"iron_pickaxe",
"wooden_pickaxe",
"stone_pickaxe",
"diamond_pickaxe",
"golden_pickaxe",
"iron_shovel",
"wooden_shovel",
"stone_shovel",
"diamond_shovel",
"golden_shovel",
"iron_axe",
"wooden_axe",
"stone_axe",
"diamond_axe",
"golden_axe",
"shears",
"iron_sword",
"wooden_sword",
"stone_sword",
"diamond_sword",
"golden_sword",
"turtle_helmet",
"leather_helmet",
"chainmail_helmet",
"iron_helmet",
"diamond_helmet",
"golden_helmet",
"leather_chestplate",
"chainmail_chestplate",
"iron_chestplate",
"diamond_chestplate",
"golden_chestplate",
"leather_leggings",
"chainmail_leggings",
"iron_leggings",
"diamond_leggings",
"golden_leggings",
"leather_boots",
"chainmail_boots",
"iron_boots",
"diamond_boots",
"golden_boots",
"bow",
"fishing_rod",
"carrot_on_a_stick",
"flint_and_steel",
"wooden_hoe",
"stone_hoe",
"iron_hoe",
"diamond_hoe",
"golden_hoe",
"shield",
"elytra",
"netherite_helmet",
"netherite_boots",
"netherite_chestplate",
"netherite_leggings",
"netherite_pickaxe",
"netherite_shovel",
"netherite_axe",
"netherite_hoe",
"netherite_sword",
"warped_fungus_on_a_stick",
"compass",
],
]),
(enchantables[72] = ["Multishot", ["crossbow"]]),
(enchantables[73] = ["Piercing", ["crossbow"]]),
(enchantables[74] = ["Quick Charge", ["crossbow"]]),
(enchantables[75] = [
"Soul Speed",
[
"leather_boots",
"chainmail_boots",
"iron_boots",
"diamond_boots",
"golden_boots",
"netherite_boots",
],
]);
var entityDescriptors,
mobSpawnerNBT,
beeHiveNestNBT,
settings,
knowledgeList = [
"acacia_boat",
"acacia_button",
"acacia_door",
"acacia_fence",
"acacia_fence_gate",
"acacia_planks",
"acacia_pressure_plate",
"acacia_sign",
"acacia_slab",
"acacia_stairs",
"acacia_trapdoor",
"acacia_wood",
"activator_rail",
"andesite",
"andesite_slab",
"andesite_slab_from_andesite_stonecutting",
"andesite_stairs",
"andesite_stairs_from_andesite_stonecutting",
"andesite_wall",
"andesite_wall_from_andesite_stonecutting",
"anvil",
"armor_dye",
"armor_stand",
"arrow",
"baked_potato",
"baked_potato_from_campfire_cooking",
"baked_potato_from_smoking",
"banner_duplicate",
"barrel",
"beacon",
"beehive",
"beetroot_soup",
"birch_boat",
"birch_button",
"birch_door",
"birch_fence",
"birch_fence_gate",
"birch_planks",
"birch_pressure_plate",
"birch_sign",
"birch_slab",
"birch_stairs",
"birch_trapdoor",
"birch_wood",
"blackstone_slab",
"blackstone_slab_from_blackstone_stonecutting",
"blackstone_stairs",
"blackstone_stairs_from_blackstone_stonecutting",
"blackstone_wall",
"blackstone_wall_from_blackstone_stonecutting",
"black_banner",
"black_bed",
"black_bed_from_white_bed",
"black_carpet",
"black_carpet_from_white_carpet",
"black_concrete_powder",
"black_dye",
"black_dye_from_wither_rose",
"black_glazed_terracotta",
"black_stained_glass",
"black_stained_glass_pane",
"black_stained_glass_pane_from_glass_pane",
"black_terracotta",
"black_wool",
"blast_furnace",
"blaze_powder",
"blue_banner",
"blue_bed",
"blue_bed_from_white_bed",
"blue_carpet",
"blue_carpet_from_white_carpet",
"blue_concrete_powder",
"blue_dye",
"blue_dye_from_cornflower",
"blue_glazed_terracotta",
"blue_ice",
"blue_stained_glass",
"blue_stained_glass_pane",
"blue_stained_glass_pane_from_glass_pane",
"blue_terracotta",
"blue_wool",
"bone_block",
"bone_meal",
"bone_meal_from_bone_block",
"book",
"bookshelf",
"book_cloning",
"bow",
"bowl",
"bread",
"brewing_stand",
"brick",
"bricks",
"brick_slab",
"brick_slab_from_bricks_stonecutting",
"brick_stairs",
"brick_stairs_from_bricks_stonecutting",
"brick_wall",
"brick_wall_from_bricks_stonecutting",
"brown_banner",
"brown_bed",
"brown_bed_from_white_bed",
"brown_carpet",
"brown_carpet_from_white_carpet",
"brown_concrete_powder",
"brown_dye",
"brown_glazed_terracotta",
"brown_stained_glass",
"brown_stained_glass_pane",
"brown_stained_glass_pane_from_glass_pane",
"brown_terracotta",
"brown_wool",
"bucket",
"cake",
"campfire",
"carrot_on_a_stick",
"cartography_table",
"cauldron",
"chain",
"charcoal",
"chest",
"chest_minecart",
"chiseled_nether_bricks",
"chiseled_nether_bricks_from_nether_bricks_stonecutting",
"chiseled_polished_blackstone",
"chiseled_polished_blackstone_from_blackstone_stonecutting",
"chiseled_polished_blackstone_from_polished_blackstone_stonecutting",
"chiseled_quartz_block",
"chiseled_quartz_block_from_quartz_block_stonecutting",
"chiseled_red_sandstone",
"chiseled_red_sandstone_from_red_sandstone_stonecutting",
"chiseled_sandstone",
"chiseled_sandstone_from_sandstone_stonecutting",
"chiseled_stone_bricks",
"chiseled_stone_bricks_from_stone_bricks_stonecutting",
"chiseled_stone_bricks_stone_from_stonecutting",
"clay",
"clock",
"coal",
"coal_block",
"coal_from_blasting",
"coal_from_smelting",
"coarse_dirt",
"cobblestone_slab",
"cobblestone_slab_from_cobblestone_stonecutting",
"cobblestone_stairs",
"cobblestone_stairs_from_cobblestone_stonecutting",
"cobblestone_wall",
"cobblestone_wall_from_cobblestone_stonecutting",
"comparator",
"compass",
"composter",
"conduit",
"cooked_beef",
"cooked_beef_from_campfire_cooking",
"cooked_beef_from_smoking",
"cooked_chicken",
"cooked_chicken_from_campfire_cooking",
"cooked_chicken_from_smoking",
"cooked_cod",
"cooked_cod_from_campfire_cooking",
"cooked_cod_from_smoking",
"cooked_mutton",
"cooked_mutton_from_campfire_cooking",
"cooked_mutton_from_smoking",
"cooked_porkchop",
"cooked_porkchop_from_campfire_cooking",
"cooked_porkchop_from_smoking",
"cooked_rabbit",
"cooked_rabbit_from_campfire_cooking",
"cooked_rabbit_from_smoking",
"cooked_salmon",
"cooked_salmon_from_campfire_cooking",
"cooked_salmon_from_smoking",
"cookie",
"cracked_nether_bricks",
"cracked_polished_blackstone_bricks",
"cracked_stone_bricks",
"crafting_table",
"creeper_banner_pattern",
"crimson_button",
"crimson_door",
"crimson_fence",
"crimson_fence_gate",
"crimson_hyphae",
"crimson_planks",
"crimson_pressure_plate",
"crimson_sign",
"crimson_slab",
"crimson_stairs",
"crimson_trapdoor",
"crossbow",
"cut_red_sandstone",
"cut_red_sandstone_from_red_sandstone_stonecutting",
"cut_red_sandstone_slab",
"cut_red_sandstone_slab_from_cut_red_sandstone_stonecutting",
"cut_red_sandstone_slab_from_red_sandstone_stonecutting",
"cut_sandstone",
"cut_sandstone_from_sandstone_stonecutting",
"cut_sandstone_slab",
"cut_sandstone_slab_from_cut_sandstone_stonecutting",
"cut_sandstone_slab_from_sandstone_stonecutting",
"cyan_banner",
"cyan_bed",
"cyan_bed_from_white_bed",
"cyan_carpet",
"cyan_carpet_from_white_carpet",
"cyan_concrete_powder",
"cyan_dye",
"cyan_glazed_terracotta",
"cyan_stained_glass",
"cyan_stained_glass_pane",
"cyan_stained_glass_pane_from_glass_pane",
"cyan_terracotta",
"cyan_wool",
"dark_oak_boat",
"dark_oak_button",
"dark_oak_door",
"dark_oak_fence",
"dark_oak_fence_gate",
"dark_oak_planks",
"dark_oak_pressure_plate",
"dark_oak_sign",
"dark_oak_slab",
"dark_oak_stairs",
"dark_oak_trapdoor",
"dark_oak_wood",
"dark_prismarine",
"dark_prismarine_slab",
"dark_prismarine_slab_from_dark_prismarine_stonecutting",
"dark_prismarine_stairs",
"dark_prismarine_stairs_from_dark_prismarine_stonecutting",
"daylight_detector",
"detector_rail",
"diamond",
"diamond_axe",
"diamond_block",
"diamond_boots",
"diamond_chestplate",
"diamond_from_blasting",
"diamond_from_smelting",
"diamond_helmet",
"diamond_hoe",
"diamond_leggings",
"diamond_pickaxe",
"diamond_shovel",
"diamond_sword",
"diorite",
"diorite_slab",
"diorite_slab_from_diorite_stonecutting",
"diorite_stairs",
"diorite_stairs_from_diorite_stonecutting",
"diorite_wall",
"diorite_wall_from_diorite_stonecutting",
"dispenser",
"dried_kelp",
"dried_kelp_block",
"dried_kelp_from_campfire_cooking",
"dried_kelp_from_smelting",
"dried_kelp_from_smoking",
"dropper",
"emerald",
"emerald_block",
"emerald_from_blasting",
"emerald_from_smelting",
"enchanting_table",
"ender_chest",
"ender_eye",
"end_crystal",
"end_rod",
"end_stone_bricks",
"end_stone_bricks_from_end_stone_stonecutting",
"end_stone_brick_slab",
"end_stone_brick_slab_from_end_stone_brick_stonecutting",
"end_stone_brick_slab_from_end_stone_stonecutting",
"end_stone_brick_stairs",
"end_stone_brick_stairs_from_end_stone_brick_stonecutting",
"end_stone_brick_stairs_from_end_stone_stonecutting",
"end_stone_brick_wall",
"end_stone_brick_wall_from_end_stone_brick_stonecutting",
"end_stone_brick_wall_from_end_stone_stonecutting",
"fermented_spider_eye",
"firework_rocket",
"firework_star",
"firework_star_fade",
"fire_charge",
"fishing_rod",
"fletching_table",
"flint_and_steel",
"flower_banner_pattern",
"flower_pot",
"furnace",
"furnace_minecart",
"glass",
"glass_bottle",
"glass_pane",
"glistering_melon_slice",
"glowstone",
"golden_apple",
"golden_axe",
"golden_boots",
"golden_carrot",
"golden_chestplate",
"golden_helmet",
"golden_hoe",
"golden_leggings",
"golden_pickaxe",
"golden_shovel",
"golden_sword",
"gold_block",
"gold_ingot",
"gold_ingot_from_blasting",
"gold_ingot_from_gold_block",
"gold_ingot_from_nuggets",
"gold_nugget",
"gold_nugget_from_blasting",
"gold_nugget_from_smelting",
"granite",
"granite_slab",
"granite_slab_from_granite_stonecutting",
"granite_stairs",
"granite_stairs_from_granite_stonecutting",
"granite_wall",
"granite_wall_from_granite_stonecutting",
"gray_banner",
"gray_bed",
"gray_bed_from_white_bed",
"gray_carpet",
"gray_carpet_from_white_carpet",
"gray_concrete_powder",
"gray_dye",
"gray_glazed_terracotta",
"gray_stained_glass",
"gray_stained_glass_pane",
"gray_stained_glass_pane_from_glass_pane",
"gray_terracotta",
"gray_wool",
"green_banner",
"green_bed",
"green_bed_from_white_bed",
"green_carpet",
"green_carpet_from_white_carpet",
"green_concrete_powder",
"green_dye",
"green_glazed_terracotta",
"green_stained_glass",
"green_stained_glass_pane",
"green_stained_glass_pane_from_glass_pane",
"green_terracotta",
"green_wool",
"grindstone",
"hay_block",
"heavy_weighted_pressure_plate",
"honeycomb_block",
"honey_block",
"honey_bottle",
"hopper",
"hopper_minecart",
"iron_axe",
"iron_bars",
"iron_block",
"iron_boots",
"iron_chestplate",
"iron_door",
"iron_helmet",
"iron_hoe",
"iron_ingot",
"iron_ingot_from_blasting",
"iron_ingot_from_iron_block",
"iron_ingot_from_nuggets",
"iron_leggings",
"iron_nugget",
"iron_nugget_from_blasting",
"iron_nugget_from_smelting",
"iron_pickaxe",
"iron_shovel",
"iron_sword",
"iron_trapdoor",
"item_frame",
"jack_o_lantern",
"jukebox",
"jungle_boat",
"jungle_button",
"jungle_door",
"jungle_fence",
"jungle_fence_gate",
"jungle_planks",
"jungle_pressure_plate",
"jungle_sign",
"jungle_slab",
"jungle_stairs",
"jungle_trapdoor",
"jungle_wood",
"ladder",
"lantern",
"lapis_block",
"lapis_from_blasting",
"lapis_from_smelting",
"lapis_lazuli",
"lead",
"leather",
"leather_boots",
"leather_chestplate",
"leather_helmet",
"leather_horse_armor",
"leather_leggings",
"lectern",
"lever",
"light_blue_banner",
"light_blue_bed",
"light_blue_bed_from_white_bed",
"light_blue_carpet",
"light_blue_carpet_from_white_carpet",
"light_blue_concrete_powder",
"light_blue_dye_from_blue_orchid",
"light_blue_dye_from_blue_white_dye",
"light_blue_glazed_terracotta",
"light_blue_stained_glass",
"light_blue_stained_glass_pane",
"light_blue_stained_glass_pane_from_glass_pane",
"light_blue_terracotta",
"light_blue_wool",
"light_gray_banner",
"light_gray_bed",
"light_gray_bed_from_white_bed",
"light_gray_carpet",
"light_gray_carpet_from_white_carpet",
"light_gray_concrete_powder",
"light_gray_dye_from_azure_bluet",
"light_gray_dye_from_black_white_dye",
"light_gray_dye_from_gray_white_dye",
"light_gray_dye_from_oxeye_daisy",
"light_gray_dye_from_white_tulip",
"light_gray_glazed_terracotta",
"light_gray_stained_glass",
"light_gray_stained_glass_pane",
"light_gray_stained_glass_pane_from_glass_pane",
"light_gray_terracotta",
"light_gray_wool",
"light_weighted_pressure_plate",
"lime_banner",
"lime_bed",
"lime_bed_from_white_bed",
"lime_carpet",
"lime_carpet_from_white_carpet",
"lime_concrete_powder",
"lime_dye",
"lime_dye_from_smelting",
"lime_glazed_terracotta",
"lime_stained_glass",
"lime_stained_glass_pane",
"lime_stained_glass_pane_from_glass_pane",
"lime_terracotta",
"lime_wool",
"lodestone",
"loom",
"magenta_banner",
"magenta_bed",
"magenta_bed_from_white_bed",
"magenta_carpet",
"magenta_carpet_from_white_carpet",
"magenta_concrete_powder",
"magenta_dye_from_allium",
"magenta_dye_from_blue_red_pink",
"magenta_dye_from_blue_red_white_dye",
"magenta_dye_from_lilac",
"magenta_dye_from_purple_and_pink",
"magenta_glazed_terracotta",
"magenta_stained_glass",
"magenta_stained_glass_pane",
"magenta_stained_glass_pane_from_glass_pane",
"magenta_terracotta",
"magenta_wool",
"magma_block",
"magma_cream",
"map",
"map_cloning",
"map_extending",
"melon",
"melon_seeds",
"minecart",
"mojang_banner_pattern",
"mossy_cobblestone",
"mossy_cobblestone_slab",
"mossy_cobblestone_slab_from_mossy_cobblestone_stonecutting",
"mossy_cobblestone_stairs",
"mossy_cobblestone_stairs_from_mossy_cobblestone_stonecutting",
"mossy_cobblestone_wall",
"mossy_cobblestone_wall_from_mossy_cobblestone_stonecutting",
"mossy_stone_bricks",
"mossy_stone_brick_slab",
"mossy_stone_brick_slab_from_mossy_stone_brick_stonecutting",
"mossy_stone_brick_stairs",
"mossy_stone_brick_stairs_from_mossy_stone_brick_stonecutting",
"mossy_stone_brick_wall",
"mossy_stone_brick_wall_from_mossy_stone_brick_stonecutting",
"mushroom_stew",
"netherite_axe_smithing",
"netherite_block",
"netherite_boots_smithing",
"netherite_chestplate_smithing",
"netherite_helmet_smithing",
"netherite_hoe_smithing",
"netherite_ingot",
"netherite_ingot_from_netherite_block",
"netherite_leggings_smithing",
"netherite_pickaxe_smithing",
"netherite_scrap",
"netherite_scrap_from_blasting",
"netherite_shovel_smithing",
"netherite_sword_smithing",
"nether_brick",
"nether_bricks",
"nether_brick_fence",
"nether_brick_slab",
"nether_brick_slab_from_nether_bricks_stonecutting",
"nether_brick_stairs",
"nether_brick_stairs_from_nether_bricks_stonecutting",
"nether_brick_wall",
"nether_brick_wall_from_nether_bricks_stonecutting",
"nether_wart_block",
"note_block",
"oak_boat",
"oak_button",
"oak_door",
"oak_fence",
"oak_fence_gate",
"oak_planks",
"oak_pressure_plate",
"oak_sign",
"oak_slab",
"oak_stairs",
"oak_trapdoor",
"oak_wood",
"observer",
"orange_banner",
"orange_bed",
"orange_bed_from_white_bed",
"orange_carpet",
"orange_carpet_from_white_carpet",
"orange_concrete_powder",
"orange_dye_from_orange_tulip",
"orange_dye_from_red_yellow",
"orange_glazed_terracotta",
"orange_stained_glass",
"orange_stained_glass_pane",
"orange_stained_glass_pane_from_glass_pane",
"orange_terracotta",
"orange_wool",
"packed_ice",
"painting",
"paper",
"pink_banner",
"pink_bed",
"pink_bed_from_white_bed",
"pink_carpet",
"pink_carpet_from_white_carpet",
"pink_concrete_powder",
"pink_dye_from_peony",
"pink_dye_from_pink_tulip",
"pink_dye_from_red_white_dye",
"pink_glazed_terracotta",
"pink_stained_glass",
"pink_stained_glass_pane",
"pink_stained_glass_pane_from_glass_pane",
"pink_terracotta",
"pink_wool",
"piston",
"polished_andesite",
"polished_andesite_from_andesite_stonecutting",
"polished_andesite_slab",
"polished_andesite_slab_from_andesite_stonecutting",
"polished_andesite_slab_from_polished_andesite_stonecutting",
"polished_andesite_stairs",
"polished_andesite_stairs_from_andesite_stonecutting",
"polished_andesite_stairs_from_polished_andesite_stonecutting",
"polished_basalt",
"polished_basalt_from_basalt_stonecutting",
"polished_blackstone",
"polished_blackstone_bricks",
"polished_blackstone_bricks_from_blackstone_stonecutting",
"polished_blackstone_bricks_from_polished_blackstone_stonecutting",
"polished_blackstone_brick_slab",
"polished_blackstone_brick_slab_from_blackstone_stonecutting",
"polished_blackstone_brick_slab_from_polished_blackstone_bricks_stonecutting",
"polished_blackstone_brick_slab_from_polished_blackstone_stonecutting",
"polished_blackstone_brick_stairs",
"polished_blackstone_brick_stairs_from_blackstone_stonecutting",
"polished_blackstone_brick_stairs_from_polished_blackstone_bricks_stonecutting",
"polished_blackstone_brick_stairs_from_polished_blackstone_stonecutting",
"polished_blackstone_brick_wall",
"polished_blackstone_brick_wall_from_blackstone_stonecutting",
"polished_blackstone_brick_wall_from_polished_blackstone_bricks_stonecutting",
"polished_blackstone_brick_wall_from_polished_blackstone_stonecutting",
"polished_blackstone_button",
"polished_blackstone_from_blackstone_stonecutting",
"polished_blackstone_pressure_plate",
"polished_blackstone_slab",
"polished_blackstone_slab_from_blackstone_stonecutting",
"polished_blackstone_slab_from_polished_blackstone_stonecutting",
"polished_blackstone_stairs",
"polished_blackstone_stairs_from_blackstone_stonecutting",
"polished_blackstone_stairs_from_polished_blackstone_stonecutting",
"polished_blackstone_wall",
"polished_blackstone_wall_from_blackstone_stonecutting",
"polished_blackstone_wall_from_polished_blackstone_stonecutting",
"polished_diorite",
"polished_diorite_from_diorite_stonecutting",
"polished_diorite_slab",
"polished_diorite_slab_from_diorite_stonecutting",
"polished_diorite_slab_from_polished_diorite_stonecutting",
"polished_diorite_stairs",
"polished_diorite_stairs_from_diorite_stonecutting",
"polished_diorite_stairs_from_polished_diorite_stonecutting",
"polished_granite",
"polished_granite_from_granite_stonecutting",
"polished_granite_slab",
"polished_granite_slab_from_granite_stonecutting",
"polished_granite_slab_from_polished_granite_stonecutting",
"polished_granite_stairs",
"polished_granite_stairs_from_granite_stonecutting",
"polished_granite_stairs_from_polished_granite_stonecutting",
"popped_chorus_fruit",
"powered_rail",
"prismarine",
"prismarine_bricks",
"prismarine_brick_slab",
"prismarine_brick_slab_from_prismarine_stonecutting",
"prismarine_brick_stairs",
"prismarine_brick_stairs_from_prismarine_stonecutting",
"prismarine_slab",
"prismarine_slab_from_prismarine_stonecutting",
"prismarine_stairs",
"prismarine_stairs_from_prismarine_stonecutting",
"prismarine_wall",
"prismarine_wall_from_prismarine_stonecutting",
"pumpkin_pie",
"pumpkin_seeds",
"purple_banner",
"purple_bed",
"purple_bed_from_white_bed",
"purple_carpet",
"purple_carpet_from_white_carpet",
"purple_concrete_powder",
"purple_dye",
"purple_glazed_terracotta",
"purple_stained_glass",
"purple_stained_glass_pane",
"purple_stained_glass_pane_from_glass_pane",
"purple_terracotta",
"purple_wool",
"purpur_block",
"purpur_pillar",
"purpur_pillar_from_purpur_block_stonecutting",
"purpur_slab",
"purpur_slab_from_purpur_block_stonecutting",
"purpur_stairs",
"purpur_stairs_from_purpur_block_stonecutting",
"quartz",
"quartz_block",
"quartz_bricks",
"quartz_bricks_from_quartz_block_stonecutting",
"quartz_from_blasting",
"quartz_pillar",
"quartz_pillar_from_quartz_block_stonecutting",
"quartz_slab",
"quartz_slab_from_stonecutting",
"quartz_stairs",
"quartz_stairs_from_quartz_block_stonecutting",
"rabbit_stew_from_brown_mushroom",
"rabbit_stew_from_red_mushroom",
"rail",
"redstone",
"redstone_block",
"redstone_from_blasting",
"redstone_from_smelting",
"redstone_lamp",
"redstone_torch",
"red_banner",
"red_bed",
"red_bed_from_white_bed",
"red_carpet",
"red_carpet_from_white_carpet",
"red_concrete_powder",
"red_dye_from_beetroot",
"red_dye_from_poppy",
"red_dye_from_rose_bush",
"red_dye_from_tulip",
"red_glazed_terracotta",
"red_nether_bricks",
"red_nether_brick_slab",
"red_nether_brick_slab_from_red_nether_bricks_stonecutting",
"red_nether_brick_stairs",
"red_nether_brick_stairs_from_red_nether_bricks_stonecutting",
"red_nether_brick_wall",
"red_nether_brick_wall_from_red_nether_bricks_stonecutting",
"red_sandstone",
"red_sandstone_slab",
"red_sandstone_slab_from_red_sandstone_stonecutting",
"red_sandstone_stairs",
"red_sandstone_stairs_from_red_sandstone_stonecutting",
"red_sandstone_wall",
"red_sandstone_wall_from_red_sandstone_stonecutting",
"red_stained_glass",
"red_stained_glass_pane",
"red_stained_glass_pane_from_glass_pane",
"red_terracotta",
"red_wool",
"repair_item",
"repeater",
"respawn_anchor",
"sandstone",
"sandstone_slab",
"sandstone_slab_from_sandstone_stonecutting",
"sandstone_stairs",
"sandstone_stairs_from_sandstone_stonecutting",
"sandstone_wall",
"sandstone_wall_from_sandstone_stonecutting",
"scaffolding",
"sea_lantern",
"shears",
"shield",
"shield_decoration",
"shulker_box",
"shulker_box_coloring",
"skull_banner_pattern",
"slime_ball",
"slime_block",
"smithing_table",
"smoker",
"smooth_quartz",
"smooth_quartz_slab",
"smooth_quartz_slab_from_smooth_quartz_stonecutting",
"smooth_quartz_stairs",
"smooth_quartz_stairs_from_smooth_quartz_stonecutting",
"smooth_red_sandstone",
"smooth_red_sandstone_slab",
"smooth_red_sandstone_slab_from_smooth_red_sandstone_stonecutting",
"smooth_red_sandstone_stairs",
"smooth_red_sandstone_stairs_from_smooth_red_sandstone_stonecutting",
"smooth_sandstone",
"smooth_sandstone_slab",
"smooth_sandstone_slab_from_smooth_sandstone_stonecutting",
"smooth_sandstone_stairs",
"smooth_sandstone_stairs_from_smooth_sandstone_stonecutting",
"smooth_stone",
"smooth_stone_slab",
"smooth_stone_slab_from_smooth_stone_stonecutting",
"snow",
"snow_block",
"soul_campfire",
"soul_lantern",
"soul_torch",
"spectral_arrow",
"sponge",
"spruce_boat",
"spruce_button",
"spruce_door",
"spruce_fence",
"spruce_fence_gate",
"spruce_planks",
"spruce_pressure_plate",
"spruce_sign",
"spruce_slab",
"spruce_stairs",
"spruce_trapdoor",
"spruce_wood",
"stick",
"sticky_piston",
"stick_from_bamboo_item",
"stone",
"stonecutter",
"stone_axe",
"stone_bricks",
"stone_bricks_from_stone_stonecutting",
"stone_brick_slab",
"stone_brick_slab_from_stone_bricks_stonecutting",
"stone_brick_slab_from_stone_stonecutting",
"stone_brick_stairs",
"stone_brick_stairs_from_stone_bricks_stonecutting",
"stone_brick_stairs_from_stone_stonecutting",
"stone_brick_wall",
"stone_brick_walls_from_stone_stonecutting",
"stone_brick_wall_from_stone_bricks_stonecutting",
"stone_button",
"stone_hoe",
"stone_pickaxe",
"stone_pressure_plate",
"stone_shovel",
"stone_slab",
"stone_slab_from_stone_stonecutting",
"stone_stairs",
"stone_stairs_from_stone_stonecutting",
"stone_sword",
"stripped_acacia_wood",
"stripped_birch_wood",
"stripped_crimson_hyphae",
"stripped_dark_oak_wood",
"stripped_jungle_wood",
"stripped_oak_wood",
"stripped_spruce_wood",
"stripped_warped_hyphae",
"sugar_from_honey_bottle",
"sugar_from_sugar_cane",
"suspicious_stew",
"target",
"terracotta",
"tipped_arrow",
"tnt",
"tnt_minecart",
"torch",
"trapped_chest",
"tripwire_hook",
"turtle_helmet",
"warped_button",
"warped_door",
"warped_fence",
"warped_fence_gate",
"warped_fungus_on_a_stick",
"warped_hyphae",
"warped_planks",
"warped_pressure_plate",
"warped_sign",
"warped_slab",
"warped_stairs",
"warped_trapdoor",
"wheat",
"white_banner",
"white_bed",
"white_carpet",
"white_concrete_powder",
"white_dye",
"white_dye_from_lily_of_the_valley",
"white_glazed_terracotta",
"white_stained_glass",
"white_stained_glass_pane",
"white_stained_glass_pane_from_glass_pane",
"white_terracotta",
"white_wool_from_string",
"wooden_axe",
"wooden_hoe",
"wooden_pickaxe",
"wooden_shovel",
"wooden_sword",
"writable_book",
"yellow_banner",
"yellow_bed",
"yellow_bed_from_white_bed",
"yellow_carpet",
"yellow_carpet_from_white_carpet",
"yellow_concrete_powder",
"yellow_dye_from_dandelion",
"yellow_dye_from_sunflower",
"yellow_glazed_terracotta",
"yellow_stained_glass",
"yellow_stained_glass_pane",
"yellow_stained_glass_pane_from_glass_pane",
"yellow_terracotta",
"yellow_wool",
],
nsweName = ["north", "south", "east", "west"],
nsewudName = ["north", "south", "east", "west", "up", "down"],
nsewdName = ["north", "south", "east", "west", "down"],
nsewuName = ["north", "south", "east", "west", "up"],
doorBS = {
facing: nsweName,
half: ["upper", "lower"],
hinge: ["left", "right"],
open: [!1, !0],
powered: [!1, !0],
},
buttonsBS = { facing: nsweName, face: ["ceiling", "wall", "floor"] },
leavesBS = { distance: [1, 2, 3, 4, 5, 6, 7], persistent: [!1, !0] },
stairBlockState = {
facing: nsweName,
half: ["top", "bottom"],
shape: [
"straight",
"inner_left",
"inner_right",
"outer_left",
"outer_right",
],
waterlogged: [!1, !0],
},
trapdoors = {
powered: [!1, !0],
facing: nsweName,
half: ["top", "bottom"],
open: [!1, !0],
},
slabTypes = { type: ["top", "bottom", "double"], waterlogged: [!1, !0] },
bedOptions = {
occupied: [!1, !0],
facing: nsweName,
part: ["head", "foot"],
},
woodTypes1 = [
[0, "Oak"],
[1, "Spruce"],
[2, "Birch"],
[3, "Jungle"],
[4, "Acacia"],
[5, "Dark Oak"],
],
colours1 = [
[0, "White"],
[1, "Orange"],
[2, "Magenta"],
[3, "Light Blue"],
[4, "Yellow"],
[5, "Lime"],
[6, "Pink"],
[7, "Gray"],
[8, "Light Gray"],
[9, "Cyan"],
[10, "Purple"],
[11, "Blue"],
[12, "Brown"],
[13, "Green"],
[14, "Red"],
[15, "Black"],
],
fenceBS = {
north: [!1, !0],
south: [!1, !0],
east: [!1, !0],
west: [!1, !0],
waterlogged: [!0, !1],
},
wallBS = {
north: [!1, !0],
south: [!1, !0],
east: [!1, !0],
west: [!1, !0],
up: [!1, !0],
waterlogged: [!0, !1],
},
fenceGateBS = {
facing: nsweName,
in_wall: [!1, !0],
open: [!1, !0],
powered: [!1, !0],
waterlogged: [!0, !1],
},
mushroom = [
[0, "Pores on all sides"],
[1, "Cap texture on top, west and north"],
[2, "Cap texture on top and north"],
[3, "Cap texture on top, north and east"],
[4, "Cap texture on top and west"],
[5, "Cap texture on top"],
[6, "Cap texture on top and east"],
[7, "Cap texture on top, south and west"],
[8, "Cap texture on top and south"],
[9, "Cap texture on top, east and south"],
[10, "Stem texture on all four sides, pores on top and bottom"],
[14, "Cap texture on all six sides"],
[15, "Stem texture on all six sides"],
],
trapdoor = [
[0, "Trapdoor on the west side of a block (bottom of block)"],
[1, "Trapdoor on the south side of a block (bottom of block)"],
[2, "Trapdoor on the east side of a block (bottom of block)"],
[3, "Trapdoor on the north side of a block (bottom of block)"],
[4, "Open Trapdoor on the west side of a block (bottom of block)"],
[5, "Open Trapdoor on the south side of a block (bottom of block)"],
[6, "Open Trapdoor on the east side of a block (bottom of block)"],
[7, "Open Trapdoor on the north side of a block (bottom of block)"],
[8, "Trapdoor on the west side of a block (top of block)"],
[9, "Trapdoor on the south side of a block (top of block)"],
[10, "Trapdoor on the east side of a block (top of block)"],
[11, "Trapdoor on the north side of a block (top of block)"],
[12, "Open Trapdoor on the west side of a block (top of block)"],
[13, "Open Trapdoor on the south side of a block (top of block)"],
[14, "Open Trapdoor on the east side of a block (top of block)"],
[15, "Open Trapdoor on the north side of a block (top of block)"],
],
repeater = [
[0, "Facing north, 1 tick delay"],
[1, "Facing east, 1 tick delay"],
[2, "Facing south, 1 tick delay"],
[3, "Facing west, 1 tick delay"],
[4, "Facing north, 2 tick delay"],
[5, "Facing east, 2 tick delay"],
[6, "Facing south, 2 tick delay"],
[7, "Facing west, 2 tick delay"],
[8, "Facing north, 3 tick delay"],
[9, "Facing east, 3 tick delay"],
[10, "Facing south, 3 tick delay"],
[11, "Facing west, 3 tick delay"],
[12, "Facing north, 4 tick delay"],
[13, "Facing east, 4 tick delay"],
[14, "Facing south, 4 tick delay"],
[15, "Facing west, 4 tick delay"],
],
comparator = [
[0, "Facing north"],
[1, "Facing east"],
[2, "Facing south"],
[3, "Facing west"],
[4, "Facing north, subtraction mode"],
[5, "Facing east, subtraction mode"],
[6, "Facing south, subtraction mode"],
[7, "Facing west, subtraction mode"],
[8, "Facing north, powered"],
[9, "Facing east, powered"],
[10, "Facing south, powered"],
[11, "Facing west, powered"],
[12, "Facing north, subtraction mode, powered"],
[13, "Facing east, subtraction mode, powered"],
[14, "Facing south, subtraction mode, powered"],
[15, "Facing west, subtraction mode, powered"],
],
cactusReeds = [
[0, 0],
[1, 1],
[2, 2],
[3, 3],
[4, 4],
[5, 5],
[6, 6],
[7, 7],
[8, 8],
[9, 9],
[10, 10],
[11, 11],
[12, 12],
[13, 13],
[14, 14],
[15, 15],
],
buttons = [
[0, "Button on block bottom facing down"],
[1, "Button on block side facing east"],
[2, "Button on block side facing west"],
[3, "Button on block side facing south"],
[4, "Button on block side facing north"],
[5, "Button on block top facing up"],
[8, "Button on block bottom facing down (active)"],
[9, "Button on block side facing east (active)"],
[10, "Button on block side facing west (active)"],
[11, "Button on block side facing south (active)"],
[12, "Button on block side facing north (active)"],
[13, "Button on block top facing up (active)"],
],
torch = [
[1, "Facing east (attached to a block to its west)"],
[2, "Facing west (attached to a block to its east)"],
[3, "Facing south (attached to a block to its north)"],
[4, "Facing north (attached to a block to its south)"],
[5, "Facing up (attached to a block beneath it)"],
],
pressure = [
[0, "Inactive"],
[1, "Active"],
],
dunswe = [
[0, "Down"],
[1, "Up"],
[2, "north"],
[3, "south"],
[4, "west"],
[5, "east"],
],
nswe = [
[2, "north"],
[3, "south"],
[4, "west"],
[5, "east"],
],
stairs = [
[0, "East"],
[1, "West"],
[2, "South"],
[3, "North"],
[4, "East Upside-down"],
[5, "West Upside-down"],
[6, "South Upside-down"],
[7, "North Upside-down"],
],
rails = [
[0, "flat track going north-south"],
[1, "flat track going west-east"],
[2, "sloped track ascending to the east"],
[3, "sloped track ascending to the west"],
[4, "sloped track ascending to the north"],
[5, "sloped track ascending to the south"],
],
cropAge0to7 = [
[0, 0],
[1, 1],
[2, 2],
[3, 3],
[4, 4],
[5, 5],
[6, 6],
[7, 7],
],
beetsAndWarts = [
[0, 0],
[1, 1],
[2, 2],
[3, 3],
],
standingSignBanner = [
[0, "south"],
[1, "south-southwest"],
[2, "southwest"],
[3, "west-southwest"],
[4, "west"],
[5, "west-northwest"],
[6, "northwest"],
[7, "north-northwest"],
[8, "north"],
[9, "north-northeast"],
[10, "northeast"],
[11, "east-northeast"],
[12, "east"],
[13, "east-southeast"],
[14, "southeast"],
[15, "south-southeast"],
],
headRotate = [
[0, "north"],
[1, "north-northeast"],
[2, "northeast"],
[3, "east-northeast"],
[4, "east"],
[5, "east-southeast"],
[6, "southeast"],
[7, "south-southeast"],
[8, "south"],
[9, "south-southwest"],
[10, "southwest"],
[11, "west-southwest"],
[12, "west"],
[13, "west-northwest"],
[14, "northwest"],
[15, "north-northwest"],
],
commandBlockDirection = [
[0, "Facing down"],
[1, "Facing up"],
[2, "Facing north"],
[3, "Facing south"],
[4, "Facing west"],
[5, "Facing east"],
[8, "Facing down, Conditional"],
[9, "Facing up, Conditional"],
[10, "Facing north, Conditional"],
[11, "Facing south, Conditional"],
[12, "Facing west, Conditional"],
[13, "Facing east, Conditional"],
],
tiles = [
["air", "Air"],
["cave_air", "Cave Air"],
["void_air", "Void Air"],
["stone", "Stone"],
["granite", "Granite"],
["polished_granite", "Polished Granite"],
["diorite", "Diorite"],
["polished_diorite", "Polished Diorite"],
["andesite", "Andesite"],
["polished_andesite", "Polished Andesite"],
["grass_block", "Grass Block"],
["dirt", "Dirt"],
["coarse_dirt", "Coarse Dirt"],
["podzol", "Podzol"],
["cobblestone", "Cobblestone"],
["oak_planks", "Oak Planks"],
["spruce_planks", "Spruce Planks"],
["birch_planks", "Birch Planks"],
["jungle_planks", "Jungle Planks"],
["acacia_planks", "Acacia Planks"],
["dark_oak_planks", "Dark Oak Planks"],
["oak_sapling", "Oak Sapling"],
["spruce_sapling", "Spruce Sapling"],
["birch_sapling", "Birch Sapling"],
["jungle_sapling", "Jungle Sapling"],
["acacia_sapling", "Acacia Sapling"],
["dark_oak_sapling", "Dark Oak Sapling"],
["white_bed", "White Bed"],
["orange_bed", "Orange Bed"],
["magenta_bed", "Magenta Bed"],
["light_blue_bed", "Light Blue Bed"],
["yellow_bed", "Yellow Bed"],
["lime_bed", "Lime Bed"],
["pink_bed", "Pink Bed"],
["gray_bed", "Gray Bed"],
["light_gray_bed", "Light Gray Bed"],
["cyan_bed", "Cyan Bed"],
["purple_bed", "Purple Bed"],
["blue_bed", "Blue Bed"],
["brown_bed", "Brown Bed"],
["green_bed", "Green Bed"],
["red_bed", "Red Bed"],
["black_bed", "Black Bed"],
["bedrock", "Bedrock"],
["water", "Stationary Water"],
["lava", "Stationary Lava"],
["sand", "Sand"],
["red_sand", "Red Sand"],
["gravel", "Gravel"],
["gold_ore", "Gold Ore"],
["iron_ore", "Iron Ore"],
["coal_ore", "Coal Ore"],
["oak_log", "Oak Log"],
["spruce_log", "Spruce Log"],
["birch_log", "Birch Log"],
["jungle_log", "Jungle Log"],
["oak_wood", "Oak Wood"],
["spruce_wood", "Spruce Wood"],
["birch_wood", "Birch Wood"],
["jungle_wood", "Jungle Wood"],
["acacia_log", "Acacia Log"],
["dark_oak_log", "Dark Oak Log"],
["acacia_wood", "Acacia Wood"],
["dark_oak_wood", "Dark Oak Wood"],
["stripped_oak_log", "Stripped Oak Log"],
["stripped_spruce_log", "Stripped Spruce Log"],
["stripped_birch_log", "Stripped Birch Log"],
["stripped_jungle_log", "Stripped Jungle Log"],
["stripped_acacia_log", "Stripped Acacia Log"],
["stripped_dark_oak_log", "Stripped Dark Oak Log"],
["stripped_oak_wood", "Stripped Oak Wood"],
["stripped_spruce_wood", "Stripped Spruce Wood"],
["stripped_birch_wood", "Stripped Birch Wood"],
["stripped_jungle_wood", "Stripped Jungle Wood"],
["stripped_acacia_wood", "Stripped Acacia Wood"],
["stripped_dark_oak_wood", "Stripped Dark Oak Wood"],
["oak_leaves", "Oak Leaves"],
["spruce_leaves", "Spruce Leaves"],
["birch_leaves", "Birch Leaves"],
["jungle_leaves", "Jungle Leaves"],
["acacia_leaves", "Acacia Leaves"],
["dark_oak_leaves", "Dark Oak Leaves"],
["sponge", "Sponge"],
["wet_sponge", "Wet Sponge"],
["glass", "Glass"],
["lapis_ore", "Lapis Lazuli Ore"],
["lapis_block", "Lapis Lazuli Block"],
["dispenser", "Dispenser"],
["sandstone", "Sandstone"],
["chiseled_sandstone", "Chiseled Sandstone"],
["cut_sandstone", "Cut Sandstone"],
["note_block", "Note Block"],
["powered_rail", "Powered Rail"],
["detector_rail", "Detector Rail"],
["cobweb", "Cobweb"],
["grass", "Grass"],
["fern", "Fern"],
["dead_bush", "Dead Bush"],
["piston", "Piston"],
["piston_head", "Piston Head"],
["sticky_piston", "Sticky Piston"],
["moving_piston", "Moving Piston"],
["white_wool", "White Wool"],
["orange_wool", "Orange Wool"],
["magenta_wool", "Magenta Wool"],
["light_blue_wool", "Light Blue Wool"],
["yellow_wool", "Yellow Wool"],
["lime_wool", "Lime Wool"],
["pink_wool", "Pink Wool"],
["gray_wool", "Gray Wool"],
["light_gray_wool", "Light Gray Wool"],
["cyan_wool", "Cyan Wool"],
["purple_wool", "Purple Wool"],
["blue_wool", "Blue Wool"],
["brown_wool", "Brown Wool"],
["green_wool", "Green Wool"],
["red_wool", "Red Wool"],
["black_wool", "Black Wool"],
["dandelion", "Dandelion"],
["poppy", "Poppy"],
["blue_orchid", "Blue Orchid"],
["allium", "Allium"],
["azure_bluet", "Azure Bluet"],
["red_tulip", "Red Tulip"],
["orange_tulip", "Orange Tulip"],
["white_tulip", "White Tulip"],
["pink_tulip", "Pink Tulip"],
["oxeye_daisy", "Oxeye Daisy"],
["brown_mushroom", "Brown Mushroom"],
["red_mushroom", "Red Mushroom"],
["gold_block", "Block of Gold"],
["iron_block", "Block of Iron"],
["bricks", "Bricks"],
["tnt", "TNT"],
["bookshelf", "Bookshelf"],
["mossy_cobblestone", "Moss Stone"],
["obsidian", "Obsidian"],
["wall_torch", "Torch"],
["fire", "Fire"],
["spawner", "Spawner"],
["oak_stairs", "Oak Wood Stairs"],
["chest", "Chest"],
["redstone_wire", "Redstone Wire"],
["diamond_ore", "Diamond Ore"],
["diamond_block", "Block of Diamond"],
["crafting_table", "Crafting Table"],
["wheat", "Wheat"],
["farmland", "Farmland"],
["furnace", "Furnace"],
["oak_door", "Oak Door"],
["ladder", "Ladder"],
["rail", "Rail"],
["cobblestone_stairs", "Cobblestone Stairs"],
["lever", "Lever"],
["stone_pressure_plate", "Stone Pressure Plate"],
["iron_door", "Iron Door"],
["oak_pressure_plate", "Oak Pressure Plate"],
["spruce_pressure_plate", "Spruce Pressure Plate"],
["birch_pressure_plate", "Birch Pressure Plate"],
["jungle_pressure_plate", "Jungle Pressure Plate"],
["acacia_pressure_plate", "Acacia Pressure Plate"],
["dark_oak_pressure_plate", "Dark Oak Pressure Plate"],
["redstone_ore", "Redstone Ore"],
["redstone_wall_torch", "Redstone Torch"],
["stone_button", "Stone Button"],
["snow", "Snow"],
["ice", "Ice"],
["snow_block", "Snow Block"],
["cactus", "Cactus"],
["clay", "Clay"],
["sugar_cane", "Sugar cane"],
["jukebox", "Jukebox"],
["oak_fence", "Oak Fence"],
["pumpkin", "Pumpkin"],
["carved_pumpkin", "Carved Pumpkin"],
["netherrack", "Netherrack"],
["soul_sand", "Soul Sand"],
["glowstone", "Glowstone"],
["jack_o_lantern", "Jack o'Lantern"],
["cake", "Cake"],
["repeater", "Redstone Repeater"],
["white_stained_glass", "White Stained Glass"],
["orange_stained_glass", "Orange Stained Glass"],
["magenta_stained_glass", "Magenta Stained Glass"],
["light_blue_stained_glass", "Light Blue Stained Glass"],
["yellow_stained_glass", "Yellow Stained Glass"],
["lime_stained_glass", "Lime Stained Glass"],
["pink_stained_glass", "Pink Stained Glass"],
["gray_stained_glass", "Gray Stained Glass"],
["light_gray_stained_glass", "Light Gray Stained Glass"],
["cyan_stained_glass", "Cyan Stained Glass"],
["purple_stained_glass", "Purple Stained Glass"],
["blue_stained_glass", "Blue Stained Glass"],
["brown_stained_glass", "Brown Stained Glass"],
["green_stained_glass", "Green Stained Glass"],
["red_stained_glass", "Red Stained Glass"],
["black_stained_glass", "Black Stained Glass"],
["infested_stone", "Infested Stone"],
["infested_cobblestone", "Infested Cobblestone"],
["infested_stone_bricks", "Infested Stone Bricks"],
["infested_mossy_stone_bricks", "Infested Mossy Stone Bricks"],
["infested_cracked_stone_bricks", "Infested Cracked Stone Bricks"],
["infested_chiseled_stone_bricks", "Infested Chiseled Stone Bricks"],
["stone_bricks", "Stone Bricks"],
["mossy_stone_bricks", "Mossy Stone Bricks"],
["cracked_stone_bricks", "Cracked Stone Bricks"],
["chiseled_stone_bricks", "Chiseled Stone Bricks"],
["mushroom_stem", "Mushroom Stem"],
["brown_mushroom_block", "Brown Mushroom Block"],
["red_mushroom_block", "Red Mushroom Block"],
["iron_bars", "Iron Bars"],
["glass_pane", "Glass Pane"],
["white_stained_glass_pane", "White Stained Glass Pane"],
["orange_stained_glass_pane", "Orange Stained Glass Pane"],
["magenta_stained_glass_pane", "Magenta Stained Glass Pane"],
["light_blue_stained_glass_pane", "Light Blue Stained Glass Pane"],
["yellow_stained_glass_pane", "Yellow Stained Glass Pane"],
["lime_stained_glass_pane", "Lime Stained Glass Pane"],
["pink_stained_glass_pane", "Pink Stained Glass Pane"],
["gray_stained_glass_pane", "Gray Stained Glass Pane"],
["light_gray_stained_glass_pane", "Light Gray Stained Glass Pane"],
["cyan_stained_glass_pane", "Cyan Stained Glass Pane"],
["purple_stained_glass_pane", "Purple Stained Glass Pane"],
["blue_stained_glass_pane", "Blue Stained Glass Pane"],
["brown_stained_glass_pane", "Brown Stained Glass Pane"],
["green_stained_glass_pane", "Green Stained Glass Pane"],
["red_stained_glass_pane", "Red Stained Glass Pane"],
["black_stained_glass_pane", "Black Stained Glass Pane"],
["melon", "Melon"],
["pumpkin_stem", "Pumpkin Stem"],
["melon_stem", "Melon Stem"],
["attached_pumpkin_stem", "Attached Pumpkin Stem"],
["attached_melon_stem", "Attached Melon Stem"],
["vine", "Vines"],
["oak_fence_gate", "Oak Fence Gate"],
["brick_stairs", "Brick Stairs"],
["stone_brick_stairs", "Stone Brick Stairs"],
["mycelium", "Mycelium"],
["lily_pad", "Lily Pad"],
["nether_bricks", "Nether Brick"],
["nether_brick_fence", "Nether Brick Fence"],
["nether_brick_stairs", "Nether Brick Stairs"],
["end_stone_bricks", "End Stone Bricks"],
["nether_wart", "Nether Wart"],
["enchanting_table", "Enchantment Table"],
["brewing_stand", "Brewing Stand"],
["cauldron", "Cauldron"],
["end_portal_frame", "End Portal Frame"],
["end_portal", "End Portal"],
["end_stone", "End Stone"],
["dragon_egg", "Dragon Egg"],
["redstone_lamp", "Redstone Lamp"],
["purpur_slab", "Purpur Slab"],
["oak_slab", "Oak Slab"],
["spruce_slab", "Spruce Slab"],
["birch_slab", "Birch Slab"],
["jungle_slab", "Jungle Slab"],
["acacia_slab", "Acacia Slab"],
["dark_oak_slab", "Dark Oak Slab"],
["sandstone_slab", "Sandstone Slab"],
["petrified_oak_slab", "Petrified Oak Slab"],
["cobblestone_slab", "Cobblestone Slab"],
["brick_slab", "Bricks Slab"],
["stone_brick_slab", "Stone Bricks Slab"],
["nether_brick_slab", "Nether Bricks Slab"],
["quartz_slab", "Quartz Slab"],
["red_sandstone_slab", "Red Sandstone Slab"],
["smooth_red_sandstone", "Smooth Red Sandstone"],
["smooth_stone", "Smooth Stone"],
["smooth_sandstone", "Smooth Sandstone"],
["smooth_quartz", "Smooth Quartz"],
["cocoa", "Cocoa"],
["sandstone_stairs", "Sandstone Stairs"],
["emerald_ore", "Emerald Ore"],
["ender_chest", "Ender Chest"],
["tripwire_hook", "Tripwire Hook"],
["tripwire", "Tripwire"],
["emerald_block", "Block of Emerald"],
["spruce_stairs", "Spruce Wood Stairs"],
["birch_stairs", "Birch Wood Stairs"],
["jungle_stairs", "Jungle Wood Stairs"],
["command_block", "Command Block"],
["beacon", "Beacon"],
["cobblestone_wall", "Cobblestone Wall"],
["mossy_cobblestone_wall", "Mossy Cobblestone Wall"],
["flower_pot", "Flower Pot"],
["potted_poppy", "Potted Poppy"],
["potted_dandelion", "Potted Dandelion"],
["potted_oak_sapling", "Potted Oak Sapling"],
["potted_spruce_sapling", "Potted Spruce Sapling"],
["potted_birch_sapling", "Potted Birch Sapling"],
["potted_jungle_sapling", "Potted Jungle Sapling"],
["potted_red_mushroom", "Potted Red Mushroom"],
["potted_brown_mushroom", "Potted Brown Mushroom"],
["potted_cactus", "Potted Cactus"],
["potted_dead_bush", "Potted Dead Bush"],
["potted_fern", "Potted Fern"],
["potted_acacia_sapling", "Potted Acacia Sapling"],
["potted_dark_oak_sapling", "Potted Dark Oak Sapling"],
["potted_blue_orchid", "Potted Blue Orchid"],
["potted_allium", "Potted Allium"],
["potted_azure_bluet", "Potted Azure Bluet"],
["potted_red_tulip", "Potted Red Tulip"],
["potted_orange_tulip", "Potted Orange Tulip"],
["potted_white_tulip", "Potted White Tulip"],
["potted_pink_tulip", "Potted Pink Tulip"],
["potted_oxeye_daisy", "Potted Oxeye Daisy"],
["carrots", "Carrot"],
["potatoes", "Potato"],
["oak_button", "Oak Button"],
["spruce_button", "Spruce Button"],
["birch_button", "Birch Button"],
["jungle_button", "Jungle Button"],
["acacia_button", "Acacia Button"],
["dark_oak_button", "Dark Oak Button"],
["oak_trapdoor", "Oak Trapdoor"],
["spruce_trapdoor", "Spruce Trapdoor"],
["birch_trapdoor", "Birch Trapdoor"],
["jungle_trapdoor", "Jungle Trapdoor"],
["acacia_trapdoor", "Acacia Trapdoor"],
["dark_oak_trapdoor", "Dark Oak Trapdoor"],
["skeleton_skull", "Skeleton Skull"],
["skeleton_wall_skull", "Skeleton Wall Skull"],
["wither_skeleton_skull", "Wither Skeleton Skull"],
["wither_skeleton_wall_skull", "Wither Skeleton Wall Skull"],
["zombie_head", "Zombie Head"],
["zombie_wall_head", "Zombie Wall Head"],
["player_head", "Player Head"],
["player_wall_head", "Player Wall Head"],
["creeper_head", "Creeper Head"],
["creeper_wall_head", "Creeper Wall Head"],
["dragon_head", "Dragon Head"],
["dragon_wall_head", "Dragon Wall Head"],
["anvil", "Anvil"],
["chipped_anvil", "Chipped Anvil"],
["damaged_anvil", "Damaged Anvil"],
["trapped_chest", "Trapped Chest"],
["light_weighted_pressure_plate", "Light Weighted Pressure Plate"],
["heavy_weighted_pressure_plate", "Heavy Weighted Pressure Plate"],
["comparator", "Redstone Comparator"],
["daylight_detector", "Daylight Sensor"],
["redstone_block", "Block of Redstone"],
["nether_quartz_ore", "Nether Quartz Ore"],
["hopper", "Hopper"],
["quartz_block", "Block of Quartz"],
["chiseled_quartz_block", "Chiseled Quartz Block"],
["quartz_pillar", "Quartz Pillar"],
["quartz_stairs", "Quartz Stairs"],
["activator_rail", "Activator Rail"],
["dropper", "Dropper"],
["acacia_stairs", "Acacia Wood Stairs"],
["dark_oak_stairs", "Dark Oak Wood Stairs"],
["slime_block", "Slime Block"],
["barrier", "Barrier"],
["iron_trapdoor", "Iron Trapdoor"],
["prismarine", "Prismarine"],
["prismarine_bricks", "Prismarine Bricks"],
["dark_prismarine", "Dark Prismarine"],
["prismarine_slab", "Prismarine Slab"],
["prismarine_bricks_slab", "Prismarine Bricks Slab"],
["dark_prismarine_slab", "Dark Prismarine Slab"],
["sea_lantern", "Sea Lantern"],
["hay_block", "Hay Bale"],
["white_carpet", "White Carpet"],
["orange_carpet", "Orange Carpet"],
["magenta_carpet", "Magenta Carpet"],
["light_blue_carpet", "Light Blue Carpet"],
["yellow_carpet", "Yellow Carpet"],
["lime_carpet", "Lime Carpet"],
["pink_carpet", "Pink Carpet"],
["gray_carpet", "Gray Carpet"],
["light_gray_carpet", "Light Gray Carpet"],
["cyan_carpet", "Cyan Carpet"],
["purple_carpet", "Purple Carpet"],
["blue_carpet", "Blue Carpet"],
["brown_carpet", "Brown Carpet"],
["green_carpet", "Green Carpet"],
["red_carpet", "Red Carpet"],
["black_carpet", "Black Carpet"],
["terracotta", "Terracotta"],
["white_terracotta", "White Terracotta"],
["orange_terracotta", "Orange Terracotta"],
["magenta_terracotta", "Magenta Terracotta"],
["light_blue_terracotta", "Light Blue Terracotta"],
["yellow_terracotta", "Yellow Terracotta"],
["lime_terracotta", "Lime Terracotta"],
["pink_terracotta", "Pink Terracotta"],
["gray_terracotta", "Gray Terracotta"],
["light_gray_terracotta", "Light Gray Terracotta"],
["cyan_terracotta", "Cyan Terracotta"],
["purple_terracotta", "Purple Terracotta"],
["blue_terracotta", "Blue Terracotta"],
["brown_terracotta", "Brown Terracotta"],
["green_terracotta", "Green Terracotta"],
["red_terracotta", "Red Terracotta"],
["black_terracotta", "Black Terracotta"],
["coal_block", "Block of Coal"],
["packed_ice", "Packed Ice"],
["frosted_ice", "Frosted Ice"],
["sunflower", "Sunflower"],
["lilac", "Lilac"],
["tall_grass", "Double Tallgrass"],
["large_fern", "Large Fern"],
["rose_bush", "Rose Bush"],
["peony", "Peony"],
["white_banner", "White Banner"],
["orange_banner", "Orange Banner"],
["magenta_banner", "Magenta Banner"],
["light_blue_banner", "Light Blue Banner"],
["yellow_banner", "Yellow Banner"],
["lime_banner", "Lime Banner"],
["pink_banner", "Pink Banner"],
["gray_banner", "Gray Banner"],
["light_gray_banner", "Light Gray Banner"],
["cyan_banner", "Cyan Banner"],
["purple_banner", "Purple Banner"],
["blue_banner", "Blue Banner"],
["brown_banner", "Brown Banner"],
["green_banner", "Green Banner"],
["red_banner", "Red Banner"],
["black_banner", "Black Banner"],
["white_wall_banner", "White Wall Banner"],
["orange_wall_banner", "Orange Wall Banner"],
["magenta_wall_banner", "Magenta Wall Banner"],
["light_blue_wall_banner", "Light Blue Wall Banner"],
["yellow_wall_banner", "Yellow Wall Banner"],
["lime_wall_banner", "Lime Wall Banner"],
["pink_wall_banner", "Pink Wall Banner"],
["gray_wall_banner", "Gray Wall Banner"],
["light_gray_wall_banner", "Light Gray Wall Banner"],
["cyan_wall_banner", "Cyan Wall Banner"],
["purple_wall_banner", "Purple Wall Banner"],
["blue_wall_banner", "Blue Wall Banner"],
["brown_wall_banner", "Brown Wall Banner"],
["green_wall_banner", "Green Wall Banner"],
["red_wall_banner", "Red Wall Banner"],
["black_wall_banner", "Black Wall Banner"],
["red_sandstone", "Red Sandstone"],
["chiseled_red_sandstone", "Chiseled Red Sandstone"],
["cut_red_sandstone", "Cut Red Sandstone"],
["red_sandstone_stairs", "Red Sandstone Stairs"],
["spruce_fence_gate", "Spruce Fence Gate"],
["birch_fence_gate", "Birch Fence Gate"],
["jungle_fence_gate", "Jungle Fence Gate"],
["dark_oak_fence_gate", "Dark Oak Fence Gate"],
["acacia_fence_gate", "Acacia Fence Gate"],
["spruce_fence", "Spruce Fence"],
["birch_fence", "Birch Fence"],
["jungle_fence", "Jungle Fence"],
["dark_oak_fence", "Dark Oak Fence"],
["acacia_fence", "Acacia Fence"],
["spruce_door", "Spruce Door"],
["birch_door", "Birch Door"],
["jungle_door", "Jungle Door"],
["acacia_door", "Acacia Door"],
["dark_oak_door", "Dark Oak Door"],
["chorus_flower", "Chorus Flower"],
["chorus_plant", "Chorus Plant"],
["end_gateway", "End Gateway"],
["end_rod", "End Rod"],
["end_bricks", "End Stone Bricks"],
["purpur_block", "Purpur Block"],
["purpur_pillar", "Purpur Pillar"],
["purpur_stairs", "Purpur Stairs"],
["structure_block", "Structure Block"],
["structure_void", "Structure Void"],
["beetroots", "Beetroots"],
["grass_path", "Grass Path"],
["repeating_command_block", "Repeating Command Block"],
["chain_command_block", "Chain Command Block"],
["red_nether_bricks", "Red Nether Bricks"],
["nether_wart_block", "Nether Wart Block"],
["bone_block", "Bone Block"],
["magma_block", "Magma Block"],
["observer", "Observer"],
["shulker_box", "Shulker Box"],
["white_shulker_box", "White Shulker Box"],
["orange_shulker_box", "Orange Shulker Box"],
["magenta_shulker_box", "Magenta Shulker Box"],
["light_blue_shulker_box", "Light Blue Shulker Box"],
["yellow_shulker_box", "Yellow Shulker Box"],
["lime_shulker_box", "Lime Shulker Box"],
["pink_shulker_box", "Pink Shulker Box"],
["gray_shulker_box", "Gray Shulker Box"],
["light_gray_shulker_box", "Light Gray Shulker Box"],
["cyan_shulker_box", "Cyan Shulker Box"],
["purple_shulker_box", "Purple Shulker Box"],
["blue_shulker_box", "Blue Shulker Box"],
["brown_shulker_box", "Brown Shulker Box"],
["green_shulker_box", "Green Shulker Box"],
["red_shulker_box", "Red Shulker Box"],
["black_shulker_box", "Black Shulker Box"],
["white_concrete", "White Concrete"],
["orange_concrete", "Orange Concrete"],
["magenta_concrete", "Magenta Concrete"],
["light_blue_concrete", "Light Blue Concrete"],
["yellow_concrete", "Yellow Concrete"],
["lime_concrete", "Lime Concrete"],
["pink_concrete", "Pink Concrete"],
["gray_concrete", "Gray Concrete"],
["light_gray_concrete", "Light Gray Concrete"],
["cyan_concrete", "Cyan Concrete"],
["purple_concrete", "Purple Concrete"],
["blue_concrete", "Blue Concrete"],
["brown_concrete", "Brown Concrete"],
["green_concrete", "Green Concrete"],
["red_concrete", "Red Concrete"],
["black_concrete", "Black Concrete"],
["white_concrete_powder", "White Concrete Powder"],
["orange_concrete_powder", "Orange Concrete Powder"],
["magenta_concrete_powder", "Magenta Concrete Powder"],
["light_blue_concrete_powder", "Light Blue Concrete Powder"],
["yellow_concrete_powder", "Yellow Concrete Powder"],
["lime_concrete_powder", "Lime Concrete Powder"],
["pink_concrete_powder", "Pink Concrete Powder"],
["gray_concrete_powder", "Gray Concrete Powder"],
["light_gray_concrete_powder", "Light Gray Concrete Powder"],
["cyan_concrete_powder", "Cyan Concrete Powder"],
["purple_concrete_powder", "Purple Concrete Powder"],
["blue_concrete_powder", "Blue Concrete Powder"],
["brown_concrete_powder", "Brown Concrete Powder"],
["green_concrete_powder", "Green Concrete Powder"],
["red_concrete_powder", "Red Concrete Powder"],
["black_concrete_powder", "Black Concrete Powder"],
["white_glazed_terracotta", "White Glazed Terracotta"],
["orange_glazed_terracotta", "Orange Glazed Terracotta"],
["magenta_glazed_terracotta", "Magenta Glazed Terracotta"],
["light_blue_glazed_terracotta", "Light Blue Glazed Terracotta"],
["yellow_glazed_terracotta", "Yellow Glazed Terracotta"],
["lime_glazed_terracotta", "Lime Glazed Terracotta"],
["pink_glazed_terracotta", "Pink Glazed Terracotta"],
["gray_glazed_terracotta", "Gray Glazed Terracotta"],
["light_gray_glazed_terracotta", "Light Gray Glazed Terracotta"],
["cyan_glazed_terracotta", "Cyan Glazed Terracotta"],
["purple_terracotta", "Purple Glazed Terracotta"],
["blue_glazed_terracotta", "Blue Glazed Terracotta"],
["brown_glazed_terracotta", "Pink Glazed Terracotta"],
["green_glazed_terracotta", "Green Glazed Terracotta"],
["red_glazed_terracotta", "Red Glazed Terracotta"],
["black_glazed_terracotta", "Black Glazed Terracotta"],
["prismarine_stairs", "Prismarine Stairs"],
["prismarine_bricks_stairs", "Prismarine Brick Stairs"],
["dark_prismarine_stairs", "Dark Prismarine Stairs"],
["kelp", "Kelp"],
["dried_kelp_block", "Dried Kelp Block"],
["seagrass", "Seagrass"],
["tube_coral", "Tube Coral Plant (Blue)"],
["brain_coral", "Brain Coral Plant (Pink)"],
["bubble_coral", "Bubble Coral Plant (Purple)"],
["fire_coral", "Fire Coral Plant (Red)"],
["horn_coral", "Horn Coral Plant (Yellow)"],
["tube_coral_block", "Tube Coral Block(Blue)"],
["brain_coral_block", "Brain Coral Block (Pink)"],
["bubble_coral_block", "Bubble Coral Block (Purple)"],
["fire_coral_block", "Fire Coral Block (Red)"],
["horn_coral_block", "Horn Coral Block (Yellow)"],
["dead_tube_coral_block", "Dead Tube Coral Block"],
["dead_brain_coral_block", "Dead Brain Coral Block"],
["dead_bubble_coral_block", "Dead Bubble Coral Block"],
["dead_fire_coral_block", "Dead Fire Coral Block"],
["dead_horn_coral_block", "Dead Horn Coral Block"],
["dead_tube_coral", "Dead Tube Coral"],
["dead_brain_coral", "Dead Brain Coral"],
["dead_bubble_coral", "Dead Bubble Coral"],
["dead_fire_coral", "Dead Fire Coral"],
["dead_horn_coral", "Dead Horn Coral"],
["dead_tube_coral_fan", "Dead Tube Coral Fan"],
["dead_brain_coral_fan", "Dead Brain Coral Fan"],
["dead_bubble_coral_fan", "Dead Bubble Coral Fan"],
["dead_fire_coral_fan", "Dead Fire Coral Fan"],
["dead_horn_coral_fan", "Dead Horn Coral Fan"],
["tube_coral_fan", "Tube Coral Fan (Blue)"],
["brain_coral_fan", "Brain Coral Fan (Pink)"],
["bubble_coral_fan", "Bubble Coral Fan (Purple)"],
["fire_coral_fan", "Fire Coral Fan (Red)"],
["horn_coral_fan", "Horn Coral Fan (Yellow)"],
["dead_tube_coral_wall_fan", "Dead Tube Coral Wall Fan"],
["dead_brain_coral_wall_fan", "Dead Brain Coral Wall Fan"],
["dead_bubble_coral_wall_fan", "Dead Bubble Coral Wall Fan"],
["dead_fire_coral_wall_fan", "Dead Fire Coral Wall Fan"],
["dead_horn_coral_wall_fan", "Dead Horn Coral Wall Fan"],
["tube_coral_wall_fan", "Tube Coral Wall Fan (Blue)"],
["brain_coral_wall_fan", "Brain Coral Wall Fan (Pink)"],
["bubble_coral_wall_fan", "Bubble Wall Coral Fan (Purple)"],
["fire_coral_wall_fan", "Fire Coral Wall Fan (Red)"],
["horn_coral_wall_fan", "Horn Coral Wall Fan (Yellow)"],
["sea_pickle", "Sea Pickle"],
["conduit", "Conduit"],
["blue_ice", "Blue Ice"],
["turtle_egg", "Turtle Egg"],
["nether_portal", "Nether Portal"],
["bamboo", "Bamboo"],
["bamboo_sapling", "Bamboo Sapling"],
["potted_bamboo", "Potted Bamboo"],
["oak_sign", "Oak Sign"],
["spruce_sign", "Spruce Sign"],
["birch_sign", "Birch Sign"],
["jungle_sign", "Jungle Sign"],
["acacia_sign", "Acacia Sign"],
["dark_oak_sign", "Dark Oak Sign"],
["oak_wall_sign", "Oak Wall Sign"],
["spruce_wall_sign", "Spruce Wall Sign"],
["birch_wall_sign", "Birch Wall Sign"],
["jungle_wall_sign", "Jungle Wall Sign"],
["acacia_wall_sign", "Acacia Wall Sign"],
["dark_oak_wall_sign", "Dark Oak Wall Sign"],
["brick_wall", "Brick Wall"],
["prismarine_wall", "Prismarine Wall"],
["red_sandstone_wall", "Red Sandstone Wall"],
["mossy_stone_brick_wall", "Mossy Stone Brick Wall"],
["stone_brick_wall", "Stone Brick Wall"],
["nether_brick_wall", "Nether Brick Wall"],
["andesite_wall", "Andesite Wall"],
["granite_wall", "Granite Wall"],
["diorite_wall", "Diorite Wall"],
["end_stone_brick_wall", "End Stone Brick Wall"],
["sandstone_wall", "Sandstone Wall"],
["red_nether_brick_wall", "Red Nether Brick Wall"],
["stone_stairs", "Stone Stairs"],
["granite_stairs", "Granite Stairs"],
["polished_granite_stairs", "Polished Granite Stairs"],
["diorite_stairs", "Diorite Stairs"],
["polished_diorite_stairs", "Polished Diorite Stairs"],
["andesite_stairs", "Andesite Stairs"],
["polished_andesite_stairs", "Polished Andesite Stairs"],
["smooth_red_sandstone_stairs", "Smooth Red Sandstone Stairs"],
["smooth_quartz_stairs", "Smooth Quartz Stairs"],
["mossy_stone_brick_stairs", "Mossy Stone Brick Stairs"],
["end_stone_brick_stairs", "End Stone Brick Stairs"],
["red_nether_brick_stairs", "Red Nether Brick Stairs"],
["smooth_sandstone_stairs", "Smooth Sandstone Stairs"],
["mossy_cobblestone_stairs", "Mossy Cobblestone Stairs"],
["stone_slab", "Stone Slab"],
["smooth_stone_slab", "Smooth Stone Slab"],
["granite_slab", "Granite Slab"],
["polished_granite_slab", "Polished Granite Slab"],
["diorite_slab", "Diorite Slab"],
["polished_diorite_slab", "Polished Diorite Slab"],
["andesite_slab", "Andesite Slab"],
["polished_andesite_slab", "Polished Andesite Slab"],
["smooth_red_sandstone_slab", "Smooth Red Sandstone Slab"],
["smooth_quartz_slab", "Smooth Quartz Slab"],
["mossy_stone_brick_slab", "Mossy Stone Brick Slab"],
["end_stone_brick_slab", "End Stone Brick Slab"],
["red_nether_brick_slab", "Red Nether Brick Slab"],
["smooth_sandstone_slab", "Smooth Sandstone Slab"],
["mossy_cobblestone_slab", "Mossy Cobblestone Slab"],
["cornflower", "Cornflower"],
["lily_of_the_valley", "Lily of the Valley"],
["wither_rose", "Wither Rose"],
["loom", "Loom"],
["barrel", "Barrel"],
["bell", "Bell"],
["blast_furnace", "Blast Furnace"],
["smoker", "Smoker"],
["fletching_table", "Fletching Table"],
["smithing_table", "Smithing Table"],
["cartography_table", "Cartography Table"],
["stonecutter", "Stonecutter"],
["grindstone", "Grindstone"],
["lectern", "Lectern"],
["scaffolding", "Scaffolding"],
["lantern", "Lantern"],
["jigsaw", "Jigsaw Block"],
["sweet_berry_bush", "Sweet Berry Bush"],
["campfire", "Campfire"],
["composter", "Composter"],
["cut_red_sandstone_slab", "Cut Red Sandstone Slab"],
["cut_sandstone_slab", "Cut Sandstone Slab"],
["beehive", "Beehive"],
["bee_nest", "Bee Nest"],
["honey_block", "Honey Block"],
["honeycomb_block", "Honeycomb Block"],
["ancient_debris", "Ancient Debris"],
["netherite_block", "Netherite Block"],
["basalt", "Basalt"],
["nether_sprouts", "Nether Sprouts"],
["warped_wart_block", "Warped Wart Block"],
["weeping_vines", "Weeping Vines"],
["weeping_vines_plant", "Weeping Vines Plant"],
["shroomlight", "Shroomlight"],
["soul_soil", "Soul Soil"],
["soul_lantern", "Soul Lantern"],
["soul_torch", "Soul Torch"],
["warped_button", "Warped Button"],
["warped_door", "Warped Door"],
["warped_fence", "Warped Fence"],
["warped_fence_gate", "Warped Fence Gate"],
["warped_fungus", "Warped Fungus"],
["warped_nylium", "Warped Nylium"],
["warped_planks", "Warped Planks"],
["warped_pressure_plate", "Warped Pressure Plate"],
["warped_roots", "Warped Roots"],
["warped_sign", "Warped Sign"],
["warped_wall_sign", "Warped Wall Sign"],
["warped_slab", "Warped Slab"],
["warped_stairs", "Warped Stairs"],
["warped_stem", "Warped Stem"],
["warped_trapdoor", "Warped Trapdoor"],
["crimson_button", "Crimson Button"],
["crimson_door", "Crimson Door"],
["crimson_fence", "Crimson Fence"],
["crimson_fence_gate", "Crimson Fence Gate"],
["crimson_fungus", "Crimson Fungus"],
["crimson_nylium", "Crimson Nylium"],
["crimson_planks", "Crimson Planks"],
["crimson_pressure_plate", "Crimson Pressure Plate"],
["crimson_roots", "Crimson Roots"],
["crimson_sign", "Crimson Sign"],
["crimson_wall_sign", "Crimson Wall Sign"],
["crimson_slab", "Crimson Slab"],
["crimson_stairs", "Crimson Stairs"],
["crimson_stem", "Crimson Stem"],
["crimson_trapdoor", "Crimson Trapdoor"],
["stripped_crimson_stem", "Stripped Crimson Stem"],
["stripped_warped_stem", "Stripped Warped Stem"],
["target", "Target"],
["crying_obsidian", "Crying Obsidian"],
["potted_crimson_fungus", "Potted Crimson Fungus"],
["potted_crimson_roots", "Potted Crimson Roots"],
["potted_warped_fungus", "Potted Warped Fungus"],
["potted_warped_roots", "Potted Warped Roots"],
["stripped_warped_hyphae", "Stripped Warped Hyphae"],
["stripped_crimson_hyphae", "Stripped Crimson Hyphae"],
["warped_hyphae", "Warped Hyphae"],
["crimson_hyphae", "Crimson Hyphae"],
["twisting_vines", "Twisting Vines"],
["twisting_vines_plant", "Twisting Vines Plant"],
["nether_gold_ore", "Nether Gold Ore"],
["respawn_anchor", "Respawn Anchor"],
["polished_basalt", "Polished Basalt"],
["lodestone", "Lodestone"],
["blackstone", "Blackstone"],
["blackstone_slab", "Blackstone Slab"],
["blackstone_stairs", "Blackstone Stairs"],
["blackstone_wall", "Blackstone Wall"],
["chiseled_polished_blackstone", "Chiseled Polished Blackstone"],
[
"cracked_polished_blackstone_bricks",
"Cracked Polished Blackstone Bricks",
],
["gilded_blackstone", "Gilded Blackstone"],
["polished_blackstone", "Polished Blackstone"],
["polished_blackstone_brick_slab", "Polished Blackstone Brick Slab"],
[
"polished_blackstone_brick_stairs",
"Polished Blackstone Brick Stairs",
],
["polished_blackstone_brick_wall", "Polished Blackstone Brick Wall"],
["polished_blackstone_bricks", "Polished Blackstone Bricks"],
["polished_blackstone_button", "Polished Blackstone Button"],
[
"polished_blackstone_pressure_plate",
"Polished Blackstone Pressure Plate",
],
["polished_blackstone_slab", "Polished Blackstone Slab"],
["polished_blackstone_stairs", "Polished Blackstone Stairs"],
["polished_blackstone_wall", "Polished Blackstone Wall"],
["chiseled_nether_bricks", "Chiseled Nether Bricks"],
["cracked_nether_bricks", "Cracked Nether Bricks"],
["quartz_bricks", " Quartz Bricks"],
["soul_campfire", "Soul Campfire"],
["chain", "Chain"],
],
blockStates = {
standing_banner: { rotation: standingSignBanner },
carved_pumpkin: { facing: nsweName },
jack_o_lantern: { facing: nsweName },
white_banner: { rotation: standingSignBanner },
orange_banner: { rotation: standingSignBanner },
magenta_banner: { rotation: standingSignBanner },
light_blue_banner: { rotation: standingSignBanner },
yellow_banner: { rotation: standingSignBanner },
lime_banner: { rotation: standingSignBanner },
pink_banner: { rotation: standingSignBanner },
gray_banner: { rotation: standingSignBanner },
light_gray_banner: { rotation: standingSignBanner },
cyan_banner: { rotation: standingSignBanner },
purple_banner: { rotation: standingSignBanner },
blue_banner: { rotation: standingSignBanner },
brown_banner: { rotation: standingSignBanner },
green_banner: { rotation: standingSignBanner },
red_banner: { rotation: standingSignBanner },
black_banner: { rotation: standingSignBanner },
white_wall_banner: { facing: nsweName },
orange_wall_banner: { facing: nsweName },
magenta_wall_banner: { facing: nsweName },
light_blue_wall_banner: { facing: nsweName },
yellow_wall_banner: { facing: nsweName },
lime_wall_banner: { facing: nsweName },
pink_wall_banner: { facing: nsweName },
gray_wall_banner: { facing: nsweName },
light_gray_wall_banner: { facing: nsweName },
cyan_wall_banner: { facing: nsweName },
purple_wall_banner: { facing: nsweName },
blue_wall_banner: { facing: nsweName },
brown_wall_banner: { facing: nsweName },
green_wall_banner: { facing: nsweName },
red_wall_banner: { facing: nsweName },
black_wall_banner: { facing: nsweName },
loom: { facing: nsweName },
note_block: {
powered: [!1, !0],
instrument: [
"banjo",
"basedrum",
"bass",
"bell",
"bit",
"chime",
"cow_bell",
"didgeridoo",
"flute",
"guitar",
"harp",
"hat",
"iron_xylophone",
"pling",
"snare",
"xylophone",
],
note: [
[0, "octave 1 F♯/G♭"],
[1, "octave 1 G"],
[2, "octave 1 G♯/A♭"],
[3, "octave 1 A"],
[4, "octave 1 A♯/B♭"],
[5, "octave 1 B"],
[6, "octave 1 C"],
[7, "octave 1 C♯/D♭"],
[8, "octave 1 D"],
[9, "octave 1 D♯/E♭"],
[10, "octave 1 E"],
[11, "octave 1 F"],
[12, "octave 2 F♯/G♭"],
[13, "octave 2 G"],
[14, "octave 2 G♯/A♭"],
[15, "octave 2 A"],
[16, "octave 2 A#/B♭"],
[17, "octave 2 B"],
[18, "octave 2 C"],
[19, "octave 2 C♯/D♭"],
[20, "octave 2 D"],
[21, "octave 2 D♯/E♭"],
[22, "octave 2 E"],
[23, "octave 2 F"],
[24, "octave 2 F♯/G♭"],
],
},
redstone_ore: { lit: [!1, !0] },
white_bed: bedOptions,
orange_bed: bedOptions,
magenta_bed: bedOptions,
light_blue_bed: bedOptions,
yellow_bed: bedOptions,
lime_bed: bedOptions,
pink_bed: bedOptions,
gray_bed: bedOptions,
light_gray_bed: bedOptions,
cyan_bed: bedOptions,
purple_bed: bedOptions,
blue_bed: bedOptions,
brown_bed: bedOptions,
green_bed: bedOptions,
red_bed: bedOptions,
black_bed: bedOptions,
tube_coral_wall_fan: { facing: nsweName },
brain_coral_wall_fan: { facing: nsweName },
bubble_coral_wall_fan: { facing: nsweName },
fire_coral_wall_fan: { facing: nsweName },
horn_coral_wall_fan: { facing: nsweName },
dead_tube_coral_wall_fan: { facing: nsweName },
dead_brain_coral_wall_fan: { facing: nsweName },
dead_bubble_coral_wall_fan: { facing: nsweName },
dead_fire_coral_wall_fan: { facing: nsweName },
dead_horn_coral_wall_fan: { facing: nsweName },
sea_pickle: { pickles: [1, 2, 3, 4], waterlogged: [!1, !0] },
cobblestone_wall: wallBS,
mossy_cobblestone_wall: wallBS,
brick_wall: wallBS,
prismarine_wall: wallBS,
red_sandstone_wall: wallBS,
mossy_stone_brick_wall: wallBS,
stone_brick_wall: wallBS,
nether_brick_wall: wallBS,
andesite_wall: wallBS,
diorite_wall: wallBS,
granite_wall: wallBS,
end_stone_brick_wall: wallBS,
sandstone_wall: wallBS,
red_nether_brick_wall: wallBS,
beetroots: { age: [0, 1, 2, 3] },
bone_block: { axis: ["x", "y", "z"] },
brewing_stand: {
has_bottle_0: [!1, !0],
has_bottle_1: [!1, !0],
has_bottle_2: [!1, !0],
},
stone_button: { facing: nsweName, face: ["ceiling", "wall", "floor"] },
redstone_lamp: { lit: [!1, !0] },
oak_button: buttonsBS,
acacia_button: buttonsBS,
jungle_button: buttonsBS,
birch_button: buttonsBS,
dark_oak_button: buttonsBS,
spruce_button: buttonsBS,
cactus: { age: cactusReeds },
cake: { bites: [0, 1, 2, 3, 4, 5] },
carrot: { age: [0, 1, 2, 3, 4, 5, 6, 7] },
chest: { facing: nsweName, type: ["single", "left", "right"] },
trapped_chest: { facing: nsweName, type: ["single", "left", "right"] },
ender_chest: { facing: nsweName },
chorus_flower: { age: [0, 1, 2, 3, 4, 5] },
chorus_plant: {
north: [!1, !0],
south: [!1, !0],
east: [!1, !0],
west: [!1, !0],
up: [!1, !0],
down: [!1, !0],
},
cocoa: { age: [0, 1, 2], facing: nsweName },
tnt: { unstable: [!1, !0] },
command_block: { conditional: [!1, !0], facing: nsewudName },
chain_command_block: { conditional: [!1, !0], facing: nsewudName },
repeating_command_block: { conditional: [!1, !0], facing: nsewudName },
daylight_detector: { inverted: [!1, !0] },
dispenser: { facing: nsewudName, triggered: [!1, !0] },
iron_door: doorBS,
oak_door: doorBS,
spruce_door: doorBS,
birch_door: doorBS,
jungle_door: doorBS,
acacia_door: doorBS,
dark_oak_door: doorBS,
dropper: { facing: nsewudName, triggered: [!1, !0] },
end_portal_frame: { facing: nsweName, eye: [!1, !0] },
end_rod: { facing: nsweName, eye: [!1, !0] },
farmland: { moisture: [0, 1, 2, 3, 4, 5, 6, 7] },
oak_fence: fenceBS,
spruce_fence: fenceBS,
birch_fence: fenceBS,
jungle_fence: fenceBS,
acacia_fence: fenceBS,
dark_oak_fence: fenceBS,
nether_brick_fence: fenceBS,
oak_fence_gate: fenceGateBS,
spruce_fence_gate: fenceGateBS,
birch_fence_gate: fenceGateBS,
jungle_fence_gate: fenceGateBS,
acacia_fence_gate: fenceGateBS,
dark_oak_fence_gate: fenceGateBS,
fire: {
age: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
up: [!1, !0],
north: [!1, !0],
south: [!1, !0],
east: [!1, !0],
west: [!1, !0],
},
frosted_ice: { age: [0, 1, 2, 3] },
furnace: { facing: nsweName, lit: [!1, !0] },
glass_pane: fenceBS,
white_stained_glass_pane: fenceBS,
orange_stained_glass_pane: fenceBS,
magenta_stained_glass_pane: fenceBS,
light_blue_stained_glass_pane: fenceBS,
yellow_stained_glass_pane: fenceBS,
lime_stained_glass_pane: fenceBS,
pink_stained_glass_pane: fenceBS,
gray_stained_glass_pane: fenceBS,
light_gray_stained_glass_pane: fenceBS,
cyan_stained_glass_pane: fenceBS,
purple_stained_glass_pane: fenceBS,
blue_stained_glass_pane: fenceBS,
brown_stained_glass_pane: fenceBS,
green_stained_glass_pane: fenceBS,
red_stained_glass_pane: fenceBS,
black_stained_glass_pane: fenceBS,
white_glazed_terracotta: { facing: nsweName },
orange_glazed_terracotta: { facing: nsweName },
magenta_glazed_terracotta: { facing: nsweName },
light_blue_glazed_terracotta: { facing: nsweName },
yellow_glazed_terracotta: { facing: nsweName },
lime_glazed_terracotta: { facing: nsweName },
pink_glazed_terracotta: { facing: nsweName },
gray_glazed_terracotta: { facing: nsweName },
light_gray_glazed_terracotta: { facing: nsweName },
cyan_glazed_terracotta: { facing: nsweName },
purple_terracotta: { facing: nsweName },
blue_glazed_terracotta: { facing: nsweName },
brown_glazed_terracotta: { facing: nsweName },
green_glazed_terracotta: { facing: nsweName },
red_glazed_terracotta: { facing: nsweName },
black_glazed_terracotta: { facing: nsweName },
grass: { snowy: [!1, !0] },
hay_block: { axis: ["x", "y", "z"] },
nether_portal: { axis: ["x", "z"] },
hopper: { enabled: [!1, !0], facing: nsewdName },
iron_bars: fenceBS,
lit_pumpkin: { facing: nsweName },
jukebox: { has_record: [!1, !0] },
ladder: { facing: nsweName },
lava: {
level: [
[0, "0 Source"],
[1, "1 Height "],
[2, "2 Height"],
[3, "3 Height"],
[4, "4 Height"],
[5, "5 Height"],
[6, "6 Height"],
[7, "7 Height"],
[8, "8 Falling Lava"],
[9, "9 Falling Lava"],
[10, "10 Falling Lava"],
[11, "11 Falling Lava"],
[12, "12 Falling Lava"],
[13, "13 Falling Lava"],
[14, "14 Falling Lava"],
[15, "15 Falling Lava"],
],
},
lever: { facing: nsweName, face: ["ceiling", "wall", "floor"] },
brown_mushroom_block: {
up: [!1, !0],
down: [!1, !0],
north: [!1, !0],
south: [!1, !0],
east: [!1, !0],
west: [!1, !0],
},
red_mushroom_block: {
up: [!1, !0],
down: [!1, !0],
north: [!1, !0],
south: [!1, !0],
east: [!1, !0],
west: [!1, !0],
},
mushroom_stem: {
up: [!1, !0],
down: [!1, !0],
north: [!1, !0],
south: [!1, !0],
east: [!1, !0],
west: [!1, !0],
},
mycelium: { snowy: [!1, !0] },
nether_wart: { age: [0, 1, 2, 3] },
sticky_piston: { extended: [!1, !0], facing: nsewudName },
piston: { extended: [!1, !0], facing: nsewudName },
piston_head: {
facing: nsewudName,
short: [!1, !0],
type: ["normal", "sticky"],
},
piston_extension: { extended: [!1, !0], facing: nsewudName },
observer: { facing: nsewudName, powered: [!1, !0] },
potatoes: { age: [0, 1, 2, 3, 4, 5, 6, 7] },
stone_pressure_plate: { powered: [!1, !0] },
wooden_pressure_plate: { powered: [!1, !0] },
light_weighted_pressure_plate: {
age: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
},
heavy_weighted_pressure_plate: {
age: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
},
pumpkin_stem: { age: [0, 1, 2, 3, 4, 5, 6, 7] },
melon_stem: { age: [0, 1, 2, 3, 4, 5, 6, 7] },
attached_pumpkin_stem: { facing: nsweName },
attached_melon_stem: { facing: nsweName },
purpur_pillar: { axis: ["x", "y", "z"] },
quartz_pillar: { axis: ["x", "y", "z"] },
rail: {
shape: [
"north_south",
"east_west",
"north_east",
"north_west",
"south_east",
"south_west",
"ascending_north",
"ascending_south",
"ascending_east",
"ascending_west",
],
},
activator_rail: {
powered: [!1, !0],
shape: [
"north_south",
"east_west",
"ascending_north",
"ascending_south",
"ascending_east",
"ascending_west",
],
},
golden_rail: {
powered: [!1, !0],
shape: [
"north_south",
"east_west",
"ascending_north",
"ascending_south",
"ascending_east",
"ascending_west",
],
},
detector_rail: {
powered: [!1, !0],
shape: [
"north_south",
"east_west",
"ascending_north",
"ascending_south",
"ascending_east",
"ascending_west",
],
},
powered_rail: {
powered: [!1, !0],
shape: [
"north_south",
"east_west",
"ascending_north",
"ascending_south",
"ascending_east",
"ascending_west",
],
},
redstone_wire: {
north: ["none", "side", "up"],
south: ["none", "side", "up"],
east: ["none", "side", "up"],
west: ["none", "side", "up"],
power: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
},
repeater: {
delay: [1, 2, 3, 4],
facing: nsweName,
locked: [!1, !0],
powered: [!1, !0],
},
comparator: {
facing: nsweName,
mode: ["compare", "subtract"],
powered: [!1, !0],
},
redstone_torch: { lit: [!1, !0] },
wall_torch: { facing: nsweName },
redstone_wall_torch: { facing: nsweName, lit: [!1, !0] },
sapling: {
stage: [0, 1],
type: ["oak", "spruce", "birch", "jungle", "acacia", "dark_oak"],
},
white_shulker_box: { facing: nsewudName },
shulker_box: { facing: nsewudName },
orange_shulker_box: { facing: nsewudName },
magenta_shulker_box: { facing: nsewudName },
light_blue_shulker_box: { facing: nsewudName },
yellow_shulker_box: { facing: nsewudName },
lime_shulker_box: { facing: nsewudName },
pink_shulker_box: { facing: nsewudName },
gray_shulker_box: { facing: nsewudName },
light_gray_shulker_box: { facing: nsewudName },
cyan_shulker_box: { facing: nsewudName },
purple_shulker_box: { facing: nsewudName },
blue_shulker_box: { facing: nsewudName },
brown_shulker_box: { facing: nsewudName },
green_shulker_box: { facing: nsewudName },
red_shulker_box: { facing: nsewudName },
black_shulker_box: { facing: nsewudName },
oak_wall_sign: { facing: nsweName },
spruce_wall_sign: { facing: nsweName },
birch_wall_sign: { facing: nsweName },
jungle_wall_sign: { facing: nsweName },
acacia_wall_sign: { facing: nsweName },
dark_oak_wall_sign: { facing: nsweName },
oak_sign: { rotation: standingSignBanner },
spruce_sign: { rotation: standingSignBanner },
birch_sign: { rotation: standingSignBanner },
jungle_sign: { rotation: standingSignBanner },
acacia_sign: { rotation: standingSignBanner },
dark_oak_sign: { rotation: standingSignBanner },
skull: { facing: nsewudName, nodrop: [!1, !0] },
skeleton_wall_skull: { facing: nsweName },
wither_skeleton_wall_skull: { facing: nsweName },
zombie_wall_head: { facing: nsweName },
player_wall_head: { facing: nsweName },
creeper_wall_head: { facing: nsweName },
dragon_wall_head: { facing: nsweName },
skeleton_skull: { rotation: headRotate },
wither_skeleton_skull: { rotation: headRotate },
zombie_head: { rotation: headRotate },
player_head: { rotation: headRotate },
creeper_head: { rotation: headRotate },
dragon_head: { rotation: headRotate },
purpur_slab: slabTypes,
oak_slab: slabTypes,
spruce_slab: slabTypes,
birch_slab: slabTypes,
jungle_slab: slabTypes,
acacia_slab: slabTypes,
dark_oak_slab: slabTypes,
stone_slab: slabTypes,
sandstone_slab: slabTypes,
petrified_oak_slab: slabTypes,
cobblestone_slab: slabTypes,
brick_slab: slabTypes,
stone_brick_slab: slabTypes,
nether_brick_slab: slabTypes,
quartz_slab: slabTypes,
red_sandstone_slab: slabTypes,
smooth_stone_slab: slabTypes,
smooth_red_sandstone_slab: slabTypes,
smooth_sandstone_slab: slabTypes,
smooth_quartz_slab: slabTypes,
stone_slab: slabTypes,
granite_slab: slabTypes,
polished_granite_slab: slabTypes,
diorite_slab: slabTypes,
polished_diorite_slab: slabTypes,
andesite_slab: slabTypes,
polished_andesite_slab: slabTypes,
smooth_red_sandstone_slab: slabTypes,
smooth_quartz_slab: slabTypes,
mossy_stone_brick_slab: slabTypes,
end_stone_brick_slab: slabTypes,
red_nether_brick_slab: slabTypes,
smooth_sandstone_slab: slabTypes,
mossy_cobblestone_slab: slabTypes,
snow_layer: { layers: [1, 2, 3, 4, 5, 6, 7, 8] },
acacia_stairs: stairBlockState,
stone_stairs: stairBlockState,
birch_stairs: stairBlockState,
brick_stairs: stairBlockState,
dark_oak_stairs: stairBlockState,
jungle_stairs: stairBlockState,
nether_brick_stairs: stairBlockState,
oak_stairs: stairBlockState,
purpur_stairs: stairBlockState,
quartz_stairs: stairBlockState,
red_sandstone_stairs: stairBlockState,
sandstone_stairs: stairBlockState,
spruce_stairs: stairBlockState,
stone_brick_stairs: stairBlockState,
stone_stairs: stairBlockState,
granite_stairs: stairBlockState,
polished_granite_stairs: stairBlockState,
diorite_stairs: stairBlockState,
polished_diorite_stairs: stairBlockState,
andesite_stairs: stairBlockState,
polished_andesite_stairs: stairBlockState,
smooth_red_sandstone_stairs: stairBlockState,
smooth_quartz_stairs: stairBlockState,
mossy_stone_brick_stairs: stairBlockState,
end_stone_brick_stairs: stairBlockState,
red_nether_brick_stairs: stairBlockState,
smooth_sandstone_stairs: stairBlockState,
mossy_cobblestone_stairs: stairBlockState,
stonebrick: {
variant: [
"stonebrick",
"mossy_stonebrick",
"cracked_stonebrick",
"chiseled_stonebrick",
],
},
structure_block: { mode: ["save", "load", "corner", "data"] },
reeds: { age: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] },
iron_trapdoor: trapdoors,
oak_trapdoor: trapdoors,
acacia_trapdoor: trapdoors,
spruce_trapdoor: trapdoors,
jungle_trapdoor: trapdoors,
birch_trapdoor: trapdoors,
dark_oak_trapdoor: trapdoors,
tripwire: {
attached: [!1, !0],
disarmed: [!1, !0],
north: [!1, !0],
south: [!1, !0],
east: [!1, !0],
west: [!1, !0],
powered: [!1, !0],
},
tripwire_hook: {
attached: [!1, !0],
facing: nsweName,
powered: [!1, !0],
},
vine: {
north: [!1, !0],
south: [!1, !0],
east: [!1, !0],
west: [!1, !0],
up: [!1, !0],
},
water: {
level: [
[0, "0 Source"],
[1, "1 Height "],
[2, "2 Height"],
[3, "3 Height"],
[4, "4 Height"],
[5, "5 Height"],
[6, "6 Height"],
[7, "7 Height"],
[8, "8 Falling Water"],
[9, "9 Falling Water"],
[10, "10 Falling Water"],
[11, "11 Falling Water"],
[12, "12 Falling Water"],
[13, "13 Falling Water"],
[14, "14 Falling Water"],
[15, "15 Falling Water"],
],
},
wheat: { age: [0, 1, 2, 3, 4, 5, 6, 7] },
oak_log: { axis: ["x", "y", "z"] },
acacia_log: { axis: ["x", "y", "z"] },
spruce_log: { axis: ["x", "y", "z"] },
birch_log: { axis: ["x", "y", "z"] },
jungle_log: { axis: ["x", "y", "z"] },
dark_oak_log: { axis: ["x", "y", "z"] },
stripped_oak_log: { axis: ["x", "y", "z"] },
stripped_acacia_log: { axis: ["x", "y", "z"] },
stripped_spruce_log: { axis: ["x", "y", "z"] },
stripped_birch_log: { axis: ["x", "y", "z"] },
stripped_jungle_log: { axis: ["x", "y", "z"] },
stripped_dark_oak_log: { axis: ["x", "y", "z"] },
stripped_oak_wood: { axis: ["x", "y", "z"] },
stripped_acacia_wood: { axis: ["x", "y", "z"] },
stripped_spruce_wood: { axis: ["x", "y", "z"] },
stripped_birch_wood: { axis: ["x", "y", "z"] },
stripped_jungle_wood: { axis: ["x", "y", "z"] },
stripped_dark_oak_wood: { axis: ["x", "y", "z"] },
oak_wood: { axis: ["x", "y", "z"] },
acacia_wood: { axis: ["x", "y", "z"] },
spruce_wood: { axis: ["x", "y", "z"] },
birch_wood: { axis: ["x", "y", "z"] },
jungle_wood: { axis: ["x", "y", "z"] },
dark_oak_wood: { axis: ["x", "y", "z"] },
barrel: { facing: nsewudName, open: [!1, !0] },
bell: {
facing: nsweName,
attachment: ["single_wall", "floor", "ceiling"],
},
blast_furnace: { facing: nsweName, lit: [!1, !0] },
smoker: { facing: nsweName, lit: [!1, !0] },
lectern: { facing: nsweName, has_book: [!1, !0], powered: [!1, !0] },
grindstone: { facing: nsweName, face: ["floor", "ceiling", "wall"] },
jigsaw: {
orientation: [
"down_east",
"down_north",
"down_south",
"down_west",
"up_east",
"up_north",
"up_south",
"up_west",
"east_up",
"north_up",
"south_up",
"west_up",
],
},
sweet_berry_bush: { age: [0, 1, 2, 3] },
campfire: {
lit: [!1, !0],
signal_fire: [!1, !0],
waterlogged: [!1, !0],
},
composter: { level: [0, 1, 2, 3, 4, 5, 6, 7, 8] },
cut_red_sandstone_slab: slabTypes,
cut_sandstone_slab: slabTypes,
cauldron: { level: [0, 1, 2, 3] },
bee_nest: { facing: nsweName, honey_level: [0, 1, 2, 3, 4, 5] },
beehive: { facing: nsweName, honey_level: [0, 1, 2, 3, 4, 5] },
basalt: { axis: ["x", "y", "z"] },
soul_lantern: { hanging: [!1, !0], waterlogged: [!1, !0] },
lantern: { hanging: [!1, !0], waterlogged: [!1, !0] },
soul_wall_torch: { facing: nsweName },
warped_button: { facing: nsweName, face: ["ceiling", "wall", "floor"] },
warped_door: doorBS,
warped_fence: fenceBS,
warped_fence_gate: fenceGateBS,
warped_pressure_plate: { powered: [!1, !0] },
warped_wall_sign: { facing: nsweName },
warped_sign: { rotation: standingSignBanner },
warped_slab: slabTypes,
warped_stairs: stairBlockState,
warped_stem: { axis: ["x", "y", "z"] },
warped_trapdoor: trapdoors,
crimson_button: {
facing: nsweName,
face: ["ceiling", "wall", "floor"],
},
crimson_door: doorBS,
crimson_fence: fenceBS,
crimson_fence_gate: fenceGateBS,
crimson_pressure_plate: { powered: [!1, !0] },
crimson_wall_sign: { facing: nsweName },
crimson_sign: { rotation: standingSignBanner },
crimson_slab: slabTypes,
crimson_stairs: stairBlockState,
crimson_stem: { axis: ["x", "y", "z"] },
crimson_trapdoor: trapdoors,
stripped_crimson_stem: { axis: ["x", "y", "z"] },
stripped_warped_stem: { axis: ["x", "y", "z"] },
target: { power: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] },
stripped_warped_hyphae: { axis: ["x", "y", "z"] },
stripped_crimson_hyphae: { axis: ["x", "y", "z"] },
warped_hyphae: { axis: ["x", "y", "z"] },
crimson_hyphae: { axis: ["x", "y", "z"] },
twisting_vines: {
age: [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
],
},
weeping_vines: {
age: [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
],
},
respawn_anchor: { charges: [0, 1, 2, 3, 4] },
polished_basalt: { axis: ["x", "y", "z"] },
blackstone_slab: slabTypes,
blackstone_stairs: stairBlockState,
blackstone_wall: wallBS,
polished_blackstone_brick_slab: slabTypes,
polished_blackstone_brick_stairs: stairBlockState,
polished_blackstone_brick_wall: wallBS,
polished_blackstone_button: {
facing: nsweName,
face: ["ceiling", "wall", "floor"],
},
polished_blackstone_pressure_plate: { powered: [!1, !0] },
polished_blackstone_slab: slabTypes,
polished_blackstone_stairs: stairBlockState,
polished_blackstone_wall: wallBS,
soul_campfire: {
lit: [!1, !0],
signal_fire: [!1, !0],
waterlogged: [!1, !0],
},
oak_leaves: leavesBS,
spruce_leaves: leavesBS,
birch_leaves: leavesBS,
jungle_leaves: leavesBS,
acacia_leaves: leavesBS,
dark_oak_leaves: leavesBS,
chain: { waterlogged: [!1, !0], axis: ["x", "y", "z"] },
},
unsetTrueFalse = [
[-1, "unset"],
["1", "True"],
["0", "False"],
],
entities = [
"area_effect_cloud",
"armor_stand",
"arrow",
"bat",
"bee",
"blaze",
"boat",
"cat",
"cave_spider",
"chest_minecart",
"chicken",
"cod",
"command_block_minecart",
"cow",
"creeper",
"dolphin",
"donkey",
"dragon_fireball",
"drowned",
"egg",
"elder_guardian",
"end_crystal",
"ender_dragon",
"ender_pearl",
"enderman",
"endermite",
"evoker_fangs",
"evoker",
"experience_bottle",
"experience_orb",
"eye_of_ender",
"falling_block",
"fireball",
"firework_rocket",
"fishing_bobber",
"fox",
"furnace_minecart",
"hopper_minecart",
"ghast",
"giant",
"guardian",
"hoglin",
"horse",
"husk",
"illusioner",
"iron_golem",
"item",
"item_frame",
"leash_knot",
"lightning_bolt",
"llama",
"llama_spit",
"magma_cube",
"minecart",
"mooshroom",
"mule",
"ocelot",
"painting",
"panda",
"parrot",
"phantom",
"pig",
"piglin",
"piglin_brute",
"pillager",
"polar_bear",
"potion",
"pufferfish",
"rabbit",
"ravager",
"salmon",
"sheep",
"shulker",
"shulker_bullet",
"silverfish",
"skeleton",
"skeleton_horse",
"slime",
"small_fireball",
"snowball",
"snow_golem",
"spawner_minecart",
"spectral_arrow",
"spider",
"squid",
"stray",
"strider",
"tnt",
"tnt_minecart",
"trader_llama",
"trident",
"tropical_fish",
"turtle",
"vex",
"villager",
"vindicator",
"witch",
"wandering_trader",
"wither",
"wither_skull",
"wither_skeleton",
"wolf",
"zoglin",
"zombie",
"zombie_horse",
"zombified_piglin",
"zombie_villager",
],
custNameColors = [
"unset",
"white",
"black",
"dark_blue",
"dark_green",
"dark_aqua",
"dark_red",
"dark_purple",
"gold",
"gray",
"dark_gray",
"blue",
"green",
"aqua",
"red",
"light_purple",
"yellow",
"reset",
],
entityIndex = 0,
mouse = { x: 0, y: 0 },
currentCommand = "",
tsScoreObjectiveCount = 0,
processing = !1,
formats = ["Bold", "Italic", "Underlined", "Strikethrough", "Obfuscated"],
block = new Block("stone", {}),
blocks = [],
clipboard = ["", "", ""],
cachedNBT = new CachedNBT(),
deferJSONOutput = !1,
deferOutput = !1,
hasBlockData = [];
function stripHTMLTags(e) {
return (
new DOMParser().parseFromString(e, "text/html").body.textContent || ""
);
}
function showImport() {
$("#commandInput").css({ top: mouse.y, left: mouse.x }),
$("#commandInput").show();
}
function showCommunity() {
$("#intro").remove(), $("#community").show(), showSearch();
}
function MCSException(e) {
(this.value = e),
(this.toString = function () {
return this.value;
});
}
function getCustomNameAndColor(e, t) {
var a = tellrawJson.getJsonForTellraw(e.substr(1) + t);
return a.length ? ",CustomName:" + jsonConvert(JSON.stringify(a)) : "";
}
function getCustomNameForBlock(e, t) {
return $(e + t).val().length ? ',CustomName:"' + $(e + t).val() + '"' : "";
}
function parseNBT(e, t) {
(tsScoreObjectiveCount = 0), (deferOutput = !0);
try {
let t = null;
try {
(t = JSON.parse(e)), loadForm("loot_table"), importLootTable(t);
} catch (e) {}
if (null == t) {
new CMDParser(e).parseTheCommand(e);
}
(deferOutput = !1), generateCommand();
} catch (e) {
(deferOutput = !1),
alertify.alert(
"Your shipment of fail has arrived. ¯\\_(ツ)_/¯<BR>" +
e.toString()
),
$("#disableOutput").prop("checked", !1);
}
}
function logParseFail(e, t) {
$.post(
"mcstacker2.php",
{ op: "logParseFail", commandID: commandID, cmd: e, error: t },
function (e, t) {}
);
}
function baseCoords(e, t, a, o) {
var n =
"<span class='fLabel200'> " +
o +
" " +
e[0] +
"</span><input type='text' id='" +
t[0] +
"' class='medTF'>" +
makeTip(o, "coords") +
"<br><span class='fLabel200'>" +
e[1] +
"</span><input type='text' id='" +
t[1] +
"' class='medTF'><br><span class='fLabel200'>" +
e[2] +
"</span><input type='text' id='" +
t[2] +
"' class='medTF'>";
return (
null != a &&
(n +=
"<br><span class='fLabel200'>Relative Coordinates</span><input type='checkbox' id='" +
a +
"' CHECKED>"),
n
);
}
function makeCoords(e, t, a, o) {
var n =
"<span class='fLabel200'> " +
t +
" Coordinates</span><input type='text' id='" +
e +
"' class='bigTF'>";
return (
null != a &&
(n +=
"<a href=\"javascript:prefixCoords('" +
e +
"','~')\" class='greenPlus' title='Make the coordinates relative'>~</a>"),
null != o &&
(n +=
"<a href=\"javascript:prefixCoords('" +
e +
"','^')\" class='greenPlus' title='Make the coordinates directional'>^</a>"),
(a || o) &&
(n +=
"<a href=\"javascript:prefixCoords('" +
e +
"','c')\" class='greenPlus' title='Clear the relative or directional symbols'>C</a>"),
n + makeTip(t, "coords")
);
}
function prefixCoords(e, t) {
for (var a = getCoordsString(e), o = 0; o < a.length; o++)
"~" == t
? (a[o] = "~" + replaceAll("~", "", replaceAll("^", "", a[o])))
: "^" == t
? (a[o] = "^" + replaceAll("~", "", replaceAll("^", "", a[o])))
: "c" == t &&
(a[o] = replaceAll("~", "", replaceAll("^", "", a[o])));
$("#" + e).val(a[0] + " " + a[1] + " " + a[2]),
-1 != e.indexOf("BlockNBT")
? -1 != e.indexOf("tellrawPane")
? tellrawUpdate(e.substr(0, e.indexOf("BlockNBT")))
: -1 != e.indexOf("BookPane")
? bookUpdate(e.substr(0, e.indexOf("BlockNBT")))
: -1 != e.indexOf("SignPane") &&
signUpdate(e.substr(0, e.indexOf("BlockNBT")))
: generateCommand();
}
function loadEntityClass(e, t) {
switch (e) {
case "bat":
return new Mob(t, e, {
BatFlags: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
align: "R",
},
});
case "dolphin":
return new Mob(t, e, {
TreasurePosX: {
type: "text",
format: "int",
tip: e,
align: "R",
},
TreasurePosY: { type: "text", format: "int", align: "R" },
TreasurePosZ: { type: "text", format: "int", align: "R" },
CanFindTreasure: {
type: "choice",
values: unsetTrueFalse,
tip: e,
format: "b",
align: "R",
},
});
case "pufferfish":
return new Mob(t, e, {
PuffState: {
type: "choice",
values: [
[-1, "unset"],
["0", "Deflated"],
["1", "Half Puffed"],
["2", "Fully Puffed"],
],
format: "int",
align: "R",
},
});
case "cave_spider":
case "elder_guardian":
case "guardian":
case "silverfish":
case "skeleton":
case "giant":
case "spider":
case "squid":
case "stray":
case "wither_skeleton":
case "witch":
case "cod":
case "salmon":
case "zoglin":
case "blaze":
return new Mob(t, e);
case "bee":
return new Bee(t, e);
case "tropical_fish":
return new tropical_fish(t, e);
case "piglin":
return new Piglin(t, e, {
Inventory: {
type: "multiitem",
hide: !0,
slotNumbers: !1,
tip: e,
},
IsBaby: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
align: "R",
},
IsImmuneToZombification: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
align: "R",
},
TimeInOverworld: { type: "ticks", tip: e, align: "R" },
CannotHunt: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
align: "R",
},
});
case "piglin_brute":
return new Piglin(t, e, {
IsImmuneToZombification: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "piglin",
align: "R",
},
TimeInOverworld: { type: "ticks", tip: "piglin", align: "R" },
});
case "husk":
case "zombie":
return new zombie(t, e, {
DrownedConversionTime: {
type: "ticks",
tip: "zombie",
align: "R",
},
InWaterTime: { type: "ticks", tip: "zombie", align: "R" },
});
case "drowned":
return new zombie(t, e);
case "zombified_piglin":
return new zombie(t, e, {
AngerTime: { type: "ticks", tip: e, align: "R" },
AngryAt: {
type: "UUIDArray",
format: "special",
align: "R",
tip: e,
},
});
case "zombie_villager":
return new zombie(t, e, {
ConversionTime: { type: "ticks", tip: e, align: "R" },
ConversionPlayer: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: e,
},
profession: {
type: "makeSelect",
values: [
"unset",
"none",
"armorer",
"butcher",
"cartographer",
"cleric",
"farmer",
"fisherman",
"fletcher",
"leatherworker",
"librarian",
"mason",
"nitwit",
"shepherd",
"toolsmith",
"weaponsmith",
],
format: "special",
tip: e,
align: "R",
},
type: {
type: "makeSelect",
values: [
"unset",
"desert",
"jungle",
"plains",
"savanna",
"snow",
"swamp",
"taiga",
],
format: "special",
tip: "villager.type",
align: "R",
},
level: {
type: "makeSelect",
values: ["unset", 1, 2, 3, 4, 5, 99],
format: "special",
tip: "villager.level",
align: "R",
},
Trades: {
type: "villTrade",
format: "special",
tip: "villager.Trades",
align: "R",
},
Memories: {
type: "memories",
format: "special",
tip: "villager.memories",
align: "R",
},
Gossips: {
type: "gossips",
format: "special",
tip: "villager.gossips",
align: "R",
},
NoTrades: {
label: "Untradable",
type: "cb",
format: "special",
tip: "villager.NoTrades",
align: "R",
},
});
case "area_effect_cloud":
return new area_effect_cloud(t, e);
case "armor_stand":
return new armor_stand(t, e);
case "trident":
return new trident(t, e);
case "arrow":
case "spectral_arrow":
return new arrow(t, e);
case "illusioner":
return new Mob(t, e, {
Spellticks: { type: "ticks", tip: "evoker", align: "R" },
});
case "polar_bear":
return new BreedableMob(t, e, {
Aggro: {
type: "choice",
values: unsetTrueFalse,
format: "b",
align: "R",
},
});
case "slime":
return new Mob(t, e, {
Size: { type: "text", format: "int", tip: e, align: "R" },
wasOnGround: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
align: "R",
},
});
case "magma_cube":
return new Mob(t, e, {
Size: { type: "text", format: "int", tip: "slime", align: "R" },
wasOnGround: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "slime",
align: "R",
},
});
case "dragon_fireball":
case "wither_skull":
case "small_fireball":
return new small_fireball(t, e);
case "fireball":
return new fireball(t, e);
case "firework_rocket":
return new firework_rocket(t, e);
case "phantom":
return new Mob(t, e, {
AX: { type: "text", format: "int", align: "R" },
AY: { type: "text", format: "int", align: "R" },
AZ: { type: "text", format: "int", align: "R" },
Size: { type: "text", format: "int", align: "R" },
});
case "enderman":
return new enderman(t, e);
case "pillager":
return new pillager(t, e);
case "ravager":
return new pillager(t, e, {
AttackTick: { type: "ticks", tip: e, align: "R" },
RoarTick: { type: "ticks", tip: e, align: "R" },
StunTick: { type: "ticks", tip: e, align: "R" },
});
case "endermite":
return new Mob(t, e, {
Lifetime: { type: "ticks", tip: e, align: "R" },
PlayerSpawned: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
align: "R",
},
});
case "ender_pearl":
case "snowball":
case "experience_bottle":
case "egg":
return new ThrownThings(t, e, {
Item: {
type: "itemselect",
format: "special",
hide: !1,
tip: "projectile",
align: "R",
},
});
case "end_crystal":
return new ender_crystal(t, e);
case "ender_dragon":
return new Mob(t, e, {
DragonPhase: {
type: "choice",
values: [
[-1, "unset"],
[1, "strafing(preparing to shoot a fireball)"],
[2, "flying to the portal to land"],
[3, "landing on the portal"],
[4, "taking off from the portal"],
[5, "landed, performing breath attack"],
[6, "landed, looking for a player for breath attack"],
[7, "landed, roar before beginning breath attack"],
[8, "charging player"],
[9, "flying to portal to die"],
[10, "hovering with no AI (Default)"],
],
format: "int",
tip: e,
align: "R",
},
});
case "evoker_fangs":
return new evoker_fangs(t, e);
case "evoker":
return new Mob(t, e, {
SpellTicks: { type: "ticks", tip: e, align: "R" },
});
case "falling_block":
return new falling_block(t, e);
case "item":
return new item(t, e);
case "item_frame":
return new item_frame(t, e);
case "boat":
return new Vehicle(t, e, {
Type: {
type: "makeSelect",
values: [
"oak",
"spruce",
"birch",
"jungle",
"acacia",
"dark_oak",
],
format: "string",
tip: e,
align: "R",
},
});
case "ghast":
return new Mob(t, e, {
ExplosionPower: {
type: "text",
format: "int",
tip: e,
align: "R",
},
});
case "minecart":
return new minecart(t, e);
case "tnt_minecart":
return new minecart(t, e, {
TNTFuse: { type: "ticks", tip: e, align: "R" },
});
case "chest_minecart":
return new chest_minecart(t, e, 27);
case "hopper_minecart":
return new hopper_minecart(t, e, 5);
case "furnace_minecart":
return new minecart(t, e, {
PushX: { type: "text", format: "d", tip: e, align: "R" },
PushZ: { type: "text", format: "d", tip: e, align: "R" },
Fuel: { type: "ticks", tip: e, align: "R" },
});
case "spawner_minecart":
return new spawner_minecart(t, e);
case "command_block_minecart":
return new minecart(t, e, {
Command: { type: "text", format: "string", tip: e, align: "R" },
SuccessCount: {
type: "text",
format: "int",
tip: e,
align: "R",
},
LastOutput: {
type: "text",
format: "string",
tip: e,
align: "R",
},
TrackOutput: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
align: "R",
},
});
case "chicken":
return new BreedableMob(t, e, {
IsChickenJockey: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
align: "R",
},
EggLayTime: { type: "ticks", tip: e, align: "R" },
});
case "creeper":
return new Mob(t, e, {
powered: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
align: "R",
},
ExplosionRadius: {
type: "text",
format: "b",
tip: e,
align: "R",
},
Fuse: { type: "ticks", tip: e, align: "R" },
ignited: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
align: "R",
},
});
case "mooshroom":
return new BreedableMob(t, e, {
Type: {
type: "choice",
values: [
[-1, "unset"],
["brown", "Brown"],
["red", "Red"],
],
tip: e,
format: "string",
align: "R",
},
EffectId: {
type: "choice",
values: statusEffects,
format: "b",
align: "R",
tip: e,
},
EffectDuration: { type: "ticks", tip: e, align: "R" },
});
case "cow":
return new BreedableMob(t, e);
case "hoglin":
return new BreedableMob(t, e, {
IsImmuneToZombification: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
align: "R",
},
TimeInOverworld: { type: "ticks", tip: e, align: "R" },
CannotBeHunted: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
align: "R",
},
});
case "lightning_bolt":
return new lightning_bolt(t, e);
case "fishing_bobber":
return new fishing_bobber(t, e);
case "horse":
case "llama":
case "trader_llama":
case "donkey":
case "mule":
case "zombie_horse":
case "skeleton_horse":
return new HorseMob(t, e);
case "eye_of_ender":
case "leash_knot":
return new SimpleEntity(t, e);
case "llama_spit":
return new llama_spit(t, e);
case "turtle":
return new BreedableMob(t, e, {
HomePosX: { type: "text", format: "int", align: "R" },
HomePosY: { type: "text", format: "int", align: "R" },
HomePosZ: { type: "text", format: "int", align: "R" },
TravelPosX: { type: "text", format: "int", align: "R" },
TravelPosY: { type: "text", format: "int", align: "R" },
TravelPosZ: { type: "text", format: "int", align: "R" },
HasEgg: {
type: "choice",
values: unsetTrueFalse,
format: "b",
align: "R",
},
});
case "fox":
return new Fox(t, e);
case "wolf":
return new BreedableMob(t, e, {
Owner: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: "mob.Owner",
},
Sitting: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "tameable",
align: "R",
},
AngerTime: { type: "ticks", tip: e, align: "R" },
CollarColor: {
type: "makeSelectWithIndexes",
hasUnset: !0,
values: dyes,
format: "b",
tip: e,
align: "R",
},
});
case "parrot":
return new Mob(t, e, {
OwnerUUID: {
type: "text",
format: "string",
tip: "tameable",
align: "R",
},
Sitting: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "tameable",
align: "R",
},
Variant: {
type: "choice",
values: [
[-1, "unset"],
[0, "Red"],
[1, "Blue"],
[2, "Green"],
[3, "Cyan"],
[4, "Silver"],
],
format: "int",
tip: e,
align: "R",
},
});
case "ocelot":
return new BreedableMob(t, e, {
Owner: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: "mob.Owner",
},
Sitting: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "tameable",
align: "R",
},
});
case "cat":
return new BreedableMob(t, e, {
Owner: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: "mob.Owner",
},
Sitting: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "tameable",
align: "R",
},
CatType: {
type: "choice",
values: [
[0, "Tabby"],
[1, "Tuxedo"],
[2, "Red Tabby"],
[3, "Siamese"],
[4, "British Shorthair"],
[5, "Calico"],
[6, "Persian"],
[7, "Ragdoll"],
[8, "White"],
[9, "Jellie"],
[10, "Panther"],
],
format: "int",
tip: e,
align: "R",
tip: e,
},
CollarColor: {
type: "makeSelectWithIndexes",
hasUnset: !0,
values: woolDyes,
format: "b",
align: "R",
tip: e,
},
});
case "strider":
case "pig":
return new BreedableMob(t, e, {
Saddle: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
align: "R",
},
});
case "panda":
return new BreedableMob(t, e, {
MainGene: {
type: "makeSelect",
values: [
"normal",
"aggressive",
"weak",
"lazy",
"worried",
"playful",
"brown",
],
format: "string",
tip: e,
align: "R",
},
HiddenGene: {
type: "makeSelect",
values: [
"normal",
"aggressive",
"weak",
"lazy",
"worried",
"playful",
"brown",
],
format: "string",
tip: e,
align: "R",
},
});
case "painting":
return new painting(t, e, {
Facing: {
type: "choice",
values: [
[-1, "unset"],
["0", "South"],
["1", "West"],
["2", "North"],
["3", "East"],
],
format: "b",
tip: e,
align: "R",
},
Motive: {
type: "makeSelect",
values: [
"kebab",
"aztec",
"alban",
"aztec2",
"bomb",
"plant",
"wasteland",
"wanderer",
"graham",
"pool",
"courbet",
"sunset",
"sea",
"creebet",
"match",
"bust",
"stage",
"void",
"skull_and_roses",
"wither",
"fighters",
"skeleton",
"donkey_kong",
"pointer",
"pigscene",
"burning_skull",
],
format: "special",
tip: e,
align: "R",
},
Invulnerable: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
});
case "potion":
return new potion(t, e);
case "rabbit":
return new BreedableMob(t, e, {
RabbitType: {
type: "choice",
values: [
[-1, "unset"],
[0, "Brown"],
[1, "White"],
[2, "Black"],
[3, "Black &amp; White"],
[4, "Gold"],
[5, "Salt &amp; Pepper"],
[99, "Killer Bunny"],
],
format: "int",
tip: e,
align: "R",
},
MoreCarrotTicks: { type: "ticks", tip: e, align: "R" },
});
case "sheep":
return new BreedableMob(t, e, {
Sheared: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
align: "R",
},
Color: {
type: "makeSelectWithIndexes",
values: woolDyes,
format: "b",
tip: e,
hasUnset: !0,
align: "R",
},
});
case "shulker":
return new Mob(t, e, {
Peek: { type: "text", format: "b", tip: e, align: "R" },
AttachFace: {
type: "choice",
values: [
[0, "Above"],
[1, "Below"],
[2, "South"],
[3, "North"],
[4, "East"],
[5, "West"],
],
format: "b",
tip: e,
align: "R",
},
Color: {
type: "makeSelectWithIndexes",
values: woolDyes,
format: "b",
tip: e,
hasUnset: !0,
align: "R",
},
APX: {
type: "text",
format: "int",
tip: "shulker.AP",
align: "R",
},
APY: {
type: "text",
format: "int",
tip: "shulker.AP",
align: "R",
},
APZ: {
type: "text",
format: "int",
tip: "shulker.AP",
align: "R",
},
});
case "shulker_bullet":
return new shulker_bullet(t, e);
case "snow_golem":
return new Mob(t, e, {
Pumpkin: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
align: "R",
},
});
case "tnt":
return new SimpleEntity(t, e, {
Fuse: { type: "ticks", tip: e, align: "R" },
});
case "vex":
return new Mob(t, e, {
BoundX: {
type: "text",
format: "int",
tip: "vex.Bound",
align: "R",
},
BoundY: {
type: "text",
format: "int",
tip: "vex.Bound",
align: "R",
},
BoundZ: {
type: "text",
format: "int",
tip: "vex.Bound",
align: "R",
},
LifeTicks: { type: "ticks", tip: e, align: "R" },
});
case "wandering_trader":
case "villager":
return new villager(t, e);
case "iron_golem":
return new Mob(t, e, {
PlayerCreated: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
align: "R",
},
});
case "vindicator":
return new Mob(t, e, {
Johnny: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
align: "R",
},
});
case "wither":
return new Mob(t, e, {
Invul: { type: "ticks", tip: e, align: "R" },
});
case "experience_orb":
return new SimpleEntity(t, e, {
Age: { type: "ticks", tip: "xp_orb", align: "R" },
Health: {
type: "text",
format: "b",
tip: "xp_orb",
align: "R",
},
Value: {
type: "text",
format: "short",
tip: "xp_orb",
align: "R",
},
});
case "player":
return new Player(t, e);
}
return null;
}
function loadForm(e) {
clearOutputCharacterCount(),
$("#intro").remove(),
cachedNBT.clear(),
(currentCommand = e),
$("#commandOutput").css({ top: 0, left: $(window).width() - 510 }),
$("#commandForm").html(""),
(entityIndex = 0),
(entityDescriptors = []),
$("#disableOutput").prop("checked", !0),
"execute if entity" != e && makeExecutePane("commandForm"),
"give" == e
? makeGivePane("commandForm", "givePane")
: "setblock" == e
? makeBlockPane("commandForm", "blockPane")
: "replaceitem" == e
? makeReplaceItemPane("commandForm", "replaceItemPane")
: "teleport" == e
? makeTeleportPane("commandForm", "replaceItemPane")
: "fill" == e
? makeBlockPaneFill("commandForm", "blockPane")
: "blockdata" == e || "data merge block" == e
? makeBlockDataPane("commandForm", "blockPane")
: "execute if entity" == e || "kill" == e
? makeAddEntityAndPlayerPane("commandForm", "rootEntity")
: "tellraw" == e || "title" == e
? makeTellrawPane("commandForm", "tellrawPane")
: "summon" == e || "entitydata" == e || "data merge entity" == e
? makeAddEntityPane("commandForm", "rootEntity")
: "particle" == e
? makeParticlePane("commandForm", "particlePane")
: "effect" == e
? makeEffectPane("commandForm", "effectPane")
: "playsound" == e
? makePlaySoundPane("commandForm", "soundPane")
: "team" == e
? makeTeamPane("commandForm", "teamPane")
: "scoreboard" == e
? makeScoreboardPane("commandForm", "scoreboardPane")
: "bossbar" == e
? makeBossbarPane("commandForm", "bossbarPane")
: "loot" == e
? makeLootPane("commandForm", "lootPane")
: "loot_table" == e && makeLootTableGenerator("commandForm"),
$("#disableOutput").prop("checked", !1),
$("#commandOutput-ta").val("Fill out the form to get a command.");
}
function makeExecutePane(e) {
$("#" + e).html(
"<div id='executePane' class='roundedDiv'><a href=\"javascript:createExecuteForm()\" class='buttonNoBorder'>make /execute command</a></div>"
);
}
function appendTS() {
$("#exeString").val(
$("#exeString").val().trim() +
" " +
getTargetSelectorStringGeneric("execute0")
),
generateCommand();
}
function insertTextAtCursor() {
var e = jQuery("#exeString"),
t = e[0].selectionStart,
a = e.val(),
o = getTargetSelectorStringGeneric("execute0");
e.val(a.substring(0, t) + o + a.substring(t));
}
function loadSavedCommand(e) {
parseNBT($("#commandString").val().trim(), e);
}
function removeExecute() {
$("#executePane").html(
"<a href=\"javascript:createExecuteForm()\" class='buttonNoBorder'>make /execute command</a>"
),
generateCommand();
}
function createExecuteForm() {
$("#disableOutput").prop("checked", !0);
var e =
"<span class='fLabel200'>Execute String</span><textarea id='exeString'>execute</textarea><a href='javascript:removeExecute()' class='redX fRight'>&#9747;</a><br><br><span class='fLabel200'>Target Type</span><select id='execute0' onchange=\"javascript:teleportEntityChange('execute0')\"><option value='player'>player</option><option value='entity'>entity</option></select><a href=\"javascript:appendTS()\" class='greenPlus'>&#8657; Append</a><a href=\"javascript:insertTextAtCursor()\" class='greenPlus'>&#8657; Insert at cursor </a><div id='execute0_ts'></div>" +
makeTip("effect", "Entity");
$("#executePane").html(e),
bindGenCom("exeString", "keyup"),
$("#executePane br:first").remove(),
teleportEntityChange("execute0"),
$("#disableOutput").prop("checked", !1),
generateCommand();
}
function makeTeamPane(e, t) {
$("#" + e).append("<br><div id='" + t + "' class='roundedDiv'></div>");
var a =
"<span class='fLabel200'>Command Type</span><select id='add_modify' onchange=\"javascript:teamChange()\"><option value='add'>Add</option><option value='modify'>Modify</option></select>" +
makeTip("team", "commandType") +
"<span id='teamSpan'></span>";
$("#" + t).append(a),
createComponent(
t,
"Team",
{ id: "team", type: "text", tip: "team", fwClass: "bigTF" },
0
),
$("#" + t).append("<div id='" + t + "ItemPane'></div>"),
createTellrawForm(t, 0);
}
function teamChange() {
$("#teamSpan").html(""),
"modify" == $("#add_modify").val() &&
createComponent(
"teamSpan",
"Part",
{
type: "makeSelect",
values: ["displayName", "prefix", "suffix"],
tip: "team",
},
0
),
generateCommand();
}
function makeScoreboardPane(e, t) {
$("#" + e).append("<br><div id='" + t + "' class='roundedDiv'></div>");
var a =
"<span class='fLabel200'>Command Type</span><select id='add_modify' onchange=\"javascript:sbChange()\"><option value='add'>Add</option><option value='modify'>Modify</option></select>" +
makeTip("scoreboard", "commandType") +
"<span id='sbSpan'></span>";
$("#" + t).append(a),
createComponent(
t,
"Objective",
{
id: "objective",
type: "text",
fwClass: "bigTF",
tip: "scoreboard",
},
0
),
$("#" + t).append("<div id='" + t + "ItemPane'></div>"),
sbChange(),
createTellrawForm(t, 0);
}
function sbChange() {
$("#sbSpan").html(""),
"add" == $("#add_modify").val() &&
createComponent(
"sbSpan",
"Criteria",
{ type: "text", fwClass: "bigTF", tip: "scoreboard" },
0
),
generateCommand();
}
function makeLootPane(e, t) {
$("#" + e).append("<br><div id='" + t + "' class='roundedDiv'></div>"),
$("#" + t).append(
"<span class='fLabel200'>Target</span><select id='targetType' onchange=\"javascript:lootTargetChange()\"><option value='spawn'>spawn</option><option value='give'>give</option><option value='insert'>insert</option><option value='replace entity'>replace entity</option><option value='replace block'>replace block</option></select>" +
makeTip("loot", "target") +
"<br><span id='targetSpan'></span>"
),
$("#" + t).append(
"<br><span class='fLabel200'>Source</span><select id='sourceType' onchange=\"javascript:lootSourceChange()\"><option value='loot'>loot</option><option value='kill'>kill</option><option value='mine'>mine</option><option value='fish'>fish</option></select>" +
makeTip("loot", "source") +
"<br><span id='sourceSpan'></span>"
),
lootTargetChange(),
lootSourceChange();
}
function lootSourceChange() {
$("#sourceSpan").html(""),
"loot" == $("#sourceType").val() || "fish" == $("#sourceType").val()
? (createComponent(
"sourceSpan",
"Loot Table",
{
id: "LootTable",
type: "text",
fwClass: "bigTF",
tip: "loot.loottable",
},
0
),
"fish" == $("#sourceType").val() &&
($("#sourceSpan").append(
"<br>" + makeCoords("Fishing", "Fishing", !0, !0)
),
bindGenCom("Fishing", "keyup"),
createComponent(
"sourceSpan",
"FishingTool",
{
type: "itemselect",
forceConstruct: !0,
format: "special",
hide: !1,
tip: "loot",
},
0
)))
: "mine" == $("#sourceType").val()
? ($("#sourceSpan").append(
"<br>" + makeCoords("Mining", "Mining", !0, !0)
),
bindGenCom("Mining", "keyup"),
createComponent(
"sourceSpan",
"MiningTool",
{
type: "itemselect",
forceConstruct: !0,
format: "special",
hide: !1,
tip: "loot",
},
0
))
: "kill" == $("#sourceType").val() &&
($("#sourceSpan").append(
"<input type='hidden' id='kill0' value='entity'><div id='kill0_ts'></div>"
),
loadTargetSelectorsGeneric("kill0_ts", !0, !1, "kill0"),
$("#kill0TSPane").css(
"background",
"rgba(" +
hexToR(bgPalette[1]) +
"," +
hexToG(bgPalette[1]) +
"," +
hexToB(bgPalette[1]) +
",0.5)"
)),
generateCommand();
}
function lootTargetChange() {
$("#targetSpan").html(""),
"spawn" == $("#targetType").val() ||
"insert" == $("#targetType").val() ||
"replace block" == $("#targetType").val()
? ($("#targetSpan").append(makeCoords("Loot", "Loot", !0, !0)),
bindGenCom("Loot", "keyup"))
: ("give" != $("#targetType").val() &&
"replace entity" != $("#targetType").val()) ||
($("#targetSpan").append(
"<span class='fLabel200'>Entity/Player</span><select id='entity0' onchange=\"javascript:lootEntityChange('entity0')\"><option value='player'>player</option><option value='entity'>entity</option></select><div id='entity0_ts'></div>"
),
$("#targetSpanTSPane").css(
"background",
"rgba(" +
hexToR(bgPalette[1]) +
"," +
hexToG(bgPalette[1]) +
"," +
hexToB(bgPalette[1]) +
",0.5)"
),
lootEntityChange("entity0")),
("replace entity" != $("#targetType").val() &&
"replace block" != $("#targetType").val()) ||
createComponent(
"targetSpan",
"Slot",
{
id: "slot",
type: "makeSelect",
values: getLootSlots(
"replace entity" == $("#targetType").val()
),
tip: "loot.slots",
},
0
),
generateCommand();
}
function lootEntityChange(e) {
$("#" + e + "_ts").html(""),
loadTargetSelectorsGeneric(
e + "_ts",
"player" != $("#" + e).val(),
"player" == $("#" + e).val(),
e
),
$("#" + e + "TSPane").css(
"background",
"rgba(" +
hexToR(bgPalette[1]) +
"," +
hexToG(bgPalette[1]) +
"," +
hexToB(bgPalette[1]) +
",0.5)"
),
$("#" + e + "_ts br:first").remove(),
generateCommand();
}
function getLootSlots(e) {
if (e) {
a = ["armor.head", "armor.chest", "armor.legs", "armor.feet"];
for (var t = 0; t < 27; t++) a.push("enderchest." + t);
for (t = 0; t < 15; t++) a.push("horse." + t);
a = a.concat(["horse.armor", "horse.chest", "horse.saddle"]);
for (t = 0; t < 9; t++) a.push("hotbar." + t);
for (t = 0; t < 27; t++) a.push("inventory." + t);
for (t = 0; t < 8; t++) a.push("villager." + t);
a = a.concat(["weapon", "weapon.mainhand", "weapon.offhand"]);
} else {
var a = [];
for (t = 0; t < 54; t++) a.push("container." + t);
}
return a;
}
function lootTargetSetChange() {
$("#lootSetSpan").html(""),
"name" == $("#set").val()
? $("#bossbarPaneItemPane").show()
: "players" == $("#set").val() &&
($("#bossbarPaneItemPane").hide(),
loadTargetSelectors("bbSetSpan", !1, !0)),
generateCommand();
}
function makeBossbarPane(e, t) {
$("#" + e).append("<br><div id='" + t + "' class='roundedDiv'></div>");
var a =
"<span class='fLabel200'>Action</span><select id='action' onchange=\"javascript:bbChange()\"><option value='add'>add</option><option value='set'>set</option></select>" +
makeTip("bossbar", "action");
$("#" + t).append(a),
createComponent(
t,
"ID",
{ type: "text", fwClass: "bigTF", tip: "bossbar" },
0
),
$("#" + t).append(
"<span id='bbSpan'></span><div id='" + t + "ItemPane'></div>"
),
bbChange(),
createTellrawForm(t, 0);
}
function bbChange() {
if (($("#bbSpan").html(""), "add" == $("#action").val()))
$("#bossbarPaneItemPane").show();
else if ("set" == $("#action").val()) {
var e =
"<br><span class='fLabel200'>Set</span><select id='set' onchange=\"javascript:bbSetChange()\"><option value='name'>Name</option><option value='players'>Players</option></select>" +
makeTip("bossbar", "set") +
"<span id='bbSetSpan'></span>";
$("#bbSpan").append(e), bbSetChange();
}
generateCommand();
}
function bbSetChange() {
$("#bbSetSpan").html(""),
"name" == $("#set").val()
? $("#bossbarPaneItemPane").show()
: "players" == $("#set").val() &&
($("#bossbarPaneItemPane").hide(),
loadTargetSelectors("bbSetSpan", !1, !0)),
generateCommand();
}
function makeTellrawPane(e, t) {
$("#" + e).append("<br><div id='" + t + "' class='roundedDiv'></div>"),
"title" == currentCommand &&
createComponent(
t,
"Type",
{
id: "titleType",
type: "makeSelect",
values: ["title", "subtitle", "actionbar"],
tip: "title.Type",
},
0
),
loadTargetSelectors(t, !1, !0),
$("#" + t).append("<div id='" + t + "ItemPane'></div>"),
$("#" + t + " br:first").remove(),
createTellrawForm(t, 0);
}
function makeEffectPane(e, t) {
$("#" + e).append("<br><div id='" + t + "' class='roundedDiv'></div>");
var a =
"<span class='fLabel200'>Entity</span><select id='entity0' onchange=\"javascript:teleportEntityChange('entity0')\"><option value='player'>player</option><option value='entity'>entity</option></select><div id='entity0_ts'></div>" +
makeTip("effect", "Entity");
$("#" + t).append(a);
var o = statusEffects.slice(0);
o.splice(0, 1),
createComponent(
t,
"Effect",
{ id: "effect", type: "choice", values: o, tip: "effect" },
0
),
createComponent(
t,
"Seconds",
{ id: "seconds", type: "text", tip: "effect" },
0
),
createComponent(
t,
"Amplifier",
{ id: "amplifier", type: "text", tip: "effect" },
0
),
createComponent(
t,
"Hide Particles",
{
id: "hideParticles",
type: "makeSelect",
values: ["false", "true"],
tip: "effect.hideParticles",
},
0
),
teleportEntityChange("entity0");
}
function makeParticlePane(e, t) {
$("#" + e).append("<br><div id='" + t + "' class='roundedDiv'></div>"),
createComponent(
t,
"Name",
{
id: "name",
type: "makeSelect",
values: particles,
tip: "particle",
},
0
),
$("#" + t).append("<div id='blockFallingDustSettings'></div>"),
$("#" + t).append("<div id='itemSettings'></div>");
let a = makeCoords("Location", "Location", !0, !0);
$("#" + t).append("<br>" + a),
bindGenCom("Location", "keyup"),
(a = baseCoords(
["X", "Y", "Z"],
["xd", "yd", "zd"],
null,
"Direction"
)),
$("#" + t).append("<br>" + a),
bindGenCom("xd", "keyup"),
bindGenCom("yd", "keyup"),
bindGenCom("zd", "keyup"),
createComponent(
t,
"Speed",
{ id: "speed", type: "text", value: "1", tip: "particle" },
0
),
createComponent(
t,
"Count",
{ id: "count", type: "text", tip: "particle113.Count", value: "0" },
0
),
createComponent(
t,
"Mode",
{
id: "mode",
type: "makeSelect",
values: ["normal", "force"],
format: "string",
tip: "particle",
},
0
),
$("#" + t).append(
"<span id='dustsettings'><br><span class='fLabel200'>Dust Size</span><input id='dustSize' type='text' value='1' class='medTF' >" +
makeTip("particle113", "dustSize") +
"</span><span id='colsettings'><br><span class='fLabel200'>Effect Color</span><input id='mobSpell_color' value='FF0000' onchange='generateCommand()'>" +
makeTip("particle113", "color") +
"</span>"
),
loadTargetSelectors(t, !1, !0),
$("#" + t).append(makeTip("particle", "player")),
showHide("TSPane", "TSPaneSH"),
(a = "<br><span class='fLabel200'>Block</span>"),
(a += "<select id='block' onchange='javascript:blockChange(true);'>");
for (var o = 0; o < tiles.length; o++)
a += "<option value='" + tiles[o][0] + "'>" + tiles[o][1] + "</option>";
(a +=
"</select><input type='text' id='block_filter' placeholder='Filter' class='medTF' onkeyup=\"updateBlockOptions('block')\"><span id='blockSpec0'></span>"),
$("#blockFallingDustSettings").append(a),
(a = "<br><span class='fLabel200'>Item</span>"),
(a += "<select id='item0' onchange='javascript:generateCommand();'>");
for (o = 0; o < items.length; o++)
a += "<option value='" + items[o][0] + "'>" + items[o][1] + "</option>";
(a +=
"</select><input type='text' id='item0_filter' placeholder='Filter' class='medTF' onkeyup=\"updateItemSelectOptions('#item0')\">"),
$("#itemSettings").append(a),
$("#blockFallingDustSettings").hide(),
$("#itemSettings").hide(),
bindGenCom("dustSize", "keyup"),
$("#name").bind("change", function () {
-1 != $("#name").val().indexOf("entity_effect")
? ($("#colsettings").show(),
$("#dustsettings").hide(),
$("#blockFallingDustSettings").hide(),
$("#itemSettings").hide())
: "falling_dust" == $("#name").val() ||
"block" == $("#name").val()
? ($("#colsettings").hide(),
$("#dustsettings").hide(),
$("#blockFallingDustSettings").show(),
$("#itemSettings").hide())
: "dust" == $("#name").val()
? ($("#colsettings").show(),
$("#dustsettings").show(),
$("#blockFallingDustSettings").hide(),
$("#itemSettings").hide())
: "item" == $("#name").val()
? ($("#colsettings").hide(),
$("#dustsettings").hide(),
$("#blockFallingDustSettings").hide(),
$("#itemSettings").show())
: ($("#colsettings").hide(),
$("#dustsettings").hide(),
$("#blockFallingDustSettings").hide(),
$("#itemSettings").hide());
}),
$("#mobSpell_color").bind("change", function () {
"dust" != $("#name").val()
? changeParticelXdYdZd($("#mobSpell_color").val())
: generateCommand();
}),
new jscolor.color(
document.getElementById("mobSpell_color"),
{}
).fromString("FF0000");
}
function changeParticelXdYdZd(e) {
$("#xd").val(parseFloat(hexToR(e) / 255).toFixed(3)),
$("#yd").val(parseFloat(hexToG(e) / 255).toFixed(3)),
$("#zd").val(parseFloat(hexToB(e) / 255).toFixed(3)),
generateCommand();
}
function makePlaySoundPane(e, t) {
$("#" + e).append("<br><div id='" + t + "' class='roundedDiv'></div>"),
$("#" + t).append(
"<span class='fLabel200'>Sound Effect</span><select id='sound'></select><input type='text' id='sound_filter' placeholder='Filter' class='medTF' onkeyup=\"updateSoundSelect('sound')\">" +
makeTip("sound", "effect")
),
bindGenCom("sound", "change"),
createComponent(
"soundPane",
"Source",
{
id: "source",
type: "makeSelect",
values: [
"master",
"music",
"record",
"weather",
"block",
"hostile",
"neutral",
"player",
"ambient",
"voice",
],
tip: "sound.source",
},
0
),
loadTargetSelectors("soundPane", !1, !0);
var a =
makeCoords("Position", "Position", !0, !0) +
makeTip("sound", "relative");
$("#soundPane").append("<br>" + a),
bindGenCom("Position", "keyup"),
createComponent(
"soundPane",
"Volume",
{ id: "volume", type: "text", tip: "sound.volume" },
0
),
createComponent(
"soundPane",
"Pitch",
{ id: "pitch", type: "text", tip: "sound.pitch" },
0
),
createComponent(
"soundPane",
"Minimum Volume",
{ id: "minvolume", type: "text", tip: "sound.minvolume" },
0
),
loadSoundOptions();
}
function loadSoundOptions() {
for (var e = [], t = 0; t < soundList.length; t++)
e.push(
'<option value="',
soundList[t],
'">',
soundList[t],
"</option>"
);
$("#sound").html(e.join(""));
}
function updateSoundSelect(e) {
for (
var t = $("#" + e).val(),
a = $("#" + e + "_filter").val(),
o = [],
n = 0;
n < soundList.length;
n++
)
(0 != a.length && -1 == soundList[n].indexOf(a)) ||
o.push(
'<option value="',
soundList[n],
'">',
soundList[n],
"</option>"
);
$("#" + e).html(o.join("")),
t != $("#" + e).val() && $("#" + e).trigger("change");
}
function makeBlockDataPane(e, t) {
$("#" + e).append(
"<br><div id='" +
t +
"' class='roundedDiv'>" +
makeCoords("Block", "Block", !0, !0) +
"</div>"
),
bindGenCom("Block", "keyup");
var a = "<br><span class='fLabel200'>Block</span>";
(a += "<select id='block' onchange='javascript:blockChange(false);'>"),
(a +=
"</select><input type='text' id='block_filter' placeholder='Filter' class='medTF' onkeyup=\"updateBlockDataSelect('block')\"><span id='blockSpec0'></span>"),
$("#" + t).append(a),
updateBlockDataSelect("block");
}
function updateBlockDataSelect(e) {
for (
var t = $("#" + e + "_filter").val(), a = [], o = 0;
o < tiles.length;
o++
)
-1 == hasBlockData.indexOf(tiles[o][0]) ||
(0 != t.length &&
-1 == tiles[o][0].indexOf(t) &&
-1 == tiles[o][1].indexOf(t)) ||
a.push(
'<option value="',
tiles[o][0],
'">',
tiles[o][1],
"</option>"
);
$("#" + e).html(a.join("")), blockChange(!1);
}
function makeBlockPane(e, t) {
$("#" + e).append(
"<br><div id='" +
t +
"' class='roundedDiv'>" +
makeCoords("Block", "Block", !0, !0) +
"</div>"
),
bindGenCom("Block", "keyup"),
createComponent(
t,
"Old Block Handling",
{
id: "blockHandle",
type: "makeSelect",
values: ["replace", "destroy", "keep"],
hide: !1,
tip: "setblock.Handling",
},
0
);
var a = "<br><span class='fLabel200'>Block</span>";
a += "<select id='block' onchange='javascript:blockChange(true);'>";
for (var o = 0; o < tiles.length; o++)
a += "<option value='" + tiles[o][0] + "'>" + tiles[o][1] + "</option>";
(a +=
"</select><input type='text' id='block_filter' placeholder='Filter' class='medTF' onkeyup=\"updateBlockOptions('block')\"><span id='blockSpec0'></span>"),
$("#" + t).append(a);
}
function makeBlockPaneFill(e, t) {
$("#" + e).append(
"<br><div id='" +
t +
"' class='roundedDiv'>" +
makeCoords("Corner", "Corner", !0, !0) +
"<br>" +
makeCoords("Opposite", "Opposite", !0, !0) +
"</div>"
),
bindGenCom("Corner", "keyup"),
bindGenCom("Opposite", "keyup"),
createComponent(
t,
"Old Block Handling",
{
id: "blockHandle",
type: "makeSelect",
values: ["replace", "destroy", "hollow", "keep", "outline"],
hide: !1,
tip: "setblock.Handling",
},
0
);
for (var a = "", o = 0; o < tiles.length; o++)
a += "<option value='" + tiles[o][0] + "'>" + tiles[o][1] + "</option>";
var n =
"<br><span class='fLabel200'>Block</span><select id='block' onchange='javascript:blockChange(true);'>" +
a +
"</select><input type='text' id='block_filter' placeholder='Filter' class='medTF' onkeyup=\"updateBlockOptions('block')\"><span id='blockSpec0'></span><br><span class='fLabel200'>Replace Block</span><select id='replaceblock' onchange='javascript:replaceBlockChange();'>" +
a +
"</select><input type='text' id='replaceblock_filter' placeholder='Filter' class='medTF' onkeyup=\"updateBlockOptions('replaceblock')\"><span id='replaceBlockSpec'></span>";
$("#" + t).append(n);
}
function fallingBlockChange(e) {
if (
((e = e || 0),
$("#blockSpec" + e).html(""),
$("#block" + e).val() in blockStates)
) {
var t = blockStates[$("#block" + e).val()];
for (var a in t) {
var o = t[a].slice();
$.isArray(o[0])
? (o.unshift(["unset", "unset"]),
createComponent(
"blockSpec" + e,
a,
{ id: a + "BS" + e, type: "choice", values: o },
e
))
: (o.unshift("unset"),
createComponent(
"blockSpec" + e,
a,
{ id: a + "BS" + e, type: "makeSelect", values: o },
e
));
}
}
(blocks[e] = loadBlockClass($("#block" + e).val())),
"falling_block" == entityDescriptors["e" + e].entityType &&
blocks[e].generateFormForFalling(e),
$("#blockSpec" + e).html().length
? ($("#blockSpec" + e).addClass("fallingBlock"),
$("#blockSpec" + e + " br:first").remove())
: $("#blockSpec" + e).removeClass("fallingBlock"),
generateCommand();
}
function blockChange(e) {
if (($("#blockSpec0").html(""), e && $("#block").val() in blockStates)) {
var t = blockStates[$("#block").val()];
for (var a in t) {
var o = t[a].slice();
$.isArray(o[0])
? (o.unshift(["unset", "unset"]),
createComponent(
"blockSpec0",
a,
{ id: a + "BS0", type: "choice", values: o },
0
))
: (o.unshift("unset"),
createComponent(
"blockSpec0",
a,
{ id: a + "BS0", type: "makeSelect", values: o },
0
));
}
}
"particle" != currentCommand &&
((block = loadBlockClass($("#block").val())).generateForm(),
cachedNBT.loadCachedBlockNBT("BS0")),
generateCommand();
}
function detectBlockChange() {
if (
($("#detect_blockSpec").html(""),
$("#detect_block").val() in blockStates)
) {
var e = blockStates[$("#detect_block").val()];
for (var t in e) {
var a = e[t].slice();
$.isArray(a[0])
? (a.unshift(["unset", "unset"]),
createComponent(
"detect_blockSpec",
t,
{ id: t + "detect_BS0", type: "choice", values: a },
0
))
: (a.unshift("unset"),
createComponent(
"detect_blockSpec",
t,
{ id: t + "detect_BS0", type: "makeSelect", values: a },
0
));
}
}
generateCommand();
}
function replaceBlockChange() {
if (
($("#replaceBlockSpec").html(""),
$("#replaceblock").val() in blockStates)
) {
var e = blockStates[$("#replaceblock").val()];
for (var t in e) {
var a = e[t].slice();
$.isArray(a[0])
? (a.unshift(["unset", "unset"]),
createComponent(
"replaceBlockSpec",
t,
{ id: t + "ReplaceBS0", type: "choice", values: a },
0
))
: (a.unshift("unset"),
createComponent(
"replaceBlockSpec",
t,
{ id: t + "ReplaceBS0", type: "makeSelect", values: a },
0
));
}
}
generateCommand();
}
function loadBlockClass(e) {
if (-1 != e.indexOf("shulker_box"))
return new BlockWithSlots(
e,
{
LootTable: {
type: "text",
fwClass: "bigTF",
format: "string",
tip: "chest.LootTable",
},
},
27
);
switch (e) {
case "white_banner":
case "orange_banner":
case "magenta_banner":
case "light_blue_banner":
case "yellow_banner":
case "lime_banner":
case "pink_banner":
case "gray_banner":
case "light_gray_banner":
case "cyan_banner":
case "purple_banner":
case "blue_banner":
case "brown_banner":
case "green_banner":
case "red_banner":
case "black_banner":
case "white_wall_banner":
case "orange_wall_banner":
case "magenta_wall_banner":
case "light_blue_wall_banner":
case "yellow_wall_banner":
case "lime_wall_banner":
case "pink_wall_banner":
case "gray_wall_banner":
case "light_gray_wall_banner":
case "cyan_wall_banner":
case "purple_wall_banner":
case "blue_wall_banner":
case "brown_wall_banner":
case "green_wall_banner":
case "red_wall_banner":
case "black_wall_banner":
return new Banner(e, {
BlockEntityTag: {
type: "text",
fwClass: "bigTF",
format: "special",
tip: "banner",
},
CustomName: {
type: "customNameJSON",
format: "special",
tip: "banner.CustomName",
},
});
case "enchanting_table":
return new Block(e, {
CustomName: {
type: "customNameJSON",
format: "special",
tip: "block.CustomName",
},
});
case "beacon":
return new Beacon(e);
case "bee_nest":
case "beehive":
return new BeeHiveNest(e);
case "chest":
case "barrel":
case "trapped_chest":
return new BlockWithSlots(
e,
{
LootTable: {
type: "text",
fwClass: "bigTF",
format: "string",
tip: "chest.LootTable",
},
},
27
);
case "brewing_stand":
return new BlockWithSlots(
e,
{
BrewTime: { type: "ticks", tip: e },
Fuel: { type: "text", format: "b", tip: e },
},
5
);
case "dropper":
case "dispenser":
return new BlockWithSlots(
e,
{
LootTable: {
type: "text",
fwClass: "bigTF",
format: "string",
tip: "chest.LootTable",
},
},
9
);
case "blast_furnace":
case "smoker":
case "furnace":
return new BlockWithSlots(
e,
{
BurnTime: { type: "ticks", tip: e },
CookTime: { type: "ticks", tip: e },
CookTimeTotal: { type: "ticks", tip: e },
},
3
);
case "soul_campfire":
case "campfire":
return new campfire(e, {}, 4);
case "hopper":
return new BlockWithSlots(
e,
{
TransferCooldown: { type: "text", tip: e, format: "short" },
LootTable: {
type: "text",
fwClass: "bigTF",
format: "string",
tip: "chest.LootTable",
},
},
5
);
case "comparator":
return new Block(e, {
OutputSignal: {
type: "text",
tip: "comparator.OutputSignal",
format: "int",
},
});
case "command_block":
case "repeating_command_block":
case "chain_command_block":
return new CommandBlock(e);
case "end_gateway":
return new EndGateway(e, {
Age: { type: "text", tip: e, format: "long" },
ExactTeleport: {
type: "choice",
values: unsetTrueFalse,
tip: e,
format: "b",
},
X: {
type: "text",
label: "Exit Portal X",
tip: "end_gateway.ExitPortal",
format: "int",
},
Y: { type: "text", format: "int" },
Z: { type: "text", format: "int" },
});
case "jukebox":
return new JukeBox(e, {
Record: { type: "text", format: "int", tip: e },
RecordItem: { type: "itemselect", forceConstruct: !0, tip: e },
});
case "lectern":
return new Lectern(e, {
Page: { type: "text", format: "int", tip: e },
Book: {
type: "itemselect",
forceConstruct: settings.loadItemUI,
tip: e,
},
});
case "spawner":
return new MobSpawner(e);
case "piston":
return new Block(e, {
blockID: { type: "text", format: "int", tip: e },
blockData: { type: "text", format: "int", tip: e },
facing: {
type: "choice",
values: dunswe,
format: "int",
tip: e,
},
progress: { type: "text", format: "f", tip: e },
extending: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
},
source: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: e,
},
});
case "conduit":
return new Block(e, {
Target: {
type: "UUIDArray",
format: "intArray",
align: "R",
tip: e,
},
});
case "jigsaw":
return new Block(e, {
name: {
type: "text",
format: "string",
fwClass: "bigTF",
value: "minecraft:empty",
tip: e,
},
pool: {
type: "text",
format: "string",
fwClass: "bigTF",
value: "minecraft:empty",
tip: e,
},
final_state: {
type: "text",
format: "string",
fwClass: "bigTF",
value: "minecraft:air",
tip: e,
},
target: {
type: "text",
format: "string",
fwClass: "bigTF",
value: "minecraft:empty",
tip: e,
},
joint: {
type: "makeSelect",
format: "string",
values: ["aligned", "rollable"],
fwClass: "bigTF",
value: "minecraft:empty",
tip: e,
},
});
case "oak_sign":
case "spruce_sign":
case "birch_sign":
case "jungle_sign":
case "acacia_sign":
case "dark_oak_sign":
case "crimson_sign":
case "warped_sign":
case "oak_wall_sign":
case "spruce_wall_sign":
case "birch_wall_sign":
case "jungle_wall_sign":
case "acacia_wall_sign":
case "dark_oak_wall_sign":
case "warped_wall_sign":
case "crimson_oak_wall_sign":
return new Sign(e, {});
case "structure_block":
return new Block(e, structureBlockNBT);
default:
return new Block(e, {});
}
}
function buildListOfBlocksWithData() {
for (var e = 0; e < tiles.length; e++) {
let t = loadBlockClass(tiles[e][0]);
Object.keys(t.blockNBT).length && hasBlockData.push(tiles[e][0]);
}
}
$(function () {
function e(e, t) {
return e[0] < t[0] ? -1 : e[0] > t[0] ? 1 : 0;
}
(items = items.sort(e)),
(tiles = tiles.sort(e)),
items.unshift(["-1", "unset"]),
tiles.unshift(["-1", "unset"]),
(window.onresize = function () {
$("#commandOutput").css({ top: 0, left: $(window).width() - 510 });
}),
$("#clipBoard-ta").bind("paste", function (e) {
clipboard[$("#nbtType").val()] = (
e.originalEvent || e
).clipboardData.getData("text/plain");
}),
$(document).mousemove(function (e) {
(mouse.x = e.pageX), (mouse.y = e.pageY);
}),
$("#clipBoard").draggable(),
$("#clipBoard").hide(),
$("#commandOutput").draggable(),
$("#commandOutput").hide(),
$("#commandInput").draggable(),
$("#commandInput").hide(),
$("#community").hide(),
(settings = new Settings()),
buildListOfBlocksWithData(),
$("#toClipBoard").bind("click", function () {
copyToClipboard($("#commandOutput-ta").val());
}),
$("#parseNBT").bind("click", function () {
parseNBT(stripHTMLTags($("#commandInput-ta").val().trim()), "1.16");
}),
$("#closeImportBut").bind("click", function () {
$("#commandInput").hide();
}),
$("#clearNBT").bind("click", function () {
$("#commandInput-ta").val("");
}),
$("#closeclipBoardBut").bind("click", function () {
(clipboard[$("#nbtType").val()] = $("#clipBoard-ta").val()),
$("#clipBoard").hide();
}),
$("#themeBut").bind("click", function () {
$("#themes").html(
"<a href='change_theme.php?id=default_theme'>Default</a><br><a href='change_theme.php?id=dark_theme'>Dark Theme</a>"
);
}),
$("#disableOutput").bind("change", function () {
$("#disableOutput").is(":checked")
? $("#commandOutput-ta").val(
"Command output is disabled to improve performance. Click refresh to get the command or uncheck 'Disable Output'"
)
: generateCommand();
}),
loadManagement();
});
var structureBlockNBT = {
name: { type: "text", format: "string", tip: "structure_block" },
author: { type: "text", format: "string", tip: "structure_block" },
metadata: { type: "text", format: "string", tip: "structure_block" },
posX: { type: "text", format: "int", tip: "structure_block" },
posY: { type: "text", format: "int", tip: "structure_block" },
posZ: { type: "text", format: "int", tip: "structure_block" },
sizeX: { type: "text", format: "int", tip: "structure_block" },
sizeY: { type: "text", format: "int", tip: "structure_block" },
sizeZ: { type: "text", format: "int", tip: "structure_block" },
rotation: {
type: "makeSelect",
values: [
"NONE",
"CLOCKWISE_90",
"CLOCKWISE_180",
"COUNTERCLOCKWISE_90",
],
format: "string",
tip: "structure_block",
},
mirror: {
type: "makeSelect",
values: ["NONE", "LEFT_RIGHT", "FRONT_BACK"],
format: "string",
tip: "structure_block",
},
mode: {
type: "makeSelect",
values: ["SAVE", "LOAD", "CORNER", "DATA"],
format: "string",
tip: "structure_block",
},
ignoreEntities: {
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "structure_block",
},
};
function loadSpawnPotentialFromNBT(e, t, a, o) {
for (var n = 0; n < a.length; n++) {
addSpawnPotential("SpawnPotential" + o + "Pane");
var s = "SpawnPotentials" == t ? a[n].Entity.val : a[n],
i = extractMinecraftID(s.id.val);
$("#entity" + entityIndex).val(i),
$("#entity" + entityIndex).trigger("change");
var r = entityIndex;
e.loadSummonCommand(s, entityIndex),
void 0 != a[n].Weight && $("#Weight" + r).val(a[n].Weight.val);
}
var l = [],
c = null,
d = 0;
$("#SpawnPotential" + o + "Pane > .spawnPotentialContainer").each(function (
e
) {
var t = parseInt(this.id.substr(this.id.indexOf("_") + 1));
null == c && (c = t),
d++,
(l[e] =
'{id:"minecraft:' +
$("#entity" + t).val() +
'"' +
entityDescriptors["e" + t].getEntitySpecificCommand(t) +
getMotion(t, "Pos") +
"}");
}),
d >= 2 &&
l[0] == l[1] &&
removePassenger("spawnPotentialEntity_" + c, c);
}
function loadBeeHiveNestFromNBT(e, t, a) {
if (
(void 0 != t.FlowerPos &&
($("#FlowerPosX0").val(t.FlowerPos.val.X.val),
$("#FlowerPosY0").val(t.FlowerPos.val.Y.val),
$("#FlowerPosZ0").val(t.FlowerPos.val.Z.val)),
void 0 != t.Bees)
) {
let n = t.Bees.val;
for (var o = 0; o < n.length; o++)
addBee("Bees" + a + "Pane"),
e.loadSummonCommand(n[o], entityIndex),
void 0 != n[o].MinOccupationTicks &&
$("#MinOccupationTicks" + entityIndex).val(
n[o].MinOccupationTicks.val
),
void 0 != n[o].TicksInHive &&
$("#TicksInHive" + entityIndex).val(n[o].TicksInHive.val);
}
}
function updateFallingBlockOptions(e, t) {
for (
var a = $("#" + e + t).val(),
o = $("#" + e + "_filter" + t)
.val()
.toLowerCase(),
n = [],
s = 0;
s < tiles.length;
s++
)
(0 != o.length &&
-1 == tiles[s][0].toLowerCase().indexOf(o) &&
-1 == tiles[s][1].toLowerCase().indexOf(o)) ||
n.push(
'<option value="',
tiles[s][0],
'">',
tiles[s][1],
"</option>"
);
$("#" + e + t).html(n.join("")),
a != $(name).val() && $("#" + e + t).trigger("change");
}
function updateBlockOptions(e) {
for (
var t = $("#" + e).val(),
a = $("#" + e + "_filter")
.val()
.toLowerCase(),
o = [],
n = 0;
n < tiles.length;
n++
)
(0 != a.length &&
-1 == tiles[n][0].toLowerCase().indexOf(a) &&
-1 == tiles[n][1].toLowerCase().indexOf(a)) ||
o.push(
'<option value="',
tiles[n][0],
'">',
tiles[n][1],
"</option>"
);
$("#" + e).html(o.join("")),
t != $("#" + e).val() &&
(cachedNBT.updateFilterLastUsed(), $("#" + e).trigger("change"));
}
function makeTeleportPane(e, t) {
var a =
"<br><div id='" +
t +
"' class='passengerContainer roundedDiv'><span class='fLabel200'>Teleport</span><select id='entity0' onchange=\"javascript:teleportEntityChange('entity0')\"><option value='player'>player</option><option value='entity'>entity</option></select><div id='entity0_ts'></div><span class='fLabel200'>Destination</span><select id='target0' onchange=\"javascript:changeTeleportType()\"><option value='player'>Player</option><option value='entity'>Entity</option><option value='block'>Coordinates</option></select>" +
makeTip("teleport", "type") +
"<div id='cmdTypeSpecificContainer'></div>";
$("#" + e).append(a),
teleportEntityChange("entity0"),
$("#" + t).css(
"background",
"rgba(" +
hexToR(bgPalette[entityIndex % bgPalette.length]) +
"," +
hexToG(bgPalette[entityIndex % bgPalette.length]) +
"," +
hexToB(bgPalette[entityIndex % bgPalette.length]) +
",0.5)"
),
$("#teleporttype").bind("change", function () {
changeTeleportType(e);
}),
changeTeleportType(e);
}
function teleportEntityChange(e) {
$("#" + e + "_ts").html(""),
loadTargetSelectorsGeneric(
e + "_ts",
"player" != $("#" + e).val(),
"player" == $("#" + e).val(),
e
),
$("#" + e + "TSPane").css(
"background",
"rgba(" +
hexToR(bgPalette[1]) +
"," +
hexToG(bgPalette[1]) +
"," +
hexToB(bgPalette[1]) +
",0.5)"
),
$("#" + e + "_ts br:first").remove(),
generateCommand();
}
function changeTeleportType() {
"block" == $("#target0").val()
? ($("#cmdTypeSpecificContainer").html(
makeCoords("Block", "Destination", !0, !0)
),
bindGenCom("Block", "keyup"))
: ($("#cmdTypeSpecificContainer").html("<div id='target0_ts'></div>"),
$("#cmdTypeSpecificContainer br:first").remove(),
teleportEntityChange("target0")),
generateCommand();
}
function makeReplaceItemPane(e, t) {
$("#" + e).append(
"<br><div id='" +
t +
"' class='passengerContainer roundedDiv'><span class='fLabel200'>Command Type</span><select id='replaceitem'><option value='entity'>entity</option><option value='block'>block</option></select>" +
makeTip("replaceitem", "type") +
"<div id='cmdTypeSpecificContainer'></div>"
),
$("#" + t).css(
"background",
"rgba(" +
hexToR(bgPalette[entityIndex % bgPalette.length]) +
"," +
hexToG(bgPalette[entityIndex % bgPalette.length]) +
"," +
hexToB(bgPalette[entityIndex % bgPalette.length]) +
",0.5)"
),
$("#replaceitem").bind("change", function () {
changeReplaceItemCommandType(e);
}),
createComponent(
t,
"GiveItem",
{
label: "Replace Item",
type: "itemselect",
forceConstruct: !0,
format: "special",
hide: !1,
},
0
),
$("#" + t + " br:first").remove(),
changeReplaceItemCommandType(e);
}
function changeReplaceItemCommandType() {
var e;
if ("entity" == $("#replaceitem").val()) {
(e =
"<span class='fLabel200'>Entity</span><select id='entity0' onchange='javascript:changeEntType()'>"),
(e += "<option value='player'>player</option>"),
(e += "<option value='armor_stand'>armor_stand</option>");
for (var t = 0; t < spawnEggs.length; t++)
e +=
"<option value='" +
spawnEggs[t] +
"'>" +
spawnEggs[t] +
"</option>";
(e +=
"</select><input type='text' id='entity0_filter' placeholder='Filter' class='medTF' onkeyup=\"updateEntityORPlayerTSOptions('#entity0')\"><div id='ts'></div>"),
$("#cmdTypeSpecificContainer").html(e),
createComponent(
"cmdTypeSpecificContainer",
"Slot",
{ type: "choice", values: [], format: "string", tip: "slot" },
0
),
$("#cmdTypeSpecificContainer br:first").remove(),
changeEntType();
} else
(e = makeCoords("Block", "Block", !0, !0)),
$("#cmdTypeSpecificContainer").html(e),
bindGenCom("Block", "keyup"),
createComponent(
"cmdTypeSpecificContainer",
"Slot",
{
type: "text",
format: "short",
tip: "slot",
label: "Slot Number",
},
0
);
generateCommand();
}
function changeEntType() {
$("#ts").html(""),
loadTargetSelectors(
"ts",
"player" != $("#entity0").val(),
"player" == $("#entity0").val()
),
$("#ts br:first").remove();
var e = "";
if (
(("player" != $("#entity0").val() &&
"armor_stand" != $("#entity0").val() &&
-1 == spawnEggs.indexOf($("#entity0").val())) ||
(e +=
"<option value='armor.head'>head</option><option value='armor.chest'>chest</option><option value='armor.legs'>legs</option><option value='armor.feet'>feet</option><option value='weapon.mainhand'>mainhand</option><option value='weapon.offhand'>offhand</option>"),
"player" == $("#entity0").val())
) {
for (var t = 0; t < 27; t++)
e +=
"<option value='enderchest." +
t +
"'>ender chest slot " +
t +
"</option>";
for (t = 0; t < 9; t++)
e +=
"<option value='hotbar." +
t +
"'>hot bar slot " +
t +
"</option>";
for (t = 0; t < 27; t++)
e +=
"<option value='inventory." +
t +
"'>inventory slot " +
t +
"</option>";
}
if ("donkey" == $("#entity0").val() || "mule" == $("#entity0").val())
for (t = 0; t < 15; t++)
e +=
"<option value='horse." + t + "'>chest slot " + t + "</option>";
if (
"villager" == $("#entity0").val() ||
"wandering_trader" == $("#entity0").val()
)
for (t = 0; t < 8; t++)
e +=
"<option value='villager." +
t +
"'>villager slot " +
t +
"</option>";
$("#Slot0").html(e), generateCommand();
}
function updateEntityORPlayerTSOptions(e, t) {
var a = $(e).val(),
o = $(e + "_filter")
.val()
.toLowerCase(),
n = [];
(0 != o.length && -1 == "player".indexOf(o)) ||
n.push("<option value='player'>player</option>"),
(0 != o.length && -1 == "armor_stand".indexOf(o)) ||
n.push("<option value='armor_stand'>armor_stand</option>");
for (var s = 0; s < spawnEggs.length; s++)
(0 != o.length && -1 == spawnEggs[s].toLowerCase().indexOf(o)) ||
n.push(
'<option value="',
spawnEggs[s],
'">',
spawnEggs[s],
"</option>"
);
$(e).html(n.join("")), a != $(e).val() && changeEntType();
}
function makeGivePane(e, t) {
$("#" + e).append("<br><div id='" + t + "' class='roundedDiv'></div>"),
loadTargetSelectors(t, !0, !0),
createComponent(
t,
"GiveItem",
{
type: "itemselect",
format: "special",
hide: !1,
tip: "give",
forceConstruct: !0,
},
0
),
$("#" + t + " br:first").remove(),
$("#targetType0_choice").trigger("change");
}
function makeAddEntityAndPlayerPane(e, t, a) {
var o = a || !1,
n = o ? "spawnPotentialContainer" : "passengerContainer",
s =
mkShowHide(t, t + "SH") +
"<div id='" +
t +
"' class='" +
n +
" roundedDiv'>";
(s +=
"<span class='fLabel200'>Entity</span><select id='entity" +
entityIndex +
"' onchange='javascript:entityChange(" +
entityIndex +
"," +
o +
");'>"),
(s += "<option value='player'>player</option>");
for (var i = 0; i < entities.length; i++)
s += "<option value='" + entities[i] + "'>" + entities[i] + "</option>";
(s +=
"</select><input type='text' id='entity" +
entityIndex +
"_filter' placeholder='Filter' class='medTF' onkeyup=\"updateEntitySelectOptions('#entity" +
entityIndex +
"'," +
entityIndex +
"," +
o +
",true)\"><br><div id='entityPane" +
entityIndex +
"' class='entityWrapper'></div></div>"),
$("#" + e).html().length && (s = "<br>" + s),
$("#" + e).append(s),
$("#" + t).css(
"background",
"rgba(" +
hexToR(bgPalette[entityIndex % bgPalette.length]) +
"," +
hexToG(bgPalette[entityIndex % bgPalette.length]) +
"," +
hexToB(bgPalette[entityIndex % bgPalette.length]) +
",0.5)"
),
entityChange(entityIndex, o);
}
function makeAddBeePane(e, t) {
var a = "";
(a += mkShowHide(t, t + "SH")),
(a +=
"<div id='" + t + "' class='spawnPotentialContainer roundedDiv'>"),
(a +=
"<a class='redX' href=\"javascript:removePassenger('" +
t +
"','" +
entityIndex +
"')\">&#9747;</a>"),
(a +=
"<a class='redX' href=\"javascript:copyEntityNBT('" +
entityIndex +
"')\">Copy</a><a class='redX' href=\"javascript:pasteEntityNBT('" +
entityIndex +
"')\">Paste</a><br>"),
(a +=
"<input type='hidden' id='entity" +
entityIndex +
"' value='bee'><br><div id='entityPane" +
entityIndex +
"' class='entityWrapper'></div></div>"),
$("#" + e).html().length && (a = "<br>" + a),
$("#" + e).append(a),
$("#" + t).css(
"background",
"rgba(" +
hexToR(bgPalette[entityIndex % bgPalette.length]) +
"," +
hexToG(bgPalette[entityIndex % bgPalette.length]) +
"," +
hexToB(bgPalette[entityIndex % bgPalette.length]) +
",0.5)"
),
entityChangeSpawnEgg(entityIndex),
createComponent(
t,
"MinOccupationTicks",
{
label: "MinOccupationTicks",
type: "ticks",
cssClass: "fLabel100",
tip: "bee_nest.MinOccupationTicks",
},
entityIndex
),
createComponent(
t,
"TicksInHive",
{
label: "TicksInHive",
type: "ticks",
cssClass: "fLabel100",
tip: "bee_nest.TicksInHive",
},
entityIndex
);
}
function makeAddEntityPane(e, t, a) {
var o = a || !1,
n = o ? "spawnPotentialContainer" : "passengerContainer",
s = "";
0 != entityIndex && (s += mkShowHide(t, t + "SH")),
(s += "<div id='" + t + "' class='" + n + " roundedDiv'>"),
0 != entityIndex &&
(s +=
"<a class='redX' href=\"javascript:removePassenger('" +
t +
"','" +
entityIndex +
"')\">&#9747;</a>"),
(s +=
"<a class='redX' href=\"javascript:copyEntityNBT('" +
entityIndex +
"')\">Copy</a><a class='redX' href=\"javascript:pasteEntityNBT('" +
entityIndex +
"')\">Paste</a><br>"),
(s +=
"<span class='fLabel200'>Entity</span><select id='entity" +
entityIndex +
"' onchange='javascript:entityChange(" +
entityIndex +
"," +
o +
");'>");
for (var i = 0; i < entities.length; i++)
s += "<option value='" + entities[i] + "'>" + entities[i] + "</option>";
(s +=
"</select><input type='text' id='entity" +
entityIndex +
"_filter' placeholder='Filter' class='medTF' onkeyup=\"updateEntitySelectOptions('#entity" +
entityIndex +
"'," +
entityIndex +
"," +
o +
")\"><br><div id='entityPane" +
entityIndex +
"' class='entityWrapper'></div></div>"),
$("#" + e).html().length && (s = "<br>" + s),
$("#" + e).append(s),
$("#" + t).css(
"background",
"rgba(" +
hexToR(bgPalette[entityIndex % bgPalette.length]) +
"," +
hexToG(bgPalette[entityIndex % bgPalette.length]) +
"," +
hexToB(bgPalette[entityIndex % bgPalette.length]) +
",0.5)"
),
entityChange(entityIndex, o);
}
function makeAddEntityPaneforSpawnEgg(e, t, a, o) {
var n =
mkShowHide(t, t + "SH") +
"<div id='" +
t +
"' class='spawnPotentialContainer roundedDiv'>";
(n +=
"<a class='redX' href=\"javascript:copyEntityNBT('" +
entityIndex +
"')\">Copy</a><a class='redX' href=\"javascript:pasteEntityNBT('" +
entityIndex +
"')\">Paste</a><br>"),
(n +=
"<span class='fLabel200'>Entity</span><select id='entity" +
entityIndex +
"' onchange='javascript:entityChangeSpawnEgg(" +
entityIndex +
");'>");
for (var s = 0; s < entities.length; s++)
n += "<option value='" + entities[s] + "'>" + entities[s] + "</option>";
(n +=
"</select><input type='text' id='entity" +
entityIndex +
"_filter' placeholder='Filter' class='medTF' onkeyup=\"updateEntitySelectOptionsForSpawnEgg('#entity" +
entityIndex +
"', " +
entityIndex +
',false)">' +
makeTip("spawn_egg", "override") +
"<br>"),
(n +=
"<div id='entityPane" +
entityIndex +
"' class='entityWrapper'></div></div>"),
$("#" + e).html().length && (n = "<br>" + n),
$("#" + e).append(n),
$("#entity" + entityIndex).val(o),
$("#" + t).css(
"background",
"rgba(" +
hexToR(bgPalette[entityIndex % bgPalette.length]) +
"," +
hexToG(bgPalette[entityIndex % bgPalette.length]) +
"," +
hexToB(bgPalette[entityIndex % bgPalette.length]) +
",0.5)"
),
entityChangeSpawnEgg(entityIndex);
}
function entityChange(e, t) {
if (
($("#entityPane" + e).html(
"<div id='entityPane" +
e +
"L' class='entityL'></div><div id='entityPane" +
e +
"R' class='entityR'></div><div id='entityPane" +
e +
"B' class='entityB'></div>"
),
0 == e &&
"data merge entity" != currentCommand &&
"execute if entity" != currentCommand &&
"kill" != currentCommand)
)
$("#entityPane" + e + "L").append(
makeCoords("Summon", "Summon", !0, !0)
),
bindGenCom("Summon", "keyup");
else if (
("data merge entity" == currentCommand ||
"execute if entity" == currentCommand ||
"kill" == currentCommand) &&
0 == e
) {
var a = "player" == $("#entity" + e).val();
loadTargetSelectors("entityPane" + e + "L", !a, a);
}
(entityDescriptors["e" + e] = loadEntityClass($("#entity" + e).val(), e)),
null != entityDescriptors["e" + e] &&
(t && entityDescriptors["e" + e].addSpawnPotentialFields(),
entityDescriptors["e" + e].generateForm(),
(0 == e &&
"entitydata" != currentCommand &&
"data merge entity" != currentCommand) ||
$("#entityPane" + e + "L br:first").remove(),
$("#entityPane" + e + "R br:first").remove()),
cachedNBT.loadCachedEntityNBT(e),
generateCommand();
}
function entityChangeSpawnEgg(e) {
$("#entityPane" + e).html(
"<div id='entityPane" +
e +
"L' class='entityL'></div><div id='entityPane" +
e +
"R' class='entityR'></div><div id='entityPane" +
e +
"B' class='entityB'></div>"
),
(entityDescriptors["e" + e] = loadEntityClass(
$("#entity" + e).val(),
e
)),
(entityDescriptors["e" + e].passengersAllowed = !1),
entityDescriptors["e" + e].generateForm(),
$("#entityPane" + e + "L br:first").remove(),
$("#entityPane" + e + "R br:first").remove(),
cachedNBT.loadCachedEntityNBT(e),
generateCommand();
}
function updateEntitySelectOptionsForSpawnEgg(e, t) {
for (
var a = $(e).val(),
o = $(e + "_filter")
.val()
.toLowerCase(),
n = [],
s = 0;
s < entities.length;
s++
)
(0 != o.length && -1 == entities[s].toLowerCase().indexOf(o)) ||
n.push(
'<option value="',
entities[s],
'">',
entities[s],
"</option>"
);
$(e).html(n.join("")),
a != $(e).val() &&
(cachedNBT.updateFilterLastUsed(), entityChangeSpawnEgg(t));
}
class TargetSelector {
constructor(e, t, a, o) {
var n = void 0 == a ? "" : a;
(this.forPlayers = t),
(this.forNonPlayerEnts = e),
(this.tsNBT = {
c: {
label: "Limit",
type: "text",
cssClass: "fLabel150",
tip: "target.limit",
format: "int",
},
sort: {
label: "Sort",
type: "makeSelect",
values: [
"unset",
"nearest",
"furthest",
"random",
"arbitrary",
],
cssClass: "fLabel150",
tip: "target.sort",
format: "special",
},
x: {
type: "text",
label: "x",
cssClass: "fLabel150",
tip: "target.coordinates",
format: "int",
},
y: {
type: "text",
label: "y",
cssClass: "fLabel150",
tip: "target.coordinates",
format: "int",
},
z: {
type: "text",
label: "z",
cssClass: "fLabel150",
tip: "target.coordinates",
format: "int",
},
tsSelectionArea: {
label: "Selection Area",
type: "choice",
cssClass: "fLabel150",
values: [
[0, "Radius"],
[1, "Volume"],
],
tip: "target.selectionArea",
format: "special",
},
tsAreaPane: {
cssClass: "fLabel150",
panelID: n + "tsAreaPane",
type: "panel",
format: "special",
},
rxm: {
type: "text",
label: "Min Vert Rotation",
cssClass: "fLabel150",
tip: "target.rxm",
format: "int",
},
rx: {
type: "text",
label: "Max Vert Rotation",
cssClass: "fLabel150",
tip: "target.rx",
format: "int",
},
rym: {
type: "text",
label: "Min Horiz Rotation",
cssClass: "fLabel150",
tip: "target.rym",
format: "int",
},
ry: {
type: "text",
label: "Max Horiz Rotation",
cssClass: "fLabel150",
tip: "target.ry",
format: "int",
},
team: {
type: "choicetext",
label: "Team",
cssClass: "fLabel150",
values: [
[0, "Only this team"],
[1, "Not this team"],
[2, "Not any team"],
[3, "On any team"],
],
tip: "target.team",
},
name: {
type: "choicetext",
label: "Name",
cssClass: "fLabel150",
values: [
[0, "This name"],
[1, "Not this name"],
],
tip: "target.name",
format: "special",
},
}),
(this.tsRadius = {
rm: {
type: "text",
label: "Min Radius",
cssClass: "fLabel150",
eventClass: "selectArea",
tip: "target.rm",
},
r: {
type: "text",
label: "Max Radius",
cssClass: "fLabel150",
eventClass: "selectArea",
tip: "target.r",
},
}),
(this.tsVolume = {
dx: {
type: "text",
label: "Positive X Direction",
cssClass: "fLabel150",
eventClass: "selectArea",
tip: "target.dx",
},
dy: {
type: "text",
label: "Positive Y Direction",
cssClass: "fLabel150",
eventClass: "selectArea",
tip: "target.dy",
},
dz: {
type: "text",
label: "Positive Z Direction",
cssClass: "fLabel150",
eventClass: "selectArea",
tip: "target.dz",
},
}),
(this.tsNBT.nbt = {
type: "text",
label: "NBT",
fwClass: "verybigTF",
cssClass: "fLabel150",
tip: "target.nbt",
format: "special",
}),
t
? ((this.tsNBT.m = {
type: "choice",
label: "Game Mode",
cssClass: "fLabel150",
values: [
["-1", "Any Mode"],
["survival", "Survival Mode"],
["creative", "Creative Mode"],
["adventure", "Adventure Mode"],
["spectator", "Spectator Mode"],
["!survival", "Not Survival Mode"],
["!creative", "Not Creative Mode"],
["!adventure", "Not Adventure Mode"],
["!spectator", "Not Spectator Mode"],
],
tip: "target.m",
}),
(this.tsNBT.lm = {
type: "text",
label: "Min XP Level",
cssClass: "fLabel150",
tip: "target.lm",
format: "int",
}),
(this.tsNBT.l = {
type: "text",
label: "Max XP Level",
cssClass: "fLabel150",
tip: "target.l",
format: "int",
}),
(this.tsNBT.advancements = {
type: "text",
label: "Advancements",
fwClass: "bigTF",
cssClass: "fLabel150",
tip: "target.advancements",
format: "special",
}))
: void 0 != o &&
o &&
(this.tsNBT.type = {
type: "text",
label: "Type",
cssClass: "fLabel150",
fwClass: "bigTF",
tip: "target.type113",
format: "special",
}),
(this.tsNBT.tag = {
type: "text",
label: "Tags",
cssClass: "fLabel150",
fwClass: "bigTF",
tip: "target.tag113",
format: "special",
});
}
}
function loadTargetSelectorsGeneric(e, t, a, o) {
var n = void 0 == o ? "" : o;
$("#" + e).append(
"<br><span class='fLabel200'>Target Selectors</span>" +
mkShowHide(n + "TSPane", "TSPaneSH") +
"<div id='" +
n +
"TSPane' class='tsControl roundedDiv'></div>"
);
var s = new TargetSelector(t, a, n, !0);
for (var i in (a &&
(createComponent(
n + "TSPane",
n + "targetType",
{
type: "choicetext",
value: "@p",
label: "Target",
cssClass: "fLabel150",
values: [
["@p", "nearest player"],
["@r", "random player"],
["@a", "all players"],
["@s", "the entity executing the command"],
["MC_Name", "A specific players name"],
],
tip: "target.targetType",
format: "string",
eventClass: "tsTargetType",
},
0
),
$(".tsTargetType").bind("change", function () {
"MC_Name" != $("#" + n + "targetType0_choice").val() &&
$("#" + n + "targetType0_txt").val(
$("#" + n + "targetType0_choice").val()
),
generateCommand();
})),
s.tsNBT))
createComponent(n + "TSPane", n + i, s.tsNBT[i], 0);
$("#" + n + "TSPane br:first").remove(),
loadTSAreaOption(0, n, s),
$("#" + n + "tsSelectionArea0").bind("change", function () {
loadTSAreaOption($("#" + n + "tsSelectionArea0").val(), n, s),
generateCommand();
}),
$("#" + n + "TSPane").append(
"<br><span class='fLabel150'>Score Objectives</span><span style='display:inline;white-space: nowrap;'><a href=\"javascript:addScoreObjective('" +
n +
"tsScore','" +
n +
"')\" class='greenPlus'>+</a><div id='" +
n +
"tsScore' class='tsScorePane'></div></span>"
);
}
function loadTargetSelectors(e, t, a, o, n) {
var s = void 0 == o ? "" : o;
$("#" + e).append(
"<br><span class='fLabel200'>Target Selectors</span>" +
mkShowHide(s + "TSPane", "TSPaneSH") +
"<div id='" +
s +
"TSPane' class='tsControl roundedDiv'></div>"
);
var i = new TargetSelector(t, a, s, n);
for (var r in (a &&
(createComponent(
s + "TSPane",
s + "targetType",
{
type: "choicetext",
value: "@p",
label: "Target",
cssClass: "fLabel150",
values: [
["@p", "nearest player"],
["@r", "random player"],
["@a", "all players"],
["@s", "the entity executing the command"],
["MC_Name", "A specific players name"],
],
tip: "target.targetType",
format: "string",
eventClass: "tsTargetType",
},
0
),
$(".tsTargetType").bind("change", function () {
"MC_Name" != $("#" + s + "targetType0_choice").val() &&
$("#" + s + "targetType0_txt").val(
$("#" + s + "targetType0_choice").val()
),
generateCommand();
})),
i.tsNBT))
createComponent(s + "TSPane", s + r, i.tsNBT[r], 0);
$("#" + s + "TSPane br:first").remove(),
loadTSAreaOption(0, s, i),
$("#" + s + "tsSelectionArea0").bind("change", function () {
loadTSAreaOption($("#" + s + "tsSelectionArea0").val(), s, i),
generateCommand();
}),
$("#" + s + "TSPane").append(
"<br><span class='fLabel150'>Score Objectives</span><span style='display:inline;white-space: nowrap;'><a href=\"javascript:addScoreObjective('" +
s +
"tsScore','" +
s +
"')\" class='greenPlus'>+</a><div id='" +
s +
"tsScore' class='tsScorePane'></div></span>"
);
}
function loadTargetSelectorsFromCommandGeneric(e, t) {
var a = void 0 == t ? "" : t;
if ("@" == e.charAt(0)) {
if (-1 == e.indexOf("[")) $("#" + a + "targetType0_choice").val(e);
else {
$("#" + a + "targetType0_choice").val(e.substr(0, e.indexOf("[")));
var o = e.substr(e.indexOf("[") + 1);
o = o.substr(0, o.indexOf("]")).split(",");
for (var n = 0; n < o.length; n++)
for (
;
n + 1 < o.length &&
occurrences(o[n], "{", !1) != occurrences(o[n], "}", !1);
)
(o[n] += "," + o[n + 1]), o.splice(n + 1, 1);
var s = {
gamemode: "m",
limit: "c",
x: "x",
y: "y",
z: "z",
sort: "sort",
advancements: "advancements",
nbt: "nbt",
},
i = {
x_rotation: ["rxm", "rx"],
y_rotation: ["rym", "ry"],
distance: ["rm", "r"],
level: ["lm", "l"],
};
for (n = 0; n < o.length; n++) {
var r = o[n].substr(0, o[n].indexOf("=")),
l = o[n].substr(o[n].indexOf("=") + 1);
if (r in s) $("#" + a + s[r] + "0").val(l);
else if (r in i)
setRangedTSValues(l, a + i[r][0] + "0", a + i[r][1] + "0");
else if ("dx" == r || "dy" == r || "dz" == r)
0 == $("#" + a + "tsSelectionArea0").val() &&
($("#" + a + "tsSelectionArea0").val(1),
$("#" + a + "tsSelectionArea0").trigger("change")),
$("#" + a + r + "0").val(l);
else if ("name" == r)
"!" == l.charAt(0)
? ($("#" + a + r + "0_choice").val(1),
$("#" + a + r + "0_txt").val(
replaceAll('"', "", l.substr(1))
))
: ($("#" + a + r + "0_choice").val(0),
$("#" + a + r + "0_txt").val(replaceAll('"', "", l)));
else if ("team" == r)
"" == l
? $("#" + a + r + "0_choice").val(2)
: "!" == l
? $("#" + a + r + "0_choice").val(3)
: "!" == l.charAt(0)
? ($("#" + a + r + "0_choice").val(1),
$("#" + a + r + "0_txt").val(l.substr(1)))
: ($("#" + a + r + "0_choice").val(0),
$("#" + a + r + "0_txt").val(l));
else if ("tag" == r)
$("#" + a + r + "0").val().length > 0 &&
$("#" + a + r + "0").val(
$("#" + a + r + "0").val() + ","
),
$("#" + a + r + "0").val(
$("#" + a + r + "0").val() + l
);
else if ("type" == r)
$("#" + a + r + "0").val().length > 0 &&
$("#" + a + r + "0").val(
$("#" + a + r + "0").val() + ","
),
$("#" + a + r + "0").val(
$("#" + a + r + "0").val() + l
);
else if ("scores" == r)
for (
var c = (l = replaceAll(
"{",
"",
replaceAll("}", "", l)
)).split(","),
d = 0;
d < c.length;
d++
) {
var p = c[d].split("=");
addScoreObjective(a + "tsScore", a);
var m = d + 1;
$("#" + a + "scoreObjective" + m + "Name0").val(p[0]),
setRangedTSValues(
p[1],
a + "scoreObjective" + m + "Min0",
a + "scoreObjective" + m + "Max0"
);
}
}
}
$("#" + a + "targetType0_choice").trigger("change");
} else $("#" + a + "targetType0_txt").val(e);
}
function loadTargetSelectorsFromCommand113(e, t) {
var a = void 0 == t ? "" : t;
if ("@" == e.charAt(0)) {
if (-1 == e.indexOf("[")) $("#" + a + "targetType0_choice").val(e);
else {
$("#" + a + "targetType0_choice").val(e.substr(0, e.indexOf("[")));
var o = e.substr(e.indexOf("[") + 1);
o = o.substr(0, o.lastIndexOf("]")).split(",");
for (var n = 0; n < o.length; n++)
for (
;
n + 1 < o.length &&
occurrences(o[n], "{", !1) != occurrences(o[n], "}", !1);
)
(o[n] += "," + o[n + 1]), o.splice(n + 1, 1);
var s = {
gamemode: "m",
limit: "c",
x: "x",
y: "y",
z: "z",
sort: "sort",
advancements: "advancements",
nbt: "nbt",
},
i = {
x_rotation: ["rxm", "rx"],
y_rotation: ["rym", "ry"],
distance: ["rm", "r"],
level: ["lm", "l"],
};
for (n = 0; n < o.length; n++) {
var r = o[n].substr(0, o[n].indexOf("=")),
l = o[n].substr(o[n].indexOf("=") + 1);
if (r in s) $("#" + a + s[r] + "0").val(l);
else if (r in i)
setRangedTSValues(l, i[r][0] + "0", i[r][1] + "0");
else if ("dx" == r || "dy" == r || "dz" == r)
0 == $("#" + a + "tsSelectionArea0").val() &&
($("#" + a + "tsSelectionArea0").val(1),
$("#" + a + "tsSelectionArea0").trigger("change")),
$("#" + r + "0").val(l);
else if ("type" == r) {
if (
!$("#" + a + "entity0 option[value='" + l + "']").length
)
throw new MCSException(
l + " is not a valid entity in the target selector."
);
$("#" + a + "entity0").val(l),
$("#" + a + "entity0").trigger("change");
} else if ("name" == r)
"!" == l.charAt(0)
? ($("#" + a + r + "0_choice").val(1),
$("#" + a + r + "0_txt").val(
replaceAll('"', "", l.substr(1))
))
: ($("#" + a + r + "0_choice").val(0),
$("#" + a + r + "0_txt").val(replaceAll('"', "", l)));
else if ("team" == r)
"" == l
? $("#" + a + r + "0_choice").val(2)
: "!" == l
? $("#" + a + r + "0_choice").val(3)
: "!" == l.charAt(0)
? ($("#" + a + r + "0_choice").val(1),
$("#" + a + r + "0_txt").val(l.substr(1)))
: ($("#" + a + r + "0_choice").val(0),
$("#" + a + r + "0_txt").val(l));
else if ("tag" == r)
$("#" + a + r + "0").val().length > 0 &&
$("#" + a + r + "0").val(
$("#" + a + r + "0").val() + ","
),
$("#" + a + r + "0").val(
$("#" + a + r + "0").val() + l
);
else if ("scores" == r)
for (
var c = (l = replaceAll(
"{",
"",
replaceAll("}", "", l)
)).split(","),
d = 0;
d < c.length;
d++
) {
var p = c[d].split("=");
addScoreObjective(a + "tsScore", a);
var m = d + 1;
$("#" + a + "scoreObjective" + m + "Name0").val(p[0]),
setRangedTSValues(
p[1],
a + "scoreObjective" + m + "Min0",
a + "scoreObjective" + m + "Max0"
);
}
}
}
$("#" + a + "targetType0_choice").trigger("change");
} else $("#" + a + "targetType0_txt").val(e);
}
function setRangedTSValues(e, t, a) {
var o = e.split("..");
-1 == e.indexOf("..")
? ($("#" + t).val(o[0]), $("#" + a).val(o[0]))
: "." == e.charAt(0)
? $("#" + a).val(o[1])
: "." == e.charAt(e.length - 1)
? $("#" + t).val(o[0])
: ($("#" + t).val(o[0]), $("#" + a).val(o[1]));
}
function loadTargetSelectorsFromCommand(e, t) {
var a = void 0 == t ? "" : t;
if ("@" == e.charAt(0)) {
if (-1 == e.indexOf("[")) $("#" + a + "targetType0_choice").val(e);
else {
$("#" + a + "targetType0_choice").val(e.substr(0, e.indexOf("[")));
var o = e.substr(e.indexOf("[") + 1);
o = o.substr(0, o.indexOf("]")).split(",");
for (
var n = [
"c",
"x",
"y",
"z",
"rxm",
"rx",
"rym",
"ry",
"lm",
"l",
"m",
"r",
"rm",
],
s = [],
i = 0;
i < o.length;
i++
) {
var r,
l = o[i].split("=")[0];
try {
r = o[i].split("=")[1];
} catch (e) {
r = "";
}
if (-1 != n.indexOf(l)) $("#" + a + l + "0").val(r);
else if ("dx" == l || "dy" == l || "dz" == l)
0 == $("#" + a + "tsSelectionArea0").val() &&
($("#" + a + "tsSelectionArea0").val(1),
$("#" + a + "tsSelectionArea0").trigger("change")),
$("#" + l + "0").val(r);
else if ("type" == l) {
if (
!$("#" + a + "entity0 option[value='" + r + "']").length
)
throw new MCSException(
r + " is not a valid entity in the target selector."
);
$("#" + a + "entity0").val(r),
$("#" + a + "entity0").trigger("change");
} else if ("name" == l)
"!" == r.charAt(0)
? ($("#" + a + l + "0_choice").val(1),
$("#" + a + l + "0_txt").val(r.substr(1)))
: ($("#" + a + l + "0_choice").val(0),
$("#" + a + l + "0_txt").val(r));
else if ("team" == l || "tag" == l)
"" == r
? $("#" + a + l + "0_choice").val(2)
: "!" == r
? $("#" + a + l + "0_choice").val(3)
: "!" == r.charAt(0)
? ($("#" + a + l + "0_choice").val(1),
$("#" + a + l + "0_txt").val(r.substr(1)))
: ($("#" + a + l + "0_choice").val(0),
$("#" + a + l + "0_txt").val(r));
else if (-1 != l.indexOf("score_")) {
var c = l.split("_");
-1 == s.indexOf(c[1]) &&
(addScoreObjective(a + "tsScore", a), s.push(c[1])),
(scoreIndex = s.indexOf(c[1]) + 1),
$(
"#" + a + "scoreObjective" + scoreIndex + "Name0"
).val(c[1]),
2 == c.length
? $(
"#" +
a +
"scoreObjective" +
scoreIndex +
"Max0"
).val(r)
: $(
"#" +
a +
"scoreObjective" +
scoreIndex +
"Min0"
).val(r);
}
}
}
$("#" + a + "targetType0_choice").trigger("change");
} else $("#" + a + "targetType0_txt").val(e);
}
function getTargetSelectorStringGeneric(e) {
var t, a;
t = void 0 == e ? "" : e;
var o = $("#" + t).length > 0 && "player" != $("#" + t).val(),
n =
($("#" + t).length && "player" == $("#" + t).val()) ||
!$("#" + t).length;
a = new TargetSelector(o, n, t);
var s = "";
if (
($("#" + t + "m0").length &&
-1 != $("#" + t + "m0").val() &&
(s += ",gamemode=" + $("#" + t + "m0").val()),
(s += getTSRange("level", t + "lm0", t + "l0")),
(s += getTSRange("x_rotation", t + "rxm0", t + "rx0")),
(s += getTSRange("y_rotation", t + "rym0", t + "ry0")),
"" != $("#" + t + "c0").val() &&
(s += ",limit=" + $("#" + t + "c0").val()),
$("#" + t + "sort0").length &&
"unset" != $("#" + t + "sort0").val() &&
(s += ",sort=" + $("#" + t + "sort0").val()),
"" != $("#" + t + "x0").val() && (s += ",x=" + $("#" + t + "x0").val()),
"" != $("#" + t + "y0").val() && (s += ",y=" + $("#" + t + "y0").val()),
"" != $("#" + t + "z0").val() && (s += ",z=" + $("#" + t + "z0").val()),
0 == $("#" + t + "tsSelectionArea0").val()
? (s += getTSRange("distance", t + "rm0", t + "r0"))
: ((s += replaceAll(
":",
"=",
getNBTforKey(t + "dx", a.tsVolume.dx, 0)
)),
(s += replaceAll(
":",
"=",
getNBTforKey(t + "dy", a.tsVolume.dy, 0)
)),
(s += replaceAll(
":",
"=",
getNBTforKey(t + "dz", a.tsVolume.dz, 0)
))),
2 == $("#" + t + "team0_choice").val()
? (s += ",team=")
: 3 == $("#" + t + "team0_choice").val()
? (s += ",team=!")
: $("#" + t + "team0_txt").val().length &&
((s += ",team="),
1 == $("#" + t + "team0_choice").val() && (s += "!"),
(s += $("#" + t + "team0_txt").val())),
$("#" + t + "tag0").val().length)
) {
for (
var i = $("#" + t + "tag0")
.val()
.split(","),
r = "",
l = 0;
l < i.length;
l++
)
r += ",tag=" + i[l];
s += r;
}
$("#" + t + "advancements0").length &&
$("#" + t + "advancements0").val().length &&
(s += ",advancements=" + $("#" + t + "advancements0").val()),
$("#" + t + "nbt0").val().length &&
(s += ",nbt=" + $("#" + t + "nbt0").val());
var c = "";
if (
($("#" + t + "tsScore > .score").each(function (e) {
if ($("#" + this.id + "Name0").val().length) {
var t = $("#" + this.id + "Name0").val();
c += getTSRange(t, this.id + "Min0", this.id + "Max0");
}
}),
c.length && (s += ",scores={" + c.substr(1) + "}"),
$("#" + t + "name0_txt").val().length &&
((s += ",name="),
1 == $("#" + t + "name0_choice").val() && (s += "!"),
(s += '"' + $("#" + t + "name0_txt").val() + '"')),
(s = replaceAll(t, "", s)),
o)
) {
if ($("#" + t + "type0").val().length) {
for (
i = $("#" + t + "type0")
.val()
.split(","),
r = "",
l = 0;
l < i.length;
l++
)
r += ",type=" + i[l];
s += r;
}
return s.length ? "@e[" + s.substr(1) + "]" : "@e";
}
return (
s.length && (s = "[" + s.substr(1) + "]"),
$("#" + t + "targetType0_txt").val() + s
);
}
function getTargetSelectorString1p13(e) {
var t, a;
t = void 0 == e ? "" : e;
var o =
$("#" + t + "entity0").length > 0 &&
"player" != $("#" + t + "entity0").val(),
n =
($("#" + t + "entity0").length &&
"player" == $("#" + t + "entity0").val()) ||
!$("#" + t + "entity0").length;
a = new TargetSelector(o, n, t);
var s = "";
if (
($("#" + t + "m0").length &&
-1 != $("#" + t + "m0").val() &&
(s += ",gamemode=" + $("#" + t + "m0").val()),
(s += getTSRange("level", t + "lm0", t + "l0")),
(s += getTSRange("x_rotation", t + "rxm0", t + "rx0")),
(s += getTSRange("y_rotation", t + "rym0", t + "ry0")),
"" != $("#" + t + "c0").val() &&
(s += ",limit=" + $("#" + t + "c0").val()),
$("#" + t + "sort0").length &&
"unset" != $("#" + t + "sort0").val() &&
(s += ",sort=" + $("#" + t + "sort0").val()),
"" != $("#" + t + "x0").val() && (s += ",x=" + $("#" + t + "x0").val()),
"" != $("#" + t + "y0").val() && (s += ",y=" + $("#" + t + "y0").val()),
"" != $("#" + t + "z0").val() && (s += ",z=" + $("#" + t + "z0").val()),
0 == $("#" + t + "tsSelectionArea0").val()
? (s += getTSRange("distance", t + "rm0", t + "r0"))
: ((s += replaceAll(
":",
"=",
getNBTforKey(t + "dx", a.tsVolume.dx, 0)
)),
(s += replaceAll(
":",
"=",
getNBTforKey(t + "dy", a.tsVolume.dy, 0)
)),
(s += replaceAll(
":",
"=",
getNBTforKey(t + "dz", a.tsVolume.dz, 0)
))),
2 == $("#" + t + "team0_choice").val()
? (s += ",team=")
: 3 == $("#" + t + "team0_choice").val()
? (s += ",team=!")
: $("#" + t + "team0_txt").val().length &&
((s += ",team="),
1 == $("#" + t + "team0_choice").val() && (s += "!"),
(s += $("#" + t + "team0_txt").val())),
$("#" + t + "tag0").val().length)
) {
for (
var i = $("#" + t + "tag0")
.val()
.split(","),
r = "",
l = 0;
l < i.length;
l++
)
r += ",tag=" + i[l];
s += r;
}
$("#" + t + "advancements0").length &&
$("#" + t + "advancements0").val().length &&
(s += ",advancements=" + $("#" + t + "advancements0").val()),
$("#" + t + "name0_txt").val().length &&
((s += ",name="),
1 == $("#" + t + "name0_choice").val() && (s += "!"),
(s += '"' + $("#" + t + "name0_txt").val() + '"')),
(s = replaceAll(t, "", s));
var c = "";
return (
$("#" + t + "tsScore > .score").each(function (e) {
if ($("#" + this.id + "Name0").val().length) {
var t = $("#" + this.id + "Name0").val();
c += getTSRange(t, this.id + "Min0", this.id + "Max0");
}
}),
c.length && (s += ",scores={" + c.substr(1) + "}"),
$("#" + t + "nbt0").val().length &&
(s += ",nbt=" + $("#" + t + "nbt0").val()),
o
? "@e[type=" + $("#" + t + "entity0").val() + s + "]"
: (s.length && (s = "[" + s.substr(1) + "]"),
$("#" + t + "targetType0_txt").val() + s)
);
}
function getTSRange(e, t, a) {
if (!$("#" + t).length && !$("#" + a).length) return "";
var o = $("#" + t).val(),
n = $("#" + a).val();
return o == n && "" == o
? ""
: o == n
? "," + e + "=" + o
: "" != o && "" != n
? "," + e + "=" + o + ".." + n
: "" != o
? "," + e + "=" + o + ".."
: "" != n
? "," + e + "=.." + n
: "";
}
function addScoreObjective(e, t) {
var a = t + "scoreObjective" + ++tsScoreObjectiveCount;
$("#" + e).append(
"<div id='" +
a +
"' class='score roundedDiv'><a class='redX' href=\"javascript:removeContainer('" +
a +
"')\">&#9747;</a></div>"
),
createComponent(
a,
a + "Name",
{
label: "Objective Name",
type: "text",
cssClass: "fLabel100",
eventClass: "scoreObjective",
tip: "target.objectiveName",
},
0
),
createComponent(
a,
a + "Min",
{
label: "Min Score",
type: "text",
cssClass: "fLabel100",
eventClass: "scoreObjective",
tip: "target.scoreMin",
},
0
),
createComponent(
a,
a + "Max",
{
label: "Max Score",
type: "text",
cssClass: "fLabel100",
eventClass: "scoreObjective",
tip: "target.scoreMax",
},
0
),
$(".scoreObjective").bind("keyup", function () {
generateCommand();
}),
generateCommand();
}
function loadTSAreaOption(e, t, a) {
$("#" + t + "tsAreaPane").html(""),
0 == e
? (createComponent(t + "tsAreaPane", t + "rm", a.tsRadius.rm, 0),
createComponent(t + "tsAreaPane", t + "r", a.tsRadius.r, 0))
: (createComponent(t + "tsAreaPane", t + "dx", a.tsVolume.dx, 0),
createComponent(t + "tsAreaPane", t + "dy", a.tsVolume.dy, 0),
createComponent(t + "tsAreaPane", t + "dz", a.tsVolume.dz, 0)),
$(".selectArea").bind("keyup", function () {
generateCommand();
}),
$("#" + t + "tsAreaPane br:first").remove();
}
function removePassenger(e, t) {
$("#" + e)
.parent()
.children("br:first")
.remove(),
$("#" + e).remove(),
$("#" + e + "SH").remove(),
delete entityDescriptors["e" + t],
generateCommand();
}
function showClipboard() {
$("#clipBoard").css({ top: mouse.y + 200, left: mouse.x }),
$("#clipBoard").show(),
$("#clipBoard-ta").val(clipboard[$("#nbtType").val()]);
}
function copyEntityNBT(e) {
(clipboard[1] =
'{id:"minecraft:' +
$("#entity" + e).val() +
'"' +
entityDescriptors["e" + e].getEntitySpecificCommand(e) +
"}"),
copyToClipboard(clipboard[1]),
$("#nbtType").val(1),
$("#clipBoard-ta").val(clipboard[1]);
}
function pasteEntityNBT(e) {
try {
let o = new CMDParser("");
var t = o.parseCompound(
extractSegment(
"{",
"}",
clipboard[1].indexOf("{"),
clipboard[1]
)
),
a = extractMinecraftID(t.id.val);
$("#entity" + e + "_filter").val(""),
$("#entity" + e + "_filter").trigger("keyup"),
$("#entity" + e).val(a),
$("#entity" + e).trigger("change"),
o.loadSummonCommand(t, e),
generateCommand();
} catch (e) {
alertify.alert(
"Error Can't load in this NBT:<br>" +
clipboard[1] +
"<br>" +
e.toString()
);
}
}
function copyItemNBT(e) {
(clipboard[0] = getItemNBT(e)),
copyToClipboard(clipboard[0]),
$("#nbtType").val(0),
$("#clipBoard-ta").val(clipboard[0]);
}
function getTradeNBT(e) {
let t = "";
-1 != $("#" + e + "rewardExp").val() &&
(t += ",rewardExp:" + $("#" + e + "rewardExp").val() + "b"),
$("#" + e + "maxUses").val().length &&
(t += ",maxUses:" + $("#" + e + "maxUses").val()),
$("#" + e + "uses").val().length &&
(t += ",uses:" + $("#" + e + "uses").val()),
$("#" + e + "xp").val().length &&
(t += ",xp:" + $("#" + e + "xp").val()),
$("#" + e + "priceMultiplier").val().length &&
(t +=
",priceMultiplier:" +
$("#" + e + "priceMultiplier").val() +
"f"),
$("#" + e + "specialPrice").val().length &&
(t += ",specialPrice:" + $("#" + e + "specialPrice").val()),
$("#" + e + "demand").val().length &&
(t += ",demand:" + $("#" + e + "demand").val());
var a = getItemNBT(e + "buy");
return (
"{}" != a && (t += ",buy:" + a),
"{}" != (a = getItemNBT(e + "buyB")) && (t += ",buyB:" + a),
"{}" != (a = getItemNBT(e + "sell")) && (t += ",sell:" + a),
t
);
}
function addTradeFromNBT(e, t, a) {
void 0 != e.rewardExp &&
$("#" + t + "rewardExp").val(parseInt(e.rewardExp.val)),
void 0 != e.uses && $("#" + t + "uses").val(parseInt(e.uses.val)),
void 0 != e.maxUses &&
$("#" + t + "maxUses").val(parseInt(e.maxUses.val)),
void 0 != e.xp && $("#" + t + "xp").val(parseInt(e.xp.val)),
void 0 != e.priceMultiplier &&
$("#" + t + "priceMultiplier").val(
parseFloat(e.priceMultiplier.val)
),
void 0 != e.specialPrice &&
$("#" + t + "specialPrice").val(parseInt(e.specialPrice.val)),
void 0 != e.demand && $("#" + t + "demand").val(parseInt(e.demand.val)),
void 0 != e.buy && setupItemTradeSlotForNBT(t + "buy", e.buy.val, a),
void 0 != e.buyB && setupItemTradeSlotForNBT(t + "buyB", e.buyB.val, a),
void 0 != e.sell && setupItemTradeSlotForNBT(t + "sell", e.sell.val, a);
}
function setupItemTradeSlotForNBT(e, t, a) {
if (void 0 != t.id) {
var o = extractMinecraftID(t.id.val);
if (
(void 0 != t.Damage &&
$("#" + e + " option[value='" + o + ":" + t.Damage.val + "']")
.length &&
(o += ":" + t.Damage.val),
$("#" + e).length)
)
$("#" + e).val(o),
$("#" + e).trigger("change"),
loadItemNBTIntoSlot(t, o, e, a);
else {
var n = a.traverseObjectToNBT(t, "");
(n = replaceAll(",tag{}", "", (n = attribConverter(n)))),
cachedNBT.setNBT(e, "," + n),
$("#" + e + "Pane > .itemNBT").remove(),
$("#" + e + "Pane").append(
"<div class='itemNBT'>{" + n + "}</div>"
);
}
}
}
function copyTradeNBT(e) {
$("#closeItemUI_" + e + "buy").trigger("click"),
$("#closeItemUI_" + e + "buyB").trigger("click"),
$("#closeItemUI_" + e + "sell").trigger("click"),
(clipboard[2] = getTradeNBT(e)),
clipboard[2].length &&
(clipboard[2] = "{" + clipboard[2].substr(1) + "}"),
copyToClipboard(clipboard[2]),
$("#nbtType").val(2),
$("#clipBoard-ta").val(clipboard[2]);
}
function pasteTradeNBT(e) {
$("#closeItemUI_" + e + "buy").trigger("click"),
$("#closeItemUI_" + e + "buyB").trigger("click"),
$("#closeItemUI_" + e + "sell").trigger("click");
try {
let t = new CMDParser("");
addTradeFromNBT(
t.parseCompound(
extractSegment(
"{",
"}",
clipboard[2].indexOf("{"),
clipboard[2]
)
),
e,
t
),
generateCommand();
} catch (e) {
alertify.alert(
"Error Can't load in this Trade:<br>" +
clipboard[2] +
"<br>" +
e.toString()
);
}
}
function moveTrade(e, t) {
let a = e.substr(0, e.indexOf("_")),
o = [];
$("#" + a + " > .trade").each(function (e) {
o.push(this.id);
});
let n = o.indexOf(e);
if ((1 == t && n < o.length - 1) || (-1 == t && n > 0)) {
let e = n + t;
$("#closeItemUI_" + o[n] + "buy").trigger("click"),
$("#closeItemUI_" + o[n] + "buyB").trigger("click"),
$("#closeItemUI_" + o[n] + "sell").trigger("click"),
$("#closeItemUI_" + o[e] + "buy").trigger("click"),
$("#closeItemUI_" + o[e] + "buyB").trigger("click"),
$("#closeItemUI_" + o[e] + "sell").trigger("click");
let a = getTradeNBT(o[n]);
(aNBT = getTradeNBT(o[e])),
(bNBT = a),
aNBT.length && (aNBT = "{" + aNBT.substr(1) + "}"),
bNBT.length && (bNBT = "{" + bNBT.substr(1) + "}");
let s = new CMDParser(""),
i = s.parseCompound(
extractSegment("{", "}", aNBT.indexOf("{"), aNBT)
);
addTradeFromNBT(i, o[n], s),
addTradeFromNBT(
(i = s.parseCompound(
extractSegment("{", "}", bNBT.indexOf("{"), bNBT)
)),
o[e],
s
),
generateCommand();
}
}
function pasteItemNBT(e) {
try {
let o = new CMDParser("");
var t = o.parseCompound(
extractSegment(
"{",
"}",
clipboard[0].indexOf("{"),
clipboard[0]
)
),
a = extractMinecraftID(t.id.val);
if (
($("#" + e + "_filter").val(""),
updateItemSelectOptions("#" + e),
!$("#" + e + " option[value='" + a + "']").length)
)
throw new MCSException(a + " is not a valid item id");
$("#" + e).val(a),
$("#" + e).trigger("change"),
loadItemNBTIntoSlot(t, a, e, o),
generateCommand();
} catch (e) {
alertify.alert(
"Error Can't load in this Item:<br>" +
clipboard[0] +
"<br>" +
e.toString()
);
}
}
function loadCBType() {
$("#clipBoard-ta").val(clipboard[parseInt($("#nbtType").val())]);
}
function removeSpawnPotential(e) {
$("#spawnPotentialEntity_" + e)
.parent()
.children("br:first")
.remove(),
$("#spawnPotentialEntity_" + e).remove(),
$("#spawnPotentialEntity_" + e + "SH").remove(),
delete entityDescriptors["e" + e],
generateCommand();
}
function copyToClipboard(e) {
var t = $("<input>");
$("body").append(t),
t.val(e).select(),
document.execCommand("copy"),
t.remove();
}
function getExecuteString() {
return $("#exeString").val() + " ";
}
function generateCommand() {
if (
!deferJSONOutput &&
!deferOutput &&
!$("#disableOutput").is(":checked")
) {
if (
($("#commandOutput").show(),
(parseInt($("#commandOutput").css("top")) < 0 ||
parseInt($("#commandOutput").css("top")) > $(window).height() ||
parseInt($("#commandOutput").css("left")) < 0 ||
parseInt($("#commandOutput").css("left")) >
$(window).width()) &&
$("#commandOutput").css({
top: 0,
left: $(window).width() - 510,
}),
"loot_table" == currentCommand)
)
return (
$("#commandOutput-ta").val(generateLootTable()),
$("#commandString").val($("#commandOutput-ta").val()),
void outputCharacterCount("")
);
var e = settings.removeSlash ? "" : "/";
try {
if (
($("#exeString").length && (e += getExecuteString()),
(e += currentCommand + " "),
"summon" == currentCommand)
) {
var t = getCoordsString("Summon");
settings.namespace.length && (e += settings.namespace + ":"),
(e +=
$("#entity0").val() +
" " +
t[0] +
" " +
t[1] +
" " +
t[2]);
var a = entityDescriptors.e0.getEntitySpecificCommand(0);
cachedNBT.setNBT("e0", a),
a.length > 0 && (e += " {" + a.substring(1) + "}");
} else if (
"execute if entity" == currentCommand ||
"kill" == currentCommand
) {
a = entityDescriptors.e0.getEntitySpecificCommand(0);
cachedNBT.setNBT("e0", a),
a.length > 0 && $("#nbt0").val("{" + a.substring(1) + "}"),
(e += getTargetSelectorString1p13());
} else if ("give" == currentCommand) {
(e += getTargetSelectorString1p13()),
(a = getItemNBTForGive1p13("GiveItem0")).length > 0 &&
(e += a);
} else if ("teleport" == currentCommand) {
if (
((e += getTargetSelectorStringGeneric("entity0") + " "),
"block" == $("#target0").val())
)
e +=
(t = getCoordsString("Block"))[0] +
" " +
t[1] +
" " +
t[2];
else e += getTargetSelectorStringGeneric("target0");
} else if ("replaceitem" == currentCommand) {
if ("entity" == $("#replaceitem").val())
e +=
"entity " +
getTargetSelectorString1p13() +
" " +
$("#Slot0").val();
else
(e +=
"block " +
(t = getCoordsString("Block"))[0] +
" " +
t[1] +
" " +
t[2]),
$("#Slot0").val().length
? (e += " container." + $("#Slot0").val())
: (e += " container.0");
(a = getItemNBTForGive1p13("GiveItem0")).length > 0 && (e += a);
} else if ("setblock" == currentCommand) {
(e +=
(t = getCoordsString("Block"))[0] +
" " +
t[1] +
" " +
t[2] +
" "),
settings.namespace.length &&
(e += settings.namespace + ":");
let a = block.getBlockNBT();
(e +=
$("#block").val() +
getBlockStates($("#block").val(), "BS0") +
a),
cachedNBT.setBlockNBT("BS0", a),
(e += " " + $("#blockHandle").val());
} else if ("fill" == currentCommand) {
(e +=
(t = getCoordsString("Corner"))[0] +
" " +
t[1] +
" " +
t[2]),
(e +=
" " +
(t = getCoordsString("Opposite"))[0] +
" " +
t[1] +
" " +
t[2] +
" "),
settings.namespace.length &&
(e += settings.namespace + ":");
let a = block.getBlockNBT();
(e +=
$("#block").val() +
getBlockStates($("#block").val(), "BS0") +
a),
cachedNBT.setBlockNBT("BS0", a),
(e += " " + $("#blockHandle").val()),
-1 != $("#replaceblock").val() &&
((e += " "),
settings.namespace.length &&
(e += settings.namespace + ":"),
(e +=
$("#replaceblock").val() +
getBlockStates(
$("#replaceblock").val(),
"ReplaceBS0"
)));
} else if ("loot" == currentCommand) {
if (
((e += $("#targetType").val()),
"spawn" == $("#targetType").val() ||
"insert" == $("#targetType").val() ||
"replace block" == $("#targetType").val()
? (e +=
" " +
(t = getCoordsString("Loot"))[0] +
" " +
t[1] +
" " +
t[2])
: ("give" != $("#targetType").val() &&
"replace entity" != $("#targetType").val()) ||
(e +=
" " + getTargetSelectorStringGeneric("entity0")),
("replace entity" != $("#targetType").val() &&
"replace block" != $("#targetType").val()) ||
(e += " " + $("#slot").val()),
(e += " " + $("#sourceType").val()),
"loot" == $("#sourceType").val() ||
"fish" == $("#sourceType").val())
) {
if (
((e += " " + $("#LootTable").val()),
"fish" == $("#sourceType").val())
)
(e +=
" " +
(t = getCoordsString("Fishing"))[0] +
" " +
t[1] +
" " +
t[2]),
(e += (a = getItemNBTForGive1p13(
"FishingTool0"
)).substr(0, a.lastIndexOf(" ")));
} else if ("mine" == $("#sourceType").val()) {
(e +=
" " +
(t = getCoordsString("Mining"))[0] +
" " +
t[1] +
" " +
t[2]),
(e += (a = getItemNBTForGive1p13("MiningTool0")).substr(
0,
a.lastIndexOf(" ")
));
} else
"kill" == $("#sourceType").val() &&
(e += " " + getTargetSelectorStringGeneric("kill0"));
} else if ("bossbar" == currentCommand)
(e += $("#action").val() + " " + $("#ID0").val().toLowerCase()),
"set" == $("#action").val()
? ((e += " " + $("#set").val()),
"name" == $("#set").val()
? (e +=
" " +
tellrawJson.getJsonForTellraw(
"bossbarPane"
))
: "players" == $("#set").val() &&
(e +=
" " +
getVersionSpecificTargetSelectorString()))
: (e +=
" " +
tellrawJson.getJsonForTellraw("bossbarPane"));
else if ("team" == currentCommand)
(e +=
$("#add_modify").val() +
" " +
($("#team").val() || "TeamName") +
" "),
"modify" == $("#add_modify").val() &&
(e += $("#Part0").val() + " "),
(e += tellrawJson.getJsonForTellraw("teamPane"));
else if ("scoreboard" == currentCommand)
(e +=
"objectives " +
$("#add_modify").val() +
" " +
($("#objective").val() || "ObjectiveName") +
" "),
"add" == $("#add_modify").val()
? (e += $("#Criteria0").val() || "dummy")
: (e += "displayname"),
(e +=
" " + tellrawJson.getJsonForTellraw("scoreboardPane"));
else if ("tellraw" == currentCommand || "title" == currentCommand)
(e += getVersionSpecificTargetSelectorString()),
"title" == currentCommand &&
(e += " " + $("#titleType").val()),
(e += " " + tellrawJson.getJsonForTellraw("tellrawPane"));
else if ("playsound" == currentCommand) {
e +=
$("#sound").val() +
" " +
$("#source").val() +
" " +
getVersionSpecificTargetSelectorString();
var o =
(t = getCoordsString("Position"))[0] +
" " +
t[1] +
" " +
t[2];
$("#Position").val().length &&
((e += " " + o),
$("#volume").val().length &&
((e += " " + $("#volume").val()),
$("#pitch").val().length &&
((e += " " + $("#pitch").val()),
$("#minvolume").val().length &&
(e += " " + $("#minvolume").val()))));
} else if ("effect" == currentCommand)
(e +=
"give " + getTargetSelectorStringGeneric("entity0") + " "),
settings.namespace.length &&
(e += settings.namespace + ":"),
(e += statuseffects1p13[$("#effect").val()]),
$("#seconds").val().length &&
((e += " " + $("#seconds").val()),
$("#amplifier").val().length &&
((e += " " + $("#amplifier").val()),
"true" == $("#hideParticles").val() &&
(e += " true")));
else if ("data merge block" == currentCommand) {
t = getCoordsString("Block");
let a = block.getBlockNBT();
cachedNBT.setBlockNBT("BS0", a),
(e += t[0] + " " + t[1] + " " + t[2] + " " + a);
} else if ("data merge entity" == currentCommand) {
e += getTargetSelectorString1p13();
a = entityDescriptors.e0.getEntitySpecificCommand(0);
cachedNBT.setNBT("e0", a),
a.length > 0 && (e += " {" + a.substr(1) + "}");
} else if ("particle" == currentCommand) {
e += $("#name").val();
var n = getCoordsString("Location");
n = n[0] + " " + n[1] + " " + n[2];
var s = getCoords("xd", "yd", "zd", !1),
i = " " + s[0] + " " + s[1] + " " + s[2];
if ("dust" == $("#name").val()) {
var r = $("#mobSpell_color").val();
e +=
" " +
parseFloat(hexToR(r) / 255).toFixed(3) +
" " +
parseFloat(hexToG(r) / 255).toFixed(3) +
" " +
parseFloat(hexToB(r) / 255).toFixed(3) +
" " +
$("#dustSize").val() +
" " +
n +
i;
} else
"falling_dust" == $("#name").val() ||
"block" == $("#name").val()
? (e +=
" " +
$("#block").val() +
getBlockStates($("#block").val(), "BS0"))
: "item" == $("#name").val() &&
(e += " " + $("#item0").val()),
(e += " " + n + i);
(e += " " + $("#speed").val()),
$("#count").val().length &&
((e +=
" " + $("#count").val() + " " + $("#mode").val()),
$("#TSPane").is(":visible") &&
(e +=
" " +
getVersionSpecificTargetSelectorString()));
}
outputCharacterCount(e),
$("#commandOutput-ta").val(e),
$("#commandString").val(e);
} catch (e) {
$("#commandOutput-ta").val(
"Could not generate command.\n" + e.toString()
);
}
}
}
function outputCharacterCount(e) {
let t = "";
0 == e.length
? $("#outputLength").html("Loot Table")
: ($("#outputLength").html(
"Command Output: " + e.length + " characters"
),
(t =
e.length <= 256
? "This command is short enough to run in the chat bar. (<256)"
: e.length <= 32500
? "This command is too long to run in the chat bar. It can only be executed from a command block or function file. (>256)"
: "This command is too long to run in the chat bar or a command block. It can only be executed from a function file. (>32500)")),
(document.getElementById("outputLength").title = t);
}
function clearOutputCharacterCount() {
(document.getElementById("outputLength").title = ""),
$("#outputLength").html("Command Output");
}
function getVersionSpecificTargetSelectorString() {
return getTargetSelectorString1p13();
}
function getDataValue(e, t) {
var a = "";
if (e in blockStates) {
var o = replaceAll("DataValue", "BS", t),
n = blockStates[e];
for (var s in n)
"unset" != $("#" + s + o).val() &&
(a += "," + s + "=" + $("#" + s + o).val());
if (a.length > 0) return a.substr(1);
}
return "";
}
function getBlockStates(e, t) {
if (e in blockStates) {
var a = blockStates[e],
o = "";
for (var n in a)
"unset" != $("#" + n + t).val() &&
(o += "," + n + "=" + $("#" + n + t).val());
return 0 == o.length ? "" : "[" + o.substr(1) + "]";
}
return "";
}
function getCoordsString(e) {
if (
"" ==
$("#" + e)
.val()
.trim()
)
return ["~", "~", "~"];
var t = $("#" + e)
.val()
.trim()
.split(" ");
for (0 == t.length && (t = []); t.length < 3; ) t.push("~");
return t;
}
function getCoords(e, t, a, o) {
return (
$("#" + e).val().length > 0 && $("#" + o).is(":checked")
? (x = "~" + $("#" + e).val())
: $("#" + e).val().length > 0 && !$("#" + o).is(":checked")
? (x = $("#" + e).val())
: 0 == $("#" + e).val().length && $("#" + o).is(":checked")
? (x = "~")
: (x = "0"),
$("#" + t).val().length > 0 && $("#" + o).is(":checked")
? (y = "~" + $("#" + t).val())
: $("#" + t).val().length > 0 && !$("#" + o).is(":checked")
? (y = $("#" + t).val())
: 0 == $("#" + t).val().length && $("#" + o).is(":checked")
? (y = "~")
: (y = "0"),
$("#" + a).val().length > 0 && $("#" + o).is(":checked")
? (z = "~" + $("#" + a).val())
: $("#" + a).val().length > 0 && !$("#" + o).is(":checked")
? (z = $("#" + a).val())
: 0 == $("#" + a).val().length && $("#" + o).is(":checked")
? (z = "~")
: (z = "0"),
[x, y, z]
);
}
function bindGenCom(e, t) {
$("#" + e).bind(t, function () {
generateCommand();
});
}
function createComponent(e, t, a, o) {
var n = a.id || t + o,
s = a.eventClass || "",
i = a.cssClass || "fLabel200",
r = "string" == a.format ? "bigTF" : a.fwClass || "medTF",
l = a.label || t,
c = a.value || "";
if (
(-1 != e.indexOf("entityPane") && (e += a.align || "L"),
"panel" != a.type)
) {
if (
($("#" + e).append("<br><span class='" + i + "'>" + l + "</span>"),
"text" == a.type)
)
$("#" + e).append(
"<input type='text' value='" +
c +
"' id='" +
n +
"' class='" +
s +
" " +
r +
"'>"
),
bindGenCom(n, "keyup", s);
else if ("UUIDArray" == a.type)
for (let t = 0; t < 4; t++)
$("#" + e).append(
"<input type='text' id='" +
n +
t +
"' class='" +
s +
" medTF'>"
),
bindGenCom(n + t, "keyup", s);
else if ("choice" == a.type) {
for (var d = "", p = 0; p < a.values.length; p++)
d +=
"<option value='" +
a.values[p][0] +
"'>" +
a.values[p][1] +
"</option>";
$("#" + e).append(
"<select id='" + n + "' class='" + s + "'>" + d + "</select>"
),
bindGenCom(n, "change");
} else if ("ticks" == a.type)
$("#" + e).append(
"<input type='text' value='" +
c +
"' id='" +
n +
"' class='" +
s +
" " +
r +
"'>" +
mkTicksSecs(n + "TT")
),
bindGenCom(n, "keyup");
else if ("choicetext" == a.type) {
$("#" + e).append(
"<input type='text' value='" +
c +
"' id='" +
n +
"_txt' class='" +
s +
" " +
r +
"'>"
),
bindGenCom(n + "_txt", "keyup");
for (d = "", p = 0; p < a.values.length; p++)
$.isArray(a.values[p])
? (d +=
"<option value='" +
a.values[p][0] +
"'>" +
a.values[p][1] +
"</option>")
: (d +=
"<option value='" +
a.values[p] +
"'>" +
a.values[p] +
"</option>");
$("#" + e).append(
"<select id='" +
n +
"_choice' class='" +
s +
"'>" +
d +
"</select>"
),
bindGenCom(n + "_choice", "change");
} else if ("jsonFormats" == a.type) {
for (
var m = ["unset", "true", "false"],
h = [
"bold",
"italic",
"underlined",
"strikethrough",
"obfuscated",
],
g =
((d =
"<table class='aTable' style='display:inline;position:relative;left:-80px'><tr><td></td><td width=40 align=left>Unset</td><td width=40 align=left>True</td><td width=40 align=left>False</td></tr>"),
0);
g < h.length;
g++
) {
d +=
"<tr><td align='right'>" +
(l = h[g].charAt(0).toUpperCase() + h[g].slice(1)) +
"</td>";
for (p = 0; p < m.length; p++)
d +=
"<td><input type='radio' id='" +
n +
h[g] +
m[p] +
"' name='" +
n +
h[g] +
"' value='" +
m[p] +
"' class='" +
s +
"' title='" +
m[p] +
"'></td>";
$("#" + n + h[g] + m[0]).prop("checked", !0), (d += "</tr>");
}
(d += "</table>"), $("#" + e).append(d);
for (g = 0; g < h.length; g++)
$("#" + n + h[g] + m[0]).prop("checked", !0);
} else if ("makeSelect" == a.type) {
for (d = "", p = 0; p < a.values.length; p++)
d +=
"<option value='" +
a.values[p] +
"'>" +
a.values[p] +
"</option>";
$("#" + e).append(
"<select id='" + n + "' class='" + s + "'>" + d + "</select>"
),
bindGenCom(n, "change");
} else if ("makeSelectWithIndexAndValues" == a.type) {
for (d = "", p = 0; p < a.values.length; p++)
d +=
"<option value='" +
a.values[p][0] +
"'>" +
a.values[p][1] +
"</option>";
$("#" + e).append(
"<select id='" + n + "' class='" + s + "'>" + d + "</select>"
),
bindGenCom(n, "change");
} else if ("makeSelectWithIndexes" == a.type)
$("#" + e).append(
"" +
makeSelectWithIndexes(
n,
a.values,
void 0 != a.hasUnset && a.hasUnset
)
),
bindGenCom(n, "change");
else if ("colorChooser" == a.type) {
$("#" + e).append(
"<input type='checkbox' id='" +
n +
"_customcol' ><span id='" +
n +
"_colsettings'><input id='" +
n +
"_color' value='FF0000' onchange='generateCommand()'></span>"
),
$("#" + n + "_customcol").bind("change", function () {
enableCustomCol(n + "_customcol", n);
}),
new jscolor.color(
document.getElementById(n + "_color"),
{}
).fromString("FF0000"),
$("#" + n + "_colsettings").hide();
} else if ("cb" == a.type)
$("#" + e).append(
"<input type='checkbox' id='" + n + "' class='" + s + "'>"
),
bindGenCom(n, "change");
else if ("tileselect" == a.type) {
$("#" + e).append(
"<span id='" + n + "Pane' class='tileSelectControl'></span>"
);
var _ = "<select id='" + n + "'>";
for (p = 0; p < tiles.length; p++)
_ +=
"<option value='" +
tiles[p][0] +
"'>" +
tiles[p][1] +
"</option>";
(_ +=
"</select><input type='text' id='" +
n +
"_filter' class='" +
r +
"' placeholder='Filter'><a href=\"javascript:addTile('" +
n +
"')\" class='greenPlus'>+</a><span id='" +
n +
"TilePane'></span>"),
$("#" + n + "Pane").append(_),
$("#" + n + "_filter").bind("keyup", function () {
updateTileSelectOptions("#" + n);
}),
$("#" + n).bind("change", function () {
generateCommand();
});
} else if ("blockSelect" == a.type) {
for (_ = "<select id='" + n + "'>", p = 0; p < tiles.length; p++)
_ +=
"<option value='" +
tiles[p][0] +
"'>" +
tiles[p][1] +
"</option>";
(_ +=
"</select><input type='text' id='" +
n +
"_filter' class='" +
r +
"' placeholder='Filter'>" +
makeTip("tile", "Select")),
$("#" + e).append(_),
$("#" + n + "_filter").bind("keyup", function () {
updateTileSelectOptions("#" + n);
}),
$("#" + n).bind("change", function () {
generateCommand();
});
} else if ("statusEffects" == a.type)
$("#" + e).append(
mkShowHide(n + "Pane", n + "SH") +
"<div id='" +
n +
"Pane' class='AEControl roundedDiv'></div>"
),
makeStatusEffects(n + "Pane", n),
showHide(n + "Pane", n + "SH");
else if ("stewEffects" == a.type)
$("#" + e).append(
mkShowHide(n + "Pane", n + "SH") +
"<div id='" +
n +
"Pane' class='AEControl roundedDiv'></div>"
),
makeStewEffects(n + "Pane", n);
else if ("passenger" == a.type)
$("#" + e).append(
"<br><span style='display:inline;white-space: nowrap;'><a href=\"javascript:addPassenger('" +
n +
"Pane')\" class='greenPlus'>+</a><div id='" +
n +
"Pane' class='PassengerPane'></div></span>"
);
else if ("spawnPotential" == a.type)
$("#" + e).append(
"<span style='display:inline;white-space: nowrap;'><a href=\"javascript:addSpawnPotential('" +
n +
"Pane')\" class='greenPlus'>+</a><div id='" +
n +
"Pane' class='SpawnPotentialPane'></div></span>"
);
else if ("customNameJSON" == a.type)
$("#" + e).append(
mkShowHide(n + "EntityName", n + "EntityNameSH") +
"<div id='" +
n +
"EntityName' class='roundedDiv'></div>"
),
createTellrawForm(n, o, "EntityName", !0),
showHide(n + "EntityName", n + "EntityNameSH"),
$("#" + n + "EntityName br:first").remove(),
$("#" + n + "EntityName br:first").remove();
else if ("multiitem" == a.type)
$("#" + e).append(
mkShowHide(n + "MultiItemPane", n + "SH") +
"<div id='" +
n +
"MultiItemPane' class='multiitemSelectControl roundedDiv'></div>"
),
$("#" + n + "MultiItemPane").append(
makeButton(
"Add Item",
"addMultiItem('" +
n +
"MultiItemPane'," +
(a.slotNumbers ? 1 : 0) +
")",
"Targeted player must have all of these selected items in their inventory."
)
),
a.hide && showHide(n + "MultiItemPane", n + "SH");
else if ("itemselect" == a.type)
$("#" + e).append(
mkShowHide(n + "Pane", n + "SH") +
"<div id='" +
n +
"Pane' class='itemSelectControl " +
t +
" roundedDiv'></div>"
),
a.forceConstruct || settings.loadItemUI
? (createItemSelectComponent(
n,
a,
r,
s,
o,
a.forceConstruct
),
void 0 != cachedNBT.getNBT(n) &&
($("#" + n).val(cachedNBT.getItemType(n)),
$("#" + n).trigger("change")))
: closeItemSelectComponent(n, a, r, s, o),
a.hide && showHide(n + "Pane", n + "SH");
else if ("fwExplosion" == a.type)
$("#" + e).append(
"<span style='display:inline;white-space: nowrap;'><a href=\"javascript:addExplosion('" +
n +
"Pane')\" class='greenPlus'>+</a><div id='" +
n +
"Pane' class='ExplosionPane'></div></span>"
);
else if ("villTrade" == a.type)
$("#" + e).append(
"<span style='display:inline;white-space: nowrap;'><a href=\"javascript:addTrade('" +
n +
"Pane'," +
o +
")\" class='greenPlus'>+</a><div id='" +
n +
"Pane' class='TradePane'></div></span>"
);
else if ("gossips" == a.type)
$("#" + e).append(
"<span style='display:inline;white-space: nowrap;'><a href=\"javascript:addGossip('" +
n +
"Pane'," +
o +
")\" class='greenPlus'>+</a><div id='" +
n +
"Pane' class='GossipPane'></div></span>"
);
else if ("memories" == a.type) {
$("#" + e).append(
"<span style='display:inline;white-space: nowrap;'>" +
mkShowHide(n + "Pane", n + "PaneSH") +
"<div id='" +
n +
"Pane' class='roundedDiv'></div>"
),
showHide(n + "Pane", n + "MemoriesSH");
var u = ["meeting_point", "home", "job_site"];
for (p = 0; p < u.length; p++) {
var b = n + u[p];
$("#" + n + "Pane").append(
"<div id=" +
b +
" class='MemoriesControl roundedDiv'>" +
u[p] +
"</div>"
),
createComponent(
b,
"dimension",
{
id: b + "Dim",
type: "makeSelect",
values: ["overworld", "the_end", "the_nether"],
format: "special",
cssClass: "fLabel70",
tip: "memories",
align: "R",
},
o
),
createComponent(
b,
"X",
{
id: b + "X",
type: "text",
format: "int",
cssClass: "fLabel70",
tip: "memories",
},
o
),
createComponent(
b,
"Y",
{
id: b + "Y",
type: "text",
format: "int",
cssClass: "fLabel70",
},
o
),
createComponent(
b,
"Z",
{
id: b + "Z",
type: "text",
format: "int",
cssClass: "fLabel70",
},
o
);
}
} else if ("beeforHive" == a.type)
$("#" + e).append(
"<span style='display:inline;white-space: nowrap;'><a href=\"javascript:addBee('" +
n +
"Pane')\" class='greenPlus'>+</a><div id='" +
n +
"Pane' class='BeePane'></div></span>"
);
else if ("itemForRecipes" == a.type) {
$("#" + e).append(
"<span id='" + n + "Pane' class='tileSelectControl'></span>"
);
for (
_ = "<select id='" + n + "'>", p = 0;
p < knowledgeList.length;
p++
)
_ +=
"<option value='" +
knowledgeList[p] +
"'>" +
knowledgeList[p] +
"</option>";
(_ +=
"</select><input type='text' id='" +
n +
"_filter' class='" +
r +
"' placeholder='Filter'><a href=\"javascript:addTile('" +
n +
"')\" class='greenPlus'>+</a><span id='" +
n +
"TilePane'></span>"),
$("#" + n + "Pane").append(_),
$("#" + n + "_filter").bind("keyup", function () {
updateItemSelectForRecipes("#" + n);
});
}
void 0 != a.tip && $("#" + e).append(makeTip(a.tip, t));
} else {
var f = a.showHide ? mkShowHide(a.panelID, a.panelID + "SH") : "";
a.label
? $("#" + e).append(
"<br><span class='" +
i +
"'>" +
l +
"</span>" +
f +
"<span id='" +
a.panelID +
"'></span>"
)
: $("#" + e).append(
"<br>" + f + "<span id='" + a.panelID + "'></span>"
);
}
}
function jsonHexColorUpdate(e, t) {
"Hex Code" == $("#" + e + "color").val()
? $("#" + e + "_colsettings").show()
: $("#" + e + "_colsettings").hide(),
"book" == t
? bookUpdate(e)
: "sign" == t
? signUpdate(e)
: tellrawUpdate(e);
}
function addMultiItem(e, t) {
for (var a = 0; $("#" + e + "_" + a).length; ) a++;
var o = e + "_" + a;
createComponent(
e,
o + "Slot",
{
type: "itemselect",
format: "special",
cssClass: "fLabel40",
label: "Item",
id: o,
forceConstruct: !0,
hasSlot: t,
},
-1
);
}
function closeItemSelectComponent(e, t, a, o, n) {
$("#" + e + "Pane").html(
"<button id='createItemUI_" + e + "'class='showHide'>Edit Item</button>"
),
$("#createItemUI_" + e).bind("click", function () {
createItemSelectComponent(e, t, a, o, n, !1),
void 0 != cachedNBT.getNBT(e) &&
($("#" + e).val(cachedNBT.getItemType(e)),
$("#" + e).trigger("change"));
});
let s = cachedNBT.getNBT(e);
void 0 != s &&
($("#" + e + "Pane").append("<div class='itemNBT'>" + s + "</div>"),
void 0 != cachedNBT.dropChance[e] &&
$("#" + e + "Pane").append(
"<br>Drop Chance=" + cachedNBT.dropChance[e]
));
}
function createItemSelectComponent(e, t, a, o, n, s) {
cachedNBT.setMetaForNBT(e, t, a, o, n);
var i = "<span class='fLabel100'>Item</span><select id='" + e + "'>",
r = 0;
t.addNoneAfterUnset &&
((r = 1),
(i +=
"<option value='-1'>unset</option><option value='none'>none</option>"));
for (var l = r; l < items.length; l++)
i += "<option value='" + items[l][0] + "'>" + items[l][1] + "</option>";
(i +=
"</select><input type='text' class='" +
a +
"' id='" +
e +
"_filter' placeholder='Filter'><a class='redX' href=\"javascript:unsetItem('" +
e +
"')\">&#9747;</a><a class='redX' href=\"javascript:copyItemNBT('" +
e +
"')\">Copy</a><a class='redX' href=\"javascript:pasteItemNBT('" +
e +
"')\">Paste</a>"),
s ||
(i +=
"<button id='closeItemUI_" +
e +
"' class='showHide'>Close Item</button>"),
(i += "<div id='" + e + "ItemPane'></div>"),
$("#" + e + "Pane").html(i),
s ||
$("#closeItemUI_" + e).bind("click", function () {
cachedNBT.setMetaForNBT(e, t, a, o, n);
getItemNBT(e);
closeItemSelectComponent(e, t, a, o, n);
}),
$("#" + e + "_filter").bind("keyup", function () {
updateItemSelectOptions("#" + e);
}),
$("#" + e).bind("change", function () {
if (($("#" + e + "ItemPane").html(""), "-1" != $("#" + e).val())) {
let l = cachedNBT.getNBT(e);
$("#" + e + "ItemPane").append(
"<span class='fLabel100'>Name</span>" +
mkShowHide(e + "ItemName", e + "ItemNameSH") +
"<div id='" +
e +
"ItemName' class='roundedDiv'></div>"
),
createTellrawForm(e, n, "ItemName", !0, "ItemName"),
showHide(e + "ItemName", e + "ItemNameSH"),
$("#" + e + "ItemName br:first").remove(),
$("#" + e + "ItemName br:first").remove(),
$("#" + e + "ItemPane").append(
"<br><span class='fLabel100'>Lore</span>" +
mkShowHide(e + "Lore", e + "LoreSH") +
"<div id='" +
e +
"Lore' class='roundedDiv'></div>"
),
createTellrawForm(e, n, "Lore", !0, "Lore"),
showHide(e + "Lore", e + "LoreSH"),
$("#" + e + "Lore br:first").remove(),
$("#" + e + "Lore br:first").remove(),
isDurable($("#" + e).val()) &&
(createComponent(
e + "ItemPane",
"Damage",
{
id: e + "Damage",
type: "text",
cssClass: "fLabel100",
tip: "item.Damage",
},
n
),
createComponent(
e + "ItemPane",
"RepairCost",
{
id: e + "RepairCost",
type: "text",
cssClass: "fLabel100",
tip: "item.RepairCost",
},
n
),
createComponent(
e + "ItemPane",
"Unbreakable",
{
id: e + "Unbreakable",
type: "choice",
values: unsetTrueFalse,
format: "b",
cssClass: "fLabel100",
tip: "item.Unbreakable",
},
n
)),
void 0 != t.doDropChance &&
t.doDropChance &&
(createComponent(
e + "ItemPane",
"DropChance",
{
id: e + "DropChance",
type: "text",
cssClass: "fLabel100",
tip: "item.DropChance",
},
n
),
void 0 != cachedNBT.dropChance[e] &&
$("#" + e + "DropChance").val(
cachedNBT.dropChance[e]
)),
void 0 == t.noCount &&
createComponent(
e + "ItemPane",
"Count",
{
id: e + "Count",
type: "text",
cssClass: "fLabel100",
tip: "item.Count",
},
n
),
1 == t.hasSlot &&
createComponent(
e + "ItemPane",
"Slot",
{
id: e + "Slot",
type: "text",
cssClass: "fLabel100",
tip: "item.Slot",
},
n
),
createComponent(
e + "ItemPane",
"CustomModelData",
{
id: e + "CustomModelData",
type: "text",
cssClass: "fLabel100",
tip: "item.CustomModelData",
fwClass: "verybigTF",
},
n
),
createComponent(
e + "ItemPane",
"CustomTags",
{
id: e + "CustomTags",
type: "text",
cssClass: "fLabel100",
tip: "item.CustomTags",
fwClass: "verybigTF",
},
n
),
createComponent(
e + "ItemPane",
"CanPlaceOn",
{
id: e + "CanPlaceOn",
type: "tileselect",
cssClass: "fLabel100",
tip: "item.CanPlaceOn",
},
n
),
createComponent(
e + "ItemPane",
"CanDestroy",
{
id: e + "CanDestroy",
type: "tileselect",
cssClass: "fLabel100",
tip: "item.CanDestroy",
},
n
),
$("#" + e + "ItemPane").append(
"<br><span class='fLabel100'>HideFlags</span>" +
mkShowHide(e + "HideFlags", e + "HideFlagsSH") +
"<div id='" +
e +
"HideFlags' class='HideFlagsControl roundedDiv'></div>" +
makeTip("item.HideFlags")
);
for (var a = 0; a < flags.length; a++)
$("#" + e + "HideFlags").append(
"<span style='width:400;'><span class='fLabel100'>" +
flags[a] +
"</span><input type='checkbox' id='" +
e +
"HF" +
flags[a] +
"' class='" +
o +
"'></span>"
),
bindGenCom(e + "HF" + flags[a], "change");
if (
(showHide(e + "HideFlags", e + "HideFlagsSH"),
$("#" + e + "ItemPane").append(
"<br><span class='fLabel100'>Enchantments</span>" +
mkShowHide(
e + "Enchantments",
e + "EnchantmentsSH"
) +
"<div id='" +
e +
"Enchantments' class='EnchantmentsControl roundedDiv'></div>" +
makeTip("item.Enchantments")
),
makeEnchantments(e + "Enchantments", !1, $("#" + e).val()),
showHide(e + "Enchantments", e + "EnchantmentsSH"),
$("#" + e + "ItemPane").append(
"<br><span class='fLabel100'>Modifiers</span>" +
mkShowHide(e + "AM", e + "AMSH") +
"<div id='" +
e +
"AM' class='roundedDiv AMControl'></div>" +
makeTip("item.AttributeModifiers")
),
makeAMUI(e + "AM"),
showHide(e + "AM", e + "AMSH"),
$("#" + e).val() in blockStates)
) {
$("#" + e + "ItemPane").append(
"<br><span class='fLabel100'>Block States</span>" +
mkShowHide(e + "BlockStates", e + "BlockStatesSH") +
"<div id='" +
e +
"BlockStates' class='AEControl roundedDiv'></div>" +
makeTip("item.BlockStates")
),
showHide(e + "BlockStates", e + "BlockStatesSH");
var s = blockStates[$("#" + e).val()];
for (var i in s) {
var r = s[i].slice();
$.isArray(r[0])
? (r.unshift(["unset", "unset"]),
createComponent(
e + "BlockStates",
i,
{
id: i + e,
cssClass: "fLabel100",
type: "choice",
values: r,
},
0
))
: (r.unshift("unset"),
createComponent(
e + "BlockStates",
i,
{
id: i + e,
cssClass: "fLabel100",
type: "makeSelect",
values: r,
},
0
));
}
$("#" + e + "BlockStates br:first").remove();
}
loadItemSpecificOptions(e, n),
void 0 != l &&
((cachedNBT.nbt[e] = l),
cachedNBT.loadCachedItemNBT(e));
} else delete cachedNBT.nbt[e];
generateCommand();
});
}
function unsetItem(e) {
$("#" + e).val("-1"), $("#" + e).trigger("change");
}
function loadItemNBTIntoSlot(e, t, a, o) {
if (
(void 0 != e.Count && $("#" + a + "Count").val(parseInt(e.Count.val)),
void 0 != e.Damage && $("#" + a + "Damage").val(parseInt(e.Damage.val)),
void 0 != e.tag)
) {
for (
var n = e.tag.val, s = ["CanPlaceOn", "CanDestroy"], i = 0;
i < s.length;
i++
)
if (($("#" + a + s[i] + "TilePane").html(""), void 0 != n[s[i]]))
for (var r = 0; r < n[s[i]].val.length; r++)
addTileFromNBTLoad(
a + s[i],
extractMinecraftID(n[s[i]].val[r])
);
var l = [
"display",
"HideFlags",
"Damage",
"RepairCost",
"Unbreakable",
"CustomModelData",
"Enchantments",
"AttributeModifiers",
"BlockStateTag",
"CanPlaceOn",
"CanDestroy",
"StoredEnchantments",
"SkullOwner",
"title",
"author",
"generation",
"resolved",
"pages",
"BlockEntityTag",
"map",
"Fireworks",
"Explosion",
"EntityTag",
"CustomPotionEffects",
"Potion",
"CustomPotionColor",
"ChargedProjectiles",
"Effects",
"BlockStateTag",
"Recipes",
"Charged",
"LodestoneDimension",
"LodestonePos",
"LodestoneTracked",
],
c = "";
for (key in n)
-1 == l.indexOf(key) &&
(n[key].val instanceof Object
? (c += "," + key + ":" + compoundToNBTString(n[key].val))
: (c += "," + key + ":" + n[key].val));
if (
(c.length && $("#" + a + "CustomTags").val(c.substr(1)),
void 0 != n.display)
) {
var d = n.display.val;
if (void 0 != d.Name) {
(deferJSONOutput = !0),
(deferOutput = !0),
tellrawJson.makeNewTellraw(a + "ItemName");
try {
p = JSON.parse(JSON.parse('"' + d.Name.val + '"'));
} catch (b) {
p = JSON.parse(
JSON.parse(
'"' +
d.Name.val
.replace(/"/g, '\\"')
.replace(/\\'/g, "'") +
'"'
)
);
}
importTellrawJSON(a + "ItemName", p),
showHide(a + "ItemName", a + "ItemNameSH"),
(deferJSONOutput = !1),
(deferOutput = !1),
tellrawUpdate(a + "ItemName");
}
if (void 0 != d.Lore) {
var p;
(deferJSONOutput = !0),
(deferOutput = !0),
tellrawJson.makeNewTellraw(a + "Lore");
try {
loadLoreFromNBT(a + "Lore", d.Lore.val);
} catch (b) {
p = [];
for (r = 0; r < d.Lore.val.length; r++)
p.push({ text: d.Lore.val[r] + " " });
importTellrawJSON(a + "Lore", p);
}
showHide(a + "Lore", a + "LoreSH"),
(deferJSONOutput = !1),
(deferOutput = !1),
tellrawUpdate(a + "Lore");
}
void 0 != d.color && loadColorIntNBT(a + "Color", d.color.val);
}
if (void 0 != n.HideFlags) {
showHide(a + "HideFlags", a + "HideFlagsSH");
var m = [],
h = 1;
m.push(0);
for (r = 0; r < flags.length; r++) m.push(h), (h *= 2);
var g = n.HideFlags.val;
for (r = flags.length - 1; r >= 0; r--)
g >= m[r + 1] &&
((g -= m[r + 1]),
$("#" + a + "HF" + flags[r]).prop("checked", !0));
}
if (
(void 0 != n.Damage &&
$("#" + a + "Damage").val(parseInt(n.Damage.val)),
void 0 != n.RepairCost &&
$("#" + a + "RepairCost").val(parseInt(n.RepairCost.val)),
void 0 != n.Unbreakable &&
$("#" + a + "Unbreakable").val(parseInt(n.Unbreakable.val)),
void 0 != n.CustomModelData &&
$("#" + a + "CustomModelData").val(n.CustomModelData.val),
void 0 != n.Enchantments)
) {
showHide(a + "Enchantments", a + "EnchantmentsSH");
var _ = n.Enchantments.val;
for (r = 0; r < _.length; r++) {
if (void 0 != (b = _[r]).id) {
var u = getEnchantNumFromString(b.id.val);
if (!$("#" + a + "Enchantments_enc_" + u).length) {
$("#" + a + "Enchantments_enc_showAll").prop(
"checked",
!0
),
makeEnchantments(a + "Enchantments", !0, t);
break;
}
} else
$("#" + a + "Enchantments_enc_glintOnly").prop(
"checked",
!0
);
}
if (void 0 != b.id)
for (r = 0; r < _.length; r++) {
var b;
u = getEnchantNumFromString((b = _[r]).id.val);
$("#" + a + "Enchantments_enc_" + u).prop("checked", !0),
$(
"#" + a + "Enchantments_enc_" + u + "_lvl_span"
).show(),
$("#" + a + "Enchantments_enc_" + u + "_lvl").val(
parseInt(b.lvl.val)
);
}
}
if (void 0 != n.AttributeModifiers) {
$("#" + a + "AMtable")
.find(".amRow")
.remove(),
showHide(a + "AM", a + "AMSH");
var f = n.AttributeModifiers.val;
for (r = 0; r < f.length; r++) {
var k = f[r],
v = k.AttributeName.val;
(name = v.substr(v.indexOf(".") + 1)),
-1 == attributeModifiers116.indexOf(name) &&
(name =
attributeModifiers116[
attributeModifiers.indexOf(name)
]);
var y = a + "AM_" + addAM(a + "AM", !0);
$("#" + y + "_mods").val(name),
void 0 != k.Amount &&
$("#" + y + "_amount").val(k.Amount.val),
void 0 != k.Operation &&
$("#" + y + "_operation").val(k.Operation.val),
void 0 != k.Slot && $("#" + y + "_slot").val(k.Slot.val),
void 0 != k.UUIDLeast &&
void 0 != k.UUIDMost &&
convertLeastMostToArray(
y + "_UUID",
k.UUIDLeast.val,
k.UUIDMost.val
),
void 0 != k.UUID &&
loadUUIDArrayNBT(y + "_UUID", k.UUID.val);
}
checkAMconflicts(a + "AM");
}
if (void 0 != n.BlockStateTag) {
showHide(a + "BlockStates", a + "BlockStatesSH");
var w = n.BlockStateTag.val;
for (key in w) $("#" + key + a).val(w[key].val);
}
}
void 0 != n && loadItemSpecificNBT(n, t, a, o);
}
function convertHexUUIDToArray(e, t) {
const a = new DataView(new ArrayBuffer(16));
let o = [8, 4, 4, 4, 12];
const n = t
.split("-")
.map((e, t) => e.padStart(o[t], "0"))
.join("");
a.setBigUint64(0, BigInt("0x" + n.substring(0, 16)), !1),
a.setBigUint64(8, BigInt("0x" + n.substring(16)), !1),
$("#" + e + 0).val(a.getInt32(0)),
$("#" + e + 1).val(a.getInt32(4)),
$("#" + e + 2).val(a.getInt32(8)),
$("#" + e + 3).val(a.getInt32(12));
}
function convertLeastMostToArray(e, t, a) {
const o = new DataView(new ArrayBuffer(16));
o.setBigInt64(0, BigInt(parseInt(a)), !1),
o.setBigInt64(8, BigInt(parseInt(t)), !1),
$("#" + e + 0).val(o.getInt32(0)),
$("#" + e + 1).val(o.getInt32(4)),
$("#" + e + 2).val(o.getInt32(8)),
$("#" + e + 3).val(o.getInt32(12));
}
function convertMostToArray(e, t) {
const a = new DataView(new ArrayBuffer(16));
a.setBigInt64(0, BigInt(parseInt(t)), !1),
$("#" + e + 0).val(a.getInt32(0)),
$("#" + e + 1).val(a.getInt32(4));
}
function convertLeastToArray(e, t) {
const a = new DataView(new ArrayBuffer(16));
a.setBigInt64(8, BigInt(parseInt(t)), !1),
$("#" + e + 2).val(a.getInt32(8)),
$("#" + e + 3).val(a.getInt32(12));
}
function loadColorIntNBT(e, t) {
$("#" + e + "_customcol").prop("checked", !0),
$("#" + e + "_customcol").trigger("change"),
new jscolor.color(document.getElementById(e + "_color"), {}).fromString(
getHexColor(t)
);
}
function getHexColor(e) {
return ("000000" + (e >>> 0).toString(16)).slice(-6).toUpperCase();
}
function extractMinecraftID(e) {
return -1 != e.indexOf(":") && (e = e.substr(e.indexOf(":") + 1)), e.trim();
}
function extractMinecraftID113(e) {
if (-1 != e.indexOf("{") || -1 != e.indexOf("[")) {
let t = e.indexOf("{");
(-1 == t || (-1 != e.indexOf("[") && e.indexOf("[") < t)) &&
(t = e.indexOf("[")),
e.indexOf(":") < t &&
(settings.modifyNamespace(e.substr(0, e.indexOf(":"))),
(e = e.substr(e.indexOf(":") + 1)));
} else
settings.modifyNamespace(e.substr(0, e.indexOf(":"))),
(e = e.substr(e.indexOf(":") + 1));
for (
var t = "", a = 0;
a < e.length && -1 == "{[ ".indexOf(e.charAt(a));
a++
)
t += e.charAt(a);
return t;
}
function getTargetCompound(e, t) {
if (
$("#" + t + "X" + e).val().length &&
$("#" + t + "Y" + e).val().length &&
$("#" + t + "Z" + e).val().length
) {
var a = "," + t + ":{X:" + $("#" + t + "X" + e).val();
return (
(a += ",Y:" + $("#" + t + "Y" + e).val()),
(a += ",Z:" + $("#" + t + "Z" + e).val()) + "}"
);
}
return "";
}
function makeTip(e, t) {
return (
"<a href=\"javascript:showTip('" +
(-1 == e.indexOf(".") ? e + "." + t : e) +
"')\" class='greenPlus' tabindex='-1'>?</a>"
);
}
function showTip(e) {
$("#dialogbox").load("tips/en/" + e + ".txt", function (t, a) {
if ("success" == a) {
$("#dialogbox").prepend("<b>" + e.split(".")[1] + "</b><br>");
var o =
$("#dialogbox").height() > 200 ? 200 : $("#dialogbox").height();
$("#dialogbox").css({
"top": mouse.y - o,
"left": mouse.x,
"max-height": 200,
"overflow-y": "auto",
}),
$("#dialogbox").show();
var n = $("#dialogbox").has("a").length;
$("#dialogbox").append(
"<a href=\"javascript:hideTip()\" class='greenPlus'>OK</a>"
),
n ||
($("#dialogbox").focus(),
$("#dialogbox").blur(function () {
$("#dialogbox").hide();
}));
} else $("#dialogbox").hide();
});
}
function hideTip() {
$("#dialogbox").hide();
}
function addTrade(e) {
for (var t = 0; $("#" + e + "_Trade_" + t).length; ) t++;
var a = e + "_Trade_" + t;
$("#" + e).append(
"<div id='" +
a +
"' class='trade roundedDiv'><a class='redX' href=\"javascript:removeContainer('" +
a +
"')\">&#9747;</a><a class='redX' href=\"javascript:copyTradeNBT('" +
a +
"')\">Copy Trade</a><a class='redX' href=\"javascript:pasteTradeNBT('" +
a +
"')\">Paste Trade</a><a class='redX' href=\"javascript:moveTrade('" +
a +
"',-1)\">&#8679;</a><a class='redX' href=\"javascript:moveTrade('" +
a +
"',1)\">&#8681;</a></div>"
),
createComponent(
a,
"rewardExp",
{
id: a + "rewardExp",
type: "choice",
values: [
[-1, "unset"],
["1", "Yes"],
["0", "No"],
],
format: "b",
cssClass: "fLabel70",
tip: "villager",
},
-1
),
createComponent(
a,
"maxUses",
{
id: a + "maxUses",
type: "text",
format: "int",
cssClass: "fLabel70",
tip: "villager",
},
-1
),
createComponent(
a,
"uses",
{
id: a + "uses",
type: "text",
format: "int",
cssClass: "fLabel70",
tip: "villager",
},
-1
),
createComponent(
a,
"xp",
{
id: a + "xp",
type: "text",
format: "int",
cssClass: "fLabel70",
tip: "villager.xp_",
},
-1
),
createComponent(
a,
"priceMultiplier",
{
id: a + "priceMultiplier",
type: "text",
format: "int",
cssClass: "fLabel70",
tip: "villager",
},
-1
),
createComponent(
a,
"specialPrice",
{
id: a + "specialPrice",
type: "text",
format: "int",
cssClass: "fLabel70",
tip: "villager",
},
-1
),
createComponent(
a,
"demand",
{
id: a + "demand",
type: "text",
format: "int",
cssClass: "fLabel70",
tip: "villager",
},
-1
),
createComponent(
a,
"buy",
{
id: a + "buy",
type: "itemselect",
format: "special",
cssClass: "fLabel70",
tip: "villager",
},
-1
),
createComponent(
a,
"buyB",
{
id: a + "buyB",
type: "itemselect",
format: "special",
cssClass: "fLabel70",
tip: "villager",
},
-1
),
createComponent(
a,
"sell",
{
id: a + "sell",
type: "itemselect",
format: "special",
cssClass: "fLabel70",
tip: "villager",
},
-1
),
generateCommand();
}
function addGossip(e) {
for (var t = 0; $("#" + e + "_" + t).length; ) t++;
var a = e + "_" + t;
$("#" + e).append(
"<div id='" +
a +
"' class='gossip roundedDiv'><a class='redX' href=\"javascript:removeContainer('" +
a +
"')\">&#9747;</a></div>"
),
createComponent(
a,
"Type",
{
id: a + "Type",
type: "makeSelect",
values: [
"major_negative",
"minor_negative",
"major_positive",
"minor_positive",
"trading",
"golem",
],
format: "special",
cssClass: "fLabel70",
tip: "gossip",
},
-1
),
createComponent(
a,
"Value",
{
id: a + "Value",
type: "text",
format: "int",
cssClass: "fLabel70",
tip: "gossip",
},
-1
),
createComponent(
a,
"Target",
{
id: a + "Target",
type: "UUIDArray",
format: "intArray",
cssClass: "fLabel70",
tip: "gossip",
},
-1
),
generateCommand();
}
function addExplosion(e, t) {
for (var a = 0; $("#" + e + "_exp_" + a).length; ) a++;
var o = e + "_exp_" + a;
$("#" + e).append(
"<div id='" + o + "' class='explosion roundedDiv'></div>"
),
void 0 == t &&
$("#" + o).append(
"<a class='redX' href=\"javascript:removeContainer('" +
o +
"')\">&#9747;</a>"
),
createComponent(
o,
"Type",
{
id: o + "Type",
type: "choice",
values: [
[0, "Small Ball"],
[1, "Large Ball"],
[2, "Star-shaped"],
[3, "Creeper-shaped"],
[4, "Burst"],
],
format: "short",
cssClass: "fLabel70",
tip: "fireworks_rocket",
},
-1
),
createComponent(
o,
"Flicker",
{
id: o + "Flicker",
type: "cb",
format: "b",
cssClass: "fLabel70",
tip: "fireworks_rocket",
},
-1
),
createComponent(
o,
"Trail",
{
id: o + "Trail",
type: "cb",
format: "b",
cssClass: "fLabel70",
tip: "fireworks_rocket",
},
-1
),
$("#" + o).append(
"<br><span class='fLabel70'>Colors</span><a href=\"javascript:addFWColor('" +
o +
"Colors')\" class='greenPlus'>+</a><div id='" +
o +
"Colors' class='ExplosionPane'></div>" +
makeTip("fireworks_rocket", "Colors") +
"</span>"
),
$("#" + o).append(
"<br><span class='fLabel70'>FadeColors</span><a href=\"javascript:addFWColor('" +
o +
"FadeColors')\" class='greenPlus'>+</a><div id='" +
o +
"FadeColors' class='ExplosionPane'></div>" +
makeTip("fireworks_rocket", "FadeColors") +
"</span>"
),
void 0 != t && $("#" + o + " br:first").remove(),
generateCommand();
}
function addFWColor(e) {
for (var t = 0; $("#" + e + "_col_" + t).length; ) t++;
var a = e + "_col_" + t;
$("#" + e).append(
"<span class='fwColor' id='" +
a +
"'><a class='redX' href=\"javascript:removeContainer('" +
a +
"')\">&#9747;</a><input id='" +
a +
"_colour' value='FF0000' class='medTF'><span>"
),
new jscolor.color(
document.getElementById(a + "_colour"),
{}
).fromString("FF0000"),
bindGenCom(a + "_colour", "change"),
generateCommand();
}
function removeContainer(e) {
$("#" + e).remove(), generateCommand();
}
function getFWColors(e, t) {
var a = "";
return (
$("#" + e + t + " > .fwColor").each(function (e) {
a += "," + colourConvert($("#" + this.id + "_colour").val());
}),
a.length ? "," + t + ":[I;" + a.substr(1) + "]" : a
);
}
function loadFireworksItemNBT(e, t) {
if (void 0 != t.Explosions)
for (var a = t.Explosions.val, o = 0; o < a.length; o++)
addExplosion(e), loadExplosionNBT(e + "_exp_" + o, a[o]);
}
function loadExplosionNBT(e, t) {
void 0 != t.Type && $("#" + e + "Type").val(t.Type.val);
var a = ["Colors", "FadeColors"];
$("#" + e + "Flicker").prop(
"checked",
void 0 != t.Flicker && "1" == t.Flicker.val.charAt(0)
),
$("#" + e + "Trail").prop(
"checked",
void 0 != t.Trail && "1" == t.Trail.val.charAt(0)
);
for (var o = 0; o < a.length; o++)
if (void 0 != t[a[o]])
for (var n = t[a[o]].val, s = 0; s < n.length; s++) {
addFWColor(e + a[o]),
new jscolor.color(
document.getElementById(
e + a[o] + "_col_" + s + "_colour"
),
{}
).fromString(getHexColor(n[s]));
}
}
function getHandAndArmorItmes(e) {
var t = "",
a = getItemNBT("Holding" + e) + "," + getItemNBT("Offhand" + e);
"{},{}" != a &&
((t += ",HandItems:[" + a + "]"),
hasValue("Holding" + e + "DropChance") ||
hasValue("Offhand" + e + "DropChance")
? (t +=
",HandDropChances:" +
constructDropChance([
"Holding" + e + "DropChance",
"Offhand" + e + "DropChance",
]))
: ((void 0 != cachedNBT.dropChance["Holding" + e] &&
"" != cachedNBT.dropChance["Holding" + e]) ||
(void 0 != cachedNBT.dropChance["Offhand" + e] &&
"" != cachedNBT.dropChance["Offhand" + e])) &&
(t +=
",HandDropChances:" +
constructDropChanceFromCache([
cachedNBT.dropChance["Holding" + e],
cachedNBT.dropChance["Offhand" + e],
])));
var o =
getItemNBT("Boot" + e) +
"," +
getItemNBT("Leg" + e) +
"," +
getItemNBT("Body" + e) +
"," +
getItemNBT("Head" + e);
return (
"{},{},{},{}" != o &&
((t += ",ArmorItems:[" + o + "]"),
hasValue("Boot" + e + "DropChance") ||
hasValue("Leg" + e + "DropChance") ||
hasValue("Body" + e + "DropChance") ||
hasValue("Head" + e + "DropChance")
? (t +=
",ArmorDropChances:" +
constructDropChance([
"Boot" + e + "DropChance",
"Leg" + e + "DropChance",
"Body" + e + "DropChance",
"Head" + e + "DropChance",
]))
: ((void 0 != cachedNBT.dropChance["Boot" + e] &&
"" != cachedNBT.dropChance["Boot" + e]) ||
(void 0 != cachedNBT.dropChance["Leg" + e] &&
"" != cachedNBT.dropChance["Leg" + e]) ||
(void 0 != cachedNBT.dropChance["Body" + e] &&
"" != cachedNBT.dropChance["Body" + e]) ||
(void 0 != cachedNBT.dropChance["Head" + e] &&
"" != cachedNBT.dropChance["Head" + e])) &&
(t +=
",ArmorDropChances:" +
constructDropChanceFromCache([
cachedNBT.dropChance["Boot" + e],
cachedNBT.dropChance["Leg" + e],
cachedNBT.dropChance["Body" + e],
cachedNBT.dropChance["Head" + e],
]))),
t
);
}
function constructDropChance(e) {
let t = "";
for (let a = 0; a < e.length; a++)
$("#" + e[a]).length && $("#" + e[a]).val().length
? (t += "," + parseFloat($("#" + e[a]).val()).toFixed(3) + "F")
: (t += ",0.085F");
return "[" + t.substr(1) + "]";
}
function constructDropChanceFromCache(e) {
let t = "";
for (let a = 0; a < e.length; a++)
"" != e[a]
? (t += "," + parseFloat(e[a]).toFixed(3) + "F")
: (t += ",0.085F");
return "[" + t.substr(1) + "]";
}
function loadGossips(e, t) {
for (var a = 0; a < e.length; a++)
addGossip("Gossips" + t + "Pane", t),
$("#Gossips" + t + "Pane_" + a + "Type").val(e[a].Type.val),
$("#Gossips" + t + "Pane_" + a + "Value").val(e[a].Value.val),
void 0 != e[a].TargetLeast && void 0 != e[a].TargetMost
? convertLeastMostToArray(
"Gossips" + t + "Pane_" + a + "Target",
e[a].TargetLeast.val,
e[a].TargetMost.val
)
: void 0 != e[a].Target &&
loadUUIDArrayNBT(
"Gossips" + t + "Pane_" + a + "Target",
e[a].Target.val
);
}
function loadInventory(e, t, a) {
for (var o = 0; o < e.length; o++)
setupItemSlotForNBT(o + "Inv" + t, e[o], a);
}
function loadMemories(e, t) {
if (void 0 != e.memories) {
var a = e.memories.val;
for (mem in a) {
let e = void 0 != a[mem].val.value ? a[mem].val.value : a[mem];
void 0 != e.val.pos &&
($("#Memories" + t + extractMinecraftID(mem) + "X").val(
e.val.pos.val[0]
),
$("#Memories" + t + extractMinecraftID(mem) + "Y").val(
e.val.pos.val[1]
),
$("#Memories" + t + extractMinecraftID(mem) + "Z").val(
e.val.pos.val[2]
)),
void 0 != e.val.dimension &&
$("#Memories" + t + extractMinecraftID(mem) + "Dim").val(
extractMinecraftID(e.val.dimension.val)
);
}
showHide("Memories" + t + "Pane", "Memories" + t + "PaneSH");
}
}
function hasValue(e) {
return $("#" + e).length && "" != $("#" + e).val();
}
function makeStewEffects(e, t) {
var a =
"<table class='aTable'><tr><th>Effect</th><th colspan=2>Duration</th></tr>";
for (se in statusEffects)
"-1" != statusEffects[se][0] &&
(a +=
"<tr><td><span class='fLabel100'>" +
statusEffects[se][1] +
"</span></td><td><input type='text' class='medTF' id='" +
t +
"Ticks_" +
statusEffects[se][0] +
"'></td><td>" +
mkTicksSecs(t + "Ticks_" + statusEffects[se][0] + "TT") +
"</td></tr>");
for (se in ($("#" + e).append(a + "</table>"), statusEffects))
bindGenCom(t + "Ticks_" + statusEffects[se][0], "keyup");
}
function makeStatusEffects(e, t) {
var a =
"<table class='aTable'><tr><th>Effect</th><th>Amplifier" +
makeTip("status_effect", "amplifier") +
"</th><th colspan=2>Duration" +
makeTip("status_effect", "duration") +
"</th><th>Show<br>Particles" +
makeTip("status_effect", "show_particles") +
"</th></tr>";
for (se in statusEffects)
"-1" != statusEffects[se][0] &&
(a +=
"<tr><td><span class='fLabel100'>" +
statusEffects[se][1] +
"</span></td><td><input type='text' class='smallTF' id='" +
t +
"Amp_" +
statusEffects[se][0] +
"'></td><td><input type='text' class='medTF' id='" +
t +
"Ticks_" +
statusEffects[se][0] +
"'></td><td>" +
mkTicksSecs(t + "Ticks_" + statusEffects[se][0] + "TT") +
"</td><td><select id='" +
t +
"ShowParticles_" +
statusEffects[se][0] +
"'><option value='-1'>unset</option><option value='1b'>Yes</option><option value='0b'>No</option></select></td></tr>");
for (se in ($("#" + e).append(a + "</table>"), statusEffects))
bindGenCom(t + "Amp_" + statusEffects[se][0], "keyup"),
bindGenCom(t + "Ticks_" + statusEffects[se][0], "keyup"),
bindGenCom(t + "ShowParticles_" + statusEffects[se][0], "change");
}
function getStatusEffectsNBT(e, t) {
var a = "";
for (se in statusEffects)
if (
"-1" != statusEffects[se][0] &&
$("#" + t + "Amp_" + statusEffects[se][0]).val().length &&
$("#" + t + "Ticks_" + statusEffects[se][0]).val().length
) {
var o = $("#" + t + "Ticks_" + statusEffects[se][0]).val();
"Seconds" ==
$("#" + t + "Ticks_" + statusEffects[se][0] + "TT").html() &&
(o *= 20),
(a +=
",{Id:" +
statusEffects[se][0] +
"b,Amplifier:" +
$("#" + t + "Amp_" + statusEffects[se][0]).val() +
"b,Duration:" +
o),
-1 !=
$(
"#" + t + "ShowParticles_" + statusEffects[se][0]
).val() &&
(a +=
",ShowParticles:" +
$(
"#" + t + "ShowParticles_" + statusEffects[se][0]
).val()),
(a += "}");
}
return a.length ? "," + e + ":[" + a.substr(1) + "]" : a;
}
function getStewEffectsNBT(e, t) {
var a = "";
for (se in statusEffects)
if (
-1 != statusEffects[se][0] &&
$("#" + t + "Ticks_" + statusEffects[se][0]).val().length
) {
var o = $("#" + t + "Ticks_" + statusEffects[se][0]).val();
"Seconds" ==
$("#" + t + "Ticks_" + statusEffects[se][0] + "TT").html() &&
(o *= 20),
(a +=
",{EffectId:" +
statusEffects[se][0] +
"b,EffectDuration:" +
o +
"}");
}
return a.length ? "," + e + ":[" + a.substr(1) + "]" : a;
}
function mkTicksSecs(e) {
return (
"<a id='" +
e +
"' href=\"javascript:toggleTicks('" +
e +
"')\" class='ticks'>Ticks</a>"
);
}
function toggleTicks(e) {
"Ticks" == $("#" + e).html()
? $("#" + e).html("Seconds")
: $("#" + e).html("Ticks"),
generateCommand();
}
function mkShowHide(e, t) {
return (
"<a id='" +
t +
"' href=\"javascript:showHide('" +
e +
"','" +
t +
"')\" class='showHide'><span>H</span></a>"
);
}
function showHide(e, t) {
$("#" + e).is(":visible")
? ($("#" + e + ", #" + t)
.addClass("hiding")
.removeClass("shown"),
$("#" + e).hide(),
$("#" + t).html("<span>S</span>"))
: ($("#" + e + ", #" + t)
.addClass("shown")
.removeClass("hiding"),
$("#" + e).show(),
$("#" + t).html("<span>H</span>"));
}
function addPassenger(e) {
makeAddEntityPane(e, "passengerEntity_" + ++entityIndex, !1);
}
function addSpawnPotential(e) {
makeAddEntityPane(e, "spawnPotentialEntity_" + ++entityIndex, !0);
}
function addBee(e) {
$("#" + e + " > .spawnPotentialContainer").length < 3
? makeAddBeePane(e, "beeEntity_" + ++entityIndex)
: alertify.alert("A maximum of three bees can be added. ");
}
function getPassengersNBT(e) {
var t = "";
return (
$("#Passengers" + e + "Pane > .passengerContainer").each(function () {
var e = parseInt(this.id.substr(this.id.indexOf("_") + 1));
(t +=
',{id:"minecraft:' +
$("#entity" + e).val() +
'"' +
entityDescriptors["e" + e].getEntitySpecificCommand(e) +
"}"),
cachedNBT.setNBT(
"e" + e,
',id:"minecraft:' +
$("#entity" + e).val() +
'"' +
entityDescriptors["e" + e].getEntitySpecificCommand(e)
);
}),
t.length ? ",Passengers:[" + t.substr(1) + "]" : t
);
}
function getSpawnPotentailsNBT(e, t) {
var a = "",
o = [];
if (
($("#SpawnPotential" + e + "Pane > .spawnPotentialContainer").each(
function (e) {
var t = parseInt(this.id.substr(this.id.indexOf("_") + 1));
(o[e] = []),
(o[e].entity =
'{id:"minecraft:' +
$("#entity" + t).val() +
'"' +
entityDescriptors["e" + t].getEntitySpecificCommand(t) +
getMotion(t, "Pos") +
"}"),
(o[e].weight = $("#Weight" + t).val().length
? $("#Weight" + t).val()
: 1),
cachedNBT.setNBT(
"e" + t,
',id:"minecraft:' +
$("#entity" + t).val() +
'"' +
entityDescriptors["e" + t].getEntitySpecificCommand(
t
) +
getMotion(t, "Pos")
);
}
),
o.length > 1 || t)
) {
if (o.length > 0) {
for (var n = 0; n < o.length; n++)
a += ",{Weight:" + o[n].weight + ",Entity:" + o[n].entity + "}";
return (
",SpawnData:" +
o[0].entity +
",SpawnPotentials:[" +
a.substr(1) +
"]"
);
}
return a;
}
return 1 == o.length ? ",SpawnData:" + o[0].entity : a;
}
function getBeesForHiveNBT(e) {
let t = "";
return (
$("#Bees" + e + "Pane > .spawnPotentialContainer").each(function (e) {
var a = parseInt(this.id.substr(this.id.indexOf("_") + 1));
let o = getNBTforKey("MinOccupationTicks", { type: "ticks" }, a);
(o += getNBTforKey("TicksInHive", { type: "ticks" }, a)),
(o +=
',EntityData:{id:"minecraft:' +
$("#entity" + a).val() +
'"' +
entityDescriptors["e" + a].getEntitySpecificCommand(a) +
"}"),
(t += ",{" + o.substr(1) + "}");
}),
t.length ? ",Bees:[" + t.substr(1) + "]" : ""
);
}
function enableCustomCol(e, t) {
$("#" + e).is(":checked")
? $("#" + t + "_colsettings").show()
: $("#" + t + "_colsettings").hide(),
generateCommand();
}
function getItemNBT(e, t) {
let a = "";
if (-1 != $("#" + e).val() && null != $("#" + e).val()) {
if (((a += getItemTag($("#" + e).val())), void 0 == t))
try {
(a += ",Count:"),
$("#" + e + "Count").val().length > 0
? (a += $("#" + e + "Count").val() + "b")
: (a += "1b");
} catch (e) {
a += "1b";
}
else
"CountOptional" == t &&
($("#" + e + "Count").val().length > 0 &&
(a += ",Count:" + $("#" + e + "Count").val() + "b"),
$("#" + e + "Slot").val().length > 0 &&
(a += ",Slot:" + $("#" + e + "Slot").val() + "b"));
(a += getItemTagNBT(e, !0)),
cachedNBT.setNBT(e, "," + a),
$("#" + e + "DropChance").length &&
(cachedNBT.dropChance[e] = $("#" + e + "DropChance").val());
} else {
let t = cachedNBT.getNBT(e);
if (t) return t;
}
return "{" + a + "}";
}
function getItemNBTForGive1p13(e) {
var t = " ";
if (-1 != $("#" + e).val() && null != $("#" + e).val()) {
var a = $("#" + e).val();
settings.namespace.length && (t += settings.namespace + ":"),
(t += a.split(":")[0]);
let n = "";
var o = getItemTagNBT(e, !1);
o.length && (t += "{" + o.substr(1) + "}");
try {
$("#" + e + "Count").val().length > 0
? ((t += " " + $("#" + e + "Count").val()),
(n = ",Count:" + $("#" + e + "Count").val()))
: (t += " 1");
} catch (e) {
t += " 1";
}
(n += getItemTagNBT(e, !0)), cachedNBT.setNBT(e, n);
} else {
let t = cachedNBT.getNBT(e);
if (t) return t;
}
return t;
}
function getItemTagNBT(e, t) {
var a = getCanPlaceOnOrDestroy(e, "CanPlaceOn");
(a += getCanPlaceOnOrDestroy(e, "CanDestroy")), (a += getItemDisplayNBT(e));
for (var o = 0, n = 1, s = 0; s < flags.length; s++)
$("#" + e + "HF" + flags[s]).is(":checked") && (o += n), (n *= 2);
return (
0 != o && (a += ",HideFlags:" + o),
0 != $("#" + e + "RepairCost").length &&
$("#" + e + "RepairCost").val().length &&
(a += ",RepairCost:" + $("#" + e + "RepairCost").val()),
0 != $("#" + e + "Unbreakable").length &&
-1 != $("#" + e + "Unbreakable").val() &&
(a += ",Unbreakable:" + $("#" + e + "Unbreakable").val() + "b"),
0 != $("#" + e + "Damage").length &&
0 != $("#" + e + "Damage").val() &&
(a += ",Damage:" + $("#" + e + "Damage").val()),
0 != $("#" + e + "CustomModelData").length &&
$("#" + e + "CustomModelData").val().length &&
(a += ",CustomModelData:" + $("#" + e + "CustomModelData").val()),
0 != $("#" + e + "CustomTags").length &&
$("#" + e + "CustomTags").val().length &&
(a += "," + $("#" + e + "CustomTags").val()),
(a += getEnchantments(e, "Enchantments")),
(a += getItemAttributeModifiers(e)),
(a += getItemSpecificNBT(e)),
(a += getItemBlockStates(e)).length > 0 && t
? ",tag:{" + a.substr(1) + "}"
: a
);
}
function getItemBlockStates(e) {
var t = $("#" + e).val();
if (t in blockStates) {
var a = blockStates[t],
o = "";
for (var n in a)
$("#" + n + e).length &&
"unset" != $("#" + n + e).val() &&
(o += "," + n + ':"' + $("#" + n + e).val() + '"');
return 0 == o.length ? "" : ",BlockStateTag:{" + o.substr(1) + "}";
}
return "";
}
function getItemDisplayNBT(e) {
var t = "",
a = tellrawJson.getJsonForTellraw(e + "ItemName");
a.length && (t += ",Name:" + jsonConvert(JSON.stringify(a)));
var o = tellrawJson.getJsonForLore(e + "Lore");
return (
o.length && (t += ",Lore:[" + o.substr(1) + "]"),
isLeatherArmor($("#" + e).val())
? (t += getColorInteger(e + "Color", "color"))
: "filled_map" == $("#" + e).val() &&
(t += getColorInteger(e + "MapColor", "MapColor")),
t.length > 0 ? ",display:{" + t.substr(1) + "}" : t
);
}
function jsonConvert(e) {
var t = e.substr(1, e.length - 2);
return (
"'" +
(t = replaceAll(
"DOUBLE_QUOTE_PLACEHOLDER",
'\\"',
(t = (t = replaceAll(
'\\"',
'"',
(t = replaceAll('\\\\"', "DOUBLE_QUOTE_PLACEHOLDER", t))
)).replace(/([^\{|:|,])(?:')([^\}|,|:])/g, "$1\\'$2"))
)) +
"'"
);
}
function getColorInteger(e, t) {
return $("#" + e + "_customcol").is(":checked")
? "," + t + ":" + colourConvert($("#" + e + "_color").val())
: "";
}
function colourConvert(e) {
return 65536 * hexToR(e) + 256 * hexToG(e) + hexToB(e);
}
function getCanPlaceOnOrDestroy(e, t) {
var a = "";
return (
$("#" + e + t + "TilePane > .anchorButton").each(function () {
a += '"minecraft:' + this.innerHTML.split(" ")[0] + '",';
}),
a.length > 0 ? "," + t + ":[" + a.substr(0, a.length - 1) + "]" : ""
);
}
function getEnchantments(e, t) {
var a = "";
return (
$("#" + e + t + " .enchantCB").each(function () {
if ($("#" + this.id).is(":checked")) {
var e = this.id.substr(this.id.lastIndexOf("_") + 1);
(a +=
',{id:"minecraft:' +
replaceAll(" ", "_", enchantables[e][0]).toLowerCase() +
'",lvl:'),
$("#" + this.id + "_lvl").val().length
? (a += $("#" + this.id + "_lvl").val() + "s}")
: (a += "1}");
}
}),
a.length > 0
? ",Enchantments:[" + a.substr(1) + "]"
: $("#" + e + "Enchantments_enc_glintOnly").is(":checked")
? ",Enchantments:[{}]"
: a
);
}
function getItemAttributeModifiers(e) {
var t = "";
return (
$("#" + e + "AMtable .amRow").each(function () {
var a = this.id.substr(0, this.id.lastIndexOf("_"));
if ($("#" + a + "_amount").val().length) {
var o = $("#" + a + "_mods").val();
(t +=
',{AttributeName:"generic.' +
o +
'",Name:"generic.' +
o +
'",Amount:' +
$("#" + a + "_amount").val() +
",Operation:" +
$("#" + a + "_operation").val()),
$("#" + e + "AMRandomUUID").prop("checked") &&
convertHexUUIDToArray(a + "_UUID", getRandomUUIDv4());
let n = getUUIDArray(a + "_UUID");
n.length && (t += ",UUID:" + n),
"Any" != $("#" + a + "_slot").val() &&
(t += ',Slot:"' + $("#" + a + "_slot").val() + '"'),
(t += "}");
}
}),
t.length > 0 ? ",AttributeModifiers:[" + t.substr(1) + "]" : t
);
}
function getItemTag(e) {
if (null == e) return "";
var t;
return (
-1 != e.indexOf(":")
? ((t = e.split(":")[0]), e.split(":")[1])
: (t = e),
'id:"minecraft:' + t + '"'
);
}
function getRandomUUIDv4() {
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (
e
) {
var t = (16 * Math.random()) | 0;
return ("x" == e ? t : (3 & t) | 8).toString(16);
});
}
function addAM(e, t) {
for (var a = 0; $("#" + e + "_" + a + "_rowNum").length; ) a++;
for (
var o = e + "_" + a,
n =
"<tr id='" +
o +
"_rowNum' class='amRow'><td><select id='" +
o +
"_mods'>",
s = 0;
s < attributeModifiers116.length;
s++
)
n +=
"<option value='" +
attributeModifiers116[s] +
"'>" +
attributeModifiers116[s] +
"</option>";
n +=
"</select></td><td><input type='text' class='medTF' id='" +
o +
"_amount' value='1'></td><td>" +
makeSelectWithIndexes(
o + "_operation",
["amount", "percentage", "multiplicative"],
!1
) +
"</td><td>" +
makeSelect(o + "_slot", [
"Any",
"mainhand",
"offhand",
"feet",
"legs",
"chest",
"head",
]) +
"</td><td>";
for (let e = 0; e < 4; e++)
n += "<input type='text' class='medTF' id='" + o + "_UUID" + e + "'>";
(n +=
"</td><td><a href=\"javascript:removeAM('" +
o +
"_rowNum','" +
e +
"')\" class='redX'>&#9747;</a></td></tr>"),
$("#" + e + "table > tbody:last-child").append(n),
convertHexUUIDToArray(o + "_UUID", getRandomUUIDv4()),
$("#" + o + "_mods").bind("change", function () {
checkAMconflicts(e);
}),
$("#" + o + "_amount").bind("keyup", function () {
checkAMconflicts(e);
}),
$("#" + o + "_operation").bind("change", function () {
checkAMconflicts(e);
}),
$("#" + o + "_slot").bind("change", function () {
checkAMconflicts(e);
});
for (let t = 0; t < 4; t++)
$("#" + o + "_UUID" + t).bind("keyup", function () {
checkAMconflicts(e);
});
if ((checkAMconflicts(e), t)) return a;
}
function removeAM(e, t) {
$("#" + e).remove(), checkAMconflicts(t);
}
function checkAMconflicts(e) {
var t = "",
a = {},
o = [];
$("#" + e + "table .amRow").each(function () {
var e = this.id.substr(0, this.id.lastIndexOf("_")),
n = $("#" + e + "_mods").val() + "_" + $("#" + e + "_slot").val(),
s = $("#" + e + "_mods").val() + "_Any";
n in a ||
s in a ||
(-1 != o.indexOf($("#" + e + "_mods").val()) &&
"Any" == $("#" + e + "_slot").val())
? ($("#" + e + "_rowNum").addClass("amErrorRow"),
(t =
"Attribute Modifiers highlighted in red are in conflict with another modifier. You should not use the same modifier with the same slot as it may cause unpredictable behavior in game."))
: ($("#" + e + "_rowNum").removeClass("amErrorRow"),
(a[n] = e + "_rowNum")),
o.push($("#" + e + "_mods").val());
}),
t.length > 0
? ($("#" + e + "_errors").html(t),
$("#" + e + "_errors").addClass("amErrorMessage"))
: ($("#" + e + "_errors").html(""),
$("#" + e + "_errors").removeClass("amErrorMessage")),
generateCommand();
}
function makeAMUI(e) {
var t =
makeButton(
"Add Attribute Modifier",
"addAM('" + e + "',false)",
"Click to add and Attribute Modifier"
) +
" Randomize UUIDs <input type='checkbox' id='" +
e +
"RandomUUID'>" +
makeTip("item.randomUUID") +
" <table class='aTable' id='" +
e +
"table'><tr id='" +
e +
"_head'><th>Attribute</th><th>Amount</th><th>Operation</th><th>Slot</th><th>UUID</th></tr>";
$("#" + e).append(t + "</table><span id='" + e + "_errors'></span>"),
bindGenCom(e + "RandomUUID", "change");
}
function makeSelect(e, t) {
for (var a = "<select id='" + e + "'>", o = 0; o < t.length; o++)
a += "<option value='" + t[o] + "'>" + t[o] + "</option>";
return a + "</select>";
}
function makeSelectWithIndexes(e, t, a) {
var o = "<select id='" + e + "'>";
a && (o += "<option value='-1'>unset</option>");
for (var n = 0; n < t.length; n++)
o += "<option value='" + n + "'>" + t[n] + "</option>";
return o + "</select>";
}
function makeSelectWithIndexAndValues(e, t) {
for (var a = "<select id='" + e + "'>", o = 0; o < t.length; o++)
a += "<option value='" + t[o][0] + "'>" + t[o][1] + "</option>";
return a + "</select>";
}
function getRandomInt(e, t) {
return Math.floor(Math.random() * (t - e + 1)) + e;
}
function enableLevelBox(e, t) {
$("#" + e).is(":checked")
? $("#" + t + "_span").show()
: $("#" + t + "_span").hide(),
generateCommand();
}
function getOwnerUUIDNBT(e) {
return $("#OwnerUUIDLeast" + e).val().length &&
$("#OwnerUUIDMost" + e).val().length
? ",Owner:{OwnerUUIDLeast:" +
$("#OwnerUUIDLeast" + e).val() +
",OwnerUUIDMost:" +
$("#OwnerUUIDMost" + e).val() +
"}"
: "";
}
function makeEnchantments(e, t, a) {
var o = t ? " CHECKED" : "";
for (enc in ($("#" + e).html(
"<span style='width:400;'><span class='fLabel180'>Show All</span><input type='checkbox' id='" +
e +
"_enc_showAll'" +
o +
"></span><span style='width:400;'><span class='fLabel180'>Glint Only</span><input type='checkbox' id='" +
e +
"_enc_glintOnly'></span>"
),
$("#" + e + "_enc_showAll").bind("change", function (t) {
makeEnchantments(e, $("#" + e + "_enc_showAll").is(":checked"), a);
}),
$("#" + e + "_enc_glintOnly").bind("change", function (e) {
generateCommand();
}),
enchantables))
for (i = 0; i < enchantables[enc][1].length; i++)
if (t || enchantables[enc][1][i] == a) {
$("#" + e).append(
"<span style='width:400;'><span class='fLabel180'>" +
enchantables[enc][0] +
"</span><input type='checkbox' id='" +
e +
"_enc_" +
enc +
"' class='enchantCB' onclick=\"enableLevelBox('" +
e +
"_enc_" +
enc +
"','" +
e +
"_enc_" +
enc +
"_lvl')\"><span id='" +
e +
"_enc_" +
enc +
"_lvl_span' class='enchantLevel'> LVL <input type='text' id='" +
e +
"_enc_" +
enc +
"_lvl' value='1' class='smallTF'></span></span>"
),
$("#" + e + "_enc_" + enc + "_lvl_span").hide(),
$("#" + e + "_enc_" + enc + "_lvl").bind(
"change keyup",
function () {
generateCommand();
}
);
break;
}
}
function isDurable(e) {
for (enc in enchantables)
for (i = 0; i < enchantables[enc][1].length; i++)
if (enchantables[enc][1][i] == e) return !0;
return !1;
}
function addTile(e) {
-1 == $("#" + e).val() ||
null == $("#" + e).val() ||
$("#" + e + "_" + $("#" + e).val()).length ||
($("#" + e + "TilePane").append(
"<a class='anchorButton' href=\"javascript:removeContainer('" +
e +
"_" +
$("#" + e).val() +
"')\" id='" +
e +
"_" +
$("#" + e).val() +
"'>" +
$("#" + e).val() +
" <span class='redX noBorder'>&#9747;</span></a> "
),
generateCommand());
}
function addTileFromNBTLoad(e, t) {
$("#" + e + "TilePane").append(
"<a class='anchorButton' href=\"javascript:removeContainer('" +
e +
"_" +
t +
"')\" id='" +
e +
"_" +
t +
"'>" +
t +
" <span class='redX noBorder'>&#9747;</span></a> "
);
}
function updateItemSelectOptions(e) {
for (
var t = $(e).val(),
a = $(e + "_filter")
.val()
.toLowerCase(),
o = [],
n = 1;
n < items.length;
n++
)
(0 != a.length &&
-1 == items[n][0].toLowerCase().indexOf(a) &&
-1 == items[n][1].toLowerCase().indexOf(a)) ||
o.push(
'<option value="',
items[n][0],
'">',
items[n][1],
"</option>"
);
o.push('<option value="', items[0][0], '">', items[0][1], "</option>"),
$(e).html(o.join("")),
t != $(e).val() &&
(cachedNBT.updateFilterLastUsed(), $(e).trigger("change"));
}
function updateItemSelectForRecipes(e) {
for (
var t = $(e).val(),
a = $(e + "_filter")
.val()
.toLowerCase(),
o = [],
n = 0;
n < knowledgeList.length;
n++
)
(0 != a.length && -1 == knowledgeList[n].indexOf(a)) ||
o.push(
'<option value="',
knowledgeList[n],
'">',
knowledgeList[n],
"</option>"
);
$(e).html(o.join("")), t != $(e).val() && $(e).trigger("change");
}
function updateTileSelectOptions(e) {
for (
var t = $(e).val(),
a = $(e + "_filter")
.val()
.toLowerCase(),
o = [],
n = 0;
n < tiles.length;
n++
)
(0 != a.length &&
-1 == tiles[n][0].toLowerCase().indexOf(a) &&
-1 == tiles[n][1].toLowerCase().indexOf(a)) ||
o.push(
'<option value="',
tiles[n][0],
'">',
tiles[n][1],
"</option>"
);
$(e).html(o.join("")), t != $(e).val() && $(e).trigger("change");
}
function updateEntitySelectOptions(e, t, a, o) {
var n = o || !1,
s = $(e).val(),
i = $(e + "_filter")
.val()
.toLowerCase(),
r = [];
!n ||
(0 != i.length && -1 == "player".indexOf(i)) ||
r.push("<option value='player'>player</option>");
for (var l = 0; l < entities.length; l++)
(0 != i.length && -1 == entities[l].toLowerCase().indexOf(i)) ||
r.push(
'<option value="',
entities[l],
'">',
entities[l],
"</option>"
);
$(e).html(r.join("")),
s != $(e).val() &&
(cachedNBT.updateFilterLastUsed(), entityChange(t, a));
}
function getUUIDArray(e) {
return $("#" + e + 0).val() &&
$("#" + e + 1).val() &&
$("#" + e + 2).val() &&
$("#" + e + 3).val()
? "[I;" +
$("#" + e + 0).val() +
"," +
$("#" + e + 1).val() +
"," +
$("#" + e + 2).val() +
"," +
$("#" + e + 3).val() +
"]"
: "";
}
function getAngryAt(e) {
let t = getUUIDArray("AngryAt" + e);
return t.length ? ",AngryAt:" + t : "";
}
function getNBTforKey(e, t, a) {
if ("special" == t.format) return "";
var o = "";
if ("text" == t.type) $("#" + e + a).val() && (o = $("#" + e + a).val());
else if (
"choice" == t.type ||
"makeSelect" == t.type ||
"makeSelectWithIndexes" == t.type
)
-1 != $("#" + e + a).val() && (o = $("#" + e + a).val());
else if ("ticks" == t.type) {
if ($("#" + e + a).val())
return (
(o = $("#" + e + a).val()),
"Seconds" == $("#" + e + a + "TT").html()
? "," + e + ":" + 20 * o
: "," + e + ":" + o
);
} else if ("UUIDArray" == t.type) o = getUUIDArray(e + a);
else {
if ("colorChooser" == t.type) return getColorInteger(e + a, e);
if ("blockSelect" == t.type)
return (
-1 != $("#" + e + a).val() &&
(o = "," + e + ":" + $("#" + e + a).val()),
o
);
}
return o.length > 0
? "b" == t.format
? "," + e + ":" + o + "b"
: "f" == t.format
? "," + e + ":" + o + "f"
: "string" == t.format
? "," + e + ':"' + o + '"'
: "short" == t.format || "long" == t.format || "int" == t.format
? "," + e + ":" + o
: "d" == t.format
? "," + e + ":" + o + "d"
: "," + e + ":" + o
: "";
}
function getTargetingTags(e) {
var t = "";
return (
$("#Tags" + e).val().length > 0 &&
(t +=
',Tags:["' +
$("#Tags" + e)
.val()
.replace(/,/g, '","') +
'"]'),
t
);
}
function getRotation(e) {
var t;
return (
(t = $("#Yaw" + e).val().length > 0 ? $("#Yaw" + e).val() + "F" : "0F"),
$("#Pitch" + e).val().length > 0
? (t += "," + $("#Pitch" + e).val() + "F")
: (t += ",0F"),
"0F,0F" != t ? ",Rotation:[" + t + "]" : ""
);
}
function getMotion(e, t) {
if (
0 != $("#" + t + "X" + e).val().length &&
0 != $("#" + t + "Y" + e).val().length &&
0 != $("#" + t + "Z" + e).val().length
) {
var a = "," + t + ":[" + $("#" + t + "X" + e).val();
return (
-1 ==
$("#" + t + "X" + e)
.val()
.indexOf(".") && (a += ".0"),
(a += "," + $("#" + t + "Y" + e).val()),
-1 ==
$("#" + t + "Y" + e)
.val()
.indexOf(".") && (a += ".0"),
(a += "," + $("#" + t + "Z" + e).val()),
-1 ==
$("#" + t + "Z" + e)
.val()
.indexOf(".") && (a += ".0"),
a + "]"
);
}
return "";
}
function isLeatherArmor(e) {
return (
"leather_helmet" == e ||
"leather_chestplate" == e ||
"leather_leggings" == e ||
"leather_boots" == e ||
"leather_horse_armor" == e
);
}
function getPotion(e, t) {
return "-1" != $("#" + t).val()
? "," + e + ':"minecraft:' + $("#" + t).val() + '"'
: "";
}
function hexToR(e) {
return parseInt(cutHex(e).substring(0, 2), 16);
}
function hexToG(e) {
return parseInt(cutHex(e).substring(2, 4), 16);
}
function hexToB(e) {
return parseInt(cutHex(e).substring(4, 6), 16);
}
function cutHex(e) {
return "#" == e.charAt(0) ? e.substring(1, 7) : e;
}
function floatToHex(e) {
var t = e >= 1 ? 255 : e <= 0 ? 0 : Math.floor(256 * e),
a = t.toString(16);
return t < 10 ? "0" + a : a;
}
function getFireworksItemNBT(e) {
var t = "";
$("#" + e + "Flight").val().length &&
(t += ",Flight:" + $("#" + e + "Flight").val() + "b");
var a = "";
return (
$("#" + e + "ExplosionPane > .explosion").each(function (e) {
var t = this.id;
a += getExplosionNBT(t);
}),
a.length && (t += ",Explosions:[" + a.substr(1) + "]"),
t.length ? ",Fireworks:{" + t.substr(1) + "}" : ""
);
}
function getExplosionNBT(e) {
var t = ",{Type:" + $("#" + e + "Type").val();
return (
$("#" + e + "Flicker").is(":checked") && (t += ",Flicker:1b"),
$("#" + e + "Trail").is(":checked") && (t += ",Trail:1b"),
(t += getFWColors(e, "Colors")),
(t += getFWColors(e, "FadeColors") + "}")
);
}
function compoundToNBTString(e) {
var t = "";
for (var a in e) {
var o = e[a];
if ("raw" == o.type) t += "," + a + ":" + o.val;
else if ("string" == o.type) t += "," + a + ':"' + o.val + '"';
else if ("compound" == o.type)
t += "," + a + ":" + compoundToNBTString(o.val);
else if ("arrayOfVals" == o.type || "arrayOfStrings" == o.type) {
t += "," + a + ":[";
var n = "";
if ("arrayOfVals" == o.type)
for (var s = 0; s < o.val.length; s++) n += "," + o.val[s];
else for (s = 0; s < o.val.length; s++) n += ',"' + o.val[s] + '"';
t += n.substr(1) + "]";
} else if ("arrayOfCompounds" == o.type) {
t += "," + a + ":[";
for (n = "", s = 0; s < o.val.length; s++)
n += "," + compoundToNBTString(o.val[s]);
t += n.substr(1) + "]";
}
}
return "{" + t.substr(1) + "}";
}
function importTellrawJSON(e, t) {
try {
if ((tellrawJson.makeNewTellraw(e), void 0 != t.extra)) {
var a = t.extra;
delete t.extra, tellrawJson.updateSection(e, t);
for (var o = 0; o < a.length; o++)
tellrawJson.addSectionFromObject(e, new Section(a[o]));
} else if (Array.isArray(t)) {
for (var n = 0; n < t.length; n++)
tellrawJson.addSectionFromObject(e, new Section(t[n]));
tellrawJson.flipSection(e, 1), tellrawJson.deleteSection(e);
} else
tellrawJson.addSectionFromObject(e, new Section(t)),
tellrawJson.flipSection(e, 1),
tellrawJson.deleteSection(e);
tellrawPreview(e), tellrawJson.flipSection(e, 1);
} catch (e) {}
}
function loadItemSpecificNBT(e, t, a, o) {
if ("player_head" == t && void 0 != e.SkullOwner) {
let t = e.SkullOwner.val;
void 0 != t.Properties &&
-1 !=
(t = "SkullOwner:" + compoundToNBTString(t)).indexOf("Id:[") &&
-1 == t.indexOf("Id:[I;") &&
(t = replaceAll("Id:[", "Id:[I;", t)),
$("#" + a + "SkullOwner").val(t);
} else if ("enchanted_book" == t && void 0 != e.StoredEnchantments)
for (var n = e.StoredEnchantments.val, s = 0; s < n.length; s++) {
var i = n[s],
r = getEnchantNumFromString(i.id.val);
$("#" + a + "StoredEnchantments_enc_" + r).click(),
$("#" + a + "StoredEnchantments_enc_" + r + "_lvl").val(
parseInt(i.lvl.val)
);
}
else if ("written_book" == t)
(deferJSONOutput = !0),
(deferOutput = !0),
loadWrittenBookFromNBT(a + "BookPane", e),
(deferJSONOutput = !1),
(deferOutput = !1),
bookUpdate(a + "BookPane");
else if (-1 != t.indexOf("sign")) {
if (void 0 != e.BlockEntityTag) {
if (
((deferJSONOutput = !0),
(deferOutput = !0),
loadSignFromNBT(a + "SignPane", e.BlockEntityTag.val),
void 0 != e.BlockEntityTag.val.CommandStats)
) {
var l = e.BlockEntityTag.val.CommandStats.val;
for (var c in l) void 0 != l[c] && $("#" + a + c).val(l[c].val);
}
(deferJSONOutput = !1),
(deferOutput = !1),
signUpdate(a + "SignPane");
}
} else if (
[
"command_block",
"repeating_command_block",
"chain_command_block",
].includes(t)
) {
if (void 0 != e.BlockEntityTag) {
var d = e.BlockEntityTag.val;
for (var c in d)
if ("CommandStats" == c) {
l = d[c].val;
for (var c in l) $("#" + a + c).val(l[c].val);
} else
"Command" == c
? $("#" + a + c).val(d[c].val)
: $("#" + a + c).val(parseInt(d[c].val));
}
} else if ("structure_block" == t && void 0 != e.BlockEntityTag) {
var p = e.BlockEntityTag.val;
for (var c in p)
"ignoreEntities" == c
? $("#" + a + c).val(parseInt(p[c].val))
: $("#" + a + c).val(p[c].val);
} else if ("compass" == t)
void 0 != e.LodestoneDimension &&
$("#" + a + "Dim").val(
extractMinecraftID(e.LodestoneDimension.val)
),
void 0 != e.LodestoneTracked &&
$("#" + a + "Tracked").val(parseInt(e.LodestoneTracked.val)),
void 0 != e.LodestonePos &&
($("#" + a + "X").val(e.LodestonePos.val.X.val),
$("#" + a + "Y").val(e.LodestonePos.val.Y.val),
$("#" + a + "Z").val(e.LodestonePos.val.Z.val));
else if ("filled_map" == t)
void 0 != e.map && $("#" + a + "map").val(e.map.val),
void 0 != e.display &&
void 0 != e.display.val.MapColor &&
loadColorIntNBT(a + "MapColor", e.display.val.MapColor.val);
else if ("writable_book" == t && void 0 != e.pages)
loadWritableBookFromNBT(a + "BookPane", e.pages.val);
else if (
("firework_rocket" != t && "fireworks" != t) ||
void 0 == e.Fireworks
)
if ("firework_star" == t && void 0 != e.Explosion)
loadExplosionNBT(a + "Explosion_exp_0", e.Explosion.val);
else if ("armor_stand" == t && void 0 != e.EntityTag) {
var m = t.substr(0, t.indexOf("_"));
$("#entity" + entityIndex).val(m),
$("#entity" + entityIndex).trigger("change"),
o.loadSummonCommand(e.EntityTag.val, entityIndex);
} else if (
("tropical_fish_bucket" != t &&
"cod_bucket" != t &&
"pufferfish_bucket" != t &&
"salmon_bucket" != t) ||
void 0 == e.EntityTag
) {
if (-1 != t.indexOf("spawn_egg") && void 0 != e.EntityTag) {
m = t.substr(0, t.indexOf("_spawn_egg"));
void 0 != e.EntityTag.val.id
? $("#entity" + entityIndex).val(
extractMinecraftID(e.EntityTag.val.id.val)
)
: $("#entity" + entityIndex).val(m),
$("#entity" + entityIndex).trigger("change"),
o.loadSummonCommand(e.EntityTag.val, entityIndex);
} else if (
"potion" == t ||
"splash_potion" == t ||
"lingering_potion" == t ||
"tipped_arrow" == t
)
void 0 != e.CustomPotionEffects &&
loadCustomEffectsNBT(
a + "CustomPotionEffects",
e.CustomPotionEffects.val
),
void 0 != e.Potion &&
$("#" + a + "Potion").val(
extractMinecraftID(e.Potion.val)
),
void 0 != e.CustomPotionColor &&
loadColorIntNBT(
a + "CustomPotionColor",
e.CustomPotionColor.val
);
else if ("crossbow" == t) {
var h = ["Middle", "Left", "Right"];
if (void 0 != e.ChargedProjectiles) {
var g = e.ChargedProjectiles.val;
for (s = 0; s < g.length && s < 3; s++)
if (void 0 != g[s].id) {
var _ = extractMinecraftID(g[s].id.val);
$("#" + a + h[s] + "Projectile").val(_),
$("#" + a + h[s] + "Projectile").trigger(
"change"
),
"tipped_arrow" == _
? void 0 != g[s].tag &&
(void 0 !=
g[s].tag.val.CustomPotionEffects &&
loadCustomEffectsNBT(
a +
h[s] +
"ProjectileCustomPotionEffects",
g[s].tag.val.CustomPotionEffects
.val
),
void 0 != g[s].tag.val.Potion &&
$(
"#" +
a +
h[s] +
"ProjectilePotion"
).val(
extractMinecraftID(
g[s].tag.val.Potion.val
)
),
void 0 !=
g[s].tag.val.CustomPotionColor &&
loadColorIntNBT(
a +
h[s] +
"ProjectileCustomPotionColor",
g[s].tag.val.CustomPotionColor.val
))
: "firework_rocket" == _ &&
void 0 != g[s].tag &&
(void 0 !=
g[s].tag.val.Fireworks.val.Flight &&
$(
"#" +
a +
h[s] +
"ProjectileFlight"
).val(
parseInt(
g[s].tag.val.Fireworks.val
.Flight.val
)
),
loadFireworksItemNBT(
a + h[s] + "ProjectileExplosionPane",
g[s].tag.val.Fireworks.val
));
}
}
} else if ("suspicious_stew" == t)
void 0 != e.Effects &&
loadStewEffectsNBT(a + "StewEffects", e.Effects.val);
else if ("spawner" == t) {
if (void 0 != e.BlockEntityTag)
for (var u in (void 0 != e.BlockEntityTag.val.SpawnData &&
loadSpawnPotentialFromNBT(
o,
"SpawnData",
[e.BlockEntityTag.val.SpawnData.val],
a
),
void 0 != e.BlockEntityTag.val.SpawnPotentials &&
loadSpawnPotentialFromNBT(
o,
"SpawnPotentials",
e.BlockEntityTag.val.SpawnPotentials.val,
a
),
mobSpawnerNBT))
void 0 != e.BlockEntityTag.val[u] &&
$("#" + u + a).val(e.BlockEntityTag.val[u].val);
} else if ("bee_nest" == t || "beehive" == t)
void 0 != e.BlockEntityTag &&
loadBeeHiveNestFromNBT(o, e.BlockEntityTag.val, a);
else if ("campfire" == t || "soul_campfire" == t) {
if (void 0 != e.BlockEntityTag) {
if (void 0 != e.BlockEntityTag.val.CookingTimes) {
var b = e.BlockEntityTag.val.CookingTimes.val;
for (s = 0; s < 4 && s < b.length; s++)
$("#" + a + "CookingTime" + s).val(b[s].trim());
}
if (void 0 != e.BlockEntityTag.val.CookingTotalTimes)
for (
b = e.BlockEntityTag.val.CookingTotalTimes.val,
s = 0;
s < 4 && s < b.length;
s++
)
$("#" + a + "CookingTotalTime" + s).val(
b[s].trim()
);
if (void 0 != e.BlockEntityTag.val.Items) {
var f = e.BlockEntityTag.val.Items.val;
for (s = 0; s < f.length; s++) {
setupItemSlotForNBT(
a + "Slot" + replaceAll("b", "", f[s].Slot.val),
f[s],
o
);
}
}
}
} else if ("item_frame" == t) {
if (void 0 != e.EntityTag) {
void 0 != e.EntityTag.val.Item &&
(setupItemSlotForNBT(
a + "ItemInFrame",
e.EntityTag.val.Item.val,
o
),
showHide(a + "ItemInFramePane", a + "ItemInFrameSH"));
let t = [
"ItemRotation",
"Invulnerable",
"Invisible",
"Fixed",
];
for (let o = 0; o < t.length; o++)
void 0 != e.EntityTag.val[t[o]] &&
$("#" + a + t[o]).val(
parseInt(e.EntityTag.val[t[o]].val)
);
}
} else if ("lectern" == t)
void 0 != e.BlockEntityTag &&
(void 0 != e.BlockEntityTag.val.Page &&
$("#" + a + "Page").val(e.BlockEntityTag.val.Page.val),
void 0 != e.BlockEntityTag.val.Book &&
(setupItemSlotForNBT(
a + "Book",
e.BlockEntityTag.val.Book.val,
o
),
showHide(a + "BookPane", a + "BookSH")));
else if ("beacon" == t)
void 0 != e.BlockEntityTag &&
(void 0 != e.BlockEntityTag.val.Lock &&
$("#" + a + "Lock").val(e.BlockEntityTag.val.Lock.val),
void 0 != e.BlockEntityTag.val.Levels &&
$("#" + a + "Levels").val(
e.BlockEntityTag.val.Levels.val
),
void 0 != e.BlockEntityTag.val.Primary &&
$("#" + a + "Primary").val(
e.BlockEntityTag.val.Primary.val
),
void 0 != e.BlockEntityTag.val.Secondary &&
$("#" + a + "Secondary").val(
e.BlockEntityTag.val.Secondary.val
));
else if (
-1 != t.indexOf("banner") ||
"shield" == t ||
"barrel" == t ||
"chest" == t ||
"trapped_chest" == t ||
"brewing_stand" == t ||
"dispenser" == t ||
"dropper" == t ||
"furnace" == t ||
"blast_furnace" == t ||
"smoker" == t ||
"hopper" == t ||
-1 != t.indexOf("shulker_box")
) {
if (void 0 != e.BlockEntityTag) {
if (
(void 0 != e.BlockEntityTag.val.Lock &&
$("#" + a + "Lock").val(
e.BlockEntityTag.val.Lock.val
),
-1 != t.indexOf("banner") || "shield" == t)
) {
if (void 0 != e.BlockEntityTag.val.Patterns) {
let t = compoundToNBTString(e);
$("#" + a + "BlockEntityTag").val(
"Patterns:" +
extractSegment(
"[",
"]",
t.indexOf("Patterns") + 9,
t
)
);
}
} else
"barrel" == t ||
"chest" == t ||
"trapped_chest" == t ||
"dispenser" == t ||
"dropper" == t ||
"hopper" == t ||
-1 != t.indexOf("shulker_box")
? (void 0 != e.BlockEntityTag.val.LootTable &&
$("#" + a + "LootTable").val(
e.BlockEntityTag.val.LootTable.val
),
"hopper" == t &&
void 0 !=
e.BlockEntityTag.val.TransferCooldown &&
$("#" + a + "TransferCooldown").val(
e.BlockEntityTag.val.TransferCooldown.val
))
: "brewing_stand" == t
? (void 0 != e.BlockEntityTag.val.BrewTime &&
$("#" + a + "BrewTime").val(
e.BlockEntityTag.val.BrewTime.val
),
void 0 != e.BlockEntityTag.val.Fuel &&
$("#" + a + "Fuel").val(
parseInt(e.BlockEntityTag.val.Fuel.val)
))
: ("furnace" != t &&
"blast_furnace" != t &&
"smoker" != t) ||
(void 0 != e.BlockEntityTag.val.BurnTime &&
$("#" + a + "BurnTime").val(
e.BlockEntityTag.val.BurnTime.val
),
void 0 != e.BlockEntityTag.val.CookTime &&
$("#" + a + "CookTime").val(
e.BlockEntityTag.val.CookTime.val
),
void 0 != e.BlockEntityTag.val.CookTimeTotal &&
$("#" + a + "CookTimeTotal").val(
e.BlockEntityTag.val.CookTimeTotal.val
));
if (void 0 != e.BlockEntityTag.val.Items)
for (
f = e.BlockEntityTag.val.Items.val, s = 0;
s < f.length;
s++
) {
setupItemSlotForNBT(
a + "Slot" + replaceAll("b", "", f[s].Slot.val),
f[s],
o
);
}
if (void 0 != e.BlockEntityTag.val.CustomName) {
var k;
try {
k = JSON.parse(
JSON.parse(
'"' +
e.BlockEntityTag.val.CustomName.val +
'"'
)
);
} catch (i) {
k = JSON.parse(
JSON.parse(
'"' +
e.BlockEntityTag.val.CustomName.val
.replace(/"/g, '\\"')
.replace(/\\'/g, "'") +
'"'
)
);
}
importTellrawJSON(a + "CustomName", k),
showHide(
a + "CustomNameEntityName",
a + "CustomNameEntityNameSH"
);
}
}
} else if ("knowledge_book" == t && void 0 != e.Recipes)
for (s = 0; s < e.Recipes.val.length; s++)
addTileFromNBTLoad(
a + "Recipes",
extractMinecraftID(e.Recipes.val[s])
);
} else {
var m = t.substr(0, t.indexOf("_bucket"));
$("#entity" + entityIndex).val(m),
$("#entity" + entityIndex).trigger("change"),
o.loadSummonCommand(e.EntityTag.val, entityIndex);
}
else
void 0 != e.Fireworks.val.Flight &&
$("#" + a + "Flight").val(parseInt(e.Fireworks.val.Flight.val)),
loadFireworksItemNBT(a + "ExplosionPane", e.Fireworks.val);
}
function objectKeyByValue(e, t) {
return Object.entries(e).find(e => e[1] === t);
}
function setupItemSlotForNBT(e, t, a) {
if (void 0 != t.id) {
var o = extractMinecraftID(t.id.val);
if (
(void 0 != t.Damage &&
$("#" + e + " option[value='" + o + ":" + t.Damage.val + "']")
.length &&
(o += ":" + t.Damage.val),
showHide(e + "Pane", e + "SH"),
$("#" + e).length)
)
$("#" + e).val(o),
$("#" + e).trigger("change"),
loadItemNBTIntoSlot(t, o, e, a);
else {
let o = a.traverseObjectToNBT(t, "");
(o = replaceAll(",tag{}", "", (o = attribConverter(o)))),
cachedNBT.setNBT(e, "," + o),
$("#" + e + "Pane").append(
"<div class='itemNBT'>{" + o + "}</div>"
);
}
}
}
function attribConverter(e) {
let t = [
["maxHealth", "max_health"],
["followRange", "follow_range"],
["knockbackResistance", "knockback_resistance"],
["movementSpeed", "movement_speed"],
["attackDamage", "attack_damage"],
["attackSpeed", "attack_speed"],
["armorToughness", "armor_toughness"],
["attackKnockback", "attack_knockback"],
["jumpStrength", "jump_strength"],
["spawnReinforcements", "spawn_reinforcements"],
["flyingSpeed", "flying_speed"],
];
for (let a = 0; a < t.length; a++) e = replaceAll(t[a][0], t[a][1], e);
return e;
}
function loadItemSpecificOptions(e, t) {
var a = $("#" + e).val();
if (isLeatherArmor(a))
createComponent(
e + "ItemPane",
"Color",
{
id: e + "Color",
type: "colorChooser",
cssClass: "fLabel100",
tip: "item.leatherArmor",
},
t
);
else if ("enchanted_book" == a)
$("#" + e + "ItemPane").append(
"<br><span class='fLabel100'>StoredEnchantments</span>" +
mkShowHide(
e + "StoredEnchantments",
e + "StoredEnchantmentsSH"
) +
"<div id='" +
e +
"StoredEnchantments' class='EnchantmentsControl roundedDiv'></div>" +
makeTip("item.enchantment_book")
),
makeEnchantments(e + "StoredEnchantments", !0, $("#" + e).val());
else if ("player_head" == a)
createComponent(
e + "ItemPane",
"SkullOwner",
{
id: e + "SkullOwner",
type: "text",
cssClass: "fLabel100",
fwClass: "bigTF",
tip: "item.skullOwner",
},
t
);
else if ("written_book" == a) createWrittenBookForm(e, t);
else if (-1 != a.indexOf("sign")) {
var o = getCommandStatsFormNBT();
for (var n in o) {
var s = { id: e + n };
Object.assign(s, o[n]), createComponent(e + "ItemPane", n, s, t);
}
createSignForm(e, t);
} else if ("structure_block" == a)
for (var n in structureBlockNBT) {
s = { id: e + n };
Object.assign(s, structureBlockNBT[n]),
createComponent(e + "ItemPane", n, s, t);
}
else if ("compass" == a)
createComponent(
e + "ItemPane",
"LodestoneDimension",
{
id: e + "Dim",
type: "makeSelect",
values: ["unset", "overworld", "the_end", "the_nether"],
format: "special",
cssClass: "fLabel100",
tip: a,
align: "R",
},
t
),
createComponent(
e + "ItemPane",
"LodestoneTracked",
{
id: e + "Tracked",
type: "choice",
values: unsetTrueFalse,
format: "special",
cssClass: "fLabel100",
tip: a,
align: "R",
},
t
),
createComponent(
e + "ItemPane",
"X",
{
id: e + "X",
type: "text",
cssClass: "fLabel100",
format: "int",
fwClass: "medTF",
tip: a,
},
t
),
createComponent(
e + "ItemPane",
"Y",
{
id: e + "Y",
type: "text",
cssClass: "fLabel100",
format: "int",
fwClass: "medTF",
},
t
),
createComponent(
e + "ItemPane",
"Z",
{
id: e + "Z",
type: "text",
cssClass: "fLabel100",
format: "int",
fwClass: "medTF",
},
t
);
else if ("filled_map" == a)
createComponent(
e + "ItemPane",
"map",
{
id: e + "map",
type: "text",
cssClass: "fLabel100",
fwClass: "smallTF",
format: "int",
tip: a,
},
t
),
createComponent(
e + "ItemPane",
"MapColor",
{
id: e + "MapColor",
type: "colorChooser",
cssClass: "fLabel100",
tip: a,
},
t
);
else if ("writable_book" == a) createWritableBookForm(e, t);
else if ("firework_rocket" == a || "fireworks" == a)
createComponent(
e + "ItemPane",
"Flight",
{
id: e + "Flight",
type: "text",
cssClass: "fLabel100",
format: "b",
tip: "rocket",
},
t
),
createComponent(
e + "ItemPane",
"Explosion",
{
type: "fwExplosion",
id: e + "Explosion",
forItem: !0,
entDescID: "e" + entityIndex + "_" + e,
format: "special",
cssClass: "fLabel100",
tip: "fireworks_rocket.Explosion",
},
entityIndex
);
else if ("firework_star" == a)
$("#" + e + "ItemPane").append(
"<br><span class='fLabel100'>Explosion</span><span style='display:inline;white-space: nowrap;'><div id='" +
e +
"Explosion' class='ExplosionPane'></div></span>"
),
addExplosion(e + "Explosion", !0);
else if (-1 != a.indexOf("spawn_egg"))
entityIndex++,
$("#" + e + "ItemPane").append(
"<input type='hidden' id='" +
e +
"_entID' value='" +
entityIndex +
"'>"
),
makeAddEntityPaneforSpawnEgg(
e + "ItemPane",
"spawnEggMob_" + entityIndex,
!0,
a.substr(0, a.indexOf("_spawn_egg"))
);
else if (
"potion" == a ||
"splash_potion" == a ||
"lingering_potion" == a ||
"tipped_arrow" == a
)
createComponent(
e + "ItemPane",
"Potion",
{
id: e + "Potion",
cssClass: "fLabel100",
type: "makeSelectWithIndexAndValues",
values: potions,
format: "string",
tip: "potion",
},
t
),
createComponent(
e + "ItemPane",
"CustomPotionColor",
{
id: e + "CustomPotionColor",
cssClass: "fLabel100",
type: "colorChooser",
format: "long",
tip: "potion",
},
t
),
createComponent(
e + "ItemPane",
"CustomPotionEffects",
{
id: e + "CustomPotionEffects",
cssClass: "fLabel100",
type: "statusEffects",
format: "special",
tip: "potion",
},
t
);
else if ("crossbow" == a) {
var i = [
"unset",
"arrow",
"tipped_arrow",
"spectral_arrow",
"firework_rocket",
];
createComponent(
e + "ItemPane",
"Left Projectile",
{
id: e + "LeftProjectile",
cssClass: "fLabel100",
type: "makeSelect",
values: i,
format: "special",
},
t
),
$("#" + e + "ItemPane").append(
"<br><div id='" +
e +
"LeftProjectilePane' class='crossbowItem'></div>"
),
createComponent(
e + "ItemPane",
"Middle Projectile",
{
id: e + "MiddleProjectile",
cssClass: "fLabel100",
type: "makeSelect",
values: i,
format: "special",
},
t
),
$("#" + e + "ItemPane").append(
"<br><div id='" +
e +
"MiddleProjectilePane' class='crossbowItem'></div>"
),
createComponent(
e + "ItemPane",
"Right Projectile",
{
id: e + "RightProjectile",
cssClass: "fLabel100",
type: "makeSelect",
values: i,
format: "special",
},
t
),
$("#" + e + "ItemPane").append(
"<br><div id='" + e + "RightProjectilePane'></div>"
),
$("#" + e + "LeftProjectile").bind("change", function () {
updateCrossbowForm(e, "LeftProjectile", t);
}),
$("#" + e + "MiddleProjectile").bind("change", function () {
updateCrossbowForm(e, "MiddleProjectile", t);
}),
$("#" + e + "RightProjectile").bind("change", function () {
updateCrossbowForm(e, "RightProjectile", t);
});
} else if ("suspicious_stew" == a)
createComponent(
e + "ItemPane",
"Effects",
{
id: e + "StewEffects",
cssClass: "fLabel100",
type: "stewEffects",
format: "special",
tip: "potion",
},
t
);
else if ("armor_stand" == a) {
entityIndex++,
$("#" + e + "ItemPane").append(
"<input type='hidden' id='" +
e +
"_entID' value='" +
entityIndex +
"'>"
);
var r =
mkShowHide((l = "armorStand" + entityIndex), l + "SH") +
"<div id='" +
l +
"' class='spawnPotentialContainer roundedDiv'>";
(r +=
"<input type='hidden' id='entity" +
entityIndex +
"' value='armor_stand'>"),
(r +=
"<div id='entityPane" +
entityIndex +
"' class='entityWrapper'></div></div>"),
$("#" + e + "ItemPane").html().length && (r = "<br>" + r),
$("#" + e + "ItemPane").append(r),
$("#" + l).css(
"background",
"rgba(" +
hexToR(bgPalette[entityIndex % bgPalette.length]) +
"," +
hexToG(bgPalette[entityIndex % bgPalette.length]) +
"," +
hexToB(bgPalette[entityIndex % bgPalette.length]) +
",0.5)"
),
entityChangeSpawnEgg(entityIndex);
} else if (
"tropical_fish_bucket" == a ||
"cod_bucket" == a ||
"pufferfish_bucket" == a ||
"salmon_bucket" == a
) {
let t = a.substr(0, a.indexOf("_bucket"));
entityIndex++,
$("#" + e + "ItemPane").append(
"<input type='hidden' id='" +
e +
"_entID' value='" +
entityIndex +
"'>"
);
var l;
r =
mkShowHide((l = "armorStand" + entityIndex), l + "SH") +
"<div id='" +
l +
"' class='spawnPotentialContainer roundedDiv'>";
(r +=
"<input type='hidden' id='entity" +
entityIndex +
"' value='" +
t +
"'>"),
(r +=
"<div id='entityPane" +
entityIndex +
"' class='entityWrapper'></div></div>"),
$("#" + e + "ItemPane").html().length && (r = "<br>" + r),
$("#" + e + "ItemPane").append(r),
$("#" + l).css(
"background",
"rgba(" +
hexToR(bgPalette[entityIndex % bgPalette.length]) +
"," +
hexToG(bgPalette[entityIndex % bgPalette.length]) +
"," +
hexToB(bgPalette[entityIndex % bgPalette.length]) +
",0.5)"
),
entityChangeSpawnEgg(entityIndex);
} else if (
[
"command_block",
"repeating_command_block",
"chain_command_block",
].includes(a)
) {
var c = getCommandBlockFieldsFormNBT();
o = getCommandStatsFormNBT();
for (var n in (Object.assign(c, o), c)) {
s = { id: e + n };
Object.assign(s, c[n]), createComponent(e + "ItemPane", n, s, t);
}
} else if ("campfire" == a || "soul_campfire" == a)
for (var d = 0; d < 4; d++)
createComponent(
e + "ItemPane",
d + "Slot",
{
type: "itemselect",
format: "special",
cssClass: "fLabel100",
hide: !0,
label: "Slot " + d,
id: e + "Slot" + d,
},
entityIndex
),
createComponent(
e + "ItemPane",
d + "CookingTime",
{
type: "ticks",
format: "special",
cssClass: "fLabel100",
tip: "campfire.CookingTime",
label: "CookingTime " + d,
id: e + "CookingTime" + d,
},
entityIndex
),
createComponent(
e + "ItemPane",
d + "CookingTotalTime",
{
type: "ticks",
format: "special",
cssClass: "fLabel100",
tip: "campfire.CookingTotalTime",
label: "CookingTotalTime " + d,
id: e + "CookingTotalTime" + d,
},
entityIndex
);
else if ("item_frame" == a)
createComponent(
e + "ItemPane",
"Item",
{
id: e + "ItemInFrame",
type: "itemselect",
forceConstruct: settings.loadItemUI,
tip: "item",
},
entityIndex
),
createComponent(
e + "ItemPane",
"ItemRotation",
{
id: e + "ItemRotation",
type: "choice",
values: [
[-1, "unset"],
["1", "45&deg;"],
["2", "90&deg;"],
["3", "135&deg;"],
["4", "180&deg;"],
["5", "225&deg;"],
["6", "270&deg;"],
["7", "315&deg;"],
],
format: "b",
tip: "item_frame",
},
entityIndex
),
createComponent(
e + "ItemPane",
"Invulnerable",
{
id: e + "Invulnerable",
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "entity",
},
entityIndex
),
createComponent(
e + "ItemPane",
"Invisible",
{
id: e + "Invisible",
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "item_frame",
},
entityIndex
),
createComponent(
e + "ItemPane",
"Fixed",
{
id: e + "Fixed",
type: "choice",
values: unsetTrueFalse,
format: "b",
tip: "item_frame",
},
entityIndex
);
else if ("lectern" == a)
createComponent(
e + "ItemPane",
"Page",
{ id: e + "Page", type: "text", format: "int", tip: "lectern" },
entityIndex
),
createComponent(
e + "ItemPane",
"Book",
{
id: e + "Book",
type: "itemselect",
forceConstruct: settings.loadItemUI,
tip: "lectern",
},
entityIndex
);
else if ("beacon" == a) {
let t = statusEffects.slice();
t.splice(0, 1, [0, "None"]),
createComponent(
e + "ItemPane",
"Lock",
{
id: e + "Lock",
type: "text",
format: "string",
tip: "block.Lock",
},
entityIndex
),
createComponent(
e + "ItemPane",
"Levels",
{
id: e + "Levels",
type: "text",
format: "int",
tip: "beacon.Levels",
},
entityIndex
),
createComponent(
e + "ItemPane",
"Primary",
{
id: e + "Primary",
type: "choice",
values: t,
format: "int",
tip: "beacon.Primary",
},
entityIndex
),
createComponent(
e + "ItemPane",
"Secondary",
{
id: e + "Secondary",
type: "choice",
values: t,
format: "int",
tip: "beacon.Secondary",
},
entityIndex
);
} else if (
"barrel" == a ||
"chest" == a ||
"trapped_chest" == a ||
"brewing_stand" == a ||
"dispenser" == a ||
"dropper" == a ||
"furnace" == a ||
"blast_furnace" == a ||
"smoker" == a ||
"hopper" == a ||
-1 != a.indexOf("shulker_box")
) {
createComponent(
e + "ItemPane",
"CustomName",
{
id: e + "CustomName",
type: "customNameJSON",
format: "special",
cssClass: "fLabel100",
tip: "block.CustomName",
},
entityIndex
),
createComponent(
e + "ItemPane",
"Lock",
{
id: e + "Lock",
type: "text",
cssClass: "fLabel100",
format: "string",
tip: "block.Lock",
},
entityIndex
),
"barrel" == a ||
"chest" == a ||
"trapped_chest" == a ||
"dispenser" == a ||
"dropper" == a ||
"hopper" == a ||
-1 != a.indexOf("shulker_box")
? (createComponent(
e + "ItemPane",
"LootTable",
{
id: e + "LootTable",
type: "text",
cssClass: "fLabel100",
fwClass: "bigTF",
format: "string",
tip: "chest.LootTable",
},
entityIndex
),
"hopper" == a &&
createComponent(
e + "ItemPane",
"TransferCooldown",
{
id: e + "TransferCooldown",
cssClass: "fLabel100",
type: "ticks",
format: "short",
tip: "hopper.TransferCooldown",
},
entityIndex
))
: "brewing_stand" == a
? (createComponent(
e + "ItemPane",
"BrewTime",
{
id: e + "BrewTime",
cssClass: "fLabel100",
type: "ticks",
tip: "brewing_stand.BrewTime",
},
entityIndex
),
createComponent(
e + "ItemPane",
"Fuel",
{
id: e + "Fuel",
cssClass: "fLabel100",
type: "text",
format: "b",
tip: "brewing_stand.Fuel",
},
entityIndex
))
: ("furnace" != a && "blast_furnace" != a && "smoker" != a) ||
(createComponent(
e + "ItemPane",
"BurnTime",
{
id: e + "BurnTime",
cssClass: "fLabel100",
type: "ticks",
tip: "furnace.BurnTime",
},
entityIndex
),
createComponent(
e + "ItemPane",
"CookTime",
{
id: e + "CookTime",
cssClass: "fLabel100",
type: "ticks",
tip: "furnace.CookTime",
},
entityIndex
),
createComponent(
e + "ItemPane",
"CookTimeTotal",
{
id: e + "CookTimeTotal",
cssClass: "fLabel100",
type: "ticks",
tip: "furnace.CookTimeTotal",
},
entityIndex
));
var p =
{
chest: 27,
trapped_chest: 27,
brewing_stand: 5,
dropper: 9,
dispenser: 9,
blast_furnace: 3,
smoker: 3,
furnace: 3,
hopper: 5,
barrel: 27,
}[a] || 27;
for (d = 0; d < p; d++)
createComponent(
e + "ItemPane",
d + "Slot",
{
type: "itemselect",
format: "special",
cssClass: "fLabel100",
hide: !0,
label: "Slot " + d,
id: e + "Slot" + d,
},
entityIndex
);
} else if ("spawner" == a)
for (var n in (initMobSpawnerNBT(), mobSpawnerNBT)) {
s = { id: n + e };
Object.assign(s, mobSpawnerNBT[n]),
createComponent(e + "ItemPane", n, s, t);
}
else if ("beehive" == a || "bee_nest" == a)
for (var n in (initBeeHiveNestNBT(), beeHiveNestNBT)) {
s = { id: n + e };
Object.assign(s, beeHiveNestNBT[n]),
createComponent(e + "ItemPane", n, s, t);
}
else
-1 != a.indexOf("_banner") || "shield" == a
? (createComponent(
e + "ItemPane",
"BlockEntityTag",
{
id: e + "BlockEntityTag",
type: "text",
cssClass: "fLabel100",
fwClass: "bigTF",
tip: "item.bannerShield",
},
t
),
-1 != a.indexOf("_banner") &&
createComponent(
e + "ItemPane",
"CustomName",
{
id: e + "CustomName",
type: "customNameJSON",
format: "special",
cssClass: "fLabel100",
tip: "banner.CustomName",
},
entityIndex
))
: "knowledge_book" == a &&
createComponent(
e + "ItemPane",
"Recipes",
{
id: e + "Recipes",
cssClass: "fLabel100",
type: "itemForRecipes",
tip: "item.Recipes",
},
t
);
}
function updateCrossbowForm(e, t, a) {
$("#" + e + t + "Pane").html(""),
"arrow" == $("#" + e + t).val() ||
"spectral_arrow" == $("#" + e + t).val() ||
("tipped_arrow" == $("#" + e + t).val()
? (createComponent(
e + t + "Pane",
"Potion",
{
id: e + t + "Potion",
cssClass: "fLabel100",
type: "makeSelectWithIndexAndValues",
values: potions,
format: "string",
tip: "potion",
},
a
),
createComponent(
e + t + "Pane",
"CustomPotionColor",
{
id: e + t + "CustomPotionColor",
cssClass: "fLabel100",
type: "colorChooser",
format: "long",
tip: "potion",
},
a
),
createComponent(
e + t + "Pane",
"CustomPotionEffects",
{
id: e + t + "CustomPotionEffects",
cssClass: "fLabel100",
type: "statusEffects",
format: "special",
tip: "potion",
},
a
))
: "firework_rocket" == $("#" + e + t).val() &&
(createComponent(
e + t + "Pane",
"Flight",
{
id: e + t + "Flight",
type: "text",
cssClass: "fLabel100",
format: "b",
tip: "rocket",
},
a
),
createComponent(
e + t + "Pane",
"Explosion",
{
type: "fwExplosion",
id: e + t + "Explosion",
forItem: !0,
entDescID: "e" + entityIndex + "_" + e,
format: "special",
cssClass: "fLabel100",
tip: "fireworks_rocket.Explosion",
},
entityIndex
))),
$("#" + e + t + "Pane br:first").remove();
}
function initMobSpawnerNBT() {
void 0 == mobSpawnerNBT &&
(mobSpawnerNBT = {
SpawnCount: { type: "text", format: "short", tip: "mob_spawner" },
SpawnRange: { type: "text", format: "short", tip: "mob_spawner" },
Delay: { type: "ticks", format: "short", tip: "mob_spawner" },
MinSpawnDelay: {
type: "ticks",
format: "short",
tip: "mob_spawner",
},
MaxSpawnDelay: {
type: "ticks",
format: "short",
tip: "mob_spawner",
},
MaxNearbyEntities: {
type: "text",
format: "short",
tip: "mob_spawner",
},
RequiredPlayerRange: {
type: "text",
format: "short",
tip: "mob_spawner",
},
SpawnPotential: {
type: "spawnPotential",
format: "special",
tip: "mob_spawner",
},
});
}
function initBeeHiveNestNBT() {
void 0 == beeHiveNestNBT &&
(beeHiveNestNBT = {
FlowerPosX: {
type: "text",
format: "special",
align: "R",
tip: "beehive.FlowerPos",
},
FlowerPosY: { type: "text", format: "special", align: "R" },
FlowerPosZ: { type: "text", format: "special", align: "R" },
Bees: { type: "beeforHive", format: "special" },
});
}
function getItemSpecificNBT(e) {
var t = "";
if ("enchanted_book" == (_ = $("#" + e).val()))
t += replaceAll(
"Enchantments",
"StoredEnchantments",
getEnchantments(e, "StoredEnchantments")
);
else if ("player_head" == _) {
(t = $("#" + e + "SkullOwner").val()).length &&
(t =
-1 != t.indexOf("SkullOwner:{Id:")
? "," +
(t = (t = (t = (t = t.substr(
t.indexOf("SkullOwner:{Id:")
)).replace("}]}}}}]}", "}]}}")).replace(
"}]}}}",
"}]}}"
)).replace(" 1", ""))
: ',SkullOwner:"' + t + '"');
} else if ("written_book" == _) t = getWrittenBookNBT(e + "BookPane");
else if (
[
"command_block",
"repeating_command_block",
"chain_command_block",
].includes(_)
) {
var a = "",
o = getCommandBlockFieldsFormNBT();
for (var n in o) a += getNBTforKey(e + n, o[n], "");
a = replaceAll(e, "", a);
var s = getCommandStatsFormNBT(),
i = "";
for (var n in s) i += getNBTforKey(e + n, s[n], "");
i.length &&
(a += ",CommandStats:{" + replaceAll(e, "", i.substr(1)) + "}"),
a.length && (t = ",BlockEntityTag:{" + a.substr(1) + "}");
} else if (-1 != _.indexOf("sign")) {
(s = getCommandStatsFormNBT()), (i = "");
for (var n in s) i += getNBTforKey(e + n, s[n], "");
i.length &&
(t += ",CommandStats:{" + replaceAll(e, "", i.substr(1)) + "}"),
(t =
",BlockEntityTag:{" +
(t += signJson.getJsonForSign(e + "SignPane")).substr(1) +
"}");
} else if ("structure_block" == _) {
var r = "";
for (var n in structureBlockNBT)
r += getNBTforKey(e + n, structureBlockNBT[n], "");
r.length &&
(t += ",BlockEntityTag:{" + replaceAll(e, "", r.substr(1)) + "}");
} else if ("compass" == _)
"unset" != $("#" + e + "Dim").val() &&
((t +=
',LodestoneDimension:"minecraft:' +
$("#" + e + "Dim").val() +
'"'),
-1 != $("#" + e + "Tracked").val() &&
(t +=
",LodestoneTracked:" + $("#" + e + "Tracked").val() + "b"),
$("#" + e + "X").val().length &&
$("#" + e + "Y").val().length &&
$("#" + e + "Z").val().length &&
(t +=
",LodestonePos:{X:" +
$("#" + e + "X").val() +
",Y:" +
$("#" + e + "Y").val() +
",Z:" +
$("#" + e + "Z").val() +
"}"));
else if ("filled_map" == _)
$("#" + e + "map").val().length &&
(t += ",map:" + $("#" + e + "map").val());
else if ("writable_book" == _) t = getWritableBookNBT(e + "BookPane");
else if ("firework_rocket" == _ || "fireworks" == _)
t = getFireworksItemNBT(e);
else if ("firework_star" == _)
t = ",Explosion:" + getExplosionNBT(e + "Explosion_exp_0").substr(1);
else if ("armor_stand" == _) {
var l = $("#" + e + "_entID").val();
(t = entityDescriptors["e" + l].getEntitySpecificCommand(l)),
cachedNBT.setNBT("e" + l, t),
t.length > 0 && (t = ",EntityTag:{" + t.substr(1) + "}");
} else if (
"tropical_fish_bucket" == _ ||
"cod_bucket" == _ ||
"pufferfish_bucket" == _ ||
"salmon_bucket" == _
) {
l = $("#" + e + "_entID").val();
(t = entityDescriptors["e" + l].getEntitySpecificCommand(l)),
cachedNBT.setNBT("e" + l, t),
t.length > 0 && (t = ",EntityTag:{" + t.substr(1) + "}");
} else if (-1 != _.indexOf("spawn_egg")) {
l = $("#" + e + "_entID").val();
_.substr(0, _.indexOf("_spawn_egg")) != $("#entity" + l).val() &&
(t += ',id:"minecraft:' + $("#entity" + l).val() + '"'),
(t += entityDescriptors["e" + l].getEntitySpecificCommand(l)),
cachedNBT.setNBT("e" + l, t),
t.length > 0 && (t = ",EntityTag:{" + t.substr(1) + "}");
} else if (
"potion" == _ ||
"splash_potion" == _ ||
"lingering_potion" == _ ||
"tipped_arrow" == _
)
(t += getStatusEffectsNBT(
"CustomPotionEffects",
e + "CustomPotionEffects"
)),
(t += getPotion("Potion", e + "Potion")),
(t += getColorInteger(
e + "CustomPotionColor",
"CustomPotionColor"
));
else if ("crossbow" == _) {
var c =
getProjectile(e, "MiddleProjectile") +
getProjectile(e, "LeftProjectile") +
getProjectile(e, "RightProjectile");
",{},{},{}" != c &&
(t += ",ChargedProjectiles:[" + c.substr(1) + "],Charged:1b");
} else if ("suspicious_stew" == _)
t += getStewEffectsNBT("Effects", e + "StewEffects");
else if ("campfire" == _ || "soul_campfire" == _) {
for (var d = "", p = "", m = "", h = "", g = 0; g < 4; g++) {
"{}" != (b = getItemNBT(e + "Slot" + g)) &&
(h += ",{Slot:" + g + "b," + b.substr(1));
}
h.length && (d = ",Items:[" + h.substr(1) + "]");
for (g = 0; g < 4; g++)
$("#" + e + "CookingTime" + g).val().length
? (p += "," + $("#" + e + "CookingTime" + g).val())
: (p += ",0"),
$("#" + e + "CookingTotalTime" + g).val().length
? (m += "," + $("#" + e + "CookingTotalTime" + g).val())
: (m += ",0");
",0,0,0,0" != p && (d += ",CookingTimes:[I;" + p.substr(1) + "]"),
",0,0,0,0" != m &&
(d += ",CookingTotalTimes:[I;" + m.substr(1) + "]"),
d.length && (t += ",BlockEntityTag:{" + d.substr(1) + "}");
} else if ("item_frame" == _) {
let a = "";
"{}" != (_ = getItemNBT(e + "ItemInFrame")) && (a += ",Item:" + _);
let o = ["ItemRotation", "Invulnerable", "Invisible", "Fixed"];
for (let t = 0; t < o.length; t++)
-1 != $("#" + e + o[t]).val() &&
(a += "," + o[t] + ":" + $("#" + e + o[t]).val() + "b");
a.length && (t += ",EntityTag:{" + a.substr(1) + "}");
} else if ("lectern" == _) {
let a = "";
var _;
"{}" != (_ = getItemNBT(e + "Book")) && (a += ",Book:" + _),
$("#" + e + "Page").val().length &&
(a += ",Page:" + $("#" + e + "Page").val()),
a.length && (t += ",BlockEntityTag:{" + a.substr(1) + "}");
} else if ("beacon" == _) {
let a = "";
$("#" + e + "Lock").val().length &&
(a += ',Lock:"' + $("#" + e + "Lock").val() + '"'),
$("#" + e + "Levels").val().length &&
(a += ",Levels:" + $("#" + e + "Levels").val()),
0 != $("#" + e + "Primary").val() &&
(a += ",Primary:" + $("#" + e + "Primary").val()),
0 != $("#" + e + "Secondary").val() &&
(a += ",Secondary:" + $("#" + e + "Secondary").val()),
a.length && (t += ",BlockEntityTag:{" + a.substr(1) + "}");
} else if (
"barrel" == _ ||
"chest" == _ ||
"trapped_chest" == _ ||
"brewing_stand" == _ ||
"dispenser" == _ ||
"dropper" == _ ||
"furnace" == _ ||
"blast_furnace" == _ ||
"smoker" == _ ||
"hopper" == _ ||
-1 != _.indexOf("shulker_box")
) {
h = "";
var u =
{
chest: 27,
trapped_chest: 27,
brewing_stand: 5,
dropper: 9,
dispenser: 9,
blast_furnace: 3,
smoker: 3,
furnace: 3,
hopper: 5,
barrel: 27,
}[_] || 27;
for (g = 0; g < u; g++) {
var b;
"{}" != (b = getItemNBT(e + "Slot" + g)) &&
(h += ",{Slot:" + g + "b," + b.substr(1));
}
h.length && (t = ",Items:[" + h.substr(1) + "]"),
$("#" + e + "Lock").val().length &&
(t += ',Lock:"' + $("#" + e + "Lock").val() + '"'),
"barrel" == _ ||
"chest" == _ ||
"trapped_chest" == _ ||
"dispenser" == _ ||
"dropper" == _ ||
"hopper" == _ ||
-1 != _.indexOf("shulker_box")
? ($("#" + e + "LootTable").val().length &&
(t +=
',LootTable:"' +
$("#" + e + "LootTable").val() +
'"'),
"hopper" == _ &&
$("#" + e + "TransferCooldown").val().length &&
(t +=
",TransferCooldown:" +
$("#" + e + "TransferCooldown").val()))
: "brewing_stand" == _
? ($("#" + e + "BrewTime").val().length &&
(t += ",BrewTime:" + $("#" + e + "BrewTime").val()),
$("#" + e + "Fuel").val().length &&
(t += ",Fuel:" + $("#" + e + "Fuel").val() + "b"))
: ("furnace" != _ && "blast_furnace" != _ && "smoker" != _) ||
($("#" + e + "BurnTime").val().length &&
(t += ",BurnTime:" + $("#" + e + "BurnTime").val()),
$("#" + e + "CookTime").val().length &&
(t += ",CookTime:" + $("#" + e + "CookTime").val()),
$("#" + e + "CookTimeTotal").val().length &&
(t +=
",CookTimeTotal:" +
$("#" + e + "CookTimeTotal").val())),
(v = jsonConvert(
JSON.stringify(tellrawJson.getJsonForTellraw(e + "CustomName"))
)).length > 2 && (t += ",CustomName:" + v),
t.length > 0 && (t = ",BlockEntityTag:{" + t.substr(1) + "}");
} else if ("spawner" == _) {
initMobSpawnerNBT();
var f = "";
for (var n in mobSpawnerNBT) {
var k = { id: n + e };
Object.assign(k, mobSpawnerNBT[n]), (f += getNBTforKey(n, k, e));
}
(f += getSpawnPotentailsNBT(e, !0)).length &&
(t += ",BlockEntityTag:{" + f.substr(1) + "}");
} else {
if ("beehive" == _ || "bee_nest" == _) {
let t = getFlowerCoords("FlowerPos", e);
return (t += getBeesForHiveNBT(e)).length
? ",BlockEntityTag:{" + t.substr(1) + "}"
: t;
}
var v;
if (-1 != _.indexOf("banner") || "shield" == _)
return (
(t = $("#" + e + "BlockEntityTag").val()).length &&
(-1 != t.indexOf("BlockEntityTag:") &&
(t = (t = (t = t.substr(
t.indexOf("BlockEntityTag:{")
)).replace("BlockEntityTag:{", "")).replace("}}", "")),
(t = "," + t)),
-1 != _.indexOf("banner") &&
(t += getCustomNameAndColor("#" + e + "CustomName", 0)),
(v = jsonConvert(
JSON.stringify(
tellrawJson.getJsonForTellraw(e + "CustomName")
)
)).length > 2 && (t += ",CustomName:" + v),
t.length > 0 && (t = ",BlockEntityTag:{" + t.substr(1) + "}"),
t
);
"knowledge_book" == _ && (t = getCanPlaceOnOrDestroy(e, "Recipes"));
}
return t;
}
function getFlowerCoords(e, t) {
return $("#" + e + "X" + t).val().length &&
$("#" + e + "Y" + t).val().length &&
$("#" + e + "Z" + t).val().length
? "," +
e +
":{X:" +
$("#" + e + "X" + t).val() +
",Y:" +
$("#" + e + "Y" + t).val() +
",Z:" +
$("#" + e + "Z" + t).val() +
"}"
: "";
}
function getProjectile(e, t) {
try {
if (
"arrow" == $("#" + e + t).val() ||
"spectral_arrow" == $("#" + e + t).val()
)
return ',{id:"minecraft:' + $("#" + e + t).val() + '",Count:1b}';
if ("tipped_arrow" == $("#" + e + t).val()) {
var a =
getStatusEffectsNBT(
"CustomPotionEffects",
e + t + "CustomPotionEffects"
) +
getPotion("Potion", e + t + "Potion") +
getColorInteger(
e + t + "CustomPotionColor",
"CustomPotionColor"
);
return 0 == a.length
? ',{id:"minecraft:tipped_arrow",Count:1b}'
: ',{id:"minecraft:tipped_arrow",Count:1b,tag:{' +
a.substr(1) +
"}}";
}
if ("firework_rocket" == $("#" + e + t).val()) {
var o = getFireworksItemNBT(e + t);
return 0 == o.length
? ',{id:"minecraft:firework_rocket",Count:1b}'
: ',{id:"minecraft:firework_rocket",Count:1b,tag:{' +
o.substr(1) +
"}}";
}
} catch (e) {}
return ",{}";
}
function getEnchantNumFromString(e) {
var t = extractMinecraftID(e);
for (enc in enchantables)
if (replaceAll(" ", "_", enchantables[enc][0]).toLowerCase() == t)
return enc;
return -1;
}
var signedIn = !1,
sortField = "title",
sortOrder = "a",
gRowIndex = 0,
userToken = "",
commandID = -1,
mcfunctions = [],
currentFunctionEdit = -1,
ttNewPassword =
"The supplied password must be between 6 and 64 characters and can only contain numbers, letters, dashes, or underscores.",
llPasswordReset = "Password Reset",
llEnterEmail =
"Enter the email that you supplied when you created your account. MCStacker will reset your password and email it to you.",
monthNames = new Array(
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec"
);
function mkTT(e) {
return ' title="' + e + '"';
}
function getCookie(e) {
for (
var t = e + "=", a = document.cookie.split(";"), o = 0;
o < a.length;
o++
) {
for (var n = a[o]; " " == n.charAt(0); ) n = n.substring(1);
if (0 == n.indexOf(t)) return n.substring(t.length, n.length);
}
return "";
}
function setCookie(e, t, a) {
var o = "";
if (a) {
var n = new Date();
n.setTime(n.getTime() + 24 * a * 60 * 60 * 1e3),
(o = "; expires=" + n.toUTCString());
}
document.cookie = e + "=" + (t || "") + o + "; path=/";
}
function loadManagement() {
(userToken = getCookie("userToken")), loadNavPane();
var e = window.location.hash;
"#" == e.charAt(0) &&
$.isNumeric(e.substr(2)) &&
(showCommunity(), showDetails(e.substr(2), !0));
}
function hashpword(e) {
return (
(tmp = MD5(
e +
"This is the client side salt. There is more robust seasoning at the server side"
)),
tmp
);
}
function loadNavPane() {
$("#navPane").html(
makeNavButton(
"Search",
"showSearch()",
"Search and Browser commands savesd by others"
)
),
$.post(
"mcstacker2.php",
{ op: "isSignedIn", userToken: userToken },
function (e, t) {
var a =
"<a class='redX' href=\"javascript:$('#community').hide()\">&#9747;</a>";
"signedIn" == $(e).find("action").text()
? ($("#navPane").append(
makeNavButton(
"My Commands",
"showAccount('title', 'a', 0)"
) +
makeNavButton(
"Favorites",
"showMyLikes('title','a',0)"
) +
makeNavButton(
"Discuss",
"showDiscussions('title','a',0)"
) +
makeNavButton(
"Account Settings",
"showAccountSettings()"
) +
makeNavButton("Sign Out", "signOut()") +
"<span class='fRight'>" +
$(e).find("username").text() +
a +
"</span>"
),
(signedIn = !0),
$("#commandOutput").append(
"<span id='saveAsBut' class='greenPlus'>Edit As New Command</span>"
),
$("#saveAsBut").bind("click", function () {
$("#community").show(),
makeDetailsForm(
"",
-1,
$("#commandOutput-ta").val()
);
}))
: ($("#navPane").append(
makeNavButton(
"Sign In",
"displayLogin('You are not currently signed in.')"
) +
"<span class='fRight'>" +
a +
"</span>"
),
(signedIn = !1));
}
);
}
function showDiscussions(e, t, a) {
$("#manPane").html(
"<div id='searchResults'></div><div id='detailsPane'></div>"
),
(gRowIndex = a),
$.post(
"mcstacker2.php",
{
op: "searchCommands",
searchWhat: "unread",
commandTypeSearch: "Any",
searchString: "",
userToken: userToken,
sortField: e,
sortOrder: t,
rowIndex: a,
},
function (e, t) {
"searchResult" == $(e).find("action").text()
? showSearchResult(e, a, "unread")
: "searchFailed" == $(e).find("action").text() &&
$("#searchResults").html($(e).find("message").text());
}
);
}
function showMyLikes(e, t, a) {
$("#manPane").html(
"<div id='searchResults'></div><div id='detailsPane'></div>"
),
(gRowIndex = a),
$.post(
"mcstacker2.php",
{
op: "searchCommands",
userToken: userToken,
searchWhat: "likes",
commandTypeSearch: "Any",
searchString: "",
sortField: e,
sortOrder: t,
rowIndex: a,
},
function (e, t) {
"searchResult" == $(e).find("action").text()
? showSearchResult(e, a, "likes")
: "searchFailed" == $(e).find("action").text() &&
$("#searchResults").html($(e).find("message").text());
}
);
}
function showHome() {
$("#manPane").load(ppAbout);
}
function showHelp() {
$("#manPane").load(ppHelp);
}
function makeNavButton(e, t, a) {
return (
(ttip = void 0 != a ? mkTT(a) : ""),
'<a href="javascript:' +
t +
"\" class='navButton' " +
ttip +
">" +
e +
"</a>"
);
}
function makeButton(e, t, a) {
return (
(ttip = void 0 != a ? mkTT(a) : ""),
'<a href="javascript:' +
t +
"\" class='mButton' " +
ttip +
">" +
e +
"</a>"
);
}
function makePageButton(e, t, a) {
return '<a href="javascript:' + t + "\" class='" + a + "'>" + e + "</a>";
}
function makeButtonR(e, t, a) {
return (
'<a href="javascript:' +
t +
"\" class='mButton fRight' " +
mkTT(a) +
">" +
e +
"</a>"
);
}
function doSignIn() {
(hashedpword = hashpword($("#password").val())),
$.post(
"mcstacker2.php",
{
op: "doSignIn",
hashedpword: hashedpword,
username: $("#username").val(),
},
function (e, t) {
(userToken = $(e).find("userToken").text()),
(message = $(e).find("message").text()),
"showCommands" == $(e).find("action").text()
? (showCommands(e, 0), loadNavPane())
: "signInFailed" == $(e).find("action").text() &&
($("#message").html(message),
alertify.error(message));
}
);
}
function showSearch() {
makeSearchForm(), doSearch("date_modified", "d", 0);
}
function makeSearchForm() {
for (
var e = [
"Any",
"bossbar",
"data",
"effect",
"execute",
"fill",
"give",
"kill",
"loot",
"particle",
"playsound",
"replaceitem",
"scoreboard",
"setblock",
"summon",
"team",
"teleport",
"tellraw",
"title",
],
t = "",
a = 0;
a < e.length;
a++
)
t += "<option value='" + e[a] + "'>" + e[a] + "</option>";
$("#manPane").html(
"<h2 class='command'>Search/Browse</h2><label labelfor='commandTypeSearch' class='search'>Command Type</label><select id='commandTypeSearch'>" +
t +
"</select><label labelfor='searchWhat' class='search'>Search By</label><select id='searchWhat'" +
mkTT(
"Narrow down your search by choosing to search only some parts of the saved information."
) +
"><option value='0'>Title, Description or Creator</option><option value='1'>Title</option><option value='2'>Description</option><option value='4'>Creator</option><option value='3'>Tag</option><option value='6'>Comments</option></select><label labelfor='searchString' class='search'>Search Text</label><input type='text' id='searchString'" +
mkTT(
"Search for text in saved commands. Leave blank to browse all commands. Advanced boolean search strings are accepted. A leading plus (+) sign indicates that this word must be present in every result returned. A leading minus (-) sign indicates that this word must not be present in any result returned. ( ) Parentheses are used to group words into sub expressions. A phrase that is enclosed in double quotes matches only results that contain this phrase literally."
) +
">" +
makeButton(
"Search/Browse",
"onClick=doSearch('title', 'a', 0)",
"Search and browse commands created by other users."
) +
"<div id='searchResults'></div>"
);
}
function searchUsers(e) {
makeSearchForm(),
$("#commandTypeSearch").val("Any"),
$("#searchWhat").val(4),
$("#searchString").val(e),
doSearch("title", "a", 0);
}
function searchTag(e) {
showSearch(),
$("#commandTypeSearch").val("Any"),
$("#searchWhat").val(3),
$("#searchString").val(e),
doSearch("title", "a", 0);
}
function doSearch(e, t, a) {
(sortOrder = t),
(sortField = e),
$.post(
"mcstacker2.php",
{
op: "searchCommands",
searchWhat: $("#searchWhat").val(),
commandTypeSearch: $("#commandTypeSearch").val(),
searchString: $("#searchString").val(),
userToken: userToken,
sortField: sortField,
sortOrder: sortOrder,
rowIndex: a,
},
function (e, t) {
"searchResult" == $(e).find("action").text()
? showSearchResult(e, a, "search")
: "searchFailed" == $(e).find("action").text() &&
$("#searchResults").html($(e).find("message").text());
}
);
}
function showSearchResult(e, t, a) {
var o = "",
n = $(e).find("rowCount").text(),
s = "";
if (n > 10) {
func =
"likes" == a
? "showMyLikes"
: "likes" == a
? "showDiscussions"
: "doSearch";
for (let e = 0; e < n && e < 400; e += 10)
s += makePageButton(
e / 10 + 1,
func + "('" + sortField + "', '" + sortOrder + "', " + e + ")",
t == e ? "pageButtonSelected" : "pageButton"
);
s.length > 0 && (s = "<br>" + s + "<br><br>");
}
$("row", e).each(function (e) {
(user = $(this).find("username").text()),
(cid = $(this).find("cid").text()),
(rowClass = e % 2 == 0 ? "srRowLight" : "srRowDark"),
(o +=
"<tr class='" +
rowClass +
"'><td><a href=\"javascript:showDetails(" +
cid +
')">' +
$(this).find("title").text() +
"</a></td><td>" +
$(this).find("description").text() +
"</td><td>" +
$(this).find("commandType").text() +
"</td><td><a href=\"javascript:searchUsers('" +
user +
"')\">" +
user +
"</a></td><td>" +
convertTime($(this).find("modifiedTime").text()) +
"</td><td>" +
$(this).find("rank").text() +
"</td></tr>");
}),
o.length > 0 &&
$("#searchResults").html(
s +
"<table class='searchResults'><tr><th width=200>" +
makeSortCol("Name", "title", a) +
"</th><th width='700'>" +
makeSortCol("Description", "description", a) +
"</th><th width=100>" +
makeSortCol("Type", "command_type_id", a) +
"</th><th width=100>" +
makeSortCol("Creator", "username", a) +
"</th><th width=150>" +
makeSortCol("Date Modified", "date_modified", a) +
"</th><th width=150>" +
makeSortCol("Likes", "votes", a) +
"</th></tr>" +
o +
"</table><div id='detailsPane'></div>"
);
}
function showCommands(e, t) {
var a = "",
o = $(e).find("rowCount").text(),
n = "";
if (o > 10) {
for (i = 0; i < o && i < 400; i += 10)
t == i
? (n += makePageButton(
i / 10 + 1,
"showAccount('" +
sortField +
"', '" +
sortOrder +
"', " +
i +
")",
"pageButtonSelected"
))
: (n += makePageButton(
i / 10 + 1,
"showAccount('" +
sortField +
"', '" +
sortOrder +
"', " +
i +
")",
"pageButton"
));
n.length > 0 && (n = "<br>" + n + "<br><br>");
}
$("row", e).each(function (e) {
(cid = $(this).find("cid").text()),
(rowClass = e % 2 == 0 ? "srRowLight" : "srRowDark"),
(a +=
"<tr class='" +
rowClass +
"'><td><a href=\"javascript:showDetails(" +
cid +
')">' +
$(this).find("title").text() +
"</a></td><td>" +
$(this).find("description").text() +
"</td><td>" +
$(this).find("commandType").text() +
"</td><td>" +
tickORCross("public", $(this).find("public").text(), cid) +
"</td><td>" +
tickORCross(
"allow_comments",
$(this).find("allow_comments").text(),
cid
) +
"</td><td>" +
$(this).find("mcVersion").text() +
"</td><td>" +
convertTime($(this).find("modifiedTime").text()) +
'</td><td><a href="javascript:saveDetailsForm(' +
cid +
",0)\"><img src='edit.png'></a></td><td><a href=\"javascript:deleteCommand(" +
cid +
")\"><img src='trash.png'></a></td></tr>");
}),
a.length > 0
? $("#manPane").html(
n +
"<table class='searchResults'><tr><th width=200>" +
makeSortCol("Name", "title", "mine") +
"</th><th width='700'>" +
makeSortCol("Description", "description", "mine") +
"</th><th width=100>" +
makeSortCol("Type", "command_type_id", "mine") +
"</th><th width=100>" +
makeSortCol("Public", "public", "mine") +
"</th><th width=200>" +
makeSortCol("Allow Comments", "allow_comments", "mine") +
"</th><th width=50> " +
makeSortCol("Ver", "mc_version", "mine") +
"</th><th width=150> " +
makeSortCol("Modified", "date_modified", "mine") +
"</th><th colspan=2 width=40></th></tr>" +
a +
"</table><div id='detailsPane'></div>"
)
: $("#manPane").html(
"<p class='command'>You have no saved commands</p>"
);
}
function tickORCross(e, t, a) {
return 1 == t
? "<input type='checkbox' id='" +
e +
a +
"' CHECKED onClick='publicClicked(" +
a +
")'>"
: "<input type='checkbox' id='" +
e +
a +
"' onClick='publicClicked(" +
a +
")'>";
}
function makeSortCol(e, t, a) {
return t == sortField
? "<a href=\"javascript:sortByField('" +
t +
"', '" +
a +
"')\" class='sortHeader'>" +
e +
" " +
("a" == sortOrder
? "<img src='up.png' width=12>"
: "<img src='down.png' width=12>") +
"</a>"
: "<a href=\"javascript:sortByField('" +
t +
"', '" +
a +
"')\" class='sortHeader'>" +
e +
" <img src='up.png' width=12></a>";
}
function sortByField(e, t) {
e == sortField
? (sortOrder = "a" == sortOrder ? "d" : "a")
: ((sortOrder = "a"), (sortField = e)),
"search" == t
? doSearch(sortField, sortOrder, 0)
: "mine" == t
? showAccount(sortField, sortOrder, 0)
: "likes" == t
? showMyLikes(sortField, sortOrder, 0)
: "unread" == t && showDiscussions(sortField, sortOrder, 0);
}
function changePassword() {
$("#manPane").html(
"<h2>Change Password</h2><form action='' name='form' onSubmit='event.preventDefault();doPasswordChange()'><label labelfor='oldpassword' class='settingsLabel'>Current Password</label><input type='password' id='oldpassword'><br><label labelfor='newpassword' class='settingsLabel'>New Password</label><input type='password' id='newpassword'" +
mkTT(ttNewPassword) +
"><br><label labelfor='newpasswordconfirm' class='settingsLabel'>Confirm Password</label><input type='password' id='newpasswordconfirm'" +
mkTT(ttNewPassword) +
"><input type='submit' value='Change Password'></form><div id='message'></div>"
);
}
function doPasswordChange() {
/^[A-Za-z0-9_-]{6,64}$/.test($("#newpassword").val())
? $("#newpasswordconfirm").val() != $("#newpassword").val()
? $("#message").html("Your passwords do not match.")
: ((hashednewpword = hashpword($("#newpassword").val())),
(hashedoldpword = hashpword($("#oldpassword").val())),
$.post(
"mcstacker2.php",
{
op: "changePassword",
userToken: userToken,
hashednewpword: hashednewpword,
hashedoldpword: hashedoldpword,
},
function (e, t) {
"showAccount" == $(e).find("action").text()
? (alertify.log($(e).find("message").text()),
showAccountDetails(e))
: "changePasswordFailed" ==
$(e).find("action").text() &&
$("#message").html($(e).find("message").text());
}
))
: $("#message").html(ttNewPassword);
}
function updateEmail() {
$("#manPane").html(
"<h2>Update Email</h2><form action='' name='form' onSubmit='event.preventDefault();doEmailChange()'><label labelfor='oldpassword' class='settingsLabel' class='settings'>New Email Address</label><input type='text' id='email'" +
mkTT("Enter a valid email address.") +
"><input type='submit' value='Update Email'><div id='message'></div>"
);
}
function doEmailChange() {
$.post(
"mcstacker2.php",
{ op: "changeEmail", userToken: userToken, email: $("#email").val() },
function (e, t) {
"showAccount" == $(e).find("action").text()
? (alertify.log($(e).find("message").text()),
showAccountDetails(e))
: "changeEmailFailed" == $(e).find("action").text() &&
$("#message").html($(e).find("message").text());
}
);
}
function showAccountDetails(e) {
$("#manPane").html(
"<br>" +
makeButton("Sign Out", "signOut()", "Sign Out") +
makeButton(
"Change Password",
"changePassword()",
"Change your password"
) +
makeButton(
"Update Email Address",
"updateEmail()",
"Change your email address"
) +
"<a href='delete_account.php' class='mButton' title='Permanantly remove your account and content'>Remove Account</a><br><br>"
),
$("#message").html($(e).find("message").text());
}
function showAccount(e, t, a) {
(gRowIndex = a),
$.post(
"mcstacker2.php",
{
op: "showMyCommands",
userToken: userToken,
sortField: e,
sortOrder: t,
rowIndex: a,
},
function (e, t) {
(message = $(e).find("message").text()),
"showLogin" == $(e).find("action").text()
? displayLogin(message)
: "showCommands" == $(e).find("action").text() &&
showCommands(e, a);
}
);
}
function showAccountSettings() {
$.post(
"mcstacker2.php",
{ op: "showAccount", userToken: userToken },
function (e, t) {
(message = $(e).find("message").text()),
"showLogin" == $(e).find("action").text()
? displayLogin(message)
: "showAccount" == $(e).find("action").text() &&
showAccountDetails(e);
}
);
}
function signOut() {
$("#saveAsBut").remove(),
$.post(
"mcstacker2.php",
{ op: "signOut", userToken: userToken },
function (e, t) {
loadNavPane(), displayLogin($(e).find("message").text());
}
);
}
function displayLogin(e) {
$("#manPane").html(
"<h2>Sign In</h2><p class='settings'>" +
e +
"</p><form action='' name='form' onSubmit='event.preventDefault();doSignIn()'><label labelfor='username' class='settingsLabel'>Username/Email</label><input type='text' id='username'><br><label labelfor='password' class='settingsLabel'>Password</label><input type='password' id='password'><input type='submit' value='Sign In'></form><p class='settings'>" +
makeButton("Register", "displayRegistration()") +
makeButton("Password Reset", "forgotPassword()") +
"</p><div id='message'></div>"
);
}
function displayRegistration() {
$("#manPane").html(
"<span><h2>Register</h2><form action='' name='form' onSubmit='event.preventDefault();doRegistration()'><label labelfor='username' class='settingsLabel'>Username</label><input type='text' id='username'" +
mkTT(
"The supplied user name must be between 3 and 16 characters and can only contain numbers, letters, dashes, underscores or @"
) +
"><br><label labelfor='password' class='settingsLabel'>Password</label><input type='password' id='password'" +
mkTT(ttNewPassword) +
"><br><label labelfor='passwordconfirm' class='settingsLabel'>Password</label><input type='password' id='passwordconfirm'" +
mkTT(ttNewPassword) +
"><br><label labelfor='email' class='settingsLabel'>Email</label><input type='text' id='email'" +
mkTT("Enter a valid email address.") +
"><input type='submit' value='Register a new account'></form><div id='message'></div></span><span id='terms'></span>"
),
$("#terms").load("termsandprivacy.html");
}
function forgotPassword() {
$("#manPane").html(
"<h2>" +
llPasswordReset +
"</h2><form action='' name='form' onSubmit='event.preventDefault();doPasswordReset()'><p class='command'>" +
llEnterEmail +
"</p><label labelfor='email' class='settingsLabel'>Email</label><input type='text' id='email'" +
mkTT(llEnterEmail) +
"><input type='submit' value='" +
llPasswordReset +
"'></form><div id='message'></div>"
);
}
function doPasswordReset() {
$.post(
"mcstacker2.php",
{ op: "passwordReset", email: $("#email").val() },
function (e, t) {
"passwordResetInvalidEmail" == $(e).find("action").text()
? ($("#message").html($(e).find("message").text()),
alertify.error($(e).find("message").text()))
: "showLogin" == $(e).find("action").text() &&
(displayLogin($(e).find("message").text()),
alertify.log($(e).find("message").text()));
}
);
}
function doRegistration() {
$("#passwordconfirm").val() != $("#password").val()
? $("#message").html("Your passwords do not match.")
: /^[A-Za-z0-9_-]{6,64}$/.test($("#password").val())
? ((hashedpword = hashpword($("#password").val())),
$.post(
"mcstacker2.php",
{
op: "doRegistration",
hashedpword: hashedpword,
username: $("#username").val(),
email: $("#email").val(),
},
function (e, t) {
"regSuccess" == $(e).find("action").text()
? (displayLogin($(e).find("message").text()),
alertify.log($(e).find("message").text()))
: "regFailed" == $(e).find("action").text() &&
$("#message").html($(e).find("message").text());
}
))
: $("#message").html(ttNewPassword);
}
function makeTextArea(e, t, a, o) {
return (
"<textarea rows=10 cols=95 id='" +
e +
"' onkeyup=\"updateCharsLeft('" +
e +
"', " +
a +
')"' +
mkTT(o) +
">" +
t +
"</textarea><br><label class='details'></label>Markdown: [link]URL[title]URL Title[/title][/link], [b]<b>Bold</b>[/b], [i]<i>Italic</i>[/i], [u]<u>Underlined</u>[/u] <span id='" +
e +
"_charsLeft' class='charsLeft'>" +
(a - t.length) +
" Characters remaining.</span> "
);
}
function updateCharsLeft(e, t) {
(left = t - $("#" + e).val().length),
left < 0
? ($("#" + e).val(
$("#" + e)
.val()
.substr(0, t)
),
$("#" + e + "_charsLeft").html("0 Characters remaining."))
: $("#" + e + "_charsLeft").html(left + " Characters remaining.");
}
function copySaveCommandToClipboard() {
copyToClipboard($("#commandString").val());
}
function makeDetailsForm(e, t, a) {
void 0 == a && (a = $(e).find("commandString").text()),
$("#manPane").html("<div id='detailsPane'></div>"),
$("#detailsPane").html(
"<span class='detsLine'><label labelfor='commandTitle' class='details'>Title</label><input type='text' id='commandTitle' class='inputVeryBig' value=\"" +
replaceAll('"', "'", $(e).find("commandTitle").text()) +
"\" onkeyup=\"updateCharsLeft('commandTitle', 64)\"> <span id='commandTitle_charsLeft'>" +
(64 - $(e).find("commandTitle").text().length) +
" Characters remaining.</span></span><br><span class='detsLine'><label labelfor='commandDescription' class='details'>Description</label>" +
makeTextArea(
"commandDescription",
$(e).find("commandDescription").text(),
5e3,
"Describe what the command does and any other important information about it"
) +
"</span><br><span class='detsLine'><label labelfor='commandString' class='details'>Command</label><textarea rows=10 cols=95 id='commandString' " +
mkTT("The command string.") +
">" +
a +
"</textarea></span><br><span class='detsLine'><label labelfor='commandString' class='details'></label>" +
makeButton(
"Load into MCStacker form",
"loadSavedCommand(" + $(e).find("mc_version").text() + ")",
"Load this command into the MCStacker form"
) +
"</span><br><span class='detsLine'><label labelfor='commandString' class='details'>mcfunction Files</label><span id='mcfunctions'><input type='file' id='files' name='files[]' accept='.mcfunction,.txt' multiple /></span><span id='mcfunctionEdit'><textarea rows=10 cols=80 id='functionEditor' " +
mkTT("Edit the mcfunctionfile") +
"></textarea><br>File Name<input type=text' id='functionFileName'>" +
makeButton(
"OK",
"saveMCFuncEdit()",
"Saves the edit to the mcfunction file. But you'll also need to save the entire command."
) +
makeButton(
"Cancel",
"closeMCFuncEdit()",
"Close this editor without saving the changes"
) +
"</span><br><span class='detsLine'><label labelfor='public' class='details'>Public</label><input type='checkbox' id='public' onClick=\"publicClicked('')\"" +
mkTT(
"Unchecking this will make your command private. Only you will be able to see it."
) +
"></span><br><span class='detsLine'><label labelfor='allow_comments' class='details'>Allow Comments</label><input type='checkbox' id='allow_comments' onClick=\"publicClicked('')\"" +
mkTT(
"Unchecking this will prevent others from commenting on the command. Existing comments will still be displayed"
) +
"></span><br><span class='detsLine'><label labelfor='tagEntry' class='details'>Tags</label><input type='text' onkeyup='processTagAdd()' id='tagEntry'" +
mkTT(
"Tags are used for searching. Enter up to 10 words to describe this command. Separate tag words with commas(,)"
) +
"> <span id='tagWords'></span></span>"
),
$("#mcfunctionEdit").hide(),
$("func", e).each(function (e) {
addNewMCFunctionLine(
$(this).find("filename").text(),
$(this).find("content").text()
);
}),
$("#public").prop("checked", "1" == $(e).find("public").text()),
$("#allow_comments").prop(
"checked",
"1" == $(e).find("allow_comments").text()
),
$("word", e).each(function (e) {
$("#tagEntry").val($(this).text() + ","), processTagAdd();
}),
$("#detailsPane").append(
"<br><br>" +
makeButton("Save", "saveCommand(" + t + ")") +
makeButton(
"Cancel",
"showDetails(" + commandID + ")",
"Cancel this edit."
) +
"<br><br>"
),
document
.getElementById("files")
.addEventListener("change", handleFileSelect, !1);
}
function addNewMCFunctionLine(e, t) {
for (var a = 0; $("#mcfunc" + a).length; ) a++;
(mcfunctions["f" + a] = { name: e, content: t }),
$("#mcfunctions").append(
"<br><span id='mcfunc" +
a +
"' class='mcfunc'><span id='fileName" +
a +
"'>" +
e +
"</span>" +
makeButton(
"Edit",
"editMCFunction(" + a + ")",
"This mcfunction file"
) +
"<a class='redX' href=\"javascript:removeMCFuntion(" +
a +
')">&#9747;</a></span>'
);
}
function mcfunctionsXML() {
var e = "<mcfuntions>";
for (var t in mcfunctions)
e +=
"<func><filename>" +
mcfunctions[t].name.htmlEscape() +
"</filename><content>" +
mcfunctions[t].content.htmlEscape() +
"</content></func>";
return (e += "</mcfuntions>");
}
function handleFileSelect(e) {
for (var t = e.target.files, a = 0; a < t.length; a++) {
f = t[a];
var o = new FileReader();
(o.onload = (function (e) {
return function (t) {
addNewMCFunctionLine(escape(e.name), t.target.result);
};
})(f)),
o.readAsBinaryString(f);
}
}
function removeMCFuntion(e) {
delete mcfunctions["f" + e], $("#mcfunc" + e).remove();
}
function editMCFunction(e) {
(currentFunctionEdit = e),
$("#functionEditor").val(mcfunctions["f" + e].content),
$("#functionFileName").val(mcfunctions["f" + e].name),
$("#mcfunctionEdit").show();
}
function saveMCFuncEdit() {
(mcfunctions["f" + currentFunctionEdit].content = $(
"#functionEditor"
).val()),
(mcfunctions["f" + currentFunctionEdit].name = $(
"#functionFileName"
).val()),
$("#fileName" + currentFunctionEdit).html(
mcfunctions["f" + currentFunctionEdit].name
),
$("#mcfunctionEdit").hide();
}
function closeMCFuncEdit() {
$("#mcfunctionEdit").hide();
}
function readURL(e) {}
function publicClicked(e) {
$("#public" + e).is(":checked")
? ($("#allow_comments" + e).prop("disabled", !1), (public_ = 1))
: ($("#allow_comments" + e).prop("disabled", !0),
$("#allow_comments" + e).prop("checked", !1),
(public_ = 0)),
$("#allow_comments" + e).is(":checked") ? (ac_ = 1) : (ac_ = 0),
"" != e &&
$.post(
"mcstacker2.php",
{
op: "changePrivacy",
userToken: userToken,
commandID: e,
public_: public_,
allow_comments: ac_,
},
function (e, t) {}
);
}
function processTagAdd() {
if (
((counter = 0),
(str = $("#tagEntry").val()),
"," == str.substr(str.length - 1))
) {
if (((word = str.substr(0, str.length - 1).trim()), word.length > 0)) {
for (id = 0; $("#tw" + id).length; ) id++, counter++;
if (!(counter < 10))
return void $("#tagEntry").val("Tag Limit Exceeded");
$("#tagWords").append(
"<span id='tw" +
id +
"' class='tagWord'>" +
makeButton(
word,
"delTagWord(" + id + ")",
"Remove this tag."
) +
"</span>"
);
}
$("#tagEntry").val("");
}
}
function makeTagsCSV() {
var e = "";
return (
$("#tagWords > .tagWord").each(function () {
(tmp = $("#" + this.id).html()),
(tmp = tmp.substr(tmp.lastIndexOf('">') + 2)),
(tmp = tmp.substr(0, tmp.lastIndexOf("<"))),
(e += tmp + ",");
}),
e
);
}
function delTagWord(e) {
$("#tw" + e).remove();
}
function saveCommand(e) {
(public_ = $("#public").is(":checked") ? "1" : "0"),
(allow_comments = $("#allow_comments").is(":checked") ? "1" : "0"),
$("#commandTitle").val().length > 0 &&
$("#commandDescription").val().length > 0 &&
$("#commandString").val().length > 0
? $.post(
"mcstacker2.php",
{
op: "saveCommand",
userToken: userToken,
commandID: e,
commandTitle: $("#commandTitle").val(),
commandDescription: $("#commandDescription").val(),
commandString: $("#commandString").val(),
public_: public_,
allow_comments: allow_comments,
mcfunctions: mcfunctionsXML(),
mc_version: "1.16",
tags: makeTagsCSV(),
},
function (e, t) {
"saveCommandSuccess" == $(e).find("action").text() &&
showDetails((commandID = $(e).find("cid").text()));
}
)
: alertify.alert(
"Please make sure the Command title, description and the command itself are filled out."
);
}
function editAsNewCommand(e) {
saveDetailsForm(e, 2);
}
function previewMCFunction(e) {
$("#detailsPane").append(
"<div id='mcfunctionPreview' class='ui-widget-content' onMouseOver='this.style.cursor=\"pointer\"'>" +
mcfunctions["f" + e].name +
"<a href=\"javascript:$('#mcfunctionPreview').remove()\" class='redX fRight'>X</a><br><textarea id='mcfunctionPreview-ta'>" +
mcfunctions["f" + e].content +
"</textarea></div>"
),
$("#mcfunctionPreview").draggable(),
$("#mcfunctionPreview").css({ top: mouse.y - 500, left: mouse.x }),
$("#mcfunctionPreview").show();
}
function downloadMCFunction(e) {
var t = document.createElement("a");
t.setAttribute(
"href",
"data:text/plain;charset=utf-8," +
encodeURIComponent(mcfunctions["f" + e].content)
),
t.setAttribute("download", mcfunctions["f" + e].name),
(t.style.display = "none"),
document.body.appendChild(t),
t.click(),
document.body.removeChild(t);
}
function showDetails(e, t) {
var a = !(void 0 != t && !t);
(commandID = e),
-1 != e
? ((commandID = e),
$.post(
"mcstacker2.php",
{
op: "getCommandDetails",
userToken: userToken,
commandID: e,
},
function (t, o) {
"getCommandDetailsSuccess" ==
$(t).find("action").text() &&
(signedIn
? $(t).find("UID").text() ==
$(t).find("ownerUID").text()
? showDetailsReadOnly(
"detailsPane",
t,
e,
!0,
!0,
a
)
: showDetailsReadOnly(
"detailsPane",
t,
e,
!0,
!1,
a
)
: showDetailsReadOnly(
"detailsPane",
t,
e,
!1,
!1,
a
));
}
))
: makeDetailsForm(commandID, !0);
}
function showDetailsReadOnly(e, t, a, o, n, s) {
(document.title = "MCStacker: " + $(t).find("commandTitle").text()),
s &&
window.history.pushState(
{ id: a },
"MCStacker: " + $(t).find("commandTitle").text(),
"#!" + a
),
(mcfunctions = []),
$("#" + e).html(
"<h2 class='command'>" +
$(t).find("commandTitle").text() +
"</h2><span class='fRight''><img width=18 id='like" +
a +
"'><span id='heartCount'></span></span><p class='command'>" +
markUp($(t).find("commandDescription").text()) +
"</p><textarea rows=10 cols=95 id='commandString' " +
mkTT("The command string.") +
">" +
$(t).find("commandString").text() +
"</textarea><br>" +
makeButton(
"Load into MCStacker form",
"loadSavedCommand(" + $(t).find("mc_version").text() + ")",
"Load this command into the MCStacker form"
) +
makeButton(
"Copy to Clipboard",
"copySaveCommandToClipboard()",
"Copies this saved command to the system clipboard"
)
),
o &&
$("#" + e).append(
makeButton(
"Edit As New Command",
"editAsNewCommand(" + a + ")",
"Copy this command's details as a new command."
)
);
var i = $(t).find("mc_version").text();
"1.16" != i &&
$("#" + e).append(
"<br><div id='warning' class='roundedDiv'>This command was created with the " +
i +
" version of MCStacker. It may not load in properly. Maybe try an alternative <a target=_blank href='https://mcstacker.net/versions.php'>version</a> of MCStacker.</div>"
);
var r = "";
$("func", t).each(function (e) {
var t = $(this).find("filename").text(),
a = $(this).find("content").text();
(mcfunctions["f" + e] = { name: t, content: a }),
(r +=
"<br><span style='display:inline-block;vertical-align:text-top;height:30px;'><a href='javascript:downloadMCFunction(" +
e +
")' title='Download " +
t +
"'><img src='download.png'></a></span> <span><a href='javascript:previewMCFunction(" +
e +
")' title='Inspect " +
t +
"''>" +
t +
"</a></span>");
}),
r.length > 0 &&
$("#" + e).append(
"<p class='command'><b>mcfunction files</b>" + r + "</p>"
),
$(t).find("UID").text() != $(t).find("ownerUID").text() &&
$("#" + e).append(
"<p class='command'>Created By <a href=\"javascript:searchUsers('" +
$(t).find("ownerName").text() +
"')\">" +
$(t).find("ownerName").text() +
"</a></p>"
),
(tagHTML = ""),
"1" == $(t).find("admin").text() && (n = !0),
(ce = n ? 1 : 0),
$("word", t).each(function (e) {
tagHTML += makeButton(
$(this).text(),
"searchTag('" + $(this).text() + "')",
"Search commands with this tag."
);
}),
tagHTML.length > 0 &&
$("#" + e).append("<p class='command'>Tags: " + tagHTML + "</p>"),
$("#" + e).append("<p class='command'>" + makeShareLink(a) + "</p>");
var l = "";
if (
(1 == $(t).find("commentCount").text()
? (l +=
"1 <a href='javascript:getComments(" +
a +
"," +
enableCommentOptions(
o,
$(t).find("allow_comments").text(),
n
) +
"," +
ce +
")'> Comment</a>")
: $(t).find("commentCount").text() > 1 &&
(l.length > 0 && (l += ", "),
(l +=
$(t).find("commentCount").text() +
" <a href='javascript:getComments(" +
a +
"," +
enableCommentOptions(
o,
$(t).find("allow_comments").text(),
n
) +
"," +
ce +
")'>Comments</a>")),
l.length > 0 && $("#" + e).append("<p class='command'>" + l + "</p>"),
1 == $(t).find("youLoved").text()
? $("#like" + a).attr("src", "heartTick.png")
: $("#like" + a).attr("src", "heartOn.png"),
$(t).find("hearts").text() > 0 &&
$("#heartCount").html($(t).find("hearts").text()),
o)
) {
var c =
"Like this command to save it to your 'Likes' list. Unlike it remove it from your 'Likes' list.";
0 == $(t).find("youLike").text()
? $("#" + e).append(
makeButton(
"Add To Favorites",
"likeCommand(" + a + ",1," + ce + ")",
c
)
)
: $("#" + e).append(
makeButton(
"Remove From Favorites",
"likeCommand(" + a + ",0," + ce + ")",
c
)
),
$("#like" + a).bind("click", function () {
"heartTick.png" == $("#like" + a).attr("src")
? (rankCommand(a, 0),
$("#like" + a).attr("src", "heartOn.png"))
: (rankCommand(a, 1),
$("#like" + a).attr("src", "heartTick.png"));
});
}
n &&
$("#" + e).append(
makeButton(
"Edit",
"saveDetailsForm(" + a + ",1)",
"Edit details and settings for this command."
) +
makeButton(
"Delete",
"deleteCommand(" + a + ")",
"Delete this command and all the related information associated with it. This can't be undone."
)
),
(1 == $(t).find("allow_comments").text() ||
$(t).find("commentCount").text() > 0 ||
n) &&
($("#" + e).append(
makeButton(
"Comments",
"getComments(" +
a +
"," +
enableCommentOptions(
o,
$(t).find("allow_comments").text(),
n
) +
"," +
ce +
")",
"Read and write comments about this command."
) + "<div id='comments'></div><div id='commentControls'></div>"
),
$("#comments").hide(""));
}
function enableCommentOptions(e, t, a) {
return a || (e && 1 == t) ? 1 : 0;
}
function getComments(e, t, a) {
$.post(
"mcstacker2.php",
{ op: "getComments", userToken: userToken, commandID: e },
function (o, n) {
$("#comments").html(""),
$("#comments").show(""),
$("comment", o).each(function (t) {
(commentID = $(this).find("commentID").text()),
(name =
"<a href=\"javascript:searchUsers('" +
$(this).find("username").text() +
"')\">" +
$(this).find("username").text() +
"</a>"),
(commentText = markUp(
$(this).find("commentText").text()
)),
(time = convertTime($(this).find("time").text())),
"1" == $(this).find("canDelete").text()
? (admin =
'<br><a href="javascript:deleteComment(' +
e +
"," +
commentID +
')"' +
mkTT("Delete this comment.") +
"><img src='trash.png'></a>")
: (admin = ""),
$("#comments").append(
"<div id='comment" +
commentID +
"' class='commentLine'><span class='commentDetails'>" +
name +
"<br>" +
time +
admin +
"</span><span class='commentText'>" +
commentText +
"</span></div>"
);
}),
$("#commentControls").html(
makeButton(
"Hide Comments",
"hideComments()",
"Hide the comments."
)
),
1 == t &&
$("#commentControls").append(
makeButton(
"Post Comment",
"makeCommentBox(" + e + ")",
"Post a comment about this command."
)
),
1 == a &&
$("#commentControls").append(
makeButton(
"Delete all comments",
"deleteAllComments(" + e + ")",
"Delete all comments associated with this command. This can't be undone."
)
),
$("#commentControls").show();
}
);
}
function deleteComment(e, t) {
alertify.confirm(
"Are you sure you want to delete this comment? This action can not be undone.",
function (a) {
a &&
$.post(
"mcstacker2.php",
{
op: "deleteComment",
userToken: userToken,
commandID: e,
commentID: t,
},
function (e, a) {
$("#comment" + t).remove(),
alertify.log("Comment Removed");
}
);
}
);
}
function deleteAllComments(e) {
alertify.confirm(
"Are you sure you want to delete all comments associated with this command? This action can not be undone.",
function (t) {
t &&
$.post(
"mcstacker2.php",
{
op: "deleteAllComments",
userToken: userToken,
commandID: e,
},
function (e, t) {
$("#comments").hide(),
$("#comments").html(""),
alertify.log("Comments Removed");
}
);
}
);
}
function makeCommentBox(e) {
$("#commentPane").remove(),
$("#commentControls").append("<div id='commentPane'></div>"),
$("#commentControls").show(),
$("#commentPane").append(
"<br><label class='details'>Your Comment:</label>" +
makeTextArea(
"newComment",
"",
2500,
"Write a comment for this command."
) +
"<br><label class='details'></label>" +
makeButton(
"Post",
"postComment(" + e + ")",
"Write a comment for this command."
)
);
}
function hideComments() {
$("#comments").hide(), $("#commentControls").hide();
}
function postComment(e) {
$.post(
"mcstacker2.php",
{
op: "postComment",
userToken: userToken,
commandID: e,
commentText: $("#newComment").val(),
},
function (t, a) {
$("comment", t).each(function (t) {
var a = $(this).find("commentID").text(),
o =
"<a href=\"javascript:searchUsers('" +
$(this).find("username").text() +
"')\">" +
$(this).find("username").text() +
"</a>",
n = markUp($(this).find("commentText").text()),
s = convertTime($(this).find("time").text());
$("#comments").append(
"<div id='comment" +
a +
"' class='commentLine'><span class='commentDetails'>" +
o +
"<br>" +
s +
'<br><a href="javascript:deleteComment(' +
e +
"," +
a +
')"' +
mkTT("Delete this comment.") +
"><img src='trash.png'></a></span><span class='commentText'>" +
n +
"</span></div>"
),
$("#commentPane").remove(),
$("#comments").show(),
$("#comments").animate(
{
scrollTop:
$("#comments")[0].scrollHeight -
$("#comments").height(),
},
1e3,
function () {}
);
});
}
);
}
function convertTime(e) {
var t = parse_date(e),
a = new Date(),
o = -1 * a.getTimezoneOffset(),
n = new Date(t.getTime() + 60 * o * 1e3),
i = n.getDate(),
r = n.getMonth(),
l = n.getFullYear(),
c = n.getHours(),
d = n.getMinutes();
return a - n > 31536e6
? monthNames[r] + " " + l
: a - n > 864e5
? monthNames[r] + " " + i
: (c < 12
? ((s = "am"), 0 == c && (c = 12))
: (c > 12 && (c -= 12), (s = "pm")),
d < 10 && (d = "0" + d),
c + ":" + d + " " + s);
}
function parse_date(e) {
var t = new Date(),
a = String(e).split(/[- :]/);
return (
t.setFullYear(a[0]),
t.setMonth(a[1] - 1),
t.setDate(a[2]),
t.setHours(a[3]),
t.setMinutes(a[4]),
t.setSeconds(a[5]),
t.setMilliseconds(0),
t
);
}
function makeShareLink(e, t) {
var a = t || "";
return (
-1 != document.URL.indexOf("#")
? ((baseURL = document.URL.substr(0, document.URL.indexOf("#"))),
(url = baseURL + a + "#!" + e))
: (url = document.URL + a + "#!" + e),
"URL:<a href='" + url + "'>" + url + "</a>"
);
}
function likeCommand(e, t, a) {
$.post(
"mcstacker2.php",
{ op: "like", userToken: userToken, commandID: e, like: t },
function (t, o) {
"getCommandDetailsSuccess" == $(t).find("action").text() &&
showDetailsReadOnly("detailsPane", t, e, !0, 1 == a, !1);
}
);
}
function rankCommand(e, t) {
$.post(
"mcstacker2.php",
{ op: "vote", userToken: userToken, commandID: e, vote: t },
function (e, t) {
$("#heartCount").html($(e).find("votes").text());
}
);
}
function searchDerivatives(e) {
showSearch(),
$("#commandTypeSearch").val("Any"),
$("#searchWhat").val(5),
$("#searchString").val(e),
doSearch("title", "a", 0);
}
function deleteCommand(e) {
alertify.confirm(
"You are about to permanently delete this command and it's associated content. Click OK to permanently delete this command.",
function (t) {
t &&
$.post(
"mcstacker2.php",
{
op: "deleteCommand",
userToken: userToken,
commandID: e,
sortField: sortField,
sortOrder: sortOrder,
rowIndex: gRowIndex,
},
function (e, t) {
showCommands(e, gRowIndex);
}
);
}
);
}
function replaceAll(e, t, a) {
return a.replace(
new RegExp(e.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"), "g"),
t
);
}
function markUp(e) {
return (e = replaceAll(
"\n",
"<br>",
(e = replaceAll(
"[/title]",
"",
(e = replaceAll(
"[title]",
"'>",
(e = replaceAll(
"[/link]",
"</a>",
(e = replaceAll(
"[link]",
"<a target='_blank' href='",
(e = replaceAll(
"[/i]",
"</i>",
(e = replaceAll(
"[/b]",
"</b>",
(e = replaceAll(
"[/u]",
"</u>",
(e = replaceAll(
"[i]",
"<i>",
(e = replaceAll(
"[b]",
"<b>",
(e = replaceAll("[u]", "<u>", e))
))
))
))
))
))
))
))
))
))
));
}
function saveDetailsForm(e, t) {
(commandID = e),
-1 != e
? $.post(
"mcstacker2.php",
{
op: "getCommandDetails",
userToken: userToken,
commandID: e,
},
function (a, o) {
if (1 == t) {
var n = $("#commandString").val();
makeDetailsForm(a, e), $("#commandString").val(n);
} else
2 == t
? makeDetailsForm(
a,
-1,
$("#commandString").val()
)
: makeDetailsForm(a, e);
}
)
: signedIn
? makeDetailsForm("", -1, $("#commandOutput-ta").val())
: (displayLogin(eeSignInRequired),
alertify.error(eeSignInRequired));
}
function makeLootTableGenerator(e) {
$("#" + e).html("<div id='lootTableContainer' class='roundedDiv'></div>"),
createComponent(
"lootTableContainer",
"ltType",
{
label: "Loot Table Type",
type: "makeSelect",
values: [
"unset",
"empty",
"entity",
"block",
"chest",
"fishing",
"advancement_reward",
"generic",
],
cssClass: "fLabel100",
tip: "lt.type",
},
0
),
createComponent(
"lootTableContainer",
"ltUseSetNBT",
{
label: "NBT Mode",
type: "makeSelect",
values: ["use other functions", "use set_nbt only"],
cssClass: "fLabel100",
tip: "lt.nbtMode",
},
0
),
$("#lootTableContainer").append(
"<br><span id='addPool' class='showHide'>Add Pool</span><div id='lootTablePane'></div>"
),
$("#hideLootTable").bind("click", function () {
$("#lootTableContainer").hide();
}),
$("#addPool").bind("click", function () {
addPool();
});
}
function generateLootTable() {
let e = {};
"unset" != $("#ltType0").val() && (e.type = $("#ltType0").val()),
(e.pools = []);
var t = {};
return (
$("#lootTablePane > .pool").each(function (a) {
e.pools.push({});
let o = e.pools.length - 1,
n = this.id,
s = ["rolls", "bonus_rolls"];
for (let t = 0; t < s.length; t++)
if ($("#" + n + s[t] + "0").val().length) {
let a = $("#" + n + s[t] + "0").val();
-1 != a.indexOf("-")
? ((a = a.split("-")),
(e.pools[o][s[t]] = {
min: parseInt(a[0]),
max: parseInt(a[1]),
}))
: (e.pools[o][s[t]] = parseInt(a));
} else "rolls" == s[t] && (e.pools[o][s[t]] = 1);
e.pools[o].entries = [];
let i = 0;
$("#entryPane" + n + " > .entry").each(function (a) {
let n = this.id,
s = parseInt($("#" + n + "Weight0").val()) || 1;
e.pools[o].entries.push({ type: "item", weight: s }),
(t[n] = s),
(i += s);
let r = e.pools[o].entries.length - 1;
$("#" + n + "Quality0").val().length &&
(e.pools[o].entries[r].quality = parseInt(
$("#" + n + "Quality0").val()
));
let l = [];
if ("-1" != $("#" + n + "Item0").val()) {
(e.pools[o].entries[r].name =
"minecraft:" + $("#" + n + "Item0").val()),
l.push({
function: "set_count",
count: lootTableRange(n + "Item0Count"),
});
try {
let e;
(e =
"use other functions" == $("#ltUseSetNBT0").val()
? getNBTForLootTableItem(n + "Item0")
: "{" +
(e = getItemTagNBT(n + "Item0", !1)).substr(
1
) +
"}").length > 2 &&
l.push({ function: "set_nbt", tag: e });
} catch (e) {}
if ("use other functions" == $("#ltUseSetNBT0").val()) {
0 != $("#" + n + "Item0Damage").length &&
$("#" + n + "Item0Damage").val().length &&
l.push({
function: "set_damage",
damage: lootTableRangeFloat(n + "Item0Damage"),
});
let e = tellrawJson.getJsonForLootTableItemName(
n + "Item0ItemName"
);
(e.length > 0 || void 0 != e.text) &&
l.push({ function: "set_name", name: e });
let t = tellrawJson.getJsonLoreForLootTables(
n + "Item0Lore"
);
t.length > 0 &&
l.push({ function: "set_lore", lore: t });
}
e.pools[o].entries[r].functions = l;
} else e.pools[o].entries[r].type = "empty";
}),
$("#entryPane" + n + " > .entry").each(function (e) {
let a = this.id;
$("#" + a + "WeightPercent0").html(
parseInt((t[a] / i) * 100) + "%"
);
});
}),
removeUnsetFromJSON(JSON.stringify(e))
);
}
function getItemAttributeModifiersForLootTable(e) {
let t = [];
return (
$("#" + e + "AMtable .amRow").each(function () {
let e = {};
var a = this.id.substr(0, this.id.lastIndexOf("_"));
if ($("#" + a + "_amount").val().length) {
var o = $("#" + a + "_mods").val();
switch (
((e.attribute = "generic." + o),
parseInt($("#" + a + "_operation").val()))
) {
case 0:
e.operation = "addition";
break;
case 1:
e.operation = "multiply_base";
break;
case 2:
e.operation = "multiply_total";
}
(e.amount = $("#" + a + "_amount").val()),
"Any" != $("#" + a + "_slot").val() &&
(e.slot = $("#" + a + "_slot").val()),
t.push(e);
}
}),
t
);
}
function lootTableRange(e) {
let t = 1;
try {
if ($("#" + e).val().length) {
let a = $("#" + e).val();
-1 != a.indexOf("-")
? ((a = a.split("-")),
(t = { min: parseInt(a[0]), max: parseInt(a[1]) }))
: (t = parseInt(a));
}
} catch (e) {}
return t;
}
function lootTableRangeFloat(e) {
let t = 1;
try {
if ($("#" + e).val().length) {
let a = $("#" + e).val();
-1 != a.indexOf("-")
? ((a = a.split("-")),
(t = { min: parseFloat(a[0]), max: parseFloat(a[1]) }))
: (t = parseFloat(a));
}
} catch (e) {}
return t;
}
function lootTableRangeRaw(e) {
let t = 1;
try {
if ($("#" + e).val().length) {
let a = $("#" + e).val();
t =
-1 != a.indexOf("-")
? { min: (a = a.split("-"))[0], max: a[1] }
: a;
}
} catch (e) {}
return t;
}
function getItemDisplayForLootTableNBT(e) {
var t = "";
return (
isLeatherArmor($("#" + e).val()) &&
(t += getColorInteger(e + "Color", "color")),
t.length > 0 ? ",display:{" + t.substr(1) + "}" : t
);
}
function importLootTable(e) {
$("#disableOutput").prop("checked", !0),
e.hasOwnProperty("type") && $("#ltType0").val(e.type);
for (let t = 0; t < e.pools.length; t++) {
let a = addPool(),
o = e.pools[t];
"rolls" in o &&
(o.rolls.hasOwnProperty("min") && o.rolls.hasOwnProperty("max")
? $("#" + a + "rolls0").val(o.rolls.min + "-" + o.rolls.max)
: $("#" + a + "rolls0").val(o.rolls)),
"bonus_rolls" in o &&
(o.bonus_rolls.hasOwnProperty("min") &&
o.bonus_rolls.hasOwnProperty("max")
? $("#" + a + "bonus_rolls0").val(
o.bonus_rolls.min + "-" + o.bonus_rolls.max
)
: $("#" + a + "bonus_rolls0").val(o.bonus_rolls));
for (let e = 0; e < o.entries.length; e++) {
$("#" + a + "_entry_" + e).length || addEntry(a);
let t = a + "_entry_" + e,
n = o.entries[e];
if (
(n.hasOwnProperty("weight") &&
$("#" + t + "Weight0").val(n.weight),
n.hasOwnProperty("quality") &&
$("#" + t + "Quality0").val(n.quality),
n.hasOwnProperty("name") &&
($("#" + t + "Item0").val(extractMinecraftID(n.name)),
$("#" + t + "Item0").trigger("change")),
n.hasOwnProperty("functions"))
)
for (let e = 0; e < n.functions.length; e++) {
let a = n.functions[e];
if ("set_count" == a.function)
a.count.hasOwnProperty("min") &&
a.count.hasOwnProperty("max")
? $("#" + t + "Item0Count").val(
a.count.min + "-" + a.count.max
)
: $("#" + t + "Item0Count").val(a.count);
else if ("set_damage" == a.function)
a.damage.hasOwnProperty("min") &&
a.damage.hasOwnProperty("max")
? $("#" + t + "Item0Damage").val(
a.damage.min + "-" + a.damage.max
)
: $("#" + t + "Item0Damage").val(a.damage);
else if ("set_name" == a.function)
importTellrawJSON(t + "Item0ItemName", a.name),
showHide(
t + "Item0ItemName",
t + "Item0ItemNameSH"
);
else if ("set_lore" == a.function)
loadLoreFromNBT(t + "Item0Lore", a.lore, !0),
showHide(t + "Item0Lore", t + "Item0LoreSH");
else if ("set_nbt" == a.function) {
new CMDParser("").parseLootTableNBT(
t + "Item0",
extractMinecraftID(n.name),
a.tag
);
}
}
}
}
$("#disableOutput").prop("checked", !1), generateCommand();
}
function getNBTForLootTableItem(e) {
var t = getCanPlaceOnOrDestroy(e, "CanPlaceOn");
(t += getCanPlaceOnOrDestroy(e, "CanDestroy")),
(t += getItemDisplayForLootTableNBT(e));
for (var a = 0, o = 1, n = 0; n < flags.length; n++)
$("#" + e + "HF" + flags[n]).is(":checked") && (a += o), (o *= 2);
return (
0 != a && (t += ",HideFlags:" + a),
0 != $("#" + e + "RepairCost").length &&
$("#" + e + "RepairCost").val().length &&
(t += ",RepairCost:" + $("#" + e + "RepairCost").val()),
0 != $("#" + e + "Unbreakable").length &&
-1 != $("#" + e + "Unbreakable").val() &&
(t += ",Unbreakable:" + $("#" + e + "Unbreakable").val() + "b"),
0 != $("#" + e + "CustomModelData").length &&
$("#" + e + "CustomModelData").val().length &&
(t += ",CustomModelData:" + $("#" + e + "CustomModelData").val()),
0 != $("#" + e + "CustomTags").length &&
$("#" + e + "CustomTags").val().length &&
(t += "," + $("#" + e + "CustomTags").val()),
(t += getEnchantments(e, "Enchantments")),
(t += getItemAttributeModifiers(e)),
(t += getItemSpecificNBT(e)),
(t += getItemBlockStates(e)).length && (t = "{" + t.substr(1) + "}"),
t
);
}
function addPool() {
let e = 0;
for (; $("#pool" + e).length; ) e++;
let t = "pool" + e;
return (
$("#lootTablePane").append(
"<div id='" +
t +
"' class='pool roundedDiv'><a class='redX' href=\"javascript:removeContainer('" +
t +
"')\">&#9747;</a></div>"
),
createComponent(
t,
t + "rolls",
{
label: "Rolls",
type: "text",
cssClass: "fLabel100",
tip: "lt.rolls",
},
0
),
createComponent(
t,
t + "bonus_rolls",
{
label: "Bonus Rolls",
type: "text",
cssClass: "fLabel100",
tip: "lt.bonus_rolls",
},
0
),
$("#" + t).append(
"<br><span id='addEntry" +
t +
"' class='showHide'>Add Entry</span><div id='entryPane" +
t +
"' class='lootEntries'></div>"
),
$("#addEntry" + t).bind("click", function () {
addEntry(t);
}),
$("#addEntry" + t).trigger("click"),
t
);
}
function addEntry(e) {
let t = 0;
for (; $("#" + e + "_entry_" + t).length; ) t++;
let a = e + "_entry_" + t;
$("#entryPane" + e).append(
"<div id='" +
a +
"' class='entry roundedDiv'><a class='redX' href=\"javascript:removeContainer('" +
a +
"')\">&#9747;</a></div>"
),
createComponent(
a,
a + "Weight",
{
label: "Weight",
type: "text",
cssClass: "fLabel100",
tip: "lt.weight",
},
0
),
$("<span id='" + a + "WeightPercent0'></span>").insertAfter(
"#" + a + "Weight0"
),
createComponent(
a,
a + "Quality",
{
label: "Quality",
type: "text",
cssClass: "fLabel100",
tip: "lt.quality",
},
0
),
createComponent(
a,
a + "Item",
{
label: "Item",
type: "itemselect",
cssClass: "fLabel100",
tip: "lt.item",
forceConstruct: !0,
},
0
);
}
function updateLootTable() {}
function updateLootTableBindings() {
$(".updateLootTable").bind("click keyup", function () {});
}
(String.prototype.htmlEscape = function () {
return $("<div/>").text(this.toString()).html();
}),
(window.onpopstate = function (e) {
try {
var t = e.state.id;
showDetails(t, !1);
} catch (e) {}
});
//Crypto stuff for auth. doesnt work anyways
var MD5=function(r){function n(r,n){return r<<n|r>>>32-n}function t(r,n){var t,o,e,u,f;return e=2147483648&r,u=2147483648&n,f=(1073741823&r)+(1073741823&n),(t=1073741824&r)&(o=1073741824&n)?2147483648^f^e^u:t|o?1073741824&f?3221225472^f^e^u:1073741824^f^e^u:f^e^u}function o(r,o,e,u,f,a,i){return t(n(r=t(r,t(t(o&e|~o&u,f),i)),a),o)}function e(r,o,e,u,f,a,i){return t(n(r=t(r,t(t(o&u|e&~u,f),i)),a),o)}function u(r,o,e,u,f,a,i){return t(n(r=t(r,t(t(o^e^u,f),i)),a),o)}function f(r,o,e,u,f,a,i){return t(n(r=t(r,t(t(e^(o|~u),f),i)),a),o)}function a(r){var n,t="",o="";for(n=0;n<=3;n++)t+=(o="0"+(r>>>8*n&255).toString(16)).substr(o.length-2,2);return t}var i,C,c,g,h,d,v,S,m,l=Array();for(l=function(r){for(var n,t=r.length,o=t+8,e=16*((o-o%64)/64+1),u=Array(e-1),f=0,a=0;a<t;)f=a%4*8,u[n=(a-a%4)/4]=u[n]|r.charCodeAt(a)<<f,a++;return f=a%4*8,u[n=(a-a%4)/4]=u[n]|128<<f,u[e-2]=t<<3,u[e-1]=t>>>29,u}(r=function(r){r=r.replace(/\r\n/g,"\n");for(var n="",t=0;t<r.length;t++){var o=r.charCodeAt(t);o<128?n+=String.fromCharCode(o):o>127&&o<2048?(n+=String.fromCharCode(o>>6|192),n+=String.fromCharCode(63&o|128)):(n+=String.fromCharCode(o>>12|224),n+=String.fromCharCode(o>>6&63|128),n+=String.fromCharCode(63&o|128))}return n}(r)),d=1732584193,v=4023233417,S=2562383102,m=271733878,i=0;i<l.length;i+=16)C=d,c=v,g=S,h=m,v=f(v=f(v=f(v=f(v=u(v=u(v=u(v=u(v=e(v=e(v=e(v=e(v=o(v=o(v=o(v=o(v,S=o(S,m=o(m,d=o(d,v,S,m,l[i+0],7,3614090360),v,S,l[i+1],12,3905402710),d,v,l[i+2],17,606105819),m,d,l[i+3],22,3250441966),S=o(S,m=o(m,d=o(d,v,S,m,l[i+4],7,4118548399),v,S,l[i+5],12,1200080426),d,v,l[i+6],17,2821735955),m,d,l[i+7],22,4249261313),S=o(S,m=o(m,d=o(d,v,S,m,l[i+8],7,1770035416),v,S,l[i+9],12,2336552879),d,v,l[i+10],17,4294925233),m,d,l[i+11],22,2304563134),S=o(S,m=o(m,d=o(d,v,S,m,l[i+12],7,1804603682),v,S,l[i+13],12,4254626195),d,v,l[i+14],17,2792965006),m,d,l[i+15],22,1236535329),S=e(S,m=e(m,d=e(d,v,S,m,l[i+1],5,4129170786),v,S,l[i+6],9,3225465664),d,v,l[i+11],14,643717713),m,d,l[i+0],20,3921069994),S=e(S,m=e(m,d=e(d,v,S,m,l[i+5],5,3593408605),v,S,l[i+10],9,38016083),d,v,l[i+15],14,3634488961),m,d,l[i+4],20,3889429448),S=e(S,m=e(m,d=e(d,v,S,m,l[i+9],5,568446438),v,S,l[i+14],9,3275163606),d,v,l[i+3],14,4107603335),m,d,l[i+8],20,1163531501),S=e(S,m=e(m,d=e(d,v,S,m,l[i+13],5,2850285829),v,S,l[i+2],9,4243563512),d,v,l[i+7],14,1735328473),m,d,l[i+12],20,2368359562),S=u(S,m=u(m,d=u(d,v,S,m,l[i+5],4,4294588738),v,S,l[i+8],11,2272392833),d,v,l[i+11],16,1839030562),m,d,l[i+14],23,4259657740),S=u(S,m=u(m,d=u(d,v,S,m,l[i+1],4,2763975236),v,S,l[i+4],11,1272893353),d,v,l[i+7],16,4139469664),m,d,l[i+10],23,3200236656),S=u(S,m=u(m,d=u(d,v,S,m,l[i+13],4,681279174),v,S,l[i+0],11,3936430074),d,v,l[i+3],16,3572445317),m,d,l[i+6],23,76029189),S=u(S,m=u(m,d=u(d,v,S,m,l[i+9],4,3654602809),v,S,l[i+12],11,3873151461),d,v,l[i+15],16,530742520),m,d,l[i+2],23,3299628645),S=f(S,m=f(m,d=f(d,v,S,m,l[i+0],6,4096336452),v,S,l[i+7],10,1126891415),d,v,l[i+14],15,2878612391),m,d,l[i+5],21,4237533241),S=f(S,m=f(m,d=f(d,v,S,m,l[i+12],6,1700485571),v,S,l[i+3],10,2399980690),d,v,l[i+10],15,4293915773),m,d,l[i+1],21,2240044497),S=f(S,m=f(m,d=f(d,v,S,m,l[i+8],6,1873313359),v,S,l[i+15],10,4264355552),d,v,l[i+6],15,2734768916),m,d,l[i+13],21,1309151649),S=f(S,m=f(m,d=f(d,v,S,m,l[i+4],6,4149444226),v,S,l[i+11],10,3174756917),d,v,l[i+2],15,718787259),m,d,l[i+9],21,3951481745),d=t(d,C),v=t(v,c),S=t(S,g),m=t(m,h);return(a(d)+a(v)+a(S)+a(m)).toLowerCase()};