mirror of
https://github.com/haselkern/Minecraft-ArmorStand.git
synced 2025-05-17 15:05:33 +00:00
Major Version
It now generates a full command, and has a lot of fancy additions.
This commit is contained in:
parent
d7ea813432
commit
df326d9c9d
4 changed files with 126 additions and 17 deletions
BIN
icon.png
Normal file
BIN
icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 360 B |
65
index.htm
65
index.htm
|
@ -2,7 +2,9 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Minecraft Armor Stand</title>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<link rel="icon" type="image/png" href="icon.png">
|
||||
<link href='http://fonts.googleapis.com/css?family=Oswald:700' rel='stylesheet' type='text/css'>
|
||||
<link href='http://fonts.googleapis.com/css?family=Roboto+Condensed:700' rel='stylesheet' type='text/css'>
|
||||
<script src="three.js"></script>
|
||||
|
@ -13,12 +15,15 @@
|
|||
|
||||
<div id="gl"></div>
|
||||
|
||||
<div id="controls">
|
||||
<div id="card">
|
||||
|
||||
<h1>MINECRAFT ARMOR STAND<br>Please note:</h1>
|
||||
This thing is nowhere near complete, I just wanted to upload it so I don't lose my work if my local copy messes up.
|
||||
<h1>MINECRAFT ARMOR STAND</h1>
|
||||
<center>
|
||||
<a href="https://github.com/haselkern/Minecraft-ArmorStand" target="_blank">Check it on GitHub</a>
|
||||
<!-- TODO <a href="#">Or on Reddit</a> -->
|
||||
</center>
|
||||
|
||||
<div id="inputsection">
|
||||
<div id="inputsection" class="padding">
|
||||
|
||||
<input type="checkbox" name="invisible">Invisible<br>
|
||||
<input type="checkbox" name="invulnerable">Invulnerable<br>
|
||||
|
@ -45,8 +50,58 @@
|
|||
|
||||
</div>
|
||||
|
||||
<div id="code"></div>
|
||||
<div id="code" class="code"></div>
|
||||
<div id="codeinfo" class="padding"></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="card">
|
||||
<span class="padding" style="cursor: pointer;" onclick="javascript:$('#tipsntricks').slideToggle();">
|
||||
+ Tips and Tricks for your Armor Stand
|
||||
</span>
|
||||
<br>
|
||||
<div id="tipsntricks">
|
||||
|
||||
<div class="padding">
|
||||
If your command is longer than 100 characters, it needs to be executed with a <b>command block</b>. Obtain one by typing:
|
||||
</div>
|
||||
<div class="code">
|
||||
/give @p command_block
|
||||
</div>
|
||||
|
||||
<div class="padding">
|
||||
<br>
|
||||
You can give the armor stand a <b>custom player head</b>! Just replace <i>Notch</i> with an username of your choice.
|
||||
</div>
|
||||
<div class="code">
|
||||
/give @p skull 1 3 {SkullOwner:"Notch"}
|
||||
</div>
|
||||
|
||||
<div class="padding">
|
||||
<br>
|
||||
You can use the following command to <b>fully customise the equipment</b> of your armorstand.<br>
|
||||
In order for it to work, you have to put a command block close to the armorstand you want to edit. (Notice the <i>r=2</i>, where the r is radius.)
|
||||
</div>
|
||||
<div class="code">
|
||||
/entitydata @e[r=2,ArmorStand] {Equipment:[{id:"iron_sword",Count:1b},{id:"iron_boots",Count:1b},{id:"iron_leggings",Count:1b},{id:"iron_chestplate",Count:1b},{id:"iron_helmet",Count:1b}]}
|
||||
</div>
|
||||
|
||||
<div class="padding">
|
||||
<br>
|
||||
If you are a mapmaker you might not want players to take items out of the armor stand. If you want to lock all slots, replace n with 1 (or 0 if you want to unlock it).<br>
|
||||
If you want to <b>disable specific slots</b>, you have to add the numbers in following table up, and replace n with your result.
|
||||
<table>
|
||||
<tr><td>Boots</td> <td>2</td></tr>
|
||||
<tr><td>Leggings</td> <td>4</td></tr>
|
||||
<tr><td>Chestplate</td> <td>8</td></tr>
|
||||
<tr><td>Helmet/Block</td><td>16</td></tr>
|
||||
<tr><td>Sword/Block</td> <td>Not working :(</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="code">
|
||||
/entitydata @e[r=2,ArmorStand] {DisabledSlots:n}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
42
main.js
42
main.js
|
@ -39,6 +39,7 @@ var rightLeg = new THREE.Vector3(0,0,0);
|
|||
var leftArm = new THREE.Vector3(0,0,0);
|
||||
var rightArm = new THREE.Vector3(0,0,0);
|
||||
var rotation = 0;
|
||||
var vec0 = new THREE.Vector3(0,0,0); // We use this to determine if we want a pose in the command.
|
||||
|
||||
//Stuff for mouse movements
|
||||
var mouseDownX;
|
||||
|
@ -53,10 +54,12 @@ Point = {
|
|||
};
|
||||
|
||||
$(document).ready(function(){
|
||||
//Init
|
||||
setup();
|
||||
updateUI();
|
||||
render();
|
||||
|
||||
//Stuff to handle input
|
||||
$("input").on("input", function(){
|
||||
handleInput();
|
||||
});
|
||||
|
@ -64,6 +67,7 @@ $(document).ready(function(){
|
|||
handleInput();
|
||||
});
|
||||
|
||||
//Handle rotating with mouse
|
||||
$("#gl")
|
||||
.mousedown(function(event){
|
||||
mouseDownX = event.pageX;
|
||||
|
@ -79,6 +83,9 @@ $(document).ready(function(){
|
|||
mouseDownX = null;
|
||||
mouseDownY = null;
|
||||
});
|
||||
|
||||
//Tips and tricks
|
||||
$("#tipsntricks").hide();
|
||||
});
|
||||
|
||||
function setup(){
|
||||
|
@ -246,6 +253,9 @@ function updateUI(){
|
|||
else
|
||||
$("#inputarms").hide();
|
||||
$("#code").text(generateCode());
|
||||
if(generateCode().length > 100){
|
||||
$("#codeinfo").html("<b>Please note:</b> This command is too long to be executed from chat. You need to place it inside a command block. (See tips and tricks below.)");
|
||||
}
|
||||
|
||||
// Rotate 3D Stuff
|
||||
// y and z rotation needs to be inverted
|
||||
|
@ -267,6 +277,7 @@ function generateCode(){
|
|||
|
||||
var tags = [];
|
||||
|
||||
//CheckBoxes
|
||||
if(invisible)
|
||||
tags.push("Invisible:1b");
|
||||
if(invulnerable)
|
||||
|
@ -280,12 +291,43 @@ function generateCode(){
|
|||
if(small)
|
||||
tags.push("Small:1b");
|
||||
|
||||
//Sliders
|
||||
if(rotation != 0)
|
||||
tags.push("Rotation:["+rotation+"f]");
|
||||
|
||||
//Now the pose
|
||||
var pose = [];
|
||||
if(!isZero(body))
|
||||
pose.push("Body:"+getJSONArray(body));
|
||||
if(!isZero(head))
|
||||
pose.push("Head:"+getJSONArray(head));
|
||||
if(!isZero(leftLeg))
|
||||
pose.push("LeftLeg:"+getJSONArray(leftLeg));
|
||||
if(!isZero(rightLeg))
|
||||
pose.push("RightLeg:"+getJSONArray(rightLeg));
|
||||
if(showArms){
|
||||
if(!isZero(leftArm))
|
||||
pose.push("LeftArm:"+getJSONArray(leftArm));
|
||||
if(!isZero(rightArm))
|
||||
pose.push("LeftArm:"+getJSONArray(rightArm));
|
||||
}
|
||||
|
||||
|
||||
if(pose.length > 0)
|
||||
tags.push("Pose:{"+pose.join(",")+"}");
|
||||
|
||||
code += tags.join(",");
|
||||
code += "}";
|
||||
return code;
|
||||
}
|
||||
|
||||
function isZero(vector){
|
||||
return vector.x == 0 && vector.y == 0 && vector.z == 0;
|
||||
}
|
||||
function getJSONArray(vector){
|
||||
return "["+vector.x+"f,"+vector.y+"f,"+vector.z+"f]";
|
||||
}
|
||||
|
||||
function getMouseDeltaX(){
|
||||
var mouseDeltaX = 0;
|
||||
if(mouseDownX != null && mouseMoveX != null){
|
||||
|
|
36
style.css
36
style.css
|
@ -15,6 +15,21 @@ body{
|
|||
background-color: #dddddd;
|
||||
}
|
||||
|
||||
div{
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h1{
|
||||
text-align: center;
|
||||
font-family: "Oswald", sans-serif;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
a{
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
#gl{
|
||||
width: 60%;
|
||||
height: 100%;
|
||||
|
@ -22,24 +37,21 @@ body{
|
|||
cursor: move;
|
||||
}
|
||||
|
||||
#controls{
|
||||
#card{
|
||||
background-color: #ffffff;
|
||||
box-shadow: 0 2px 4px #555555;
|
||||
margin: 1em;
|
||||
margin: 0.5em;
|
||||
margin-left: 60%;
|
||||
}
|
||||
#inputsection{
|
||||
margin: 0.5em;
|
||||
}
|
||||
|
||||
#code{
|
||||
margin: 0.5em;
|
||||
.padding{
|
||||
padding: 0.5em;
|
||||
font-style: italic;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
h1{
|
||||
text-align: center;
|
||||
font-family: "Oswald", sans-serif;
|
||||
.code{
|
||||
word-wrap: break-word;
|
||||
padding: 1em;
|
||||
font-family: monospace;
|
||||
background-color: #37474f;
|
||||
color: #ffffff;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue