mirror of
https://github.com/misode/misode.github.io.git
synced 2026-04-23 15:17:09 +00:00
665 lines
42 KiB
HTML
665 lines
42 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
<title>Loot Table Generator</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="custom.css">
|
|
</head>
|
|
<body>
|
|
<nav class="navbar navbar-dark bg-dark">
|
|
<span class="navbar-brand mb-0 h1">Loot Table Generator for Minecraft 1.14</span>
|
|
<span class="float-right"><a href="https://github.com/misode" style="color: #ddd;">by Misode</a></span>
|
|
</nav>
|
|
<div class="container">
|
|
<div class="row my-4">
|
|
<div class="col-12 col-lg-7 mb-3">
|
|
<div class="input-group">
|
|
<button type="button" class="btn btn-success d-block mr-3 float-left" onclick="addPool(this)">Add Pool</button>
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text rounded-left">Type</span>
|
|
</div>
|
|
<select id="tableType" class="form-control mr-3 rounded-right" style="max-width: 9em;" onchange="updateTableType(this)">
|
|
<option value="minecraft:empty">Empty</option>
|
|
<option value="minecraft:entity">Entity</option>
|
|
<option value="minecraft:block">Block</option>
|
|
<option value="minecraft:chest">Chest</option>
|
|
<option value="minecraft:fishing">Fishing</option>
|
|
<option value="minecraft:generic">Generic</option>
|
|
</select>
|
|
<div class="custom-control custom-checkbox" style="margin: auto 0">
|
|
<input type="checkbox" class="custom-control-input" id="luckBased" onchange="updateLuckBased(this)">
|
|
<label class="custom-control-label" for="luckBased">Luck-based</label>
|
|
</div>
|
|
</div>
|
|
<div id="structure" class="loot-table">
|
|
</div>
|
|
</div>
|
|
<div class="col-12 col-lg-5">
|
|
<div class="mb-3 float-lg-right">
|
|
<div class="input-group">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Indentation</span>
|
|
</div>
|
|
<select id="indentationSelect" class="form-control rounded-right" style="max-width: 7em;" onchange="updateIndentation(this)">
|
|
<option value="2">2 Spaces</option>
|
|
<option value="4">4 Spaces</option>
|
|
<option value="tab">Tabs</option>
|
|
</select>
|
|
<button type="button" class="btn btn-secondary ml-3" onclick="copySource(this)">Copy</button>
|
|
</div>
|
|
</div>
|
|
<textarea id="source" class="form-control code" onchange="updateSouce()" rows="20" spellcheck="false"></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="d-none">
|
|
<div id="poolTemplate" class="card bg-success text-white mt-3 pool">
|
|
<div class="card-header pb-1">
|
|
<button type="button" class="btn btn-danger mb-2 float-right" onclick="removePool(this)">Remove Pool</button>
|
|
<button type="button" class="btn btn-light mr-3 mb-2 float-left" onclick="addEntry(this)">Add Entry</button>
|
|
<button type="button" class="btn btn-info mr-3 mb-2 float-left" onclick="addCondition(this)">Add Condition</button>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="input-group rolls" data-type="exact">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Rolls</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" onclick="updateRangeType(this, 'rolls', 'exact')">Exact</a>
|
|
<a class="dropdown-item" onclick="updateRangeType(this, 'rolls', 'range')">Range</a>
|
|
<a class="dropdown-item" onclick="updateRangeType(this, 'rolls', 'binomial')">Binomial</a>
|
|
</div>
|
|
</div>
|
|
<input type="text" class="form-control exact d-none rounded-right" value="1" onchange="updateRangeField(this, 'rolls')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 range d-none">Min</span>
|
|
<input type="text" class="form-control range min d-none" value="1" onchange="updateRangeField(this, 'rolls')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 range d-none">Max</span>
|
|
<input type="text" class="form-control range max d-none rounded-right" value="2" onchange="updateRangeField(this, 'rolls')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 binomial d-none">n</span>
|
|
<input type="text" class="form-control binomial n d-none" value="1" onchange="updateRangeField(this, 'rolls')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 binomial d-none">p</span>
|
|
<input type="text" class="form-control binomial p d-none rounded-right" value="0.5" onchange="updateRangeField(this, 'rolls')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group mt-3 bonus-rolls" data-type="exact">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Bonus Rolls</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" onclick="updateRangeType(this, 'bonus_rolls', 'exact')">Exact</a>
|
|
<a class="dropdown-item" onclick="updateRangeType(this, 'bonus_rolls', 'range')">Range</a>
|
|
<a class="dropdown-item" onclick="updateRangeType(this, 'bonus_rolls', 'binomial')">Binomial</a>
|
|
</div>
|
|
</div>
|
|
<input type="text" class="form-control exact d-none rounded-right" value="1" onchange="updateRangeField(this, 'bonus_rolls')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 range d-none">Min</span>
|
|
<input type="text" class="form-control range min d-none" value="1" onchange="updateRangeField(this, 'bonus_rolls')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 range d-none">Max</span>
|
|
<input type="text" class="form-control range max d-none rounded-right" value="2" onchange="updateRangeField(this, 'bonus_rolls')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 binomial d-none">n</span>
|
|
<input type="text" class="form-control binomial n d-none" value="1" onchange="updateRangeField(this, 'bonus_rolls')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 binomial d-none">p</span>
|
|
<input type="text" class="form-control binomial p d-none rounded-right" value="0.5" onchange="updateRangeField(this, 'bonus_rolls')" onclick="this.select()">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="entryTemplate" class="card mt-3 entry">
|
|
<div class="card-header pb-1">
|
|
<button type="button" class="btn btn-danger mb-2 float-right" onclick="removeEntry(this)">Remove Entry</button>
|
|
<button type="button" class="btn btn-secondary mr-3 mb-2 float-left" onclick="addFunction(this)">Add Function</button>
|
|
<button type="button" class="btn btn-info mr-3 mb-2 float-left" onclick="addCondition(this)">Add Condition</button>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="input-group">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Type</span>
|
|
</div>
|
|
<select class="form-control entry-type" onchange="updateField(this, 'type')">
|
|
<option value="minecraft:empty">Empty</option>
|
|
<option value="minecraft:item">Item</option>
|
|
<option value="minecraft:tag">Item Tag</option>
|
|
<option value="minecraft:loot_table">Loot Table</option>
|
|
<option value="minecraft:alternatives">Alternatives</option>
|
|
<option value="minecraft:sequence">Sequence</option>
|
|
<option value="minecraft:group">Group</option>
|
|
<option value="minecraft:dynamic">Dynamic</option>
|
|
</select>
|
|
</div>
|
|
<div class="input-group mt-3 entry-name d-none">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Name</span>
|
|
</div>
|
|
<input type="text" class="form-control" onchange="updateField(this, 'name')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group mt-3 entry-weight d-none">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Weight</span>
|
|
</div>
|
|
<input type="text" class="form-control" onchange="updateIntField(this, 'weight')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group mt-3 entry-quality d-none">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Quality</span>
|
|
</div>
|
|
<input type="text" class="form-control" onchange="updateIntField(this, 'quality')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group mt-3 entry-children d-none">
|
|
<button type="button" class="btn btn-outline-success" onclick="addChild(this)">Add Child</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="functionTemplate" class="card bg-secondary mt-3 function">
|
|
<div class="card-header pb-1">
|
|
<button type="button" class="btn btn-danger mb-2 float-right" onclick="removeFunction(this)">Remove Function</button>
|
|
<button type="button" class="btn btn-info mr-3 mb-2 float-left" onclick="addCondition(this)">Add Condition</button>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="input-group">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Function</span>
|
|
</div>
|
|
<select class="form-control function-type" onchange="updateField(this, 'function')">
|
|
<option value="minecraft:set_count">Set Count</option>
|
|
<option value="minecraft:set_damage">Set Damage</option>
|
|
<option value="minecraft:set_name">Set Name</option>
|
|
<option value="minecraft:set_lore">Set Lore</option>
|
|
<option value="minecraft:set_nbt">Set NBT</option>
|
|
<option value="minecraft:set_attributes">Set Attributes</option>
|
|
<option value="minecraft:set_contents">Set Contents</option>
|
|
<option value="minecraft:enchant_randomly">Enchant Randomly</option>
|
|
<option value="minecraft:enchant_with_levels">Enchant With Levels</option>
|
|
<option value="minecraft:looting_enchant">Looting Enchant</option>
|
|
<option value="minecraft:limit_count">Limit Count</option>
|
|
<option value="minecraft:furnace_smelt">Furnace Smelt</option>
|
|
<option value="minecraft:explosion_decay">Explosion Decay</option>
|
|
<option value="minecraft:fill_player_head">Fill Player Head</option>
|
|
<option value="minecraft:copy_name">Copy Name</option>
|
|
<option value="minecraft:copy_nbt">Copy NBT</option>
|
|
<option value="minecraft:apply_bonus">Apply Bonus</option>
|
|
</select>
|
|
</div>
|
|
<div class="input-group function-count mt-3 d-none" data-type="exact">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Count</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" onclick="updateRangeType(this, 'count', 'exact')">Exact</a>
|
|
<a class="dropdown-item" onclick="updateRangeType(this, 'count', 'range')">Range</a>
|
|
<a class="dropdown-item" onclick="updateRangeType(this, 'count', 'binomial')">Binomial</a>
|
|
</div>
|
|
</div>
|
|
<input type="text" class="form-control exact d-none rounded-right" value="1" onchange="updateRangeField(this, 'count')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 range d-none">Min</span>
|
|
<input type="text" class="form-control range min d-none" value="1" onchange="updateRangeField(this, 'count')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 range d-none">Max</span>
|
|
<input type="text" class="form-control range max d-none rounded-right" value="2" onchange="updateRangeField(this, 'count')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 binomial d-none">n</span>
|
|
<input type="text" class="form-control binomial n d-none" value="1" onchange="updateRangeField(this, 'count')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 binomial d-none">p</span>
|
|
<input type="text" class="form-control binomial p d-none rounded-right" value="0.5" onchange="updateRangeField(this, 'count')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group function-damage mt-3 d-none" data-type="exact">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Damage</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" onclick="updateRangeType(this, 'damage', 'exact')">Exact</a>
|
|
<a class="dropdown-item" onclick="updateRangeType(this, 'damage', 'range')">Range</a>
|
|
<a class="dropdown-item" onclick="updateRangeType(this, 'damage', 'binomial')">Binomial</a>
|
|
</div>
|
|
</div>
|
|
<input type="text" class="form-control exact d-none rounded-right" value="1" onchange="updateRangeField(this, 'damage')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 range d-none">Min</span>
|
|
<input type="text" class="form-control range min d-none" value="1" onchange="updateRangeField(this, 'damage')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 range d-none">Max</span>
|
|
<input type="text" class="form-control range max d-none rounded-right" value="2" onchange="updateRangeField(this, 'damage')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 binomial d-none">n</span>
|
|
<input type="text" class="form-control binomial n d-none" value="1" onchange="updateRangeField(this, 'damage')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 binomial d-none">p</span>
|
|
<input type="text" class="form-control binomial p d-none rounded-right" value="0.5" onchange="updateRangeField(this, 'damage')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group mt-3 function-nbt d-none">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Tag</span>
|
|
</div>
|
|
<input type="text" class="form-control code" onchange="updateField(this, 'tag')" onclick="this.select()">
|
|
</div>
|
|
<div class="mt-3 function-ench-rand d-none">
|
|
<div class="input-group">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Optional Enchantments</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">
|
|
<a class="dropdown-item" data-ench="minecraft:aqua_affinity" onclick="addEnchantment(this)">Aqua Affinity</a>
|
|
<a class="dropdown-item" data-ench="minecraft:bane_of_arthropods" onclick="addEnchantment(this)">Bane of Arthropods</a>
|
|
<a class="dropdown-item" data-ench="minecraft:blast_protection" onclick="addEnchantment(this)">Blast Protection</a>
|
|
<a class="dropdown-item" data-ench="minecraft:channeling" onclick="addEnchantment(this)">Channeling</a>
|
|
<a class="dropdown-item" data-ench="minecraft:binding_curse" onclick="addEnchantment(this)">Curse of Binding</a>
|
|
<a class="dropdown-item" data-ench="minecraft:vanishing_curse" onclick="addEnchantment(this)">Curse of Vanishing</a>
|
|
<a class="dropdown-item" data-ench="minecraft:depth_strider" onclick="addEnchantment(this)">Depth Strider</a>
|
|
<a class="dropdown-item" data-ench="minecraft:efficiency" onclick="addEnchantment(this)">Efficiency</a>
|
|
<a class="dropdown-item" data-ench="minecraft:feather_falling" onclick="addEnchantment(this)">Feather Falling</a>
|
|
<a class="dropdown-item" data-ench="minecraft:fire_aspect" onclick="addEnchantment(this)">Fire Aspect</a>
|
|
<a class="dropdown-item" data-ench="minecraft:fire_protection" onclick="addEnchantment(this)">Fire Protection</a>
|
|
<a class="dropdown-item" data-ench="minecraft:flame" onclick="addEnchantment(this)">Flame</a>
|
|
<a class="dropdown-item" data-ench="minecraft:fortune" onclick="addEnchantment(this)">Fortune</a>
|
|
<a class="dropdown-item" data-ench="minecraft:frost_walker" onclick="addEnchantment(this)">Frost Walker</a>
|
|
<a class="dropdown-item" data-ench="minecraft:impaling" onclick="addEnchantment(this)">Impaling</a>
|
|
<a class="dropdown-item" data-ench="minecraft:infinity" onclick="addEnchantment(this)">Infinity</a>
|
|
<a class="dropdown-item" data-ench="minecraft:knockback" onclick="addEnchantment(this)">Knockback</a>
|
|
<a class="dropdown-item" data-ench="minecraft:looting" onclick="addEnchantment(this)">Looting</a>
|
|
<a class="dropdown-item" data-ench="minecraft:loyalty" onclick="addEnchantment(this)">Loyalty</a>
|
|
<a class="dropdown-item" data-ench="minecraft:luck_of_the_sea" onclick="addEnchantment(this)">Luck of the Sea</a>
|
|
<a class="dropdown-item" data-ench="minecraft:lure" onclick="addEnchantment(this)">Lure</a>
|
|
<a class="dropdown-item" data-ench="minecraft:mending" onclick="addEnchantment(this)">Mending</a>
|
|
<a class="dropdown-item" data-ench="minecraft:multishot" onclick="addEnchantment(this)">Multishot</a>
|
|
<a class="dropdown-item" data-ench="minecraft:piercing" onclick="addEnchantment(this)">Piercing</a>
|
|
<a class="dropdown-item" data-ench="minecraft:power" onclick="addEnchantment(this)">Power</a>
|
|
<a class="dropdown-item" data-ench="minecraft:projectile_protection" onclick="addEnchantment(this)">Projectile Protection</a>
|
|
<a class="dropdown-item" data-ench="minecraft:protection" onclick="addEnchantment(this)">Protection</a>
|
|
<a class="dropdown-item" data-ench="minecraft:punch" onclick="addEnchantment(this)">Punch</a>
|
|
<a class="dropdown-item" data-ench="minecraft:quick_charge" onclick="addEnchantment(this)">Quick Charge</a>
|
|
<a class="dropdown-item" data-ench="minecraft:respiration" onclick="addEnchantment(this)">Respiration</a>
|
|
<a class="dropdown-item" data-ench="minecraft:riptide" onclick="addEnchantment(this)">Riptide</a>
|
|
<a class="dropdown-item" data-ench="minecraft:sharpness" onclick="addEnchantment(this)">Sharpness</a>
|
|
<a class="dropdown-item" data-ench="minecraft:silk_touch" onclick="addEnchantment(this)">Silk Touch</a>
|
|
<a class="dropdown-item" data-ench="minecraft:smite" onclick="addEnchantment(this)">Smite</a>
|
|
<a class="dropdown-item" data-ench="minecraft:sweeping" onclick="addEnchantment(this)">Sweeping Edge</a>
|
|
<a class="dropdown-item" data-ench="minecraft:thorns" onclick="addEnchantment(this)">Thorns</a>
|
|
<a class="dropdown-item" data-ench="minecraft:unbreaking" onclick="addEnchantment(this)">Unbreaking</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="enchantment-list">
|
|
</div>
|
|
</div>
|
|
<div class="input-group function-ench-levels mt-3 d-none" data-type="exact">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Levels</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" onclick="updateRangeType(this, 'levels', 'exact')">Exact</a>
|
|
<a class="dropdown-item" onclick="updateRangeType(this, 'levels', 'range')">Range</a>
|
|
<a class="dropdown-item" onclick="updateRangeType(this, 'levels', 'binomial')">Binomial</a>
|
|
</div>
|
|
</div>
|
|
<input type="text" class="form-control exact d-none rounded-right" value="1" onchange="updateRangeField(this, 'levels')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 range d-none">Min</span>
|
|
<input type="text" class="form-control range min d-none" value="1" onchange="updateRangeField(this, 'levels')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 range d-none">Max</span>
|
|
<input type="text" class="form-control range max d-none rounded-right" value="2" onchange="updateRangeField(this, 'levels')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 binomial d-none">n</span>
|
|
<input type="text" class="form-control binomial n d-none" value="1" onchange="updateRangeField(this, 'levels')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 binomial d-none">p</span>
|
|
<input type="text" class="form-control binomial p d-none rounded-right" value="0.5" onchange="updateRangeField(this, 'levels')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group mt-3 function-ench-treasure d-none">
|
|
<div class="custom-control custom-checkbox">
|
|
<input type="checkbox" class="custom-control-input" id="treasureCheckbox" onchange="updateCheckedField(this, 'treasure')">
|
|
<label class="custom-control-label" for="treasureCheckbox">Treasure</label>
|
|
</div>
|
|
</div>
|
|
<div class="input-group mt-3 function-limit d-none">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Limit</span>
|
|
</div>
|
|
<input type="text" class="form-control" onchange="updateField(this, 'limit')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group mt-3 function-attributes d-none">
|
|
<button type="button" class="btn btn-dark" onclick="addModifier(this)">Add Modifier</button>
|
|
</div>
|
|
<div class="input-group mt-3 function-source d-none">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Source</span>
|
|
</div>
|
|
<select class="form-control" onchange="updateField(this, 'source')">
|
|
<option value="block_entity">Block Entity</option>
|
|
<option value="this">This</option>
|
|
<option value="killer">Killer</option>
|
|
<option value="killer_player">Killer Player</option>
|
|
</select>
|
|
</div>
|
|
<div class="input-group mt-3 function-name d-none">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Name</span>
|
|
</div>
|
|
<input type="text" class="form-control" onchange="updateField(this, 'name')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group function-limit-range mt-3 d-none" data-type="exact">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">limit</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" onclick="updateRangeType(this, 'limit', 'exact')">Exact</a>
|
|
<a class="dropdown-item" onclick="updateRangeType(this, 'limit', 'range')">Range</a>
|
|
<a class="dropdown-item" onclick="updateRangeType(this, 'limit', 'binomial')">Binomial</a>
|
|
</div>
|
|
</div>
|
|
<input type="text" class="form-control exact d-none rounded-right" value="1" onchange="updateRangeField(this, 'limit')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 range d-none">Min</span>
|
|
<input type="text" class="form-control range min d-none" value="1" onchange="updateRangeField(this, 'limit')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 range d-none">Max</span>
|
|
<input type="text" class="form-control range max d-none rounded-right" value="2" onchange="updateRangeField(this, 'limit')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 binomial d-none">n</span>
|
|
<input type="text" class="form-control binomial n d-none" value="1" onchange="updateRangeField(this, 'limit')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 binomial d-none">p</span>
|
|
<input type="text" class="form-control binomial p d-none rounded-right" value="0.5" onchange="updateRangeField(this, 'limit')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group mt-3 function-entries d-none">
|
|
<button type="button" class="btn btn-light" onclick="addEntry(this)">Add Entry</button>
|
|
</div>
|
|
<div class="input-group mt-3 function-lore d-none">
|
|
<textarea class="form-control code" onchange="updateLoreField(this)" rows=3 placeholder="JSON text component on each line"></textarea>
|
|
</div>
|
|
<div class="input-group mt-3 function-lore-replace d-none">
|
|
<div class="custom-control custom-checkbox">
|
|
<input type="checkbox" class="custom-control-input" id="loreReplaceCheckbox" onchange="updateCheckedField(this, 'replace')">
|
|
<label class="custom-control-label" for="loreReplaceCheckbox">Replace</label>
|
|
</div>
|
|
</div>
|
|
<div class="input-group mt-3 function-entity d-none">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Entity</span>
|
|
</div>
|
|
<select class="form-control" onchange="updateField(this, 'entity')">
|
|
<option value="this">This</option>
|
|
<option value="killer">Killer</option>
|
|
<option value="killer_player">Killer Player</option>
|
|
</select>
|
|
</div>
|
|
<div class="input-group mt-3 function-operations d-none">
|
|
<button type="button" class="btn btn-dark" onclick="addOperation(this)">Add Operation</button>
|
|
</div>
|
|
<div class="input-group mt-3 function-enchantment d-none">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Enchantment</span>
|
|
</div>
|
|
<input type="text" class="form-control" onchange="updateField(this, 'enchantment')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group mt-3 function-formula d-none">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Formula</span>
|
|
</div>
|
|
<select class="form-control function-type" onchange="updateField(this, 'formula')">
|
|
<option value="minecraft:uniform_bonus_count">Uniform Bonus Count</option>
|
|
<option value="minecraft:binomial_with_bonus_count">Binomial with Bonus Count</option>
|
|
<option value="minecraft:ore_drops">Ore Drops</option>
|
|
</select>
|
|
</div>
|
|
<div class="input-group mt-3 function-bonus-multiplier d-none">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Multiplier</span>
|
|
</div>
|
|
<input type="text" class="form-control" onchange="updateParameterIntField(this, 'bonusMultiplier')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group mt-3 function-bonus-extra d-none">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Extra</span>
|
|
</div>
|
|
<input type="text" class="form-control" onchange="updateParameterIntField(this, 'extra')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group mt-3 function-bonus-probability d-none">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Propability</span>
|
|
</div>
|
|
<input type="text" class="form-control" onchange="updateParameterFloatField(this, 'probability')" onclick="this.select()">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="modifierTemplate" class="card bg-dark mt-3 modifier">
|
|
<div class="card-header pb-1">
|
|
<button type="button" class="btn btn-danger mb-2 float-right" onclick="removeModifier(this)">Remove Modifier</button>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="input-group">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Attribute</span>
|
|
</div>
|
|
<select class="form-control modifier-attribute" onchange="updateField(this, 'attribute')">
|
|
<option value="generic.maxHealth">Max Health</option>
|
|
<option value="generic.followRange">Follow Range</option>
|
|
<option value="generic.knockbackResistance">Knockback Resistance</option>
|
|
<option value="generic.movementSpeed">Movement Speed</option>
|
|
<option value="generic.attackDamage">Attack Damage</option>
|
|
<option value="generic.armor">Armor</option>
|
|
<option value="generic.armorThoughness">Armor Toughness</option>
|
|
<option value="generic.attackSpeed">Attack Speed</option>
|
|
<option value="generic.luck">Luck</option>
|
|
<option value="horse.jumpStrength">Jump Strength</option>
|
|
<option value="generic.attackKnockback">Attack Knockback</option>
|
|
<option value="generic.flyingSpeed">Flying Speed</option>
|
|
<option value="zombie.spawnReinforcements">Spawn Reinforcements</option>
|
|
</select>
|
|
</div>
|
|
<div class="input-group mt-3">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Name</span>
|
|
</div>
|
|
<input type="text" class="form-control modifier-name" onchange="updateField(this, 'name')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group mt-3 modifier-amount" data-type="exact">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Amount</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" onclick="updateRangeType(this, 'amount', 'exact')">Exact</a>
|
|
<a class="dropdown-item" onclick="updateRangeType(this, 'amount', 'range')">Range</a>
|
|
<a class="dropdown-item" onclick="updateRangeType(this, 'amount', 'binomial')">Binomial</a>
|
|
</div>
|
|
</div>
|
|
<input type="text" class="form-control exact d-none rounded-right" value="1" onchange="updateRangeField(this, 'amount')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 range d-none">Min</span>
|
|
<input type="text" class="form-control range min d-none" value="1" onchange="updateRangeField(this, 'amount')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 range d-none">Max</span>
|
|
<input type="text" class="form-control range max d-none rounded-right" value="2" onchange="updateRangeField(this, 'amount')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 binomial d-none">n</span>
|
|
<input type="text" class="form-control binomial n d-none" value="1" onchange="updateRangeField(this, 'amount')" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 binomial d-none">p</span>
|
|
<input type="text" class="form-control binomial p d-none rounded-right" value="0.5" onchange="updateRangeField(this, 'amount')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group mt-3">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Operation</span>
|
|
</div>
|
|
<select class="form-control modifier-operation" onchange="updateField(this, 'operation')">
|
|
<option value="addition">Addition</option>
|
|
<option value="multiply_base">Multiply Base</option>
|
|
<option value="multiply_total">Multiply Total</option>
|
|
</select>
|
|
</div>
|
|
<div class="mt-3 modifier-slots">
|
|
<div class="input-group">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Slots</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">
|
|
<a class="dropdown-item" data-slot="mainhand" onclick="addModifierSlot(this)">Mainhand</a>
|
|
<a class="dropdown-item" data-slot="offhand" onclick="addModifierSlot(this)">Offhand</a>
|
|
<a class="dropdown-item" data-slot="head" onclick="addModifierSlot(this)">Head</a>
|
|
<a class="dropdown-item" data-slot="chest" onclick="addModifierSlot(this)">Chest</a>
|
|
<a class="dropdown-item" data-slot="legs" onclick="addModifierSlot(this)">Legs</a>
|
|
<a class="dropdown-item" data-slot="feet" onclick="addModifierSlot(this)">Feet</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modifier-slots-list">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="operationTemplate" class="card bg-dark mt-3 operation">
|
|
<div class="card-header pb-1">
|
|
<button type="button" class="btn btn-danger mb-2 float-right" onclick="removeOperation(this)">Remove Operation</button>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="input-group">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Source</span>
|
|
</div>
|
|
<input type="text" class="form-control code operation-source" onchange="updateField(this, 'source')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group mt-3">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Target</span>
|
|
</div>
|
|
<input type="text" class="form-control code operation-target" onchange="updateField(this, 'target')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group mt-3">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Operation</span>
|
|
</div>
|
|
<select class="form-control operation-type" onchange="updateField(this, 'op')">
|
|
<option value="replace">Replace</option>
|
|
<option value="append">Append</option>
|
|
<option value="merge">Merge</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="conditionTemplate" class="card mt-3 bg-info condition">
|
|
<div class="card-header pb-1">
|
|
<button type="button" class="btn btn-danger mb-2 float-right" onclick="removeCondition(this)">Remove Condition</button>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="input-group">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Condition</span>
|
|
</div>
|
|
<select class="form-control condition-type" onchange="updateField(this, 'condition')">
|
|
<option value="minecraft:entity_properties">Entity Properties</option>
|
|
<option value="minecraft:blockstate_propery">Block Properties</option>
|
|
<option value="minecraft:damage_source_properties">Damage Source Properties</option>
|
|
<option value="minecraft:location_check">Location Check</option>
|
|
<option value="minecraft:weather_check">Weather Check</option>
|
|
<option value="minecraft:match_tool">Tool Check</option>
|
|
<option value="minecraft:alternative">Alternative</option>
|
|
<option value="minecraft:inverted">Inverted</option>
|
|
<option value="minecraft:entity_scores">Entity Scores</option>
|
|
<option value="minecraft:random_chance">Random Chance</option>
|
|
<option value="minecraft:random_chance_with_looting">Random Chance with Looting</option>
|
|
<option value="minecraft:table_bonus">Table Bonus</option>
|
|
<option value="minecraft:killed_by_player">Killed by Player</option>
|
|
<option value="minecraft:survives_explosion">Survives Explosion</option>
|
|
</select>
|
|
</div>
|
|
<div class="input-group mt-3 condition-chance d-none">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Chance</span>
|
|
</div>
|
|
<input type="text" class="form-control" onchange="updateFloatField(this, 'chance')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group mt-3 condition-looting-multiplier d-none">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Looting Multiplier</span>
|
|
</div>
|
|
<input type="text" class="form-control" onchange="updateFloatField(this, 'looting_multiplier')" onclick="this.select()">
|
|
</div>
|
|
<div class="input-group mt-3 condition-killed-inverted d-none">
|
|
<div class="custom-control custom-checkbox">
|
|
<input type="checkbox" class="custom-control-input" id="invertedCheckbox" onchange="updateCheckedField(this, 'inverted')">
|
|
<label class="custom-control-label" for="invertedCheckbox">Inverted</label>
|
|
</div>
|
|
</div>
|
|
<div class="input-group mt-3 condition-entity d-none">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Entity</span>
|
|
</div>
|
|
<select class="form-control" onchange="updateField(this, 'entity')">
|
|
<option value="this">This</option>
|
|
<option value="killer">Killer</option>
|
|
<option value="killer_player">Killer Player</option>
|
|
</select>
|
|
</div>
|
|
<div class="input-group mt-3 condition-entity-scores d-none">
|
|
<div class="input-group-prepend">
|
|
<label class="input-group-text">Objective</label>
|
|
</div>
|
|
<input type="text" class="form-control">
|
|
<div class="input-group-append">
|
|
<button class="btn btn-dark" type="button" onclick="addScore(this)">Add Score</button>
|
|
</div>
|
|
</div>
|
|
<div class="mt-3 scores-list d-none">
|
|
</div>
|
|
<div class="input-group mt-3 condition-terms d-none">
|
|
<button type="button" class="btn btn-light" onclick="addTerm(this)">Add Term</button>
|
|
</div>
|
|
<div class="input-group mt-3 condition-block d-none">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Block</span>
|
|
</div>
|
|
<input type="text" class="form-control" onchange="updateField(this, 'block')" onclick="this.select()">
|
|
</div>
|
|
<div class="card bg-dark mt-3 condition-predicate d-none">
|
|
<div class="card-body">
|
|
|
|
</div>
|
|
</div>
|
|
<div class="input-group mt-3 condition-block-properties d-none">
|
|
<div class="input-group-prepend">
|
|
<label class="input-group-text">Block State</label>
|
|
</div>
|
|
<input type="text" class="form-control">
|
|
<div class="input-group-append">
|
|
<button class="btn btn-dark" type="button" onclick="addBlockProperty(this)">Add Block State</button>
|
|
</div>
|
|
</div>
|
|
<div class="mt-3 property-list d-none">
|
|
</div>
|
|
<div class="input-group mt-3 condition-raining d-none">
|
|
<div class="custom-control custom-checkbox">
|
|
<input type="checkbox" class="custom-control-input" id="rainingCheckbox" onchange="updateCheckedField(this, 'raining')">
|
|
<label class="custom-control-label" for="rainingCheckbox">Treasure</label>
|
|
</div>
|
|
</div>
|
|
<div class="input-group mt-3 condition-thundering d-none">
|
|
<div class="custom-control custom-checkbox">
|
|
<input type="checkbox" class="custom-control-input" id="thunderingCheckbox" onchange="updateCheckedField(this, 'thundering')">
|
|
<label class="custom-control-label" for="thunderingCheckbox">Treasure</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="scoreTemplate" class="input-group mt-3 score">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text objective"></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" onclick="updateScoreType(this, 'exact')">Exact</a>
|
|
<a class="dropdown-item" onclick="updateScoreType(this, 'range')">Range</a>
|
|
</div>
|
|
</div>
|
|
<input type="text" class="form-control exact d-none" value="1" onchange="updateScoreField(this)" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 range d-none">Min</span>
|
|
<input type="text" class="form-control range min d-none" value="1" onchange="updateScoreField(this)" onclick="this.select()">
|
|
<span class="input-group-text rounded-0 range d-none">Max</span>
|
|
<input type="text" class="form-control range max d-none" value="2" onchange="updateScoreField(this)" onclick="this.select()">
|
|
<div class="input-group-append">
|
|
<button class="btn btn-outline-danger bg-light" type="button" onclick="removeScore(this)">Remove</button>
|
|
</div>
|
|
</div>
|
|
<div id="blockPropertyTemplate" class="input-group mt-3 block-property">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text blockstate"></span>
|
|
</div>
|
|
<input type="text" class="form-control exact" onchange="updateBlockPropertyField(this)" onclick="this.select()">
|
|
<div class="input-group-append">
|
|
<button class="btn btn-outline-danger bg-light" type="button" onclick="removeBlockProperty(this)">Remove</button>
|
|
</div>
|
|
</div>
|
|
</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="view.js" charset="utf-8"></script>
|
|
<script src="model.js" charset="utf-8"></script>
|
|
</body>
|
|
</html>
|