mirror of
https://github.com/misode/misode.github.io.git
synced 2026-04-23 15:17:09 +00:00
21
.github/workflows/update_generators.yml
vendored
21
.github/workflows/update_generators.yml
vendored
@@ -1,21 +0,0 @@
|
|||||||
name: Update Generators
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [master]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
- name: Update predicate
|
|
||||||
uses: ad-m/github-push-action@master
|
|
||||||
with:
|
|
||||||
repository: misode/predicate
|
|
||||||
github_token: ${{ secrets.GENERATORS_TOKEN }}
|
|
||||||
- name: Update advancement
|
|
||||||
uses: ad-m/github-push-action@master
|
|
||||||
with:
|
|
||||||
repository: misode/advancement
|
|
||||||
github_token: ${{ secrets.GENERATORS_TOKEN }}
|
|
||||||
58
advancement/index.html
Normal file
58
advancement/index.html
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||||
|
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-73024255-2"></script>
|
||||||
|
<script>
|
||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
function gtag(){dataLayer.push(arguments);}
|
||||||
|
gtag('js', new Date());
|
||||||
|
gtag('config', 'UA-73024255-2');
|
||||||
|
</script>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
|
||||||
|
<link rel="stylesheet" href="../css/custom.css">
|
||||||
|
<title data-i18n="title.advancement">Advancement Generator Minecraft 1.15</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="navbar navbar-expand-md navbar-dark bg-dark">
|
||||||
|
<a id="descriptionSpan" class="navbar-brand mb-0 h1" href="../" data-i18n="description.advancement"></a>
|
||||||
|
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
<div class="collapse navbar-collapse" id="collapsibleNavbar">
|
||||||
|
<ul class="navbar-nav mr-md-auto mb-2 mb-md-0">
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<a id="versionLabel" class="nav-link dropdown-toggle mr-2" href="" role="button" data-toggle="dropdown"></a>
|
||||||
|
<div id="versionList" class="dropdown-menu"></div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<a class="nav-link dropdown-toggle mr-2" href="" role="button" data-toggle="dropdown">
|
||||||
|
🌎 Language
|
||||||
|
</a>
|
||||||
|
<div id="lngList" class="dropdown-menu"></div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<a class="nav-link dropdown-toggle" href="" role="button" data-toggle="dropdown" data-i18n="theme"></a>
|
||||||
|
<div id="themeList" class="dropdown-menu"></div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<span class="ml-0 ml-md-2"><a href="https://github.com/misode/loot-table" style="color: #ddd;" data-i18n="credit"></a></span>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div class="container" data-generator="advancement"></div>
|
||||||
|
|
||||||
|
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/i18next/17.0.6/i18next.min.js" integrity="sha384-DYhccENVzcHrB30my+vk/NvcnUix2+CCUl8Qg7XEzTE1cFLf2IoN5B6c5C38vABH" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/i18next-browser-languagedetector/3.0.1/i18nextBrowserLanguageDetector.min.js" integrity="sha384-14ws1HmRivxp+u6W816e62Gs33Y19jhG4zSJb6pL0pB+gYc+CgFXXp4ZnGXcaOww" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/i18next-xhr-backend/3.0.0/i18nextXHRBackend.min.js" integrity="sha384-dK+VwLEvPDbpKM7G7D/LtbW6W2zlt99nuVTwoYIkMulAedST9Vj9OCRkv2xV8GjD" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-i18next/1.2.1/jquery-i18next.min.js" integrity="sha384-fLTSt6zHOb152KeFkj7kSiXdkyjKf6fjk5bdzWYLDPDo9evwd9PVs3TKoYYaaxdl" crossorigin="anonymous"></script>
|
||||||
|
<script src="../js/i18n.js" charset="utf-8"></script>
|
||||||
|
<script src="../js/model.js" charset="utf-8"></script>
|
||||||
|
<script src="../js/view.js" charset="utf-8"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
130
components.html
Normal file
130
components.html
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
<div id="components" class="d-none">
|
||||||
|
<div class="input-group mt-3" data-type="string">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text" data-name></span>
|
||||||
|
</div>
|
||||||
|
<input type="text" class="form-control" onchange="updateField(this)" onfocus="this.select()">
|
||||||
|
</div>
|
||||||
|
<div class="input-group mt-3" data-type="enum">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text" data-name></span>
|
||||||
|
</div>
|
||||||
|
<select class="form-control" onchange="updateField(this)">
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="input-group mt-3" data-type="random">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text" data-name></span>
|
||||||
|
<button type="button" class="btn btn-outline-secondary bg-light dropdown-toggle dropdown-toggle-split"
|
||||||
|
data-toggle="dropdown"></button>
|
||||||
|
<div class="dropdown-menu">
|
||||||
|
<a class="dropdown-item" value="exact" onclick="updateRangeType(this)" data-i18n="range.exact"></a>
|
||||||
|
<a class="dropdown-item" value="range" onclick="updateRangeType(this)" data-i18n="range.uniform"></a>
|
||||||
|
<a class="dropdown-item" value="binomial" onclick="updateRangeType(this)"
|
||||||
|
data-i18n="range.binomial"></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="text" class="form-control exact d-none rounded-right" value="1" onchange="updateField(this)"
|
||||||
|
onfocus="this.select()">
|
||||||
|
<span class="input-group-text rounded-0 range d-none" data-i18n="range.min"></span>
|
||||||
|
<input type="text" class="form-control range min d-none" value="1" onchange="updateField(this)"
|
||||||
|
onfocus="this.select()">
|
||||||
|
<span class="input-group-text rounded-0 range d-none" data-i18n="range.max"></span>
|
||||||
|
<input type="text" class="form-control range max d-none rounded-right" value="2" onchange="updateField(this)"
|
||||||
|
onfocus="this.select()">
|
||||||
|
<span class="input-group-text rounded-0 binomial d-none" data-i18n="range.n"></span>
|
||||||
|
<input type="text" class="form-control binomial n d-none" value="1" onchange="updateField(this)"
|
||||||
|
onfocus="this.select()">
|
||||||
|
<span class="input-group-text rounded-0 binomial d-none" data-i18n="range.p"></span>
|
||||||
|
<input type="text" class="form-control binomial p d-none rounded-right" value="0.5" onchange="updateField(this)"
|
||||||
|
onfocus="this.select()">
|
||||||
|
</div>
|
||||||
|
<div class="input-group mt-3" data-type="range">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text" data-name></span>
|
||||||
|
<button type="button" class="btn btn-outline-secondary bg-light dropdown-toggle dropdown-toggle-split"
|
||||||
|
data-toggle="dropdown"></button>
|
||||||
|
<div class="dropdown-menu">
|
||||||
|
<a class="dropdown-item" value="exact" onclick="updateRangeType(this)" data-i18n="range.exact"></a>
|
||||||
|
<a class="dropdown-item" value="range" onclick="updateRangeType(this)" data-i18n="range.range"></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="text" class="form-control exact d-none rounded-right" value="1" onchange="updateField(this)"
|
||||||
|
onfocus="this.select()">
|
||||||
|
<span class="input-group-text rounded-0 range d-none" data-i18n="range.min"></span>
|
||||||
|
<input type="text" class="form-control range min d-none" value="1" onchange="updateField(this)"
|
||||||
|
onfocus="this.select()">
|
||||||
|
<span class="input-group-text rounded-0 range d-none" data-i18n="range.max"></span>
|
||||||
|
<input type="text" class="form-control range max d-none rounded-right" value="2" onchange="updateField(this)"
|
||||||
|
onfocus="this.select()">
|
||||||
|
</div>
|
||||||
|
<div class="input-group mt-3" data-type="boundary">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text" data-name></span>
|
||||||
|
</div>
|
||||||
|
<span class="input-group-text rounded-0 range" data-i18n="range.min"></span>
|
||||||
|
<input type="text" class="form-control range min" onchange="updateField(this)" onfocus="this.select()">
|
||||||
|
<span class="input-group-text rounded-0 range" data-i18n="range.max"></span>
|
||||||
|
<input type="text" class="form-control range max rounded-right" onchange="updateField(this)"
|
||||||
|
onfocus="this.select()">
|
||||||
|
</div>
|
||||||
|
<div class="input-group mt-3" data-type="boolean">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text" data-name></span>
|
||||||
|
</div>
|
||||||
|
<div class="btn-group">
|
||||||
|
<button type="button" value="false" class="btn btn-secondary rounded-0" onclick="updateField(this)"
|
||||||
|
data-i18n="false"></button>
|
||||||
|
<button type="button" value="true" class="btn btn-secondary" onclick="updateField(this)"
|
||||||
|
data-i18n="true"></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="input-group mt-3" data-type="json">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text" data-name></span>
|
||||||
|
</div>
|
||||||
|
<textarea type="text" class="form-control code" onchange="updateField(this)" onfocus="this.select()"
|
||||||
|
style="height: 38px"></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="input-group mt-3" data-type="json-list">
|
||||||
|
<textarea class="form-control code" onchange="updateField(this)" rows=3></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="input-group mt-3" data-type="nbt">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text" data-name></span>
|
||||||
|
</div>
|
||||||
|
<textarea type="text" class="form-control code" onchange="updateField(this)" onfocus="this.select()"
|
||||||
|
style="height: 38px"></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="input-group mt-3" data-type="error">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text text-danger" data-i18n="error"></span>
|
||||||
|
</div>
|
||||||
|
<input type="text" class="form-control bg-light text-danger" data-name readonly></input>
|
||||||
|
</div>
|
||||||
|
<div class="mt-3" data-type="set">
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text" data-name></span>
|
||||||
|
</div>
|
||||||
|
<div class="input-group-append">
|
||||||
|
<button type="button"
|
||||||
|
class="btn btn-outline-secondary bg-light dropdown-toggle dropdown-toggle-split rounded-right"
|
||||||
|
data-toggle="dropdown"></button>
|
||||||
|
<div class="dropdown-menu scrollable-menu">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-type="map">
|
||||||
|
<div class="input-group mt-3">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<label class="input-group-text" data-name="1"></label>
|
||||||
|
</div>
|
||||||
|
<input type="text" class="form-control">
|
||||||
|
<div class="input-group-append">
|
||||||
|
<button class="btn btn-dark" type="button" onclick="addToMap(this)" data-name="2"></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -100,6 +100,15 @@ textarea.invalid:focus {
|
|||||||
overflow-x: scroll;
|
overflow-x: scroll;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card a {
|
||||||
|
color: #000 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card a:hover {
|
||||||
|
color: #333 !important;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
body[data-style="dark"] {
|
body[data-style="dark"] {
|
||||||
background-color: #222529;
|
background-color: #222529;
|
||||||
}
|
}
|
||||||
@@ -208,3 +217,11 @@ body[data-style="dark"] .help-tooltip {
|
|||||||
color: #fff;
|
color: #fff;
|
||||||
border-color: #24282c;
|
border-color: #24282c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body[data-style="dark"] .card a {
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
body[data-style="dark"] .card a:hover {
|
||||||
|
color: #ccc !important;
|
||||||
|
}
|
||||||
27
i18n.js
27
i18n.js
@@ -1,27 +0,0 @@
|
|||||||
const lngs = [
|
|
||||||
['en', 'English'],
|
|
||||||
['ru', 'Русский'],
|
|
||||||
['zh-CN', '简体中文']
|
|
||||||
]
|
|
||||||
|
|
||||||
lngs.forEach(v => $('#lngList').append(`<a class="dropdown-item" onclick="changeLng('${v[0]}')">${v[1]}</a>`))
|
|
||||||
|
|
||||||
i18next
|
|
||||||
.use(i18nextBrowserLanguageDetector)
|
|
||||||
.use(i18nextXHRBackend)
|
|
||||||
.init({
|
|
||||||
backend: { loadPath: 'locales/{{lng}}.json' },
|
|
||||||
fallbackLng: 'en',
|
|
||||||
whitelist: lngs.map(v => v[0]),
|
|
||||||
keySeparator: false
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
jqueryI18next.init(i18next, $, { parseDefaultValueFromContent: false })
|
|
||||||
updateView()
|
|
||||||
})
|
|
||||||
|
|
||||||
function changeLng(code) {
|
|
||||||
i18next.changeLanguage(code).then(() => {
|
|
||||||
updateView()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
200
index.html
200
index.html
@@ -11,196 +11,53 @@
|
|||||||
</script>
|
</script>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
<title data-i18n="title.loot-table"></title>
|
<title data-i18n="title">Minecraft Generators 1.13 1.14 1.15</title>
|
||||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
|
||||||
<link rel="stylesheet" href="custom.css">
|
<link rel="stylesheet" href="css/custom.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<nav class="navbar navbar-expand-md navbar-dark bg-dark">
|
<nav class="navbar navbar-expand-md navbar-dark bg-dark">
|
||||||
<span id="descriptionSpan" class="navbar-brand mb-0 h1" data-i18n="description.loot-table"></span>
|
<span id="descriptionSpan" class="navbar-brand mb-0 h1" data-i18n="description"></span>
|
||||||
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
|
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
|
||||||
<span class="navbar-toggler-icon"></span>
|
<span class="navbar-toggler-icon"></span>
|
||||||
</button>
|
</button>
|
||||||
<div class="collapse navbar-collapse" id="collapsibleNavbar">
|
<div class="collapse navbar-collapse" id="collapsibleNavbar">
|
||||||
<ul class="navbar-nav mr-md-auto mb-2 mb-md-0">
|
<ul class="navbar-nav mr-md-auto mb-2 mb-md-0">
|
||||||
<li class="nav-item dropdown">
|
|
||||||
<a id="versionLabel" class="nav-link dropdown-toggle mr-2" href="" role="button" data-toggle="dropdown"></a>
|
|
||||||
<div id="versionList" class="dropdown-menu"></div>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item dropdown">
|
||||||
<a class="nav-link dropdown-toggle mr-2" href="" role="button" data-toggle="dropdown">
|
<a class="nav-link dropdown-toggle mr-2" href="" role="button" data-toggle="dropdown">
|
||||||
🌎 Language
|
🌎 Language
|
||||||
</a>
|
</a>
|
||||||
<div id="lngList" class="dropdown-menu"></div>
|
<div id="lngList" class="dropdown-menu"></div>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item dropdown">
|
|
||||||
<a class="nav-link dropdown-toggle" href="" role="button" data-toggle="dropdown" data-i18n="theme"></a>
|
|
||||||
<div class="dropdown-menu">
|
|
||||||
<a class="dropdown-item" onclick="changeTheme('light')" data-i18n="theme.light"></a>
|
|
||||||
<a class="dropdown-item" onclick="changeTheme('dark')" data-i18n="theme.dark"></a>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<span class="ml-0 ml-md-2"><a href="https://github.com/misode/loot-table" style="color: #ddd;" data-i18n="credit"></a></span>
|
<span class="ml-0 ml-md-2"><a href="https://github.com/misode/loot-table" style="color: #ddd;" data-i18n="credit"></a></span>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
<div class="container d-none">
|
<div class="container mt-4">
|
||||||
<div class="row my-4">
|
<div class="card-group">
|
||||||
<div class="col-12 col-lg-7 mb-3 structure-container" data-index="root">
|
<div class="card bg-success mb-3">
|
||||||
<div id="lootTableToolbar" class="input-group d-none mb-3">
|
<a href="loot-table">
|
||||||
<button type="button" class="btn btn-success d-block mr-3 float-left" onclick="addComponent(this, 'pools')" data-field="table" data-i18n="pool_add"></button>
|
<div class="card-body">
|
||||||
<div class="input-group-prepend table-type">
|
<h5 class="card-title" data-i18n="title.loot-table"></h5>
|
||||||
<span class="input-group-text rounded-left" data-i18n="table.type"></span>
|
<p class="card-subtitle">Minecraft 1.13, 1.14, 1.15</p>
|
||||||
</div>
|
</div>
|
||||||
<select id="tableType" class="form-control mr-3 rounded-right table-type" style="max-width: 9em;" onchange="updateTableType(this)"></select>
|
</a>
|
||||||
<div class="custom-control custom-checkbox mr-3" style="margin: auto 0">
|
</div>
|
||||||
<input type="checkbox" class="custom-control-input" id="luckBased" onchange="updateLuckBased(this)">
|
<div class="card bg-secondary mb-3">
|
||||||
<label class="custom-control-label" for="luckBased" data-i18n="luck_based"></label>
|
<a href="advancement">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title" data-i18n="title.advancement"></h5>
|
||||||
|
<p class="card-subtitle">Minecraft 1.15</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="showSourceButton" class="ml-auto d-none">
|
</a>
|
||||||
<button type="button" class="btn btn-secondary" onclick="showSource()" data-i18n="show_source"></button>
|
</div>
|
||||||
|
<div class="card bg-info mb-3">
|
||||||
|
<a href="predicate">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title" data-i18n="title.predicate"></h5>
|
||||||
|
<p class="card-subtitle">Minecraft 1.15</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</a>
|
||||||
<div id="structure" class="loot-table" data-index="root">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-12 col-lg-5 source-container">
|
|
||||||
<div class="mb-3 float-lg-right source-menu">
|
|
||||||
<div class="input-group">
|
|
||||||
<div class="btn-group">
|
|
||||||
<button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" data-i18n="more"></button>
|
|
||||||
<div class="dropdown-menu">
|
|
||||||
<a class="dropdown-item" onclick="updateIndentation(2)" data-i18n="2_spaces"></a>
|
|
||||||
<a class="dropdown-item" onclick="updateIndentation(4)" data-i18n="4_spaces"></a>
|
|
||||||
<a class="dropdown-item" onclick="updateIndentation('\t')" data-i18n="tabs"></a>
|
|
||||||
<div class="dropdown-divider"></div>
|
|
||||||
<a class="dropdown-item" onclick="hideSource()" data-i18n="hide_source"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<button id="linkSource" type="button" class="btn btn-secondary ml-3" onclick="linkSource()" data-i18n="share"></button>
|
|
||||||
<button type="button" class="btn btn-secondary ml-3" onclick="copySource()" data-i18n="copy"></button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="copyContainer" class="mb-3 d-none">
|
|
||||||
<input id="copyTextarea" rows="1" class="form-control"></input>
|
|
||||||
<button id="copy" type="button" class="btn btn-block btn-secondary mt-2" onclick="copyLink()" data-i18n="copy"></button>
|
|
||||||
</div>
|
|
||||||
<textarea id="source" class="form-control code" onchange="updateSource()" rows="19" spellcheck="false"></textarea>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="d-none">
|
|
||||||
<div id="components">
|
|
||||||
<div class="input-group mt-3" data-type="string">
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<span class="input-group-text" data-name></span>
|
|
||||||
</div>
|
|
||||||
<input type="text" class="form-control" onchange="updateField(this)" onfocus="this.select()">
|
|
||||||
</div>
|
|
||||||
<div class="input-group mt-3" data-type="enum">
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<span class="input-group-text" data-name></span>
|
|
||||||
</div>
|
|
||||||
<select class="form-control" onchange="updateField(this)">
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div class="input-group mt-3" data-type="random">
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<span class="input-group-text" data-name></span>
|
|
||||||
<button type="button" class="btn btn-outline-secondary bg-light dropdown-toggle dropdown-toggle-split" data-toggle="dropdown"></button>
|
|
||||||
<div class="dropdown-menu">
|
|
||||||
<a class="dropdown-item" value="exact" onclick="updateRangeType(this)" data-i18n="range.exact"></a>
|
|
||||||
<a class="dropdown-item" value="range" onclick="updateRangeType(this)" data-i18n="range.uniform"></a>
|
|
||||||
<a class="dropdown-item" value="binomial" onclick="updateRangeType(this)" data-i18n="range.binomial"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<input type="text" class="form-control exact d-none rounded-right" value="1" onchange="updateField(this)" onfocus="this.select()">
|
|
||||||
<span class="input-group-text rounded-0 range d-none" data-i18n="range.min"></span>
|
|
||||||
<input type="text" class="form-control range min d-none" value="1" onchange="updateField(this)" onfocus="this.select()">
|
|
||||||
<span class="input-group-text rounded-0 range d-none" data-i18n="range.max"></span>
|
|
||||||
<input type="text" class="form-control range max d-none rounded-right" value="2" onchange="updateField(this)" onfocus="this.select()">
|
|
||||||
<span class="input-group-text rounded-0 binomial d-none" data-i18n="range.n"></span>
|
|
||||||
<input type="text" class="form-control binomial n d-none" value="1" onchange="updateField(this)" onfocus="this.select()">
|
|
||||||
<span class="input-group-text rounded-0 binomial d-none" data-i18n="range.p"></span>
|
|
||||||
<input type="text" class="form-control binomial p d-none rounded-right" value="0.5" onchange="updateField(this)" onfocus="this.select()">
|
|
||||||
</div>
|
|
||||||
<div class="input-group mt-3" data-type="range">
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<span class="input-group-text" data-name></span>
|
|
||||||
<button type="button" class="btn btn-outline-secondary bg-light dropdown-toggle dropdown-toggle-split" data-toggle="dropdown"></button>
|
|
||||||
<div class="dropdown-menu">
|
|
||||||
<a class="dropdown-item" value="exact" onclick="updateRangeType(this)" data-i18n="range.exact"></a>
|
|
||||||
<a class="dropdown-item" value="range" onclick="updateRangeType(this)" data-i18n="range.range"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<input type="text" class="form-control exact d-none rounded-right" value="1" onchange="updateField(this)" onfocus="this.select()">
|
|
||||||
<span class="input-group-text rounded-0 range d-none" data-i18n="range.min"></span>
|
|
||||||
<input type="text" class="form-control range min d-none" value="1" onchange="updateField(this)" onfocus="this.select()">
|
|
||||||
<span class="input-group-text rounded-0 range d-none" data-i18n="range.max"></span>
|
|
||||||
<input type="text" class="form-control range max d-none rounded-right" value="2" onchange="updateField(this)" onfocus="this.select()">
|
|
||||||
</div>
|
|
||||||
<div class="input-group mt-3" data-type="boundary">
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<span class="input-group-text" data-name></span>
|
|
||||||
</div>
|
|
||||||
<span class="input-group-text rounded-0 range" data-i18n="range.min"></span>
|
|
||||||
<input type="text" class="form-control range min" onchange="updateField(this)" onfocus="this.select()">
|
|
||||||
<span class="input-group-text rounded-0 range" data-i18n="range.max"></span>
|
|
||||||
<input type="text" class="form-control range max rounded-right" onchange="updateField(this)" onfocus="this.select()">
|
|
||||||
</div>
|
|
||||||
<div class="input-group mt-3" data-type="boolean">
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<span class="input-group-text" data-name></span>
|
|
||||||
</div>
|
|
||||||
<div class="btn-group">
|
|
||||||
<button type="button" value="false" class="btn btn-secondary rounded-0" onclick="updateField(this)" data-i18n="false"></button>
|
|
||||||
<button type="button" value="true" class="btn btn-secondary" onclick="updateField(this)" data-i18n="true"></button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="input-group mt-3" data-type="json">
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<span class="input-group-text" data-name></span>
|
|
||||||
</div>
|
|
||||||
<textarea type="text" class="form-control code" onchange="updateField(this)" onfocus="this.select()" style="height: 38px"></textarea>
|
|
||||||
</div>
|
|
||||||
<div class="input-group mt-3" data-type="json-list">
|
|
||||||
<textarea class="form-control code" onchange="updateField(this)" rows=3></textarea>
|
|
||||||
</div>
|
|
||||||
<div class="input-group mt-3" data-type="nbt">
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<span class="input-group-text" data-name></span>
|
|
||||||
</div>
|
|
||||||
<textarea type="text" class="form-control code" onchange="updateField(this)" onfocus="this.select()" style="height: 38px"></textarea>
|
|
||||||
</div>
|
|
||||||
<div class="input-group mt-3" data-type="error">
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<span class="input-group-text text-danger" data-i18n="error"></span>
|
|
||||||
</div>
|
|
||||||
<input type="text" class="form-control bg-light text-danger" data-name readonly></input>
|
|
||||||
</div>
|
|
||||||
<div class="mt-3" data-type="set">
|
|
||||||
<div class="input-group">
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<span class="input-group-text" data-name></span>
|
|
||||||
</div>
|
|
||||||
<div class="input-group-append">
|
|
||||||
<button type="button" class="btn btn-outline-secondary bg-light dropdown-toggle dropdown-toggle-split rounded-right" data-toggle="dropdown"></button>
|
|
||||||
<div class="dropdown-menu scrollable-menu">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div data-type="map">
|
|
||||||
<div class="input-group mt-3">
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<label class="input-group-text" data-name="1"></label>
|
|
||||||
</div>
|
|
||||||
<input type="text" class="form-control">
|
|
||||||
<div class="input-group-append">
|
|
||||||
<button class="btn btn-dark" type="button" onclick="addToMap(this)" data-name="2"></button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -212,8 +69,9 @@
|
|||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/i18next-browser-languagedetector/3.0.1/i18nextBrowserLanguageDetector.min.js" integrity="sha384-14ws1HmRivxp+u6W816e62Gs33Y19jhG4zSJb6pL0pB+gYc+CgFXXp4ZnGXcaOww" crossorigin="anonymous"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/i18next-browser-languagedetector/3.0.1/i18nextBrowserLanguageDetector.min.js" integrity="sha384-14ws1HmRivxp+u6W816e62Gs33Y19jhG4zSJb6pL0pB+gYc+CgFXXp4ZnGXcaOww" crossorigin="anonymous"></script>
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/i18next-xhr-backend/3.0.0/i18nextXHRBackend.min.js" integrity="sha384-dK+VwLEvPDbpKM7G7D/LtbW6W2zlt99nuVTwoYIkMulAedST9Vj9OCRkv2xV8GjD" crossorigin="anonymous"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/i18next-xhr-backend/3.0.0/i18nextXHRBackend.min.js" integrity="sha384-dK+VwLEvPDbpKM7G7D/LtbW6W2zlt99nuVTwoYIkMulAedST9Vj9OCRkv2xV8GjD" crossorigin="anonymous"></script>
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-i18next/1.2.1/jquery-i18next.min.js" integrity="sha384-fLTSt6zHOb152KeFkj7kSiXdkyjKf6fjk5bdzWYLDPDo9evwd9PVs3TKoYYaaxdl" crossorigin="anonymous"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-i18next/1.2.1/jquery-i18next.min.js" integrity="sha384-fLTSt6zHOb152KeFkj7kSiXdkyjKf6fjk5bdzWYLDPDo9evwd9PVs3TKoYYaaxdl" crossorigin="anonymous"></script>
|
||||||
<script src="i18n.js" charset="utf-8"></script>
|
<script src="js/i18n.js" charset="utf-8"></script>
|
||||||
<script src="view.js" charset="utf-8"></script>
|
<script src="js/model.js" charset="utf-8"></script>
|
||||||
<script src="model.js" charset="utf-8"></script>
|
<script src="js/view.js" charset="utf-8"></script>
|
||||||
|
<script>initLng().then(() => { $('html').localize(); });</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
32
js/i18n.js
Normal file
32
js/i18n.js
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
const lngs = [
|
||||||
|
['en', 'English'],
|
||||||
|
['ru', 'Русский'],
|
||||||
|
['zh-CN', '简体中文']
|
||||||
|
]
|
||||||
|
|
||||||
|
lngs.forEach(v => $('#lngList').append(`<a class="dropdown-item" onclick="changeLng('${v[0]}')">${v[1]}</a>`))
|
||||||
|
|
||||||
|
function initLng() {
|
||||||
|
return i18next
|
||||||
|
.use(i18nextBrowserLanguageDetector)
|
||||||
|
.use(i18nextXHRBackend)
|
||||||
|
.init({
|
||||||
|
backend: { loadPath: '../locales/{{lng}}.json' },
|
||||||
|
fallbackLng: 'en',
|
||||||
|
whitelist: lngs.map(v => v[0]),
|
||||||
|
keySeparator: false
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
jqueryI18next.init(i18next, $, { parseDefaultValueFromContent: false });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function changeLng(code) {
|
||||||
|
i18next.changeLanguage(code).then(() => {
|
||||||
|
if ('listeners' in window) {
|
||||||
|
listeners.forEach(l => l());
|
||||||
|
} else {
|
||||||
|
$('html').localize();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -1,30 +1,67 @@
|
|||||||
|
|
||||||
|
let indentation = 2;
|
||||||
|
let luckBased = false;
|
||||||
|
let historyBuffer = 100;
|
||||||
|
let history = ['{}'];
|
||||||
|
let historyIndex = 0;
|
||||||
|
|
||||||
|
let structure;
|
||||||
|
let components;
|
||||||
|
let collections;
|
||||||
|
let table = {};
|
||||||
|
let listeners = [];
|
||||||
|
|
||||||
|
const generators = {
|
||||||
|
'advancement': ['1.15'],
|
||||||
|
'loot-table': ['1.13', '1.14', '1.15'],
|
||||||
|
'predicate': ['1.15']
|
||||||
|
}
|
||||||
|
|
||||||
|
function addListener(listener) {
|
||||||
|
listeners.push(listener);
|
||||||
|
listener();
|
||||||
|
}
|
||||||
|
|
||||||
|
loadGenerator($('[data-generator]').attr('data-generator'));
|
||||||
|
function loadGenerator(generator) {
|
||||||
|
if (!generator) return;
|
||||||
|
const versions = generators[generator] || [];
|
||||||
|
versions.forEach(v => {
|
||||||
|
$('#versionList').append(`<a class="dropdown-item" onclick="changeVersion('${v}')">${v}</a>`)
|
||||||
|
});
|
||||||
|
const promises = [initShared(), initLng(), loadVersion(generator, '1.15')];
|
||||||
|
Promise.all(promises).then(() => {
|
||||||
|
invalidated()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadVersion(generator, version) {
|
||||||
|
return $.getJSON('../schemas/' + version + '.json', json => {
|
||||||
|
structure = json.roots.find(e => e.id === generator);
|
||||||
|
table = structure.default;
|
||||||
|
components = json.components;
|
||||||
|
collections = json.collections;
|
||||||
|
}).fail((jqXHR, textStatus, errorThrown) => {
|
||||||
|
let message = 'Failed loading ' + version + ' schema';
|
||||||
|
structure = {};
|
||||||
|
console.error(message + '\n' + errorThrown);
|
||||||
|
}).always(() => {
|
||||||
|
$('#versionLabel').text(version);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function initShared() {
|
||||||
|
const components = await fetch('../components.html').then(r => r.text());
|
||||||
|
const shared = await fetch('../shared.html').then(r => r.text());
|
||||||
|
$('body').append(components);
|
||||||
|
$('div.container').append(shared);
|
||||||
|
}
|
||||||
|
|
||||||
$("#source").val('');
|
$("#source").val('');
|
||||||
$('#luckBased').prop('checked', false);
|
$('#luckBased').prop('checked', false);
|
||||||
$('#tableType').val("minecraft:generic");
|
$('#tableType').val("minecraft:generic");
|
||||||
$('#indentationSelect').val("2");
|
$('#indentationSelect').val("2");
|
||||||
|
|
||||||
let indentation = 2;
|
|
||||||
let luckBased = false;
|
|
||||||
let table = {
|
|
||||||
type: "minecraft:generic",
|
|
||||||
pools: [
|
|
||||||
{
|
|
||||||
"rolls": 1,
|
|
||||||
"entries": [
|
|
||||||
{
|
|
||||||
"type": "minecraft:item",
|
|
||||||
"name": "minecraft:stone"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
let historyBuffer = 100;
|
|
||||||
let history = ['{}'];
|
|
||||||
let historyIndex = 0;
|
|
||||||
invalidated();
|
|
||||||
|
|
||||||
const params = new URLSearchParams(window.location.search);
|
const params = new URLSearchParams(window.location.search);
|
||||||
if (params.has('q')) {
|
if (params.has('q')) {
|
||||||
$('#source').val(atob(params.get('q')));
|
$('#source').val(atob(params.get('q')));
|
||||||
@@ -49,7 +86,7 @@ function undo() {
|
|||||||
if (historyIndex > 0) {
|
if (historyIndex > 0) {
|
||||||
historyIndex -= 1;
|
historyIndex -= 1;
|
||||||
table = JSON.parse(history[historyIndex]);
|
table = JSON.parse(history[historyIndex]);
|
||||||
updateView();
|
listeners.forEach(l => l());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,7 +94,7 @@ function redo() {
|
|||||||
if (historyIndex < history.length - 1) {
|
if (historyIndex < history.length - 1) {
|
||||||
historyIndex += 1;
|
historyIndex += 1;
|
||||||
table = JSON.parse(history[historyIndex]);
|
table = JSON.parse(history[historyIndex]);
|
||||||
updateView();
|
listeners.forEach(l => l());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -73,7 +110,7 @@ function invalidated() {
|
|||||||
history = history.slice(0, historyIndex);
|
history = history.slice(0, historyIndex);
|
||||||
history.push(JSON.stringify(table));
|
history.push(JSON.stringify(table));
|
||||||
}
|
}
|
||||||
updateView();
|
listeners.forEach(l => l());
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateTableType() {
|
function updateTableType() {
|
||||||
@@ -219,10 +256,7 @@ function addToSet(el, array) {
|
|||||||
|
|
||||||
function removeFromSet(el, array) {
|
function removeFromSet(el, array) {
|
||||||
let parent = getParent(el);
|
let parent = getParent(el);
|
||||||
console.warn(parent[array]);
|
|
||||||
console.log($(el).attr('value'));
|
|
||||||
let index = parent[array].indexOf($(el).attr('value'));
|
let index = parent[array].indexOf($(el).attr('value'));
|
||||||
console.log(parent, index);
|
|
||||||
if (index > -1) {
|
if (index > -1) {
|
||||||
parent[array].splice(index, 1);
|
parent[array].splice(index, 1);
|
||||||
invalidated();
|
invalidated();
|
||||||
@@ -1,48 +1,13 @@
|
|||||||
let structure;
|
|
||||||
let components;
|
|
||||||
let collections;
|
|
||||||
|
|
||||||
const generators = {
|
const themes = ["light", "dark"];
|
||||||
'advancement': ['1.15'],
|
|
||||||
'loot-table': ['1.13', '1.14', '1.15'],
|
|
||||||
'predicate': ['1.15']
|
|
||||||
}
|
|
||||||
|
|
||||||
const generator = window.location.pathname.replace(/\/$/, '').replace(/^\//, '');
|
themes.forEach(v => $('#themeList').append(`<a class="dropdown-item" onclick="changeTheme('${v}')" data-i18n="theme.${v}"></a>`));
|
||||||
generators[generator].forEach(v => {
|
|
||||||
$('#versionList').append(`<a class="dropdown-item" onclick="changeVersion('${v}')">${v}</a>`)
|
|
||||||
});
|
|
||||||
|
|
||||||
changeVersion('1.15');
|
addListener(updateView);
|
||||||
function changeVersion(version) {
|
|
||||||
$.getJSON('schemas/' + version + '.json', json => {
|
|
||||||
if (json.root) {
|
|
||||||
structure = json.root;
|
|
||||||
} else if (json.roots) {
|
|
||||||
structure = json.roots.find(e => e.id === generator) || json.roots[0] ;
|
|
||||||
}
|
|
||||||
components = json.components;
|
|
||||||
collections = json.collections;
|
|
||||||
}).fail((jqXHR, textStatus, errorThrown) => {
|
|
||||||
let message = 'Failed loading ' + version + ' schema';
|
|
||||||
structure = {
|
|
||||||
fields: [
|
|
||||||
{
|
|
||||||
id: 'pools',
|
|
||||||
type: 'error',
|
|
||||||
message: message
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
console.error(message + '\n' + errorThrown);
|
|
||||||
}).always(() => {
|
|
||||||
$('#versionLabel').text(version);
|
|
||||||
updateView();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
changeTheme(localStorage.getItem('theme'))
|
changeTheme(localStorage.getItem('theme'))
|
||||||
function changeTheme(theme) {
|
function changeTheme(theme) {
|
||||||
|
console.log(theme);
|
||||||
if (theme === null) {
|
if (theme === null) {
|
||||||
theme = 'light';
|
theme = 'light';
|
||||||
}
|
}
|
||||||
@@ -65,7 +30,7 @@ function updateView() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function generateSourceAndView(data, struct) {
|
function generateSourceAndView(data, struct) {
|
||||||
if (generator === 'loot-table') {
|
if (struct.id === 'loot-table') {
|
||||||
$('#lootTableToolbar').removeClass('d-none');
|
$('#lootTableToolbar').removeClass('d-none');
|
||||||
$('#structure').attr('data-index', 'pools');
|
$('#structure').attr('data-index', 'pools');
|
||||||
return generateTable(data, struct);
|
return generateTable(data, struct);
|
||||||
@@ -128,6 +128,7 @@
|
|||||||
"damage_source.is_magic": "Magic",
|
"damage_source.is_magic": "Magic",
|
||||||
"damage_source.is_projectile": "Projectile",
|
"damage_source.is_projectile": "Projectile",
|
||||||
"damage_source.source_entity": "Source Entity",
|
"damage_source.source_entity": "Source Entity",
|
||||||
|
"description": "Minecraft Generators",
|
||||||
"description.loot-table": "Loot Table Generator for Minecraft",
|
"description.loot-table": "Loot Table Generator for Minecraft",
|
||||||
"description.predicate": "Predicate Generator for Minecraft",
|
"description.predicate": "Predicate Generator for Minecraft",
|
||||||
"description.advancement": "Advancement Generator for Minecraft",
|
"description.advancement": "Advancement Generator for Minecraft",
|
||||||
@@ -421,6 +422,7 @@
|
|||||||
"theme": "Theme",
|
"theme": "Theme",
|
||||||
"theme.dark": "Dark",
|
"theme.dark": "Dark",
|
||||||
"theme.light": "Light",
|
"theme.light": "Light",
|
||||||
|
"title": "Minecraft Generators",
|
||||||
"title.loot-table": "Loot Table Generator",
|
"title.loot-table": "Loot Table Generator",
|
||||||
"title.predicate": "Predicate Generator",
|
"title.predicate": "Predicate Generator",
|
||||||
"title.advancement": "Advancement Generator",
|
"title.advancement": "Advancement Generator",
|
||||||
|
|||||||
58
loot-table/index.html
Normal file
58
loot-table/index.html
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||||
|
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-73024255-2"></script>
|
||||||
|
<script>
|
||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
function gtag(){dataLayer.push(arguments);}
|
||||||
|
gtag('js', new Date());
|
||||||
|
gtag('config', 'UA-73024255-2');
|
||||||
|
</script>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
|
||||||
|
<link rel="stylesheet" href="../css/custom.css">
|
||||||
|
<title data-i18n="title.loot-table">Loot Table Generator Minecraft 1.15</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="navbar navbar-expand-md navbar-dark bg-dark">
|
||||||
|
<a id="descriptionSpan" class="navbar-brand mb-0 h1" href="../" data-i18n="description.loot-table"></a>
|
||||||
|
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
<div class="collapse navbar-collapse" id="collapsibleNavbar">
|
||||||
|
<ul class="navbar-nav mr-md-auto mb-2 mb-md-0">
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<a id="versionLabel" class="nav-link dropdown-toggle mr-2" href="" role="button" data-toggle="dropdown"></a>
|
||||||
|
<div id="versionList" class="dropdown-menu"></div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<a class="nav-link dropdown-toggle mr-2" href="" role="button" data-toggle="dropdown">
|
||||||
|
🌎 Language
|
||||||
|
</a>
|
||||||
|
<div id="lngList" class="dropdown-menu"></div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<a class="nav-link dropdown-toggle" href="" role="button" data-toggle="dropdown" data-i18n="theme"></a>
|
||||||
|
<div id="themeList" class="dropdown-menu"></div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<span class="ml-0 ml-md-2"><a href="https://github.com/misode/loot-table" style="color: #ddd;" data-i18n="credit"></a></span>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div class="container" data-generator="loot-table"></div>
|
||||||
|
|
||||||
|
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/i18next/17.0.6/i18next.min.js" integrity="sha384-DYhccENVzcHrB30my+vk/NvcnUix2+CCUl8Qg7XEzTE1cFLf2IoN5B6c5C38vABH" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/i18next-browser-languagedetector/3.0.1/i18nextBrowserLanguageDetector.min.js" integrity="sha384-14ws1HmRivxp+u6W816e62Gs33Y19jhG4zSJb6pL0pB+gYc+CgFXXp4ZnGXcaOww" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/i18next-xhr-backend/3.0.0/i18nextXHRBackend.min.js" integrity="sha384-dK+VwLEvPDbpKM7G7D/LtbW6W2zlt99nuVTwoYIkMulAedST9Vj9OCRkv2xV8GjD" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-i18next/1.2.1/jquery-i18next.min.js" integrity="sha384-fLTSt6zHOb152KeFkj7kSiXdkyjKf6fjk5bdzWYLDPDo9evwd9PVs3TKoYYaaxdl" crossorigin="anonymous"></script>
|
||||||
|
<script src="../js/i18n.js" charset="utf-8"></script>
|
||||||
|
<script src="../js/model.js" charset="utf-8"></script>
|
||||||
|
<script src="../js/view.js" charset="utf-8"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
58
predicate/index.html
Normal file
58
predicate/index.html
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||||
|
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-73024255-2"></script>
|
||||||
|
<script>
|
||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
function gtag(){dataLayer.push(arguments);}
|
||||||
|
gtag('js', new Date());
|
||||||
|
gtag('config', 'UA-73024255-2');
|
||||||
|
</script>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
|
||||||
|
<link rel="stylesheet" href="../css/custom.css">
|
||||||
|
<title data-i18n="title.predicate">Predicate Generator Minecraft 1.15</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="navbar navbar-expand-md navbar-dark bg-dark">
|
||||||
|
<a id="descriptionSpan" class="navbar-brand mb-0 h1" href="../" data-i18n="description.predicate"></a>
|
||||||
|
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
<div class="collapse navbar-collapse" id="collapsibleNavbar">
|
||||||
|
<ul class="navbar-nav mr-md-auto mb-2 mb-md-0">
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<a id="versionLabel" class="nav-link dropdown-toggle mr-2" href="" role="button" data-toggle="dropdown"></a>
|
||||||
|
<div id="versionList" class="dropdown-menu"></div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<a class="nav-link dropdown-toggle mr-2" href="" role="button" data-toggle="dropdown">
|
||||||
|
🌎 Language
|
||||||
|
</a>
|
||||||
|
<div id="lngList" class="dropdown-menu"></div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<a class="nav-link dropdown-toggle" href="" role="button" data-toggle="dropdown" data-i18n="theme"></a>
|
||||||
|
<div id="themeList" class="dropdown-menu"></div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<span class="ml-0 ml-md-2"><a href="https://github.com/misode/loot-table" style="color: #ddd;" data-i18n="credit"></a></span>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div class="container" data-generator="predicate"></div>
|
||||||
|
|
||||||
|
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/i18next/17.0.6/i18next.min.js" integrity="sha384-DYhccENVzcHrB30my+vk/NvcnUix2+CCUl8Qg7XEzTE1cFLf2IoN5B6c5C38vABH" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/i18next-browser-languagedetector/3.0.1/i18nextBrowserLanguageDetector.min.js" integrity="sha384-14ws1HmRivxp+u6W816e62Gs33Y19jhG4zSJb6pL0pB+gYc+CgFXXp4ZnGXcaOww" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/i18next-xhr-backend/3.0.0/i18nextXHRBackend.min.js" integrity="sha384-dK+VwLEvPDbpKM7G7D/LtbW6W2zlt99nuVTwoYIkMulAedST9Vj9OCRkv2xV8GjD" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-i18next/1.2.1/jquery-i18next.min.js" integrity="sha384-fLTSt6zHOb152KeFkj7kSiXdkyjKf6fjk5bdzWYLDPDo9evwd9PVs3TKoYYaaxdl" crossorigin="anonymous"></script>
|
||||||
|
<script src="../js/i18n.js" charset="utf-8"></script>
|
||||||
|
<script src="../js/model.js" charset="utf-8"></script>
|
||||||
|
<script src="../js/view.js" charset="utf-8"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -26,14 +26,31 @@
|
|||||||
"translate": "pool",
|
"translate": "pool",
|
||||||
"values": "pool"
|
"values": "pool"
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"default": {
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "minecraft:stone"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "predicate",
|
"id": "predicate",
|
||||||
"title": "title.predicate",
|
"title": "title.predicate",
|
||||||
"description": "description.predicate",
|
"description": "description.predicate",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"value": "condition"
|
"value": "condition",
|
||||||
|
"default": {
|
||||||
|
"condition": "minecraft:entity_properties",
|
||||||
|
"predicate": {}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "advancement",
|
"id": "advancement",
|
||||||
@@ -156,7 +173,15 @@
|
|||||||
"value": "criterion"
|
"value": "criterion"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"default": {
|
||||||
|
"criteria": {
|
||||||
|
"requirement": {
|
||||||
|
"trigger": "minecraft:location",
|
||||||
|
"conditions": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"components": [
|
"components": [
|
||||||
|
|||||||
47
shared.html
Normal file
47
shared.html
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
<div class="row my-4">
|
||||||
|
<div class="col-12 col-lg-7 mb-3 structure-container" data-index="root">
|
||||||
|
<div id="lootTableToolbar" class="input-group d-none mb-3">
|
||||||
|
<button type="button" class="btn btn-success d-block mr-3 float-left" onclick="addComponent(this, 'pools')"data-field="table" data-i18n="pool_add"></button>
|
||||||
|
<div class="input-group-prepend table-type">
|
||||||
|
<span class="input-group-text rounded-left" data-i18n="table.type"></span>
|
||||||
|
</div>
|
||||||
|
<select id="tableType" class="form-control mr-3 rounded-right table-type" style="max-width: 9em;" onchange="updateTableType(this)"></select>
|
||||||
|
<div class="custom-control custom-checkbox mr-3" style="margin: auto 0">
|
||||||
|
<input type="checkbox" class="custom-control-input" id="luckBased" onchange="updateLuckBased(this)">
|
||||||
|
<label class="custom-control-label" for="luckBased" data-i18n="luck_based"></label>
|
||||||
|
</div>
|
||||||
|
<div id="showSourceButton" class="ml-auto d-none">
|
||||||
|
<button type="button" class="btn btn-secondary" onclick="showSource()" data-i18n="show_source"></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="structure" class="loot-table" data-index="root">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-lg-5 source-container">
|
||||||
|
<div class="mb-3 float-lg-right source-menu">
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="btn-group">
|
||||||
|
<button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown"
|
||||||
|
data-i18n="more"></button>
|
||||||
|
<div class="dropdown-menu">
|
||||||
|
<a class="dropdown-item" onclick="updateIndentation(2)" data-i18n="2_spaces"></a>
|
||||||
|
<a class="dropdown-item" onclick="updateIndentation(4)" data-i18n="4_spaces"></a>
|
||||||
|
<a class="dropdown-item" onclick="updateIndentation('\t')" data-i18n="tabs"></a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" onclick="hideSource()" data-i18n="hide_source"></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button id="linkSource" type="button" class="btn btn-secondary ml-3" onclick="linkSource()"
|
||||||
|
data-i18n="share"></button>
|
||||||
|
<button type="button" class="btn btn-secondary ml-3" onclick="copySource()" data-i18n="copy"></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="copyContainer" class="mb-3 d-none">
|
||||||
|
<input id="copyTextarea" rows="1" class="form-control"></input>
|
||||||
|
<button id="copy" type="button" class="btn btn-block btn-secondary mt-2" onclick="copyLink()"
|
||||||
|
data-i18n="copy"></button>
|
||||||
|
</div>
|
||||||
|
<textarea id="source" class="form-control code" onchange="updateSource()" rows="19"
|
||||||
|
spellcheck="false"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
Reference in New Issue
Block a user