v2.6.5
This commit is contained in:
parent
46e5f39312
commit
fd145b7118
132
css/style.css
132
css/style.css
@ -90,80 +90,83 @@
|
|||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.icon-sketchfab:before {
|
||||||
|
content: "\e91a";
|
||||||
|
}
|
||||||
.icon-blockbench_file:before {
|
.icon-blockbench_file:before {
|
||||||
content: "\e900";
|
content: "\e900";
|
||||||
}
|
}
|
||||||
.icon-vertexsnap:before {
|
.icon-vertexsnap:before {
|
||||||
content: "\e901";
|
content: "\e901";
|
||||||
}
|
}
|
||||||
.icon-create_bitmap:before {
|
.icon-create_bitmap:before {
|
||||||
content: "\e902";
|
content: "\e902";
|
||||||
}
|
}
|
||||||
.icon-objects:before {
|
.icon-objects:before {
|
||||||
content: "\e903";
|
content: "\e903";
|
||||||
}
|
}
|
||||||
.icon-bow:before {
|
.icon-bow:before {
|
||||||
content: "\e904";
|
content: "\e904";
|
||||||
}
|
}
|
||||||
.icon-bb_interface:before {
|
.icon-bb_interface:before {
|
||||||
content: "\e905";
|
content: "\e905";
|
||||||
}
|
}
|
||||||
.icon-blockbench:before {
|
.icon-blockbench:before {
|
||||||
content: "\e906";
|
content: "\e906";
|
||||||
}
|
}
|
||||||
.icon-x11:before {
|
.icon-x11:before {
|
||||||
content: "\e907";
|
content: "\e907";
|
||||||
}
|
}
|
||||||
.icon-baby_zombie:before {
|
.icon-baby_zombie:before {
|
||||||
content: "\e908";
|
content: "\e908";
|
||||||
}
|
}
|
||||||
.icon-armor_stand:before {
|
.icon-armor_stand:before {
|
||||||
content: "\e909";
|
content: "\e909";
|
||||||
}
|
}
|
||||||
.icon-armor_stand_small:before {
|
.icon-armor_stand_small:before {
|
||||||
content: "\e90a";
|
content: "\e90a";
|
||||||
}
|
}
|
||||||
.icon-ground:before {
|
.icon-ground:before {
|
||||||
content: "\e90b";
|
content: "\e90b";
|
||||||
}
|
}
|
||||||
.icon-hud:before {
|
.icon-hud:before {
|
||||||
content: "\e90c";
|
content: "\e90c";
|
||||||
}
|
}
|
||||||
.icon-inventory_full:before {
|
.icon-inventory_full:before {
|
||||||
content: "\e90d";
|
content: "\e90d";
|
||||||
}
|
}
|
||||||
.icon-inventory_nine:before {
|
.icon-inventory_nine:before {
|
||||||
content: "\e90e";
|
content: "\e90e";
|
||||||
}
|
}
|
||||||
.icon-inventory_single:before {
|
.icon-inventory_single:before {
|
||||||
content: "\e90f";
|
content: "\e90f";
|
||||||
}
|
}
|
||||||
.icon-player_head:before {
|
.icon-player_head:before {
|
||||||
content: "\e910";
|
content: "\e910";
|
||||||
}
|
}
|
||||||
.icon-zombie:before {
|
.icon-zombie:before {
|
||||||
content: "\e911";
|
content: "\e911";
|
||||||
}
|
}
|
||||||
.icon-blockbench_inverted:before {
|
.icon-blockbench_inverted:before {
|
||||||
content: "\e912";
|
content: "\e912";
|
||||||
}
|
}
|
||||||
.icon-optifine_file:before {
|
.icon-optifine_file:before {
|
||||||
content: "\e913";
|
content: "\e913";
|
||||||
}
|
}
|
||||||
.icon-saved:before {
|
.icon-saved:before {
|
||||||
content: "\e914";
|
content: "\e914";
|
||||||
}
|
}
|
||||||
.icon-player:before {
|
.icon-player:before {
|
||||||
content: "\e915";
|
content: "\e915";
|
||||||
}
|
}
|
||||||
.icon-mirror_x:before {
|
.icon-mirror_x:before {
|
||||||
content: "\e916";
|
content: "\e916";
|
||||||
}
|
}
|
||||||
.icon-mirror_y:before {
|
.icon-mirror_y:before {
|
||||||
content: "\e917";
|
content: "\e917";
|
||||||
}
|
}
|
||||||
.icon-mirror_z:before {
|
.icon-mirror_z:before {
|
||||||
content: "\e918";
|
content: "\e918";
|
||||||
}
|
}
|
||||||
|
|
||||||
.material-icons {
|
.material-icons {
|
||||||
@ -257,6 +260,7 @@
|
|||||||
}
|
}
|
||||||
hr {
|
hr {
|
||||||
border-top: 1px solid var(--color-dark);
|
border-top: 1px solid var(--color-dark);
|
||||||
|
margin: 12px 0;
|
||||||
}
|
}
|
||||||
h2 {
|
h2 {
|
||||||
font-weight: lighter;
|
font-weight: lighter;
|
||||||
@ -312,6 +316,14 @@
|
|||||||
background: var(--color-accent);
|
background: var(--color-accent);
|
||||||
color: var(--color-text_acc) !important;
|
color: var(--color-text_acc) !important;
|
||||||
}
|
}
|
||||||
|
button.minor {
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
button.minor:hover {
|
||||||
|
color: var(--color-light) !important;
|
||||||
|
}
|
||||||
select {
|
select {
|
||||||
-webkit-appearance: none;
|
-webkit-appearance: none;
|
||||||
appearance: none;
|
appearance: none;
|
||||||
@ -644,6 +656,7 @@
|
|||||||
display: none;
|
display: none;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
width: 540px;
|
width: 540px;
|
||||||
|
min-width: 370px;
|
||||||
top: 0;
|
top: 0;
|
||||||
background-color: var(--color-ui);
|
background-color: var(--color-ui);
|
||||||
border: 1px solid var(--color-border);
|
border: 1px solid var(--color-border);
|
||||||
@ -907,6 +920,7 @@
|
|||||||
}
|
}
|
||||||
.bar_select select {
|
.bar_select select {
|
||||||
padding-right: 24px;
|
padding-right: 24px;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
.bar_select::before {
|
.bar_select::before {
|
||||||
content: "\23F7";
|
content: "\23F7";
|
||||||
@ -919,6 +933,7 @@
|
|||||||
top: 3px;
|
top: 3px;
|
||||||
}
|
}
|
||||||
.half {
|
.half {
|
||||||
|
display: inline-block;
|
||||||
width: calc(50% - 4px);
|
width: calc(50% - 4px);
|
||||||
}
|
}
|
||||||
.tooltip {
|
.tooltip {
|
||||||
@ -946,7 +961,7 @@
|
|||||||
/*Layout*/
|
/*Layout*/
|
||||||
body {
|
body {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 338px auto 300px;
|
grid-template-columns: 332px auto 300px;
|
||||||
grid-template-rows: 32px calc(100% - 58px) 26px;
|
grid-template-rows: 32px calc(100% - 58px) 26px;
|
||||||
grid-template-areas:
|
grid-template-areas:
|
||||||
"header header header"
|
"header header header"
|
||||||
@ -1271,7 +1286,7 @@
|
|||||||
}
|
}
|
||||||
.contextMenu.sub {
|
.contextMenu.sub {
|
||||||
display: none;
|
display: none;
|
||||||
margin-top: -31px;
|
margin-top: -29px;
|
||||||
}
|
}
|
||||||
.contextMenu li {
|
.contextMenu li {
|
||||||
height: 35px;
|
height: 35px;
|
||||||
@ -1766,12 +1781,13 @@
|
|||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
z-index: 5;
|
z-index: 5;
|
||||||
}
|
}
|
||||||
#uv .bar.next_to_title {
|
.panel .bar.next_to_title {
|
||||||
margin-top: -32px;
|
margin-top: -32px;
|
||||||
position: relative;
|
position: relative;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
#uv .bar.next_to_title .tool {
|
.panel .bar.next_to_title > .tool {
|
||||||
|
float: right;
|
||||||
}
|
}
|
||||||
#uv_size .ui-resizable-se:before,
|
#uv_size .ui-resizable-se:before,
|
||||||
#uv_size .ui-resizable-sw:before,
|
#uv_size .ui-resizable-sw:before,
|
||||||
@ -1809,6 +1825,63 @@
|
|||||||
left: 1px;
|
left: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*Edit Session UI*/
|
||||||
|
#chat {
|
||||||
|
z-index: 16;
|
||||||
|
min-height: 180px;
|
||||||
|
flex-grow: 0;
|
||||||
|
}
|
||||||
|
#chat_history {
|
||||||
|
background: var(--color-back);
|
||||||
|
color: var(--color-text);
|
||||||
|
min-height: 81px;
|
||||||
|
max-height: 320px;
|
||||||
|
overflow-y: scroll;
|
||||||
|
padding: 5px;
|
||||||
|
font-size: 12pt;
|
||||||
|
}
|
||||||
|
#chat_history li {
|
||||||
|
padding-top: 1px;
|
||||||
|
padding-left: 7px;
|
||||||
|
}
|
||||||
|
#chat_history li b {
|
||||||
|
margin-left: -6px;
|
||||||
|
user-select: text;
|
||||||
|
color: var(--color-text);
|
||||||
|
background-color: var(--color-button);
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 1px 4px;
|
||||||
|
}
|
||||||
|
#chat_history li b.self {
|
||||||
|
color: var(--color-text_acc);
|
||||||
|
background-color: var(--color-accent);
|
||||||
|
}
|
||||||
|
#chat_history li span.text {
|
||||||
|
user-select: text;
|
||||||
|
}
|
||||||
|
#chat_history li span.timestamp {
|
||||||
|
opacity: 0.6;
|
||||||
|
font-size: 0.8em;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
#chat_bar {
|
||||||
|
height: 32px;
|
||||||
|
margin-bottom: 6px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
#chat_input {
|
||||||
|
padding: 5px;
|
||||||
|
width: calc(100% - 36px);
|
||||||
|
margin-left: 2px;
|
||||||
|
}
|
||||||
|
#chat_bar > i {
|
||||||
|
margin: 4px;
|
||||||
|
}
|
||||||
|
#chat_bar > i:hover {
|
||||||
|
color: var(--color-light);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*Settings Dialog*/
|
/*Settings Dialog*/
|
||||||
#settings h3 > i {
|
#settings h3 > i {
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
@ -2365,6 +2438,7 @@
|
|||||||
font-size: 0.92em;
|
font-size: 0.92em;
|
||||||
background: var(--color-back);
|
background: var(--color-back);
|
||||||
border: 1px solid var(--color-border);
|
border: 1px solid var(--color-border);
|
||||||
|
border-width: 1px 0;
|
||||||
}
|
}
|
||||||
#status_bar > div {
|
#status_bar > div {
|
||||||
float: left;
|
float: left;
|
||||||
|
BIN
font/icomoon.eot
BIN
font/icomoon.eot
Binary file not shown.
@ -8,7 +8,7 @@
|
|||||||
<missing-glyph horiz-adv-x="1024" />
|
<missing-glyph horiz-adv-x="1024" />
|
||||||
<glyph unicode=" " horiz-adv-x="512" d="" />
|
<glyph unicode=" " horiz-adv-x="512" d="" />
|
||||||
<glyph unicode="" glyph-name="blockbench_file" d="M153.951-3.756c-6.924 3.711-15.624 12.415-19.336 19.336-6.424 11.98-6.752 32.89-6.752 432.985 0 462.85-1.225 438.583 22.867 453.355 12.015 7.368 16.624 7.482 263.436 6.546l251.208-0.951 22.165-10.36c18.602-8.695 36.802-24.947 113.223-101.118 96.976-96.661 106.64-109.318 114.023-149.335 2.48-13.445 3.464-126.019 2.807-321.565-0.948-282.802-1.408-301.488-7.672-311.049-3.666-5.595-11.98-13.411-18.473-17.37-11.486-7.003-21.461-7.2-368.357-7.211-338.278-0.018-357.199 0.332-369.14 6.737zM851.038 317.359l-0.948 265.062-234.454 3.695-24.145 24.146-2.143 236.3h-394.99v-552.748l72.961 10.216c40.13 5.618 75.455 9.527 78.503 8.685s96.143-14.098 206.879-29.454c232.847-32.294 222.415-30.531 220.937-37.369-1.148-5.311-165.014-86.457-174.591-86.457-4.366 0-331.198 88.883-387.14 105.285l-17.549 5.143v-217.563h657.624zM546.617 65.316c-1.188 3.097 4.069 22.244 11.687 42.548l13.847 36.916 17.38-2.306c16.039-2.128 19.916-0.868 50.307 16.341 18.112 10.256 33.502 17.033 34.2 15.060s-1.512-16.081-4.91-31.353c-5.94-26.691-6.847-28.191-23.434-38.727-22.35-14.194-84.362-44.104-91.44-44.104-3.013 0-6.449 2.534-7.637 5.632zM262.479 156.831c-1.518 3.952 25.756 69.258 28.822 69.020 6.3-0.488 70.529-18.396 72.286-20.153 1.307-1.306-0.908-8.484-4.922-15.948-6.883-12.798-9.62-14.259-47.938-25.589-46.687-13.805-45.815-13.671-48.248-7.326zM580.408 300.033c-107.688 13.925-199.218 25.387-203.401 25.477s-10.36 2.238-13.723 4.778c-5.617 4.24-4.772 10.35 10.363 74.808 9.063 38.604 17.784 75.179 19.378 81.275 2.51 9.606 5.098 11.443 19.409 13.782 34.411 5.626 425.888 29.017 429.259 25.649 2.094-2.094-6.209-51.557-21.418-127.634l-24.836-124.216-9.617 0.382c-5.289 0.211-97.723 11.776-205.41 25.7zM848.241 651.606c0 7.094-182.249 187.566-189.414 187.566-5.885 0-6.383-7.507-6.383-96.049v-96.049h97.897c74.907 0 97.897 1.064 97.897 4.535z" />
|
<glyph unicode="" glyph-name="blockbench_file" d="M153.951-3.756c-6.924 3.711-15.624 12.415-19.336 19.336-6.424 11.98-6.752 32.89-6.752 432.985 0 462.85-1.225 438.583 22.867 453.355 12.015 7.368 16.624 7.482 263.436 6.546l251.208-0.951 22.165-10.36c18.602-8.695 36.802-24.947 113.223-101.118 96.976-96.661 106.64-109.318 114.023-149.335 2.48-13.445 3.464-126.019 2.807-321.565-0.948-282.802-1.408-301.488-7.672-311.049-3.666-5.595-11.98-13.411-18.473-17.37-11.486-7.003-21.461-7.2-368.357-7.211-338.278-0.018-357.199 0.332-369.14 6.737zM851.038 317.359l-0.948 265.062-234.454 3.695-24.145 24.146-2.143 236.3h-394.99v-552.748l72.961 10.216c40.13 5.618 75.455 9.527 78.503 8.685s96.143-14.098 206.879-29.454c232.847-32.294 222.415-30.531 220.937-37.369-1.148-5.311-165.014-86.457-174.591-86.457-4.366 0-331.198 88.883-387.14 105.285l-17.549 5.143v-217.563h657.624zM546.617 65.316c-1.188 3.097 4.069 22.244 11.687 42.548l13.847 36.916 17.38-2.306c16.039-2.128 19.916-0.868 50.307 16.341 18.112 10.256 33.502 17.033 34.2 15.060s-1.512-16.081-4.91-31.353c-5.94-26.691-6.847-28.191-23.434-38.727-22.35-14.194-84.362-44.104-91.44-44.104-3.013 0-6.449 2.534-7.637 5.632zM262.479 156.831c-1.518 3.952 25.756 69.258 28.822 69.020 6.3-0.488 70.529-18.396 72.286-20.153 1.307-1.306-0.908-8.484-4.922-15.948-6.883-12.798-9.62-14.259-47.938-25.589-46.687-13.805-45.815-13.671-48.248-7.326zM580.408 300.033c-107.688 13.925-199.218 25.387-203.401 25.477s-10.36 2.238-13.723 4.778c-5.617 4.24-4.772 10.35 10.363 74.808 9.063 38.604 17.784 75.179 19.378 81.275 2.51 9.606 5.098 11.443 19.409 13.782 34.411 5.626 425.888 29.017 429.259 25.649 2.094-2.094-6.209-51.557-21.418-127.634l-24.836-124.216-9.617 0.382c-5.289 0.211-97.723 11.776-205.41 25.7zM848.241 651.606c0 7.094-182.249 187.566-189.414 187.566-5.885 0-6.383-7.507-6.383-96.049v-96.049h97.897c74.907 0 97.897 1.064 97.897 4.535z" />
|
||||||
<glyph unicode="" glyph-name="vertexsnap" d="M349.649 829.823c-96.164-16.917-176.475-59.357-199.444-105.399-22.686-45.473 23.539-67.595 65.749-31.463 11.573 9.906 23.214 18.012 25.87 18.012s8.284 2.994 12.511 6.654c95.955 83.060 381.101 30.212 489.995-90.814 22.831-25.374 22.831-25.374-25.733-26.754-97.158-2.758-96.919-28.113 0.9-94.998 54.477-37.25 76.405-55.639 100.131-83.978 27.648-33.019 31.986-36.282 48.241-36.282 29.829 0 32.266 4.956 38.313 77.891 5.186 62.541 16.043 124.124 32.904 186.635 16.286 60.378-34.953 69.829-70.058 12.923-25.366-41.118-22.919-40.905-49.569-4.308-86.306 118.517-309.332 200.113-469.809 171.881zM35.272 623.72c-14.23-14.23-14.23-14.23-14.23-141.553 0-169.84-14.056-155.785 155.784-155.785s155.785-14.056 155.785 155.785c0 169.84 14.056 155.784-155.785 155.784-127.324 0-127.324 0-141.553-14.23zM707.091 297.546c-14.23-14.23-14.23-14.23-14.23-141.553 0-169.84-14.056-155.784 155.785-155.784s155.784-14.056 155.784 155.784c0 169.84 14.056 155.785-155.784 155.785-127.324 0-127.324 0-141.553-14.23z" />
|
<glyph unicode="" glyph-name="vertexsnap" d="M352.758 822.511c-94.322-16.593-173.095-58.22-195.625-103.381-22.252-44.602 23.088-66.301 64.49-30.86 11.351 9.716 22.769 17.667 25.375 17.667s8.125 2.937 12.271 6.527c94.117 81.469 373.803 29.633 480.612-89.075 22.394-24.888 22.394-24.888-25.24-26.242-95.297-2.705-95.063-27.575 0.883-93.179 53.434-36.537 74.942-54.574 98.213-82.37 27.119-32.387 31.373-35.587 47.317-35.587 29.258 0 31.648 4.861 37.579 76.399 5.087 61.343 15.736 121.747 32.274 183.061 15.974 59.222-34.284 68.492-68.716 12.676-24.88-40.331-22.48-40.122-48.62-4.226-84.653 116.247-303.408 196.281-460.812 168.589zM44.401 620.355c-13.957-13.957-13.957-13.957-13.957-138.842 0-166.588-13.787-152.802 152.801-152.802s152.802-13.787 152.802 152.802c0 166.588 13.787 152.801-152.802 152.801-124.886 0-124.886 0-138.842-13.957zM703.355 300.427c-13.957-13.957-13.957-13.957-13.957-138.842 0-166.588-13.787-152.801 152.802-152.801s152.801-13.787 152.801 152.801c0 166.588 13.787 152.802-152.801 152.802-124.886 0-124.886 0-138.842-13.957z" />
|
||||||
<glyph unicode="" glyph-name="create_bitmap" d="M233.975 795.371c-41.079 0-75.024-33.945-75.024-75.024v-553.202c0-41.079 33.945-75.024 75.024-75.024h556.032c41.079 0 75.024 33.945 75.024 75.024v553.202c0 41.079-33.945 75.024-75.024 75.024h-556.032zM728.208 550.872c31.861-0.066 58.699-5.78 77.775-11.178v-372.557c0-9.353-6.613-15.966-15.966-15.966h-556.032c-9.353 0-15.966 6.613-15.966 15.966v352.515c57.355-21.823 45.226-70.314 143.573-83.005 100.291-12.944 130.54 15.61 248.313 83.71 40.403 23.361 82.046 30.584 118.3 30.508zM616.108 419.361v-84.155h-84.155v-66.783h84.155v-84.155h66.872v84.155h84.155v66.783h-84.155v84.155h-66.872z" />
|
<glyph unicode="" glyph-name="create_bitmap" d="M233.975 795.371c-41.079 0-75.024-33.945-75.024-75.024v-553.202c0-41.079 33.945-75.024 75.024-75.024h556.032c41.079 0 75.024 33.945 75.024 75.024v553.202c0 41.079-33.945 75.024-75.024 75.024h-556.032zM728.208 550.872c31.861-0.066 58.699-5.78 77.775-11.178v-372.557c0-9.353-6.613-15.966-15.966-15.966h-556.032c-9.353 0-15.966 6.613-15.966 15.966v352.515c57.355-21.823 45.226-70.314 143.573-83.005 100.291-12.944 130.54 15.61 248.313 83.71 40.403 23.361 82.046 30.584 118.3 30.508zM616.108 419.361v-84.155h-84.155v-66.783h84.155v-84.155h66.872v84.155h84.155v66.783h-84.155v84.155h-66.872z" />
|
||||||
<glyph unicode="" glyph-name="objects" d="M405.375 850.625c-127.304-0.010-230.5-101.945-230.5-227.688 0-0.022 0-0.043 0-0.065v0.003c0.095-14.736 1.592-29.067 4.366-42.945l-0.241 1.445 128.875 50.875 175.75-91.75 113.125 208.625c-41.829 61.414-111.864 101.324-191.348 101.5h-0.027zM738.75 843.75l-65.375-127.625-0.125-0.5-155.625-286.75-214.5 112-167.75-66.25-93-38 2.875-322.375 257.375-121.625 243.25 141.375v170.875l164-108.625 288.5 192.25-259.625 455.25z" />
|
<glyph unicode="" glyph-name="objects" d="M405.375 850.625c-127.304-0.010-230.5-101.945-230.5-227.688 0-0.022 0-0.043 0-0.065v0.003c0.095-14.736 1.592-29.067 4.366-42.945l-0.241 1.445 128.875 50.875 175.75-91.75 113.125 208.625c-41.829 61.414-111.864 101.324-191.348 101.5h-0.027zM738.75 843.75l-65.375-127.625-0.125-0.5-155.625-286.75-214.5 112-167.75-66.25-93-38 2.875-322.375 257.375-121.625 243.25 141.375v170.875l164-108.625 288.5 192.25-259.625 455.25z" />
|
||||||
<glyph unicode="" glyph-name="bow" d="M35.553-29.24c-7.642 3.083-6.021 12.569 4.555 26.681 39.762 53.054 48.92 109.812 41.934 259.931-9.092 195.392 17.712 299.308 108.269 419.755l16.091 21.402-22.777 18.239c-12.528 10.032-28.615 23.732-35.748 30.446-15.222 14.326-15.034 14.429-19.587-10.825-8.701-48.272-36.488-35.113-45.118 21.367-2.847 18.629-11.631 49.997-19.519 69.707-20.487 51.185-12.617 58.915 43.919 43.134 16.070-4.486 42.751-10.936 59.289-14.334 59.696-12.263 65.502-22.743 23.093-41.68l-23.852-10.651 23.433-20.043c12.889-11.025 30.236-25.094 38.548-31.267l15.115-11.223 24.527 22.196c104.812 94.85 216.335 133.074 380.267 130.336 239.449-3.999 246.166-3.427 287.157 24.417 36.867 25.044 42.653 21.65 55.505-32.567 11.517-48.58-5.494-87.043-41.696-94.285-7.835-1.567-61.992-53.175-185.090-176.384l-174.014-174.167 40.202-38.579 104.503 3.775 55.215-39.504c64.41-46.082 65.569-43.35-20.196-47.582-79.336-3.915-70.911 6.254-68.577-82.78 1.813-69.153 1.423-75.324-4.461-70.83-5.425 4.142-78.61 65.619-90.43 75.964-2.086 1.827-6.092 29.94-8.901 62.475l-5.107 59.155-42.098 38.3-175.85-175.518c-142.782-142.514-177.562-179.314-184.956-195.704-19.076-42.291-109.432-77.193-153.649-59.351zM509.672 435.682c-21.641 18.212-105.2 90.781-158.726 137.85-62.738 55.171-56.863 52.53-69.371 31.187-46.704-79.693-64.276-167.878-70.532-353.948-2.298-68.36-5.276-128.804-6.615-134.316-1.602-6.589 52.343 44.655 157.417 149.541l159.853 159.564zM867.356 772.303c-0.464 0.362-22.496-2.702-48.958-6.81s-101.015-10.175-165.673-13.48c-182.26-9.32-222.996-18.596-296.424-67.508-13.787-9.184-24.613-17.926-24.056-19.426 1.567-4.226 94.394-87.537 97.536-87.537 1.531 0 19.23-15.007 39.331-33.348s49.128-43.642 64.504-56.224l27.956-22.876 153.315 153.276c84.323 84.303 152.934 153.572 152.47 153.934z" />
|
<glyph unicode="" glyph-name="bow" d="M35.553-29.24c-7.642 3.083-6.021 12.569 4.555 26.681 39.762 53.054 48.92 109.812 41.934 259.931-9.092 195.392 17.712 299.308 108.269 419.755l16.091 21.402-22.777 18.239c-12.528 10.032-28.615 23.732-35.748 30.446-15.222 14.326-15.034 14.429-19.587-10.825-8.701-48.272-36.488-35.113-45.118 21.367-2.847 18.629-11.631 49.997-19.519 69.707-20.487 51.185-12.617 58.915 43.919 43.134 16.070-4.486 42.751-10.936 59.289-14.334 59.696-12.263 65.502-22.743 23.093-41.68l-23.852-10.651 23.433-20.043c12.889-11.025 30.236-25.094 38.548-31.267l15.115-11.223 24.527 22.196c104.812 94.85 216.335 133.074 380.267 130.336 239.449-3.999 246.166-3.427 287.157 24.417 36.867 25.044 42.653 21.65 55.505-32.567 11.517-48.58-5.494-87.043-41.696-94.285-7.835-1.567-61.992-53.175-185.090-176.384l-174.014-174.167 40.202-38.579 104.503 3.775 55.215-39.504c64.41-46.082 65.569-43.35-20.196-47.582-79.336-3.915-70.911 6.254-68.577-82.78 1.813-69.153 1.423-75.324-4.461-70.83-5.425 4.142-78.61 65.619-90.43 75.964-2.086 1.827-6.092 29.94-8.901 62.475l-5.107 59.155-42.098 38.3-175.85-175.518c-142.782-142.514-177.562-179.314-184.956-195.704-19.076-42.291-109.432-77.193-153.649-59.351zM509.672 435.682c-21.641 18.212-105.2 90.781-158.726 137.85-62.738 55.171-56.863 52.53-69.371 31.187-46.704-79.693-64.276-167.878-70.532-353.948-2.298-68.36-5.276-128.804-6.615-134.316-1.602-6.589 52.343 44.655 157.417 149.541l159.853 159.564zM867.356 772.303c-0.464 0.362-22.496-2.702-48.958-6.81s-101.015-10.175-165.673-13.48c-182.26-9.32-222.996-18.596-296.424-67.508-13.787-9.184-24.613-17.926-24.056-19.426 1.567-4.226 94.394-87.537 97.536-87.537 1.531 0 19.23-15.007 39.331-33.348s49.128-43.642 64.504-56.224l27.956-22.876 153.315 153.276c84.323 84.303 152.934 153.572 152.47 153.934z" />
|
||||||
@ -32,4 +32,6 @@
|
|||||||
<glyph unicode="" glyph-name="mirror_x" d="M860.39 84.204l-292.395 730.812-63.238-12.415 4.6-688.96 0.23-32.999zM486.244 802.596l-63.238 12.415-292.395-730.812 350.803-3.563 0.23 32.999zM419.443 629.438l-3.22-482.456-189.028 1.953z" />
|
<glyph unicode="" glyph-name="mirror_x" d="M860.39 84.204l-292.395 730.812-63.238-12.415 4.6-688.96 0.23-32.999zM486.244 802.596l-63.238 12.415-292.395-730.812 350.803-3.563 0.23 32.999zM419.443 629.438l-3.22-482.456-189.028 1.953z" />
|
||||||
<glyph unicode="" glyph-name="mirror_y" d="M858.931 812.516l-730.408-292.231 12.412-63.204 721.559 4.826-3.563 350.611zM140.935 438.578l-12.412-63.204 730.408-292.231 3.563 350.611-721.559 4.826zM313.998 371.809l482.188-3.216-1.953-188.924-480.235 192.14z" />
|
<glyph unicode="" glyph-name="mirror_y" d="M858.931 812.516l-730.408-292.231 12.412-63.204 721.559 4.826-3.563 350.611zM140.935 438.578l-12.412-63.204 730.408-292.231 3.563 350.611-721.559 4.826zM313.998 371.809l482.188-3.216-1.953-188.924-480.235 192.14z" />
|
||||||
<glyph unicode="" glyph-name="mirror_z" d="M96.503 190.743l789.204 201.005 11.989 43.475-673.881-3.32zM904.588 447.952l35.107 43.475-571.447 201.005-133.945-241.161 30.634-0.159zM768.266 493.876l-447.93 2.212 72.206 129.948z" />
|
<glyph unicode="" glyph-name="mirror_z" d="M96.503 190.743l789.204 201.005 11.989 43.475-673.881-3.32zM904.588 447.952l35.107 43.475-571.447 201.005-133.945-241.161 30.634-0.159zM768.266 493.876l-447.93 2.212 72.206 129.948z" />
|
||||||
|
<glyph unicode="" d="M511.966 872.536c-235.058 0-425.542-190.533-425.542-425.557s190.484-425.582 425.542-425.582 425.582 190.559 425.582 425.582-190.523 425.557-425.582 425.557z" />
|
||||||
|
<glyph unicode="" d="M511.966 904c-251.841 0-455.966-204.159-455.966-456s204.125-456 455.966-456 455.966 204.159 455.966 456-204.089 456-455.966 456zM472.328 176.651l-196.536 113.479v228.912l196.536-106.154zM507.346 466.75l-232.555 123.294 232.58 134.292 232.635-134.292zM740.104 289.688l-195.847-113.088v235.376l195.872 105.792z" />
|
||||||
</font></defs></svg>
|
</font></defs></svg>
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
BIN
font/icomoon.ttf
BIN
font/icomoon.ttf
Binary file not shown.
Binary file not shown.
32
index.html
32
index.html
@ -4,6 +4,7 @@
|
|||||||
<title>Blockbench</title>
|
<title>Blockbench</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<meta name="theme-color" content="#3e90ff">
|
<meta name="theme-color" content="#3e90ff">
|
||||||
|
<meta name="robots" content="noindex">
|
||||||
<link rel="shortcut icon" href="favicon.png" type="image/x-icon" />
|
<link rel="shortcut icon" href="favicon.png" type="image/x-icon" />
|
||||||
<link rel="stylesheet" href="css/w3.css">
|
<link rel="stylesheet" href="css/w3.css">
|
||||||
<link rel="stylesheet" href="css/jquery-ui.min.css">
|
<link rel="stylesheet" href="css/jquery-ui.min.css">
|
||||||
@ -19,7 +20,7 @@
|
|||||||
<script>
|
<script>
|
||||||
if (typeof module === 'object') {window.module = module; module = undefined;}//jQuery Fix
|
if (typeof module === 'object') {window.module = module; module = undefined;}//jQuery Fix
|
||||||
const isApp = typeof require !== 'undefined';
|
const isApp = typeof require !== 'undefined';
|
||||||
const appVersion = '2.6.0';
|
const appVersion = '2.6.5';
|
||||||
</script>
|
</script>
|
||||||
<script src="lib/vue.min.js"></script>
|
<script src="lib/vue.min.js"></script>
|
||||||
<script src="lib/vue_sortable.js"></script>
|
<script src="lib/vue_sortable.js"></script>
|
||||||
@ -339,7 +340,7 @@
|
|||||||
<div class="dialog_bar">
|
<div class="dialog_bar">
|
||||||
<button type="button" onclick="scaleAll(true)" class="confirm_btn tl">dialog.scale.confirm</button>
|
<button type="button" onclick="scaleAll(true)" class="confirm_btn tl">dialog.scale.confirm</button>
|
||||||
<button type="button" class="cancel_btn tl" onclick="cancelScaleAll()">dialog.cancel</button>
|
<button type="button" class="cancel_btn tl" onclick="cancelScaleAll()">dialog.cancel</button>
|
||||||
<button type="button" class="hidden tl" id="scale_overflow_btn" onclick="scaleAllSelectOverflow()">dialog.scale.select_overflow</button>
|
<button type="button" class="minor hidden tl" id="scale_overflow_btn" onclick="scaleAllSelectOverflow()">dialog.scale.select_overflow</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="dialog_close_button" onclick="$('.dialog#'+open_dialog).find('.cancel_btn:not([disabled])').click()"><i class="material-icons">clear</i></div>
|
<div id="dialog_close_button" onclick="$('.dialog#'+open_dialog).find('.cancel_btn:not([disabled])').click()"><i class="material-icons">clear</i></div>
|
||||||
</div>
|
</div>
|
||||||
@ -432,7 +433,6 @@
|
|||||||
<input v-model="Project.name" type="text" id="project_name" v-on:focusout="syncGeometry()" class="dark_bordered input_wide">
|
<input v-model="Project.name" type="text" id="project_name" v-on:focusout="syncGeometry()" class="dark_bordered input_wide">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="dialog_bar narrow">
|
<div class="dialog_bar narrow">
|
||||||
<label for="project_parent" class="tl">dialog.project.parent</label>
|
<label for="project_parent" class="tl">dialog.project.parent</label>
|
||||||
</div>
|
</div>
|
||||||
@ -446,7 +446,6 @@
|
|||||||
<input v-model="Project.ambientocclusion" type="checkbox" id="project_ambientocclusion">
|
<input v-model="Project.ambientocclusion" type="checkbox" id="project_ambientocclusion">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="dialog_bar narrow">
|
<div class="dialog_bar narrow">
|
||||||
<label class="tl">dialog.project.texture_size</label>
|
<label class="tl">dialog.project.texture_size</label>
|
||||||
</div>
|
</div>
|
||||||
@ -457,10 +456,9 @@
|
|||||||
<input v-model="Project.texture_height" type="number" id="project_texsize_y" class="dark_bordered mediun_width" min="1" value="32">
|
<input v-model="Project.texture_height" type="number" id="project_texsize_y" class="dark_bordered mediun_width" min="1" value="32">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="dialog_bar">
|
<div class="dialog_bar">
|
||||||
<button type="button" class="large tl confirm_btn cancel_btn" onclick="saveProjectSettings();hideDialog();">dialog.confirm</button>
|
<button type="button" class="tl confirm_btn cancel_btn" onclick="saveProjectSettings();hideDialog();">dialog.confirm</button>
|
||||||
<button type="button" class="large tl" id="entity_mode_convert" onclick="entityMode.convert()">dialog.project.to_entitymodel</button>
|
<button type="button" class="minor tl" id="entity_mode_convert" onclick="entityMode.convert()">dialog.project.to_entitymodel</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="dialog_close_button" onclick="$('.dialog#'+open_dialog).find('.cancel_btn:not([disabled])').click()"><i class="material-icons">clear</i></div>
|
<div id="dialog_close_button" onclick="$('.dialog#'+open_dialog).find('.cancel_btn:not([disabled])').click()"><i class="material-icons">clear</i></div>
|
||||||
</div>
|
</div>
|
||||||
@ -472,6 +470,7 @@
|
|||||||
<div class="tl tab" id="layout_settings" onclick="setSettingsTab('layout_settings')">dialog.settings.layout</div>
|
<div class="tl tab" id="layout_settings" onclick="setSettingsTab('layout_settings')">dialog.settings.layout</div>
|
||||||
<div class="tl tab" id="credits" onclick="setSettingsTab('credits')">dialog.settings.about</div>
|
<div class="tl tab" id="credits" onclick="setSettingsTab('credits')">dialog.settings.about</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="setting" class="tab_content">
|
<div id="setting" class="tab_content">
|
||||||
<h2 class="tl i_b">dialog.settings.settings</h2>
|
<h2 class="tl i_b">dialog.settings.settings</h2>
|
||||||
<ul id="settingslist">
|
<ul id="settingslist">
|
||||||
@ -514,6 +513,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="keybindings" class="hidden tab_content">
|
<div id="keybindings" class="hidden tab_content">
|
||||||
<h2 class="tl i_b">dialog.settings.keybinds</h2>
|
<h2 class="tl i_b">dialog.settings.keybinds</h2>
|
||||||
<div class="bar next_to_title" id="keybinds_title_bar"></div>
|
<div class="bar next_to_title" id="keybinds_title_bar"></div>
|
||||||
@ -537,6 +537,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="layout_settings" class="hidden tab_content">
|
<div id="layout_settings" class="hidden tab_content">
|
||||||
<h2 class="tl i_b">dialog.settings.layout</h2>
|
<h2 class="tl i_b">dialog.settings.layout</h2>
|
||||||
<div class="bar next_to_title" id="layout_title_bar"></div>
|
<div class="bar next_to_title" id="layout_title_bar"></div>
|
||||||
@ -684,6 +685,7 @@
|
|||||||
<a class="open-in-browser" href="https://stuk.github.io/jszip/">JSZip</a>
|
<a class="open-in-browser" href="https://stuk.github.io/jszip/">JSZip</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="dialog_bar">
|
<div class="dialog_bar">
|
||||||
<button type="button" class="large confirm_btn cancel_btn tl" onclick="saveSettings()">dialog.close</button>
|
<button type="button" class="large confirm_btn cancel_btn tl" onclick="saveSettings()">dialog.close</button>
|
||||||
</div>
|
</div>
|
||||||
@ -743,7 +745,7 @@
|
|||||||
{{ item.name }}
|
{{ item.name }}
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="small_text" v-if="actions[index]">{{ actions[index].description }}</div>
|
<div class="small_text" v-if="actions[index]">{{ Pressing.alt ? actions[index].keybind.label : actions[index].description }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -937,6 +939,20 @@
|
|||||||
<vue-tree :option="option"></vue-tree>
|
<vue-tree :option="option"></vue-tree>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="chat" class="panel grow">
|
||||||
|
<div class="bar next_to_title" id="chat_title_bar"></div>
|
||||||
|
<ul id="chat_history" v-if="expanded">
|
||||||
|
<li v-for="msg in history">
|
||||||
|
<b v-if="msg.showAuthor()" v-bind:class="{self: msg.self}">{{ msg.author }}:</b>
|
||||||
|
<span class="text" v-bind:style="{color: msg.hex || 'inherit'}">{{ msg.text }}</span>
|
||||||
|
<span class="timestamp">{{ msg.timestamp }}</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div id="chat_bar">
|
||||||
|
<input type="text" id="chat_input" class="dark_bordered f_left" maxlength="512">
|
||||||
|
<i class="material-icons" onclick="Chat.send()">send</i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="preview">
|
<div id="preview">
|
||||||
</div>
|
</div>
|
||||||
|
32
index.php
32
index.php
@ -4,6 +4,7 @@
|
|||||||
<title>Blockbench</title>
|
<title>Blockbench</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<meta name="theme-color" content="#3e90ff">
|
<meta name="theme-color" content="#3e90ff">
|
||||||
|
<meta name="robots" content="noindex">
|
||||||
<link rel="shortcut icon" href="favicon.png" type="image/x-icon" />
|
<link rel="shortcut icon" href="favicon.png" type="image/x-icon" />
|
||||||
<link rel="stylesheet" href="css/w3.css">
|
<link rel="stylesheet" href="css/w3.css">
|
||||||
<link rel="stylesheet" href="css/jquery-ui.min.css">
|
<link rel="stylesheet" href="css/jquery-ui.min.css">
|
||||||
@ -19,7 +20,7 @@
|
|||||||
<script>
|
<script>
|
||||||
if (typeof module === 'object') {window.module = module; module = undefined;}//jQuery Fix
|
if (typeof module === 'object') {window.module = module; module = undefined;}//jQuery Fix
|
||||||
const isApp = typeof require !== 'undefined';
|
const isApp = typeof require !== 'undefined';
|
||||||
const appVersion = '2.6.0';
|
const appVersion = '2.6.5';
|
||||||
</script>
|
</script>
|
||||||
<script src="lib/vue.min.js"></script>
|
<script src="lib/vue.min.js"></script>
|
||||||
<script src="lib/vue_sortable.js"></script>
|
<script src="lib/vue_sortable.js"></script>
|
||||||
@ -355,7 +356,7 @@
|
|||||||
<div class="dialog_bar">
|
<div class="dialog_bar">
|
||||||
<button type="button" onclick="scaleAll(true)" class="confirm_btn tl">dialog.scale.confirm</button>
|
<button type="button" onclick="scaleAll(true)" class="confirm_btn tl">dialog.scale.confirm</button>
|
||||||
<button type="button" class="cancel_btn tl" onclick="cancelScaleAll()">dialog.cancel</button>
|
<button type="button" class="cancel_btn tl" onclick="cancelScaleAll()">dialog.cancel</button>
|
||||||
<button type="button" class="hidden tl" id="scale_overflow_btn" onclick="scaleAllSelectOverflow()">dialog.scale.select_overflow</button>
|
<button type="button" class="minor hidden tl" id="scale_overflow_btn" onclick="scaleAllSelectOverflow()">dialog.scale.select_overflow</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="dialog_close_button" onclick="$('.dialog#'+open_dialog).find('.cancel_btn:not([disabled])').click()"><i class="material-icons">clear</i></div>
|
<div id="dialog_close_button" onclick="$('.dialog#'+open_dialog).find('.cancel_btn:not([disabled])').click()"><i class="material-icons">clear</i></div>
|
||||||
</div>
|
</div>
|
||||||
@ -448,7 +449,6 @@
|
|||||||
<input v-model="Project.name" type="text" id="project_name" v-on:focusout="syncGeometry()" class="dark_bordered input_wide">
|
<input v-model="Project.name" type="text" id="project_name" v-on:focusout="syncGeometry()" class="dark_bordered input_wide">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="dialog_bar narrow">
|
<div class="dialog_bar narrow">
|
||||||
<label for="project_parent" class="tl">dialog.project.parent</label>
|
<label for="project_parent" class="tl">dialog.project.parent</label>
|
||||||
</div>
|
</div>
|
||||||
@ -462,7 +462,6 @@
|
|||||||
<input v-model="Project.ambientocclusion" type="checkbox" id="project_ambientocclusion">
|
<input v-model="Project.ambientocclusion" type="checkbox" id="project_ambientocclusion">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="dialog_bar narrow">
|
<div class="dialog_bar narrow">
|
||||||
<label class="tl">dialog.project.texture_size</label>
|
<label class="tl">dialog.project.texture_size</label>
|
||||||
</div>
|
</div>
|
||||||
@ -473,10 +472,9 @@
|
|||||||
<input v-model="Project.texture_height" type="number" id="project_texsize_y" class="dark_bordered mediun_width" min="1" value="32">
|
<input v-model="Project.texture_height" type="number" id="project_texsize_y" class="dark_bordered mediun_width" min="1" value="32">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="dialog_bar">
|
<div class="dialog_bar">
|
||||||
<button type="button" class="large tl confirm_btn cancel_btn" onclick="saveProjectSettings();hideDialog();">dialog.confirm</button>
|
<button type="button" class="tl confirm_btn cancel_btn" onclick="saveProjectSettings();hideDialog();">dialog.confirm</button>
|
||||||
<button type="button" class="large tl" id="entity_mode_convert" onclick="entityMode.convert()">dialog.project.to_entitymodel</button>
|
<button type="button" class="minor tl" id="entity_mode_convert" onclick="entityMode.convert()">dialog.project.to_entitymodel</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="dialog_close_button" onclick="$('.dialog#'+open_dialog).find('.cancel_btn:not([disabled])').click()"><i class="material-icons">clear</i></div>
|
<div id="dialog_close_button" onclick="$('.dialog#'+open_dialog).find('.cancel_btn:not([disabled])').click()"><i class="material-icons">clear</i></div>
|
||||||
</div>
|
</div>
|
||||||
@ -488,6 +486,7 @@
|
|||||||
<div class="tl tab" id="layout_settings" onclick="setSettingsTab('layout_settings')">dialog.settings.layout</div>
|
<div class="tl tab" id="layout_settings" onclick="setSettingsTab('layout_settings')">dialog.settings.layout</div>
|
||||||
<div class="tl tab" id="credits" onclick="setSettingsTab('credits')">dialog.settings.about</div>
|
<div class="tl tab" id="credits" onclick="setSettingsTab('credits')">dialog.settings.about</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="setting" class="tab_content">
|
<div id="setting" class="tab_content">
|
||||||
<h2 class="tl i_b">dialog.settings.settings</h2>
|
<h2 class="tl i_b">dialog.settings.settings</h2>
|
||||||
<ul id="settingslist">
|
<ul id="settingslist">
|
||||||
@ -530,6 +529,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="keybindings" class="hidden tab_content">
|
<div id="keybindings" class="hidden tab_content">
|
||||||
<h2 class="tl i_b">dialog.settings.keybinds</h2>
|
<h2 class="tl i_b">dialog.settings.keybinds</h2>
|
||||||
<div class="bar next_to_title" id="keybinds_title_bar"></div>
|
<div class="bar next_to_title" id="keybinds_title_bar"></div>
|
||||||
@ -553,6 +553,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="layout_settings" class="hidden tab_content">
|
<div id="layout_settings" class="hidden tab_content">
|
||||||
<h2 class="tl i_b">dialog.settings.layout</h2>
|
<h2 class="tl i_b">dialog.settings.layout</h2>
|
||||||
<div class="bar next_to_title" id="layout_title_bar"></div>
|
<div class="bar next_to_title" id="layout_title_bar"></div>
|
||||||
@ -700,6 +701,7 @@
|
|||||||
<a class="open-in-browser" href="https://stuk.github.io/jszip/">JSZip</a>
|
<a class="open-in-browser" href="https://stuk.github.io/jszip/">JSZip</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="dialog_bar">
|
<div class="dialog_bar">
|
||||||
<button type="button" class="large confirm_btn cancel_btn tl" onclick="saveSettings()">dialog.close</button>
|
<button type="button" class="large confirm_btn cancel_btn tl" onclick="saveSettings()">dialog.close</button>
|
||||||
</div>
|
</div>
|
||||||
@ -759,7 +761,7 @@
|
|||||||
{{ item.name }}
|
{{ item.name }}
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="small_text" v-if="actions[index]">{{ actions[index].description }}</div>
|
<div class="small_text" v-if="actions[index]">{{ Pressing.alt ? actions[index].keybind.label : actions[index].description }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -953,6 +955,20 @@
|
|||||||
<vue-tree :option="option"></vue-tree>
|
<vue-tree :option="option"></vue-tree>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="chat" class="panel grow">
|
||||||
|
<div class="bar next_to_title" id="chat_title_bar"></div>
|
||||||
|
<ul id="chat_history" v-if="expanded">
|
||||||
|
<li v-for="msg in history">
|
||||||
|
<b v-if="msg.showAuthor()" v-bind:class="{self: msg.self}">{{ msg.author }}:</b>
|
||||||
|
<span class="text" v-bind:style="{color: msg.hex || 'inherit'}">{{ msg.text }}</span>
|
||||||
|
<span class="timestamp">{{ msg.timestamp }}</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div id="chat_bar">
|
||||||
|
<input type="text" id="chat_input" class="dark_bordered f_left" maxlength="512">
|
||||||
|
<i class="material-icons" onclick="Chat.send()">send</i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="preview">
|
<div id="preview">
|
||||||
</div>
|
</div>
|
||||||
|
@ -1427,6 +1427,7 @@ const BARS = {
|
|||||||
BarItems.load_plugin.toElement('#plugins_header_bar')
|
BarItems.load_plugin.toElement('#plugins_header_bar')
|
||||||
BarItems.uv_dialog.toElement('#uv_title_bar')
|
BarItems.uv_dialog.toElement('#uv_title_bar')
|
||||||
BarItems.uv_dialog_full.toElement('#uv_title_bar')
|
BarItems.uv_dialog_full.toElement('#uv_title_bar')
|
||||||
|
BarItems.toggle_chat.toElement('#chat_title_bar')
|
||||||
},
|
},
|
||||||
setupVue: function() {
|
setupVue: function() {
|
||||||
BARS.list = new Vue({
|
BARS.list = new Vue({
|
||||||
@ -1607,6 +1608,10 @@ const ActionControl = {
|
|||||||
handleKeys: function(e) {
|
handleKeys: function(e) {
|
||||||
var data = ActionControl.vue._data
|
var data = ActionControl.vue._data
|
||||||
|
|
||||||
|
if (e.altKey) {
|
||||||
|
ActionControl.vue.$forceUpdate()
|
||||||
|
}
|
||||||
|
|
||||||
if (e.which === 38) {
|
if (e.which === 38) {
|
||||||
data.index--;
|
data.index--;
|
||||||
if (data.index < 0) {
|
if (data.index < 0) {
|
||||||
@ -1992,6 +1997,8 @@ const MenuBar = {
|
|||||||
'export_obj',
|
'export_obj',
|
||||||
'upload_sketchfab'
|
'upload_sketchfab'
|
||||||
]},
|
]},
|
||||||
|
'export_bbmodel',
|
||||||
|
'export_asset_archive',
|
||||||
'save',
|
'save',
|
||||||
'_',
|
'_',
|
||||||
'settings_window',
|
'settings_window',
|
||||||
@ -2045,17 +2052,6 @@ const MenuBar = {
|
|||||||
]}
|
]}
|
||||||
|
|
||||||
], () => (!display_mode && !Animator.open))
|
], () => (!display_mode && !Animator.open))
|
||||||
new BarMenu('filter', [
|
|
||||||
'plugins_window',
|
|
||||||
'_',
|
|
||||||
/*
|
|
||||||
plaster
|
|
||||||
optimize
|
|
||||||
sort by transparency
|
|
||||||
entity / player model / shape generator
|
|
||||||
*/
|
|
||||||
|
|
||||||
])
|
|
||||||
|
|
||||||
new BarMenu('display', [
|
new BarMenu('display', [
|
||||||
'copy',
|
'copy',
|
||||||
@ -2123,6 +2119,18 @@ const MenuBar = {
|
|||||||
}}
|
}}
|
||||||
], () => display_mode)
|
], () => display_mode)
|
||||||
|
|
||||||
|
new BarMenu('filter', [
|
||||||
|
'plugins_window',
|
||||||
|
'_',
|
||||||
|
/*
|
||||||
|
plaster
|
||||||
|
optimize
|
||||||
|
sort by transparency
|
||||||
|
entity / player model / shape generator
|
||||||
|
*/
|
||||||
|
|
||||||
|
])
|
||||||
|
|
||||||
new BarMenu('animation', [
|
new BarMenu('animation', [
|
||||||
'copy',
|
'copy',
|
||||||
'paste',
|
'paste',
|
||||||
|
@ -980,9 +980,7 @@ const Timeline = {
|
|||||||
Timeline.dragging_marker = true;
|
Timeline.dragging_marker = true;
|
||||||
let time = e.offsetX / Timeline.vue._data.size
|
let time = e.offsetX / Timeline.vue._data.size
|
||||||
Timeline.setTime(time)
|
Timeline.setTime(time)
|
||||||
if (Animator.selected) {
|
Animator.preview()
|
||||||
Animator.preview()
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
$(document).mousemove(e => {
|
$(document).mousemove(e => {
|
||||||
if (Timeline.dragging_marker) {
|
if (Timeline.dragging_marker) {
|
||||||
@ -1054,9 +1052,7 @@ const Timeline = {
|
|||||||
+ limitNumber(times[2]/100, 0, 99)
|
+ limitNumber(times[2]/100, 0, 99)
|
||||||
if (Math.abs(seconds-Timeline.second) > 1e-3 ) {
|
if (Math.abs(seconds-Timeline.second) > 1e-3 ) {
|
||||||
Timeline.setTime(seconds, true)
|
Timeline.setTime(seconds, true)
|
||||||
if (Animator.selected) {
|
Animator.preview()
|
||||||
Animator.preview()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1088,12 +1084,10 @@ const Timeline = {
|
|||||||
var id = $(ui.helper).attr('id')
|
var id = $(ui.helper).attr('id')
|
||||||
|
|
||||||
var clicked = Timeline.vue._data.keyframes.findInArray('uuid', id)
|
var clicked = Timeline.vue._data.keyframes.findInArray('uuid', id)
|
||||||
if (clicked) {
|
if (clicked && !clicked.selected) {
|
||||||
clicked.select()
|
clicked.select()
|
||||||
}
|
}
|
||||||
|
clicked.dragging = true;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var i = 0;
|
var i = 0;
|
||||||
for (var i = 0; i < Timeline.vue._data.keyframes.length; i++) {
|
for (var i = 0; i < Timeline.vue._data.keyframes.length; i++) {
|
||||||
@ -1452,7 +1446,7 @@ BARS.defineActions(function() {
|
|||||||
id: 'reset_keyframe',
|
id: 'reset_keyframe',
|
||||||
icon: 'replay',
|
icon: 'replay',
|
||||||
category: 'animation',
|
category: 'animation',
|
||||||
condition: () => Animator.open,
|
condition: () => Animator.open && Timeline.selected.length,
|
||||||
click: function () {
|
click: function () {
|
||||||
Undo.initEdit({keyframes: Timeline.selected, keep_saved: true})
|
Undo.initEdit({keyframes: Timeline.selected, keep_saved: true})
|
||||||
Timeline.selected.forEach((kf) => {
|
Timeline.selected.forEach((kf) => {
|
||||||
|
76
js/api.js
76
js/api.js
@ -598,17 +598,16 @@ function Dialog(settings) {
|
|||||||
if (scope.form) {
|
if (scope.form) {
|
||||||
for (var form_id in scope.form) {
|
for (var form_id in scope.form) {
|
||||||
var data = scope.form[form_id]
|
var data = scope.form[form_id]
|
||||||
if (data && Condition(data.condition)) {
|
if (data === '_') {
|
||||||
|
jq_dialog.append('<hr />')
|
||||||
|
|
||||||
|
} else if (data && Condition(data.condition)) {
|
||||||
var bar = $('<div class="dialog_bar"></div>')
|
var bar = $('<div class="dialog_bar"></div>')
|
||||||
if (data.label) {
|
if (data.label) {
|
||||||
bar.append(`<label class="name_space_left" for="${form_id}">${tl(data.label)+(data.nocolon?'':':')}</label>`)
|
bar.append(`<label class="name_space_left" for="${form_id}">${tl(data.label)+(data.nocolon?'':':')}</label>`)
|
||||||
max_label_width = Math.max(getStringWidth(tl(data.label)), max_label_width)
|
max_label_width = Math.max(getStringWidth(tl(data.label)), max_label_width)
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
type: +text
|
|
||||||
label
|
|
||||||
placeholder
|
|
||||||
*/
|
|
||||||
switch (data.type) {
|
switch (data.type) {
|
||||||
default:
|
default:
|
||||||
bar.append(`<input class="dark_bordered half" type="text" id="${form_id}" value="${data.value||''}" placeholder="${data.placeholder||''}">`)
|
bar.append(`<input class="dark_bordered half" type="text" id="${form_id}" value="${data.value||''}" placeholder="${data.placeholder||''}">`)
|
||||||
@ -616,8 +615,26 @@ function Dialog(settings) {
|
|||||||
case 'textarea':
|
case 'textarea':
|
||||||
bar.append(`<textarea style="height: ${data.height||150}px;" id="${form_id}"></textarea>`)
|
bar.append(`<textarea style="height: ${data.height||150}px;" id="${form_id}"></textarea>`)
|
||||||
break;
|
break;
|
||||||
|
case 'select':
|
||||||
|
var el = $(`<div class="bar_select half"><select id="${form_id}"></select></div>`)
|
||||||
|
var sel = el.find('select')
|
||||||
|
for (var key in data.options) {
|
||||||
|
var name = tl(data.options[key])
|
||||||
|
sel.append(`<option id="${key}" ${data.default === key ? 'selected' : ''}>${name}</option>`)
|
||||||
|
}
|
||||||
|
bar.append(el)
|
||||||
|
break;
|
||||||
case 'text':
|
case 'text':
|
||||||
bar.append(`<p>${tl(data.text)}</p>`)
|
var regex = /\[(.+)\]\((.+\..+)\)/g;
|
||||||
|
var matches = data.text.match(regex)
|
||||||
|
if (matches) {
|
||||||
|
data.text = data.text.replace(regex, (m, label, url) => {
|
||||||
|
return `<a href="${url}" class="open-in-browser">${label}</a>`
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
data.text = tl(data.text)
|
||||||
|
}
|
||||||
|
bar.append(`<p>${data.text}</p>`)
|
||||||
bar.addClass('small_text')
|
bar.addClass('small_text')
|
||||||
break;
|
break;
|
||||||
case 'number':
|
case 'number':
|
||||||
@ -683,23 +700,29 @@ function Dialog(settings) {
|
|||||||
if (scope.form) {
|
if (scope.form) {
|
||||||
for (var form_id in scope.form) {
|
for (var form_id in scope.form) {
|
||||||
var data = scope.form[form_id]
|
var data = scope.form[form_id]
|
||||||
switch (data.type) {
|
if (typeof data === 'object') {
|
||||||
default:
|
switch (data.type) {
|
||||||
result[form_id] = jq_dialog.find('input#'+form_id).val()
|
default:
|
||||||
break;
|
result[form_id] = jq_dialog.find('input#'+form_id).val()
|
||||||
case 'text': break;
|
break;
|
||||||
case 'textarea':
|
case 'text':
|
||||||
result[form_id] = jq_dialog.find('textarea#'+form_id).val()
|
break;
|
||||||
break;
|
case 'textarea':
|
||||||
case 'number':
|
result[form_id] = jq_dialog.find('textarea#'+form_id).val()
|
||||||
result[form_id] = parseFloat(jq_dialog.find('input#'+form_id).val())||0
|
break;
|
||||||
break;
|
case 'select':
|
||||||
case 'color':
|
result[form_id] = jq_dialog.find('select#'+form_id+' > option:selected').attr('id')
|
||||||
result[form_id] = data.colorpicker.get();
|
break;
|
||||||
break;
|
case 'number':
|
||||||
case 'checkbox':
|
result[form_id] = Math.clamp(parseFloat(jq_dialog.find('input#'+form_id).val())||0, data.min, data.max)
|
||||||
result[form_id] = jq_dialog.find('input#'+form_id).is(':checked')
|
break;
|
||||||
break;
|
case 'color':
|
||||||
|
result[form_id] = data.colorpicker.get();
|
||||||
|
break;
|
||||||
|
case 'checkbox':
|
||||||
|
result[form_id] = jq_dialog.find('input#'+form_id).is(':checked')
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -726,6 +749,11 @@ function Dialog(settings) {
|
|||||||
if (this.width) {
|
if (this.width) {
|
||||||
jq_dialog.css('width', this.width+'px')
|
jq_dialog.css('width', this.width+'px')
|
||||||
}
|
}
|
||||||
|
jq_dialog.find('.open-in-browser').click((event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
shell.openExternal(event.target.href);
|
||||||
|
return true;
|
||||||
|
});
|
||||||
open_dialog = scope.id
|
open_dialog = scope.id
|
||||||
open_interface = scope
|
open_interface = scope
|
||||||
Prop.active_panel = 'dialog'
|
Prop.active_panel = 'dialog'
|
||||||
|
14
js/app.js
14
js/app.js
@ -16,7 +16,7 @@ var dialog_win = null,
|
|||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
//Setup
|
//Setup
|
||||||
$('.open-in-browser').click((event) => {
|
$('.open-in-browser').on('click', (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
shell.openExternal(event.target.href);
|
shell.openExternal(event.target.href);
|
||||||
return true;
|
return true;
|
||||||
@ -376,9 +376,14 @@ function findBedrockAnimation() {
|
|||||||
var animation_path = Prop.file_path.split(osfs)
|
var animation_path = Prop.file_path.split(osfs)
|
||||||
var index = animation_path.lastIndexOf('models')
|
var index = animation_path.lastIndexOf('models')
|
||||||
animation_path.splice(index)
|
animation_path.splice(index)
|
||||||
animation_path = [...animation_path, 'animations', pathToName(Prop.file_path)+'.json'].join(osfs)
|
var path1 = [...animation_path, 'animations', pathToName(Prop.file_path)+'.json'].join(osfs)
|
||||||
if (fs.existsSync(animation_path)) {
|
var path2 = [...animation_path, 'animations', pathToName(Prop.file_path).replace('.geo', '')+'.animation.json'].join(osfs)
|
||||||
Blockbench.read([animation_path], {}, (files) => {
|
if (fs.existsSync(path1)) {
|
||||||
|
Blockbench.read([path1], {}, (files) => {
|
||||||
|
Animator.loadFile(files[0])
|
||||||
|
})
|
||||||
|
} else if (fs.existsSync(path2)) {
|
||||||
|
Blockbench.read([path2], {}, (files) => {
|
||||||
Animator.loadFile(files[0])
|
Animator.loadFile(files[0])
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -632,6 +637,7 @@ function closeBlockbenchWindow() {
|
|||||||
preventClosing = false;
|
preventClosing = false;
|
||||||
Blockbench.dispatchEvent('before_closing')
|
Blockbench.dispatchEvent('before_closing')
|
||||||
localStorage.removeItem('backup_model')
|
localStorage.removeItem('backup_model')
|
||||||
|
EditSession.quit()
|
||||||
|
|
||||||
if (!Blockbench.hasFlag('update_restart')) {
|
if (!Blockbench.hasFlag('update_restart')) {
|
||||||
return currentwindow.close();
|
return currentwindow.close();
|
||||||
|
@ -12,7 +12,11 @@ var open_dialog = false;
|
|||||||
var open_interface = false;
|
var open_interface = false;
|
||||||
var tex_version = 1;
|
var tex_version = 1;
|
||||||
var pe_list;
|
var pe_list;
|
||||||
var holding_shift = false;
|
const Pressing = {
|
||||||
|
shift: false,
|
||||||
|
ctrl: false,
|
||||||
|
alt: false,
|
||||||
|
}
|
||||||
var main_uv;
|
var main_uv;
|
||||||
const Prop = {
|
const Prop = {
|
||||||
active_panel: 'preview',
|
active_panel: 'preview',
|
||||||
@ -597,16 +601,23 @@ const Clipbench = {
|
|||||||
cubes: [],
|
cubes: [],
|
||||||
copy: function(event, cut) {
|
copy: function(event, cut) {
|
||||||
var p = Prop.active_panel
|
var p = Prop.active_panel
|
||||||
if (open_dialog == 'uv_dialog') {
|
var text = window.getSelection()+''
|
||||||
|
if (text) {
|
||||||
|
Clipbench.setText(text)
|
||||||
|
|
||||||
|
} else if (open_dialog == 'uv_dialog') {
|
||||||
uv_dialog.copy(event)
|
uv_dialog.copy(event)
|
||||||
|
|
||||||
} else if (display_mode) {
|
} else if (display_mode) {
|
||||||
DisplayMode.copy()
|
DisplayMode.copy()
|
||||||
|
|
||||||
} else if (Animator.open) {
|
} else if (Animator.open) {
|
||||||
if (Timeline.selected.length) {
|
if (Timeline.selected.length) {
|
||||||
Clipbench.setKeyframes(Timeline.selected)
|
Clipbench.setKeyframes(Timeline.selected)
|
||||||
}
|
}
|
||||||
} else if (p == 'uv' || p == 'preview') {
|
} else if (p == 'uv' || p == 'preview') {
|
||||||
main_uv.copy(event)
|
main_uv.copy(event)
|
||||||
|
|
||||||
} else if (p == 'textures' && isApp) {
|
} else if (p == 'textures' && isApp) {
|
||||||
if (textures.selected) {
|
if (textures.selected) {
|
||||||
Clipbench.setTexture(textures.selected)
|
Clipbench.setTexture(textures.selected)
|
||||||
|
@ -1716,7 +1716,7 @@ onVueSetup(function() {
|
|||||||
if (channel === 'scale') {
|
if (channel === 'scale') {
|
||||||
var val = limitNumber(DisplayMode.slot.scale[axis], 0, 4)
|
var val = limitNumber(DisplayMode.slot.scale[axis], 0, 4)
|
||||||
DisplayMode.slot.scale[axis] = val;
|
DisplayMode.slot.scale[axis] = val;
|
||||||
if (holding_shift) {
|
if (Pressing.shift) {
|
||||||
DisplayMode.slot.scale[0] = val;
|
DisplayMode.slot.scale[0] = val;
|
||||||
DisplayMode.slot.scale[1] = val;
|
DisplayMode.slot.scale[1] = val;
|
||||||
DisplayMode.slot.scale[2] = val;
|
DisplayMode.slot.scale[2] = val;
|
||||||
|
@ -3,43 +3,54 @@ const EditSession = {
|
|||||||
active: false,
|
active: false,
|
||||||
hosting: false,
|
hosting: false,
|
||||||
BBKey: '1h3sq3hoj6vfkh',
|
BBKey: '1h3sq3hoj6vfkh',
|
||||||
|
clients: {},
|
||||||
start: function() {
|
start: function() {
|
||||||
if (EditSession.active) return;
|
if (EditSession.active) return;
|
||||||
|
|
||||||
EditSession.hosting = true;
|
|
||||||
Prop.session = true;
|
|
||||||
EditSession.setState(true);
|
|
||||||
var peer = EditSession.peer = new Peer({key: '1h3sq3hoj6vfkh'});
|
var peer = EditSession.peer = new Peer({key: '1h3sq3hoj6vfkh'});
|
||||||
EditSession.username = $('#edit_session_username').val()
|
EditSession.username = $('#edit_session_username').val()
|
||||||
|
|
||||||
peer.on('open', (token) => {
|
peer.on('open', (token) => {
|
||||||
|
EditSession.hosting = true;
|
||||||
|
Prop.session = true;
|
||||||
|
EditSession.setState(true);
|
||||||
|
EditSession.username = $('#edit_session_username').val()
|
||||||
|
|
||||||
|
var client = EditSession.self = new EditSession.Client({
|
||||||
|
id: EditSession.peer.id,
|
||||||
|
name: EditSession.username,
|
||||||
|
hosting: true
|
||||||
|
})
|
||||||
|
|
||||||
$('#edit_session_token').val(token)
|
$('#edit_session_token').val(token)
|
||||||
EditSession.token = token;
|
EditSession.token = token;
|
||||||
Clipbench.setText(token)
|
Clipbench.setText(token)
|
||||||
Blockbench.dispatchEvent('create_session', {peer, token})
|
Blockbench.dispatchEvent('create_session', {peer, token})
|
||||||
})
|
})
|
||||||
peer.on('connection', (conn) => {
|
peer.on('connection', (conn) => {
|
||||||
EditSession.initConnection(conn)
|
|
||||||
Prop.connections = Object.keys(peer.connections).length
|
|
||||||
console.log(tl('edit_session.joined', [conn.metadata.username]))
|
|
||||||
Blockbench.showQuickMessage(tl('edit_session.joined', [conn.metadata.username]))
|
|
||||||
//New Login
|
|
||||||
var model = buildBBModel({uuids: true, bitmaps: true, history: true})
|
|
||||||
conn.on('open', function() {
|
conn.on('open', function() {
|
||||||
Blockbench.dispatchEvent('user_joins_session', {conn})
|
|
||||||
conn.send({
|
var client = new EditSession.Client({
|
||||||
|
id: conn.peer,
|
||||||
|
conn: conn,
|
||||||
|
name: conn.metadata.username,
|
||||||
|
hosting: false
|
||||||
|
})
|
||||||
|
Chat.processMessage({text: tl('edit_session.joined', [client.name]), color: 'green'})
|
||||||
|
Blockbench.showQuickMessage(tl('edit_session.joined', [client.name]))
|
||||||
|
//New Login
|
||||||
|
client.send({
|
||||||
|
type: 'chat_message',
|
||||||
|
data: {text: tl('edit_session.welcome', [EditSession.username]), color: 'yellow'}
|
||||||
|
})
|
||||||
|
var model = buildBBModel({uuids: true, bitmaps: true, history: true})
|
||||||
|
client.send({
|
||||||
type: 'init_model',
|
type: 'init_model',
|
||||||
fromHost: EditSession.hosting,
|
fromHost: EditSession.hosting,
|
||||||
sender: EditSession.peer.id,
|
sender: EditSession.peer.id,
|
||||||
data: model
|
data: model
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
conn.on('close', function() {
|
|
||||||
Blockbench.dispatchEvent('user_leaves_session', {conn})
|
|
||||||
Blockbench.showQuickMessage(tl('edit_session.left', [conn.metadata.username]))
|
|
||||||
delete peer.connections[conn.peer]
|
|
||||||
Prop.connections = Object.keys(peer.connections).length
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
join: function() {
|
join: function() {
|
||||||
@ -48,7 +59,7 @@ const EditSession = {
|
|||||||
EditSession.hosting = false;
|
EditSession.hosting = false;
|
||||||
EditSession.peer = new Peer({key: '1h3sq3hoj6vfkh'});
|
EditSession.peer = new Peer({key: '1h3sq3hoj6vfkh'});
|
||||||
var token = $('#edit_session_token').val()
|
var token = $('#edit_session_token').val()
|
||||||
var username = $('#edit_session_username').val()
|
EditSession.username = $('#edit_session_username').val()
|
||||||
if (!token || !EditSession._matchToken(token)) {
|
if (!token || !EditSession._matchToken(token)) {
|
||||||
Blockbench.showMessageBox({
|
Blockbench.showMessageBox({
|
||||||
translateKey: 'invalid_session',
|
translateKey: 'invalid_session',
|
||||||
@ -60,16 +71,15 @@ const EditSession = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
EditSession.token = token;
|
EditSession.token = token;
|
||||||
var conn = EditSession.peer.connect(token, {metadata: {username: username}});
|
var conn = EditSession.peer.connect(token, {metadata: {username: EditSession.username}});
|
||||||
|
|
||||||
conn.on('error', (a, b) => {
|
conn.on('error', (e) => {
|
||||||
Blockbench.showMessageBox({
|
Blockbench.showMessageBox({
|
||||||
translateKey: 'invalid_session',
|
translateKey: 'invalid_session',
|
||||||
icon: 'cloud_off',
|
icon: 'cloud_off',
|
||||||
buttons: [tl('dialog.ok')],
|
buttons: [tl('dialog.ok')],
|
||||||
}, result => {
|
|
||||||
showDialog('edit_sessions');
|
|
||||||
})
|
})
|
||||||
|
EditSession.quit()
|
||||||
})
|
})
|
||||||
conn.on('open', () => {
|
conn.on('open', () => {
|
||||||
hideDialog()
|
hideDialog()
|
||||||
@ -80,6 +90,8 @@ const EditSession = {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
quit: function() {
|
quit: function() {
|
||||||
|
if (!EditSession.active) return;
|
||||||
|
|
||||||
Blockbench.dispatchEvent('quit_session', {})
|
Blockbench.dispatchEvent('quit_session', {})
|
||||||
if (EditSession.hosting) {
|
if (EditSession.hosting) {
|
||||||
EditSession.sendAll('command', 'quit_session')
|
EditSession.sendAll('command', 'quit_session')
|
||||||
@ -88,12 +100,12 @@ const EditSession = {
|
|||||||
}
|
}
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
EditSession.setState(false)
|
EditSession.setState(false)
|
||||||
|
Chat.history.purge()
|
||||||
EditSession.peer.destroy()
|
EditSession.peer.destroy()
|
||||||
Prop.session = false;
|
Prop.session = false;
|
||||||
Prop.connections = 0;
|
Prop.connections = 0;
|
||||||
Blockbench.showQuickMessage('edit_session.quit_session', 1500)
|
Blockbench.showQuickMessage('edit_session.quit_session', 1500)
|
||||||
}, 400)
|
}, 400)
|
||||||
|
|
||||||
},
|
},
|
||||||
setState: function(active) {
|
setState: function(active) {
|
||||||
EditSession.active = active;
|
EditSession.active = active;
|
||||||
@ -110,6 +122,7 @@ const EditSession = {
|
|||||||
$('#edit_session_copy_button .tooltip').text(tl('action.paste'))
|
$('#edit_session_copy_button .tooltip').text(tl('action.paste'))
|
||||||
$('#edit_session_token').val('')
|
$('#edit_session_token').val('')
|
||||||
}
|
}
|
||||||
|
updateInterface()
|
||||||
},
|
},
|
||||||
dialog: function() {
|
dialog: function() {
|
||||||
showDialog('edit_sessions');
|
showDialog('edit_sessions');
|
||||||
@ -152,23 +165,22 @@ const EditSession = {
|
|||||||
EditSession.sendAll('init_model', JSON.stringify(model))
|
EditSession.sendAll('init_model', JSON.stringify(model))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
initConnection: function(conn) {
|
initConnection: function(conn) {
|
||||||
conn.on('data', EditSession.receiveData)
|
conn.on('data', EditSession.receiveData)
|
||||||
},
|
},
|
||||||
sendAll: function(type, data) {
|
sendAll: function(type, data) {
|
||||||
var tag = {type, data}
|
var tag = {type, data}
|
||||||
Blockbench.dispatchEvent('send_session_data', tag)
|
Blockbench.dispatchEvent('send_session_data', tag)
|
||||||
for (var key in EditSession.peer.connections) {
|
for (var id in EditSession.clients) {
|
||||||
var conns = EditSession.peer.connections[key];
|
var client = EditSession.clients[id];
|
||||||
conns.forEach(conn => {
|
if (client != EditSession.self) {
|
||||||
conn.send({
|
client.send({
|
||||||
type: tag.type,
|
type: tag.type,
|
||||||
fromHost: EditSession.hosting,
|
fromHost: EditSession.hosting,
|
||||||
sender: EditSession.peer.id,
|
sender: EditSession.peer.id,
|
||||||
data: tag.data
|
data: tag.data
|
||||||
});
|
})
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
if (Blockbench.hasFlag('log_session')) {
|
if (Blockbench.hasFlag('log_session')) {
|
||||||
console.log('Sent Data:', type, data)
|
console.log('Sent Data:', type, data)
|
||||||
@ -208,26 +220,153 @@ const EditSession = {
|
|||||||
|
|
||||||
if (tag.type === 'edit') {
|
if (tag.type === 'edit') {
|
||||||
Undo.remoteEdit(data)
|
Undo.remoteEdit(data)
|
||||||
|
|
||||||
} else if (tag.type === 'init_model') {
|
} else if (tag.type === 'init_model') {
|
||||||
force = data.flag === 'force';
|
force = data.flag === 'force';
|
||||||
newProject(false, force)
|
newProject(false, force)
|
||||||
loadBBModel(data)
|
loadBBModel(data)
|
||||||
|
|
||||||
} else if (tag.type === 'command') {
|
} else if (tag.type === 'command') {
|
||||||
switch (data) {
|
switch (data) {
|
||||||
case 'undo': Undo.undo(true); break;
|
case 'undo': Undo.undo(true); break;
|
||||||
case 'redo': Undo.redo(true); break;
|
case 'redo': Undo.redo(true); break;
|
||||||
case 'quit_session': EditSession.quit(); break;
|
case 'quit_session': EditSession.quit(); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (tag.type === 'change_project_meta') {
|
} else if (tag.type === 'change_project_meta') {
|
||||||
for (var key in data) {
|
for (var key in data) {
|
||||||
Project = data[key];
|
Project[key] = data[key];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else if (tag.type === 'chat_input' && EditSession.hosting) {
|
||||||
|
Chat.processMessage(tag.data)
|
||||||
|
|
||||||
|
} else if (tag.type === 'chat_message') {
|
||||||
|
Chat.addMessage(tag.data)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
updateClientCount: function() {
|
||||||
|
Prop.connections = Object.keys(EditSession.clients).length-1
|
||||||
|
},
|
||||||
_matchToken: function(token) {
|
_matchToken: function(token) {
|
||||||
return !!(token.length === 16 && token.match(/[a-z0-9]{16}/))
|
return !!(token.length === 16 && token.match(/[a-z0-9]{16}/))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
EditSession.Client = class {
|
||||||
|
constructor(data) {
|
||||||
|
var scope = this;
|
||||||
|
this.id = data.id;
|
||||||
|
this.hosting = data.hosting;
|
||||||
|
this.conn = data.conn;
|
||||||
|
this.name = data.name;
|
||||||
|
|
||||||
|
EditSession.clients[this.id] = this;
|
||||||
|
EditSession.updateClientCount()
|
||||||
|
|
||||||
|
if (this.conn) {
|
||||||
|
EditSession.initConnection(this.conn)
|
||||||
|
this.conn.on('close', () => {
|
||||||
|
scope.disconnect()
|
||||||
|
})
|
||||||
|
this.conn.on('error', (e) => {
|
||||||
|
scope.disconnect()
|
||||||
|
this.conn.close()
|
||||||
|
console.error(e)
|
||||||
|
})
|
||||||
|
Blockbench.dispatchEvent('user_joins_session', {conn: this.conn})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
send(tag) {
|
||||||
|
this.conn.send(tag)
|
||||||
|
}
|
||||||
|
disconnect(e) {
|
||||||
|
Blockbench.dispatchEvent('user_leaves_session', {conn: this.conn})
|
||||||
|
delete EditSession.peer.connections[this.conn.peer];
|
||||||
|
delete EditSession.clients[this.id];
|
||||||
|
EditSession.updateClientCount();
|
||||||
|
|
||||||
|
Chat.processMessage({text: tl('edit_session.left', [this.name]), color: 'red'})
|
||||||
|
Blockbench.showQuickMessage(tl('edit_session.left', [this.name]))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const Chat = {
|
||||||
|
history: [],
|
||||||
|
expanded: true,
|
||||||
|
maxlength: 512,
|
||||||
|
toggle: function() {
|
||||||
|
this.expanded = !this.expanded;
|
||||||
|
BarItems.toggle_chat.setIcon( Chat.expanded ? 'keyboard_arrow_down' : 'keyboard_arrow_up' )
|
||||||
|
},
|
||||||
|
send: function(text) {
|
||||||
|
if (typeof text !== 'string') {
|
||||||
|
text = $('input#chat_input').val()
|
||||||
|
$('input#chat_input').val('')
|
||||||
|
}
|
||||||
|
if (!text) return;
|
||||||
|
Chat.processMessage({author: EditSession.username, text: text})
|
||||||
|
},
|
||||||
|
addMessage: function(message) {
|
||||||
|
if (!(message instanceof Chat.Message)) {
|
||||||
|
message = new Chat.Message(message)
|
||||||
|
}
|
||||||
|
Chat.history.push(message)
|
||||||
|
Vue.nextTick(() => {
|
||||||
|
$('#chat_history').scrollTop(10000)
|
||||||
|
})
|
||||||
|
return message;
|
||||||
|
},
|
||||||
|
processMessage: function(data) {
|
||||||
|
if (!EditSession.hosting) {
|
||||||
|
EditSession.host.send({type: 'chat_input', data: data})
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var message = new Chat.Message(data)
|
||||||
|
//Host Only
|
||||||
|
Blockbench.dispatchEvent('process_chat_message', message)
|
||||||
|
|
||||||
|
EditSession.sendAll('chat_message', data)
|
||||||
|
Chat.addMessage(data)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Chat.Message = class {
|
||||||
|
constructor(data) {
|
||||||
|
this.author = data.author||'';
|
||||||
|
this.author = this.author.substr(0, 64)
|
||||||
|
this.self = (this.author && this.author === EditSession.username);
|
||||||
|
this.text = data.text.substr(0, Chat.maxlength)||'';
|
||||||
|
this.timestamp = new Date.getTimestamp()
|
||||||
|
this.toString = () => (this.author + ': ' + this.content);
|
||||||
|
//Color
|
||||||
|
this.color = data.color
|
||||||
|
switch (this.color) {
|
||||||
|
case 'red': this.hex = '#ff4158'; break;
|
||||||
|
case 'orange': this.hex = '#ff6f10'; break;
|
||||||
|
case 'yellow': this.hex = '#ffd100'; break;
|
||||||
|
case 'green': this.hex = '#00eb3b'; break;
|
||||||
|
case 'blue': this.hex = '#08a3ff'; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
toObject() {
|
||||||
|
return {
|
||||||
|
author: this.author,
|
||||||
|
text: this.text,
|
||||||
|
color: this.color,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
showAuthor() {
|
||||||
|
if (!this.author) return false;
|
||||||
|
var this_i = Chat.history.indexOf(this);
|
||||||
|
var prev = Chat.history[this_i-1];
|
||||||
|
return (!prev) || (prev.author !== this.author);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onVueSetup(function() {
|
||||||
|
Chat.vue = new Vue({
|
||||||
|
el: '#chat_history',
|
||||||
|
data: Chat
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
BARS.defineActions(function() {
|
BARS.defineActions(function() {
|
||||||
new Action({
|
new Action({
|
||||||
@ -236,4 +375,11 @@ BARS.defineActions(function() {
|
|||||||
category: 'blockbench',
|
category: 'blockbench',
|
||||||
click: EditSession.dialog
|
click: EditSession.dialog
|
||||||
})
|
})
|
||||||
|
new Action({
|
||||||
|
id: 'toggle_chat',
|
||||||
|
icon: 'keyboard_arrow_down',
|
||||||
|
condition: () => EditSession.active,
|
||||||
|
category: 'blockbench',
|
||||||
|
click: () => (Chat.toggle())
|
||||||
|
})
|
||||||
})
|
})
|
132
js/element.js
132
js/element.js
@ -44,8 +44,6 @@ var OutlinerButtons = {
|
|||||||
get title() {return Blockbench.entity_mode ? tl('switches.mirror') : tl('switches.shading')},
|
get title() {return Blockbench.entity_mode ? tl('switches.mirror') : tl('switches.shading')},
|
||||||
get icon() {return Blockbench.entity_mode ? 'fa fa-star' : 'fa fa-star'},
|
get icon() {return Blockbench.entity_mode ? 'fa fa-star' : 'fa fa-star'},
|
||||||
get icon_off() {return Blockbench.entity_mode ? 'fa fa-star-half-o' : 'fa fa-star-o'},
|
get icon_off() {return Blockbench.entity_mode ? 'fa fa-star-half-o' : 'fa fa-star-o'},
|
||||||
//icon: ' fa fa-star',
|
|
||||||
//icon_off: ' fa fa-star-o',
|
|
||||||
advanced_option: true,
|
advanced_option: true,
|
||||||
click: function(obj) {
|
click: function(obj) {
|
||||||
obj.toggle('shade')
|
obj.toggle('shade')
|
||||||
@ -94,6 +92,8 @@ class Face {
|
|||||||
this.texture = null;
|
this.texture = null;
|
||||||
} else if (object.texture === false) {
|
} else if (object.texture === false) {
|
||||||
this.texture = false;
|
this.texture = false;
|
||||||
|
} else if (textures.includes(object.texture)) {
|
||||||
|
this.texture = object.texture.uuid;
|
||||||
} else if (typeof object.texture === 'string') {
|
} else if (typeof object.texture === 'string') {
|
||||||
Merge.string(this, object, 'texture')
|
Merge.string(this, object, 'texture')
|
||||||
}
|
}
|
||||||
@ -832,22 +832,24 @@ class Cube extends OutlinerElement {
|
|||||||
this.menu.open(event, this)
|
this.menu.open(event, this)
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
forSelected(fc) {
|
forSelected(fc, undo_tag) {
|
||||||
if (selected.length <= 1 || !selected.includes(this)) {
|
if (selected.length <= 1 || !selected.includes(this)) {
|
||||||
if (fc) {
|
var edited = [this]
|
||||||
fc(this)
|
|
||||||
}
|
|
||||||
return [this];
|
|
||||||
} else {
|
} else {
|
||||||
var i = selected.length;
|
var edited = selected
|
||||||
while (i > 0) {
|
|
||||||
i--;
|
|
||||||
if (fc) {
|
|
||||||
fc(selected[i])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return selected
|
|
||||||
}
|
}
|
||||||
|
if (typeof fc === 'function') {
|
||||||
|
if (undo_tag) {
|
||||||
|
Undo.initEdit({cubes: edited})
|
||||||
|
}
|
||||||
|
for (var i = 0; i < edited.length; i++) {
|
||||||
|
fc(edited[i])
|
||||||
|
}
|
||||||
|
if (undo_tag) {
|
||||||
|
Undo.finishEdit(undo_tag)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return edited;
|
||||||
}
|
}
|
||||||
duplicate() {
|
duplicate() {
|
||||||
var old_group = this.parent
|
var old_group = this.parent
|
||||||
@ -1012,19 +1014,16 @@ class Cube extends OutlinerElement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
toggle(key, val) {
|
toggle(key, val) {
|
||||||
var selection = this.forSelected()
|
|
||||||
if (val === undefined) {
|
if (val === undefined) {
|
||||||
var val = !this[key]
|
var val = !this[key]
|
||||||
}
|
}
|
||||||
|
this.forSelected((cube) => {
|
||||||
Undo.initEdit({cubes: selection})
|
|
||||||
selection.forEach(function (cube) {
|
|
||||||
cube[key] = val
|
cube[key] = val
|
||||||
})
|
}, 'toggle '+key)
|
||||||
if (key === 'visibility') {
|
if (key === 'visibility') {
|
||||||
Canvas.updateVisibility()
|
Canvas.updateVisibility()
|
||||||
}
|
}
|
||||||
Undo.finishEdit('toggle')
|
return this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Cube.prototype.title = tl('data.cube')
|
Cube.prototype.title = tl('data.cube')
|
||||||
@ -1050,39 +1049,29 @@ class Cube extends OutlinerElement {
|
|||||||
updateSelection()
|
updateSelection()
|
||||||
Undo.finishEdit('duplicate', {outliner: true, cubes: selected, selection: true})
|
Undo.finishEdit('duplicate', {outliner: true, cubes: selected, selection: true})
|
||||||
}},
|
}},
|
||||||
{name: 'generic.rename', icon: 'text_format', click: function(cube) {
|
{name: 'generic.rename', icon: 'text_format', click: renameOutliner},
|
||||||
if (selected.length > 1) {
|
|
||||||
renameCubes(cube)
|
|
||||||
} else {
|
|
||||||
cube.rename()
|
|
||||||
}
|
|
||||||
}},
|
|
||||||
'update_autouv',
|
'update_autouv',
|
||||||
{name: 'menu.cube.color', icon: 'color_lens', children: [
|
{name: 'menu.cube.color', icon: 'color_lens', children: [
|
||||||
{icon: 'bubble_chart', color: cubeColors[0].hex, name: 'cube.color.'+cubeColors[0].name, click: function(cube) {cube.forSelected(function(obj){obj.setColor(0)})}},
|
{icon: 'bubble_chart', color: cubeColors[0].hex, name: 'cube.color.'+cubeColors[0].name, click: function(cube) {cube.forSelected(function(obj){obj.setColor(0)}, 'change color')}},
|
||||||
{icon: 'bubble_chart', color: cubeColors[1].hex, name: 'cube.color.'+cubeColors[1].name, click: function(cube) {cube.forSelected(function(obj){obj.setColor(1)})}},
|
{icon: 'bubble_chart', color: cubeColors[1].hex, name: 'cube.color.'+cubeColors[1].name, click: function(cube) {cube.forSelected(function(obj){obj.setColor(1)}, 'change color')}},
|
||||||
{icon: 'bubble_chart', color: cubeColors[2].hex, name: 'cube.color.'+cubeColors[2].name, click: function(cube) {cube.forSelected(function(obj){obj.setColor(2)})}},
|
{icon: 'bubble_chart', color: cubeColors[2].hex, name: 'cube.color.'+cubeColors[2].name, click: function(cube) {cube.forSelected(function(obj){obj.setColor(2)}, 'change color')}},
|
||||||
{icon: 'bubble_chart', color: cubeColors[3].hex, name: 'cube.color.'+cubeColors[3].name, click: function(cube) {cube.forSelected(function(obj){obj.setColor(3)})}},
|
{icon: 'bubble_chart', color: cubeColors[3].hex, name: 'cube.color.'+cubeColors[3].name, click: function(cube) {cube.forSelected(function(obj){obj.setColor(3)}, 'change color')}},
|
||||||
{icon: 'bubble_chart', color: cubeColors[4].hex, name: 'cube.color.'+cubeColors[4].name, click: function(cube) {cube.forSelected(function(obj){obj.setColor(4)})}},
|
{icon: 'bubble_chart', color: cubeColors[4].hex, name: 'cube.color.'+cubeColors[4].name, click: function(cube) {cube.forSelected(function(obj){obj.setColor(4)}, 'change color')}},
|
||||||
{icon: 'bubble_chart', color: cubeColors[5].hex, name: 'cube.color.'+cubeColors[5].name, click: function(cube) {cube.forSelected(function(obj){obj.setColor(5)})}},
|
{icon: 'bubble_chart', color: cubeColors[5].hex, name: 'cube.color.'+cubeColors[5].name, click: function(cube) {cube.forSelected(function(obj){obj.setColor(5)}, 'change color')}},
|
||||||
{icon: 'bubble_chart', color: cubeColors[6].hex, name: 'cube.color.'+cubeColors[6].name, click: function(cube) {cube.forSelected(function(obj){obj.setColor(6)})}},
|
{icon: 'bubble_chart', color: cubeColors[6].hex, name: 'cube.color.'+cubeColors[6].name, click: function(cube) {cube.forSelected(function(obj){obj.setColor(6)}, 'change color')}},
|
||||||
{icon: 'bubble_chart', color: cubeColors[7].hex, name: 'cube.color.'+cubeColors[7].name, click: function(cube) {cube.forSelected(function(obj){obj.setColor(7)})}}
|
{icon: 'bubble_chart', color: cubeColors[7].hex, name: 'cube.color.'+cubeColors[7].name, click: function(cube) {cube.forSelected(function(obj){obj.setColor(7)}, 'change color')}}
|
||||||
]},
|
]},
|
||||||
{name: 'menu.cube.texture', icon: 'collections', condition: function() {return !Blockbench.entity_mode}, children: function() {
|
{name: 'menu.cube.texture', icon: 'collections', condition: function() {return !Blockbench.entity_mode}, children: function() {
|
||||||
var arr = [
|
var arr = [
|
||||||
{icon: 'crop_square', name: 'menu.cube.texture.blank', click: function(cube) {
|
{icon: 'crop_square', name: 'menu.cube.texture.blank', click: function(cube) {
|
||||||
Undo.initEdit({cubes: selected})
|
|
||||||
cube.forSelected(function(obj) {
|
cube.forSelected(function(obj) {
|
||||||
obj.applyTexture('blank', true)
|
obj.applyTexture('blank', true)
|
||||||
})
|
}, 'texture blank')
|
||||||
Undo.initEdit('texture blank')
|
|
||||||
}},
|
}},
|
||||||
{icon: 'clear', name: 'menu.cube.texture.transparent', click: function(cube) {
|
{icon: 'clear', name: 'menu.cube.texture.transparent', click: function(cube) {
|
||||||
Undo.initEdit({cubes: selected})
|
|
||||||
cube.forSelected(function(obj) {
|
cube.forSelected(function(obj) {
|
||||||
obj.applyTexture(undefined, true)
|
obj.applyTexture(undefined, true)
|
||||||
})
|
}, 'texture transparent')
|
||||||
Undo.initEdit('texture blank')
|
|
||||||
}}
|
}}
|
||||||
]
|
]
|
||||||
textures.forEach(function(t) {
|
textures.forEach(function(t) {
|
||||||
@ -1090,11 +1079,9 @@ class Cube extends OutlinerElement {
|
|||||||
name: t.name,
|
name: t.name,
|
||||||
icon: (t.mode === 'link' ? t.img : t.source),
|
icon: (t.mode === 'link' ? t.img : t.source),
|
||||||
click: function(cube) {
|
click: function(cube) {
|
||||||
Undo.initEdit({cubes: selected})
|
|
||||||
cube.forSelected(function(obj) {
|
cube.forSelected(function(obj) {
|
||||||
obj.applyTexture(t, true)
|
obj.applyTexture(t, true)
|
||||||
})
|
}, 'apply texture')
|
||||||
Undo.initEdit('texture blank')
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -1515,7 +1502,7 @@ class Group extends OutlinerElement {
|
|||||||
group.duplicate()
|
group.duplicate()
|
||||||
Undo.finishEdit('duplicate_group', {outliner: true, cubes: elements.slice().slice(cubes_before), selection: true})
|
Undo.finishEdit('duplicate_group', {outliner: true, cubes: elements.slice().slice(cubes_before), selection: true})
|
||||||
}},
|
}},
|
||||||
{icon: 'text_format', name: 'generic.rename', click: function(group) {group.rename()}},
|
'rename',
|
||||||
{icon: 'sort_by_alpha', name: 'menu.group.sort', click: function(group) {group.sortContent()}},
|
{icon: 'sort_by_alpha', name: 'menu.group.sort', click: function(group) {group.sortContent()}},
|
||||||
{icon: 'fa-leaf', name: 'menu.group.resolve', click: function(group) {
|
{icon: 'fa-leaf', name: 'menu.group.resolve', click: function(group) {
|
||||||
Undo.initEdit({outliner: true})
|
Undo.initEdit({outliner: true})
|
||||||
@ -1945,25 +1932,39 @@ function duplicateCubes() {
|
|||||||
BarItems.move_tool.select()
|
BarItems.move_tool.select()
|
||||||
Undo.finishEdit('duplicate', {cubes: selected, outliner: true, selection: true})
|
Undo.finishEdit('duplicate', {cubes: selected, outliner: true, selection: true})
|
||||||
}
|
}
|
||||||
function renameCubes(element) {
|
function renameOutliner(element) {
|
||||||
stopRenameCubes()
|
stopRenameOutliner()
|
||||||
if (selected_group && !element) {
|
|
||||||
|
if (selected_group && !element && !EditSession.active) {
|
||||||
selected_group.rename()
|
selected_group.rename()
|
||||||
} else if (selected.length === 0) {
|
|
||||||
return;
|
} else if (selected.length === 1 && !EditSession.active) {
|
||||||
} else if (selected.length === 1) {
|
|
||||||
selected[0].rename()
|
selected[0].rename()
|
||||||
} else {
|
|
||||||
Blockbench.textPrompt(tl('message.rename_cubes'), selected[0].name, function (name) {
|
} else if (selected.length) {
|
||||||
Undo.initEdit({cubes: selected})
|
|
||||||
selected.forEach(function(obj, i) {
|
if (selected_group && !element) {
|
||||||
obj.name = name.replace(/%/g, obj.index).replace(/\$/g, i)
|
Blockbench.textPrompt(tl('message.rename_cubes'), selected_group.name, function (name) {
|
||||||
|
|
||||||
|
Undo.initEdit({group: selected_group})
|
||||||
|
selected_group.name = name
|
||||||
|
if (Blockbench.entity_mode) {
|
||||||
|
selected_group.createUniqueName()
|
||||||
|
}
|
||||||
|
Undo.finishEdit('rename group')
|
||||||
})
|
})
|
||||||
Undo.finishEdit('rename')
|
} else {
|
||||||
})
|
Blockbench.textPrompt(tl('message.rename_cubes'), selected[0].name, function (name) {
|
||||||
|
Undo.initEdit({cubes: selected})
|
||||||
|
selected.forEach(function(obj, i) {
|
||||||
|
obj.name = name.replace(/%/g, obj.index).replace(/\$/g, i)
|
||||||
|
})
|
||||||
|
Undo.finishEdit('rename')
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function stopRenameCubes(save) {
|
function stopRenameOutliner(save) {
|
||||||
if (Blockbench.hasFlag('renaming')) {
|
if (Blockbench.hasFlag('renaming')) {
|
||||||
var uuid = $('.outliner_object input.renaming').parent().parent().attr('id')
|
var uuid = $('.outliner_object input.renaming').parent().parent().attr('id')
|
||||||
var element = TreeElements.findRecursive('uuid', uuid)
|
var element = TreeElements.findRecursive('uuid', uuid)
|
||||||
@ -2077,6 +2078,17 @@ BARS.defineActions(function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
new Action({
|
||||||
|
id: 'rename',
|
||||||
|
icon: 'text_format',
|
||||||
|
category: 'edit',
|
||||||
|
keybind: new Keybind({key: 113}),
|
||||||
|
click: function () {
|
||||||
|
if (Modes.id === 'edit') {
|
||||||
|
renameOutliner()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
new Action({
|
new Action({
|
||||||
id: 'duplicate',
|
id: 'duplicate',
|
||||||
|
@ -165,12 +165,12 @@ class ResizeLine {
|
|||||||
|
|
||||||
var Interface = {
|
var Interface = {
|
||||||
default_data: {
|
default_data: {
|
||||||
left_bar_width: 338,
|
left_bar_width: 332,
|
||||||
right_bar_width: 300,
|
right_bar_width: 300,
|
||||||
quad_view_x: 50,
|
quad_view_x: 50,
|
||||||
quad_view_y: 50,
|
quad_view_y: 50,
|
||||||
left_bar: ['uv', 'textures', 'display', 'animations', 'keyframe', 'variable_placeholders'],
|
left_bar: ['uv', 'textures', 'display', 'animations', 'keyframe', 'variable_placeholders'],
|
||||||
right_bar: ['options', 'outliner']
|
right_bar: ['options', 'color', 'outliner', 'chat']
|
||||||
},
|
},
|
||||||
Resizers: {
|
Resizers: {
|
||||||
left: new ResizeLine({
|
left: new ResizeLine({
|
||||||
@ -256,6 +256,12 @@ function setupInterface() {
|
|||||||
$.extend(true, Interface.data, interface_data)
|
$.extend(true, Interface.data, interface_data)
|
||||||
} catch (err) {}
|
} catch (err) {}
|
||||||
|
|
||||||
|
if (!Language.loading_steps) {
|
||||||
|
Language.loading_steps = true;
|
||||||
|
} else {
|
||||||
|
translateUI()
|
||||||
|
}
|
||||||
|
|
||||||
$('.entity_mode_only').hide()
|
$('.entity_mode_only').hide()
|
||||||
$('.edit_session_active').hide()
|
$('.edit_session_active').hide()
|
||||||
|
|
||||||
@ -349,6 +355,15 @@ function setupInterface() {
|
|||||||
'outliner_toggle'
|
'outliner_toggle'
|
||||||
])
|
])
|
||||||
})
|
})
|
||||||
|
Interface.Panels.chat = new Panel({
|
||||||
|
id: 'chat',
|
||||||
|
condition: function() {return EditSession.active},
|
||||||
|
toolbars: {},
|
||||||
|
onResize: t => {
|
||||||
|
},
|
||||||
|
menu: new Menu([
|
||||||
|
])
|
||||||
|
})
|
||||||
Interface.Panels.animations = new Panel({
|
Interface.Panels.animations = new Panel({
|
||||||
id: 'animations',
|
id: 'animations',
|
||||||
condition: () => Animator.open,
|
condition: () => Animator.open,
|
||||||
@ -442,8 +457,8 @@ function setupInterface() {
|
|||||||
if (ActionControl.open && $('#action_selector').find(event.target).length === 0) {
|
if (ActionControl.open && $('#action_selector').find(event.target).length === 0) {
|
||||||
ActionControl.hide();
|
ActionControl.hide();
|
||||||
}
|
}
|
||||||
if ($(event.target).is('input.cube_name:not([disabled])') === false) {
|
if ($(event.target).is('input.cube_name:not([disabled])') === false && Blockbench.hasFlag('renaming')) {
|
||||||
stopRenameCubes()
|
stopRenameOutliner()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
$('.context_handler').on('click', function() {
|
$('.context_handler').on('click', function() {
|
||||||
|
54
js/io.js
54
js/io.js
@ -3,8 +3,7 @@ function newProject(entity_mode, force) {
|
|||||||
if (force || showSaveDialog()) {
|
if (force || showSaveDialog()) {
|
||||||
if (Toolbox.selected.id !== 'move_tool') BarItems.move_tool.select();
|
if (Toolbox.selected.id !== 'move_tool') BarItems.move_tool.select();
|
||||||
elements.length = 0;
|
elements.length = 0;
|
||||||
TreeElements.length = 1;
|
TreeElements.purge();
|
||||||
TreeElements.splice(0, 1);
|
|
||||||
Canvas.materials.length = 0;
|
Canvas.materials.length = 0;
|
||||||
textures.length = 0;
|
textures.length = 0;
|
||||||
selected.length = 0;
|
selected.length = 0;
|
||||||
@ -24,9 +23,8 @@ function newProject(entity_mode, force) {
|
|||||||
Undo.history.length = 0;
|
Undo.history.length = 0;
|
||||||
Undo.index = 0;
|
Undo.index = 0;
|
||||||
Painter.current = {};
|
Painter.current = {};
|
||||||
Animator.animations.length = 1;
|
Animator.animations.purge();
|
||||||
Animator.selected = undefined;
|
Animator.selected = undefined;
|
||||||
Animator.animations.splice(0, 1);
|
|
||||||
if (entity_mode) {
|
if (entity_mode) {
|
||||||
entityMode.join();
|
entityMode.join();
|
||||||
} else {
|
} else {
|
||||||
@ -836,17 +834,25 @@ var Extruder = {
|
|||||||
},
|
},
|
||||||
startConversion: function() {
|
startConversion: function() {
|
||||||
var scan_mode = $('select#scan_mode option:selected').attr('id') /*areas, lines, columns, pixels*/
|
var scan_mode = $('select#scan_mode option:selected').attr('id') /*areas, lines, columns, pixels*/
|
||||||
var texture = textures[textures.length-1].uuid
|
|
||||||
var isNewProject = elements.length === 0;
|
var isNewProject = elements.length === 0;
|
||||||
|
|
||||||
var jimage = Jimp.read(Extruder.ext_img.src).then(function(image) {
|
var jimage = Jimp.read(Extruder.ext_img.src).then(function(image) {
|
||||||
var pixel_opacity_tolerance = $('#scan_tolerance').val()
|
var pixel_opacity_tolerance = $('#scan_tolerance').val()
|
||||||
|
|
||||||
|
//Undo
|
||||||
|
Undo.initEdit({cubes: selected, outliner: true, textures: []})
|
||||||
|
if (isApp) {
|
||||||
|
var texture = new Texture().fromPath(Extruder.ext_img.src).add(false).fillParticle()
|
||||||
|
} else {
|
||||||
|
var texture = new Texture().fromDataURL(Extruder.ext_img.src).add(false).fillParticle()
|
||||||
|
}
|
||||||
|
|
||||||
//var ext_x, ext_y;
|
//var ext_x, ext_y;
|
||||||
var finished_pixels = {}
|
var finished_pixels = {}
|
||||||
var cube_nr = 0;
|
var cube_nr = 0;
|
||||||
var cube_name = textures[textures.length-1].name.split('.')[0]
|
var cube_name = texture.name.split('.')[0]
|
||||||
selected = []
|
selected.empty()
|
||||||
|
|
||||||
//Scale Index
|
//Scale Index
|
||||||
var scale_i = 1;
|
var scale_i = 1;
|
||||||
if (Extruder.width < Extruder.height) {
|
if (Extruder.width < Extruder.height) {
|
||||||
@ -973,6 +979,9 @@ var Extruder = {
|
|||||||
setProjectTitle(cube_name)
|
setProjectTitle(cube_name)
|
||||||
Prop.project_saved = false;
|
Prop.project_saved = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Undo.finishEdit('add extruded texture', {cubes: selected, outliner: true, textures: [textures[textures.length-1]]})
|
||||||
|
|
||||||
Blockbench.removeFlag('new_project')
|
Blockbench.removeFlag('new_project')
|
||||||
loadOutlinerDraggable()
|
loadOutlinerDraggable()
|
||||||
Canvas.updateAll()
|
Canvas.updateAll()
|
||||||
@ -1721,19 +1730,25 @@ function buildOBJModel(name) {
|
|||||||
return content;
|
return content;
|
||||||
}
|
}
|
||||||
function uploadSketchfabModel() {
|
function uploadSketchfabModel() {
|
||||||
|
if (elements.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
var dialog = new Dialog({
|
var dialog = new Dialog({
|
||||||
id: 'sketchfab_uploader',
|
id: 'sketchfab_uploader',
|
||||||
title: 'Upload Sketchfab Model',
|
title: 'Upload Sketchfab Model',
|
||||||
width: 540,
|
width: 540,
|
||||||
form: {
|
form: {
|
||||||
token: {label: 'dialog.sketchfab_uploader.token', value: settings.sketchfab_token.value},
|
token: {label: 'dialog.sketchfab_uploader.token', value: settings.sketchfab_token.value},
|
||||||
about_token: {type: 'text', text: 'dialog.sketchfab_uploader.about_token'},
|
about_token: {type: 'text', text: tl('dialog.sketchfab_uploader.about_token', ['[sketchfab.com/settings/password](https://sketchfab.com/settings/password)'])},
|
||||||
name: {label: 'dialog.sketchfab_uploader.name'},
|
name: {label: 'dialog.sketchfab_uploader.name'},
|
||||||
description: {label: 'dialog.sketchfab_uploader.description', type: 'textarea'},
|
description: {label: 'dialog.sketchfab_uploader.description', type: 'textarea'},
|
||||||
tags: {label: 'dialog.sketchfab_uploader.tags', placeholder: 'Tag1 Tag2'},
|
tags: {label: 'dialog.sketchfab_uploader.tags', placeholder: 'Tag1 Tag2'},
|
||||||
|
divider: '_',
|
||||||
|
private: {label: 'dialog.sketchfab_uploader.private', type: 'checkbox'},
|
||||||
|
password: {label: 'dialog.sketchfab_uploader.password'},
|
||||||
},
|
},
|
||||||
onConfirm: function(formResult) {
|
onConfirm: function(formResult) {
|
||||||
|
|
||||||
if (formResult.token && !formResult.name) {
|
if (formResult.token && !formResult.name) {
|
||||||
Blockbench.showQuickMessage('message.sketchfab.name_or_token', 1800)
|
Blockbench.showQuickMessage('message.sketchfab.name_or_token', 1800)
|
||||||
return;
|
return;
|
||||||
@ -1746,6 +1761,9 @@ function uploadSketchfabModel() {
|
|||||||
data.append('name', formResult.name)
|
data.append('name', formResult.name)
|
||||||
data.append('description', formResult.description)
|
data.append('description', formResult.description)
|
||||||
data.append('tags', formResult.tags)
|
data.append('tags', formResult.tags)
|
||||||
|
data.append('private', formResult.private)
|
||||||
|
data.append('password', formResult.password)
|
||||||
|
data.append('source', 'blockbench')
|
||||||
|
|
||||||
settings.sketchfab_token.value = formResult.token
|
settings.sketchfab_token.value = formResult.token
|
||||||
|
|
||||||
@ -1909,9 +1927,9 @@ function saveProjectSettings() {
|
|||||||
entityMode.setResolution()
|
entityMode.setResolution()
|
||||||
Undo.finishEdit('changed resolution')
|
Undo.finishEdit('changed resolution')
|
||||||
}
|
}
|
||||||
if (EditSession.active && EditSession.hosting) {
|
}
|
||||||
EditSession.sendAll('change_project_meta', JSON.stringify(Project));
|
if (EditSession.active) {
|
||||||
}
|
EditSession.sendAll('change_project_meta', JSON.stringify(Project));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1986,11 +2004,6 @@ BARS.defineActions(function() {
|
|||||||
readtype: 'image'
|
readtype: 'image'
|
||||||
}, function(files) {
|
}, function(files) {
|
||||||
if (files.length) {
|
if (files.length) {
|
||||||
if (isApp) {
|
|
||||||
new Texture().fromPath(files[0].path).add(false).fillParticle()
|
|
||||||
} else {
|
|
||||||
new Texture().fromDataURL(files[0].content).add(false).fillParticle()
|
|
||||||
}
|
|
||||||
showDialog('image_extruder')
|
showDialog('image_extruder')
|
||||||
Extruder.drawImage(isApp ? files[0].path : files[0].content)
|
Extruder.drawImage(isApp ? files[0].path : files[0].content)
|
||||||
}
|
}
|
||||||
@ -2017,7 +2030,7 @@ BARS.defineActions(function() {
|
|||||||
})
|
})
|
||||||
new Action({
|
new Action({
|
||||||
id: 'export_bbmodel',
|
id: 'export_bbmodel',
|
||||||
icon: 'insert_drive_file',
|
icon: 'icon-blockbench_file',
|
||||||
category: 'file',
|
category: 'file',
|
||||||
click: function () {
|
click: function () {
|
||||||
Blockbench.export({
|
Blockbench.export({
|
||||||
@ -2119,6 +2132,7 @@ BARS.defineActions(function() {
|
|||||||
id: 'export_asset_archive',
|
id: 'export_asset_archive',
|
||||||
icon: 'archive',
|
icon: 'archive',
|
||||||
category: 'file',
|
category: 'file',
|
||||||
|
condition: !isApp,
|
||||||
click: function() {
|
click: function() {
|
||||||
var archive = new JSZip();
|
var archive = new JSZip();
|
||||||
if (Blockbench.entity_mode === false) {
|
if (Blockbench.entity_mode === false) {
|
||||||
@ -2129,7 +2143,7 @@ BARS.defineActions(function() {
|
|||||||
archive.file((Project.name||'model')+'.json', content)
|
archive.file((Project.name||'model')+'.json', content)
|
||||||
textures.forEach(tex => {
|
textures.forEach(tex => {
|
||||||
if (tex.mode === 'bitmap') {
|
if (tex.mode === 'bitmap') {
|
||||||
texfolder.file(pathToName(tex.name) + '.png', tex.source.replace('data:image/png;base64,', ''), {base64: true});
|
archive.file(pathToName(tex.name) + '.png', tex.source.replace('data:image/png;base64,', ''), {base64: true});
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
archive.generateAsync({type: 'blob'}).then(content => {
|
archive.generateAsync({type: 'blob'}).then(content => {
|
||||||
@ -2147,7 +2161,7 @@ BARS.defineActions(function() {
|
|||||||
})
|
})
|
||||||
new Action({
|
new Action({
|
||||||
id: 'upload_sketchfab',
|
id: 'upload_sketchfab',
|
||||||
icon: 'fa-cube',
|
icon: 'icon-sketchfab',
|
||||||
category: 'file',
|
category: 'file',
|
||||||
click: function(ev) {
|
click: function(ev) {
|
||||||
uploadSketchfabModel()
|
uploadSketchfabModel()
|
||||||
|
@ -75,19 +75,13 @@ class Keybind {
|
|||||||
if (this.alt) modifiers.push(tl('keys.alt'))
|
if (this.alt) modifiers.push(tl('keys.alt'))
|
||||||
if (this.meta) modifiers.push(tl('keys.meta'))
|
if (this.meta) modifiers.push(tl('keys.meta'))
|
||||||
|
|
||||||
//if (this.ctrl === null) modifiers.push('[' + tl('keys.ctrl') + ']')
|
var char = this.getCode()
|
||||||
//if (this.shift === null) modifiers.push('[' + tl('keys.shift') + ']')
|
|
||||||
//if (this.alt === null) modifiers.push('[' + tl('keys.alt') + ']')
|
|
||||||
//if (this.meta === null) modifiers.push('[' + tl('keys.meta') + ']')
|
|
||||||
|
|
||||||
var char = this.getCode()//String.fromCharCode(this.code).toLowerCase()
|
|
||||||
var char_tl = tl('keys.'+char)
|
var char_tl = tl('keys.'+char)
|
||||||
if (char_tl === ('keys.'+char)) {
|
if (char_tl === ('keys.'+char)) {
|
||||||
modifiers.push(capitalizeFirstLetter(char))
|
modifiers.push(capitalizeFirstLetter(char))
|
||||||
} else {
|
} else {
|
||||||
modifiers.push(char_tl)
|
modifiers.push(char_tl)
|
||||||
}
|
}
|
||||||
//modifiers.push(capitalizeFirstLetter(String.fromCharCode(this.code)))
|
|
||||||
return modifiers.join(' + ')
|
return modifiers.join(' + ')
|
||||||
}
|
}
|
||||||
getCode(key) {
|
getCode(key) {
|
||||||
@ -227,7 +221,9 @@ onVueSetup(function() {
|
|||||||
$(document).keydown(function(e) {
|
$(document).keydown(function(e) {
|
||||||
if (Keybinds.recording) return;
|
if (Keybinds.recording) return;
|
||||||
//Shift
|
//Shift
|
||||||
holding_shift = e.shiftKey;
|
Pressing.shift = e.shiftKey;
|
||||||
|
Pressing.alt = e.altKey;
|
||||||
|
Pressing.ctrl = e.ctrlKey;
|
||||||
if (e.which === 16) {
|
if (e.which === 16) {
|
||||||
showShiftTooltip()
|
showShiftTooltip()
|
||||||
}
|
}
|
||||||
@ -239,11 +235,17 @@ $(document).keydown(function(e) {
|
|||||||
//User Editing Anything
|
//User Editing Anything
|
||||||
if (Blockbench.hasFlag('renaming')) {
|
if (Blockbench.hasFlag('renaming')) {
|
||||||
if (Keybinds.extra.confirm.keybind.isTriggered(e)) {
|
if (Keybinds.extra.confirm.keybind.isTriggered(e)) {
|
||||||
stopRenameCubes()
|
stopRenameOutliner()
|
||||||
} else if (Keybinds.extra.cancel.keybind.isTriggered(e)) {
|
} else if (Keybinds.extra.cancel.keybind.isTriggered(e)) {
|
||||||
stopRenameCubes(false)
|
stopRenameOutliner(false)
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
if ($('input#chat_input:focus').length && EditSession.active) {
|
||||||
|
if (Keybinds.extra.confirm.keybind.isTriggered(e)) {
|
||||||
|
Chat.send();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (Keybinds.extra.confirm.keybind.isTriggered(e) || Keybinds.extra.cancel.keybind.isTriggered(e)) {
|
if (Keybinds.extra.confirm.keybind.isTriggered(e) || Keybinds.extra.cancel.keybind.isTriggered(e)) {
|
||||||
$(document).click()
|
$(document).click()
|
||||||
@ -311,9 +313,14 @@ $(document).keydown(function(e) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
$(document).keyup(function(e) {
|
$(document).keyup(function(e) {
|
||||||
holding_shift = false;
|
if (Pressing.alt && ActionControl.open) {
|
||||||
|
ActionControl.vue.$forceUpdate()
|
||||||
|
}
|
||||||
if (e.which === 18 && Toolbox.original && Toolbox.original.alt_tool) {
|
if (e.which === 18 && Toolbox.original && Toolbox.original.alt_tool) {
|
||||||
Toolbox.original.select()
|
Toolbox.original.select()
|
||||||
delete Toolbox.original;
|
delete Toolbox.original;
|
||||||
}
|
}
|
||||||
|
Pressing.shift = false;
|
||||||
|
Pressing.alt = false;
|
||||||
|
Pressing.ctrl = false;
|
||||||
})
|
})
|
||||||
|
@ -64,18 +64,15 @@ function loadLanguage() {
|
|||||||
$.ajax({
|
$.ajax({
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
url: 'lang/'+Language+'.json',
|
url: 'lang/'+Language+'.json',
|
||||||
//data: data,
|
|
||||||
//async: false,
|
//async: false,
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
Language.data = data
|
Language.data = data
|
||||||
translateUI()
|
if (!Language.loading_steps) {
|
||||||
|
Language.loading_steps = true;
|
||||||
|
} else {
|
||||||
|
translateUI()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
/*
|
|
||||||
$.getJSON('lang/'+Language.code+'.json', function(data) {
|
|
||||||
Language.data = data
|
|
||||||
translateUI()
|
|
||||||
})
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
loadLanguage()
|
loadLanguage()
|
@ -520,7 +520,7 @@ class BBPainter {
|
|||||||
folder: options.folder ? options.folder : 'blocks'
|
folder: options.folder ? options.folder : 'blocks'
|
||||||
})
|
})
|
||||||
function makeTexture(dataUrl) {
|
function makeTexture(dataUrl) {
|
||||||
texture.fromDataURL(dataUrl)
|
texture.fromDataURL(dataUrl).add(false)
|
||||||
switch (options.particle) {
|
switch (options.particle) {
|
||||||
case 'auto':
|
case 'auto':
|
||||||
texture.fillParticle();
|
texture.fillParticle();
|
||||||
@ -532,12 +532,10 @@ class BBPainter {
|
|||||||
if (typeof after === 'function') {
|
if (typeof after === 'function') {
|
||||||
after(texture)
|
after(texture)
|
||||||
}
|
}
|
||||||
if (options.entity_template) {
|
if (!options.entity_template) {
|
||||||
Undo.finishEdit('create template', {textures: [texture], bitmap: true, cubes: Blockbench.entity_mode ? elements : selected, uv_only: true})
|
|
||||||
} else {
|
|
||||||
Undo.finishEdit('create blank texture', {textures: [texture], bitmap: true})
|
Undo.finishEdit('create blank texture', {textures: [texture], bitmap: true})
|
||||||
}
|
}
|
||||||
return texture.add(false);
|
return texture;
|
||||||
}
|
}
|
||||||
if (options.entity_template === true) {
|
if (options.entity_template === true) {
|
||||||
Undo.initEdit({
|
Undo.initEdit({
|
||||||
@ -861,6 +859,7 @@ class BBPainter {
|
|||||||
t.obj.autouv = 0
|
t.obj.autouv = 0
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Undo.finishEdit('create template', {textures: [texture], bitmap: true, cubes: Blockbench.entity_mode ? elements : selected, uv_only: true})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const Painter = new BBPainter()
|
const Painter = new BBPainter()
|
||||||
|
@ -18,7 +18,7 @@ function settingSetup() {
|
|||||||
brightness: {category: 'preview', value: 50, type: 'number'},
|
brightness: {category: 'preview', value: 50, type: 'number'},
|
||||||
shading: {category: 'preview', value: true},
|
shading: {category: 'preview', value: true},
|
||||||
transparency: {category: 'preview', value: true},
|
transparency: {category: 'preview', value: true},
|
||||||
outliner_colors: {category: 'preview', value: true},
|
outliner_colors: {category: 'preview', value: false},
|
||||||
texture_fps: {category: 'preview', value: 2, type: 'number'},
|
texture_fps: {category: 'preview', value: 2, type: 'number'},
|
||||||
display_skin: {category: 'preview', value: false, type: 'click', condition: isApp, icon: 'icon-player', click: function() { changeDisplaySkin() }},
|
display_skin: {category: 'preview', value: false, type: 'click', condition: isApp, icon: 'icon-player', click: function() { changeDisplaySkin() }},
|
||||||
//Edit
|
//Edit
|
||||||
|
@ -990,13 +990,6 @@ BARS.defineActions(function() {
|
|||||||
condition: () => Blockbench.entity_mode,
|
condition: () => Blockbench.entity_mode,
|
||||||
click: function () {toggleCubeProperty('shade')}
|
click: function () {toggleCubeProperty('shade')}
|
||||||
})
|
})
|
||||||
new Action({
|
|
||||||
id: 'rename',
|
|
||||||
icon: 'text_format',
|
|
||||||
category: 'transform',
|
|
||||||
keybind: new Keybind({key: 113}),
|
|
||||||
click: function () {renameCubes()}
|
|
||||||
})
|
|
||||||
new Action({
|
new Action({
|
||||||
id: 'update_autouv',
|
id: 'update_autouv',
|
||||||
icon: 'brightness_auto',
|
icon: 'brightness_auto',
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
template:
|
template:
|
||||||
'<li class="outliner_node" v-bind:class="{ parent_li: node.children && node.children.length > 0}" v-bind:id="node.uuid">' +
|
'<li class="outliner_node" v-bind:class="{ parent_li: node.children && node.children.length > 0}" v-bind:id="node.uuid">' +
|
||||||
`<div @contextmenu.prevent.stop="node.showContextMenu($event)"
|
`<div @contextmenu.prevent.stop="node.showContextMenu($event)"
|
||||||
class="outliner_object" v-on:dblclick="node.rename($event)"
|
class="outliner_object" v-on:dblclick="renameOutliner()"
|
||||||
v-on:click="node.select($event, true)" v-on:touchstart="node.select($event)" :title="node.title"
|
v-on:click="node.select($event, true)" v-on:touchstart="node.select($event)" :title="node.title"
|
||||||
v-bind:class="{ cube: node.type === \'cube\', group: node.type === \'group\', selected: node.selected }"
|
v-bind:class="{ cube: node.type === \'cube\', group: node.type === \'group\', selected: node.selected }"
|
||||||
v-bind:style="{'padding-left': (node.getDepth ? limitNumber(node.getDepth(), 0, (Interface.Panels.outliner.width-124) / 20) * 20 : 0)+'px'}"
|
v-bind:style="{'padding-left': (node.getDepth ? limitNumber(node.getDepth(), 0, (Interface.Panels.outliner.width-124) / 20) * 20 : 0)+'px'}"
|
||||||
|
11
js/util.js
11
js/util.js
@ -81,7 +81,11 @@ var asyncLoop = function(o){
|
|||||||
}
|
}
|
||||||
async_loop();//init
|
async_loop();//init
|
||||||
}
|
}
|
||||||
// 1234567890qwertzuiopuasdfghjklyxcvbn
|
Date.prototype.getTimestamp = function() {
|
||||||
|
var l2 = i => (i.toString().length === 1 ? '0'+i : i);
|
||||||
|
return l2(this.getHours()) + ':' + l2(this.getMinutes());
|
||||||
|
}
|
||||||
|
|
||||||
//Jquery
|
//Jquery
|
||||||
$.fn.deepest = function() {
|
$.fn.deepest = function() {
|
||||||
if (!this.length) return this;
|
if (!this.length) return this;
|
||||||
@ -251,6 +255,11 @@ Array.prototype.empty = function() {
|
|||||||
this.length = 0;
|
this.length = 0;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
Array.prototype.purge = function() {
|
||||||
|
this.length = Math.clamp(this.length, 0, 1);
|
||||||
|
this.splice(0, 1)
|
||||||
|
return this;
|
||||||
|
}
|
||||||
Array.prototype.findInArray = function(key, value) {
|
Array.prototype.findInArray = function(key, value) {
|
||||||
for (var i = 0; i < this.length; i++) {
|
for (var i = 0; i < this.length; i++) {
|
||||||
if (this[i][key] === value) return this[i]
|
if (this[i][key] === value) return this[i]
|
||||||
|
31
js/uv.js
31
js/uv.js
@ -612,8 +612,9 @@ class UVEditor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.grid = grid
|
this.grid = grid
|
||||||
|
var pixels = this.inner_size / this.grid;
|
||||||
if (Blockbench.entity_mode === false) {
|
if (Blockbench.entity_mode === false) {
|
||||||
this.jquery.size.resizable('option', 'grid', [this.getPixelSize(), this.getPixelSize()])
|
this.jquery.size.resizable('option', 'grid', [pixels, pixels])
|
||||||
}
|
}
|
||||||
if (load !== false) this.loadData()
|
if (load !== false) this.loadData()
|
||||||
}
|
}
|
||||||
@ -685,7 +686,7 @@ class UVEditor {
|
|||||||
}
|
}
|
||||||
save() {
|
save() {
|
||||||
var scope = this;
|
var scope = this;
|
||||||
//Save UV from Frame to object!!
|
//Save UV from Frame to object
|
||||||
|
|
||||||
if (Blockbench.entity_mode) {
|
if (Blockbench.entity_mode) {
|
||||||
|
|
||||||
@ -701,10 +702,11 @@ class UVEditor {
|
|||||||
var trim = v => Math.round(v*1000+0.3)/1000;
|
var trim = v => Math.round(v*1000+0.3)/1000;
|
||||||
var pixelSize = this.inner_size/16
|
var pixelSize = this.inner_size/16
|
||||||
|
|
||||||
var left = trim( this.jquery.size.position().left / pixelSize);
|
var position = this.jquery.size.position()
|
||||||
var top = trim( this.jquery.size.position().top / pixelSize * (Project.texture_width/Project.texture_height));
|
var left = trim( position.left / pixelSize);
|
||||||
var left2= Math.clamp(trim( Math.round(this.jquery.size.width()) / pixelSize + left), 0, 16);
|
var top = trim( position.top / pixelSize * (Project.texture_width/Project.texture_height));
|
||||||
var top2 = Math.clamp(trim( Math.round(this.jquery.size.height()) / pixelSize + top), 0, 16);
|
var left2= Math.clamp(trim( (this.jquery.size.width() + position.left) / pixelSize), 0, 16);
|
||||||
|
var top2 = Math.clamp(trim( (this.jquery.size.height() + position.top) / pixelSize), 0, 16);
|
||||||
|
|
||||||
var uvTag = this.getUVTag()
|
var uvTag = this.getUVTag()
|
||||||
|
|
||||||
@ -1518,7 +1520,11 @@ const uv_dialog = {
|
|||||||
uv_dialog.updateSelection()
|
uv_dialog.updateSelection()
|
||||||
},
|
},
|
||||||
selectAll: function() {
|
selectAll: function() {
|
||||||
uv_dialog.selection = ['north', 'south', 'west', 'east', 'up', 'down']
|
if (uv_dialog.selection.length === 6) {
|
||||||
|
uv_dialog.selection.empty()
|
||||||
|
} else {
|
||||||
|
uv_dialog.selection = uv_dialog.allFaces.slice()
|
||||||
|
}
|
||||||
uv_dialog.updateSelection()
|
uv_dialog.updateSelection()
|
||||||
},
|
},
|
||||||
selectNone: function() {
|
selectNone: function() {
|
||||||
@ -1626,7 +1632,7 @@ const uv_dialog = {
|
|||||||
}
|
}
|
||||||
if (uv_dialog.single) {
|
if (uv_dialog.single) {
|
||||||
var menu_gap = Blockbench.entity_mode ? 66 : 154
|
var menu_gap = Blockbench.entity_mode ? 66 : 154
|
||||||
var editor_size = size.x
|
var editor_size = size.x-16
|
||||||
size.y = (size.y - menu_gap) * (Blockbench.entity_mode ? Project.texture_width/Project.texture_height : 1)
|
size.y = (size.y - menu_gap) * (Blockbench.entity_mode ? Project.texture_width/Project.texture_height : 1)
|
||||||
if (size.x > size.y) {
|
if (size.x > size.y) {
|
||||||
editor_size = size.y
|
editor_size = size.y
|
||||||
@ -1794,6 +1800,15 @@ BARS.defineActions(function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
new Action({
|
||||||
|
id: 'uv_select_all',
|
||||||
|
icon: 'view_module',
|
||||||
|
category: 'uv',
|
||||||
|
condition: () => open_dialog === 'uv_dialog',
|
||||||
|
click: uv_dialog.selectAll
|
||||||
|
})
|
||||||
|
|
||||||
new Action({
|
new Action({
|
||||||
id: 'uv_maximize',
|
id: 'uv_maximize',
|
||||||
icon: 'zoom_out_map',
|
icon: 'zoom_out_map',
|
||||||
|
@ -101,6 +101,9 @@ window.onbeforeunload = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
function showSaveDialog(close) {
|
function showSaveDialog(close) {
|
||||||
|
function beforeClosing() {
|
||||||
|
EditSession.quit()
|
||||||
|
}
|
||||||
var unsaved_textures = 0;
|
var unsaved_textures = 0;
|
||||||
textures.forEach(function(t) {
|
textures.forEach(function(t) {
|
||||||
if (!t.saved) {
|
if (!t.saved) {
|
||||||
@ -114,11 +117,13 @@ function showSaveDialog(close) {
|
|||||||
if (close) {
|
if (close) {
|
||||||
//preventClosing = false
|
//preventClosing = false
|
||||||
}
|
}
|
||||||
|
beforeClosing()
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
beforeClosing()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
60
lang/de.json
60
lang/de.json
@ -817,7 +817,9 @@
|
|||||||
"action.open_backup_folder": "Backup-Ordner öffnen",
|
"action.open_backup_folder": "Backup-Ordner öffnen",
|
||||||
"action.open_backup_folder.desc": "Öffnet den Backup-Ordner von Blockbench",
|
"action.open_backup_folder.desc": "Öffnet den Backup-Ordner von Blockbench",
|
||||||
"switches.mirror": "UV Spiegeln",
|
"switches.mirror": "UV Spiegeln",
|
||||||
"language_name": "Deutsch",
|
"Name of the Language you are editing, NOT English": {
|
||||||
|
"language_name": "Deutsch"
|
||||||
|
},
|
||||||
"message.plugin_reload": "%0 lokale Plugins wurden neugeladen",
|
"message.plugin_reload": "%0 lokale Plugins wurden neugeladen",
|
||||||
"settings.brightness": "Helligkeit",
|
"settings.brightness": "Helligkeit",
|
||||||
"settings.brightness.desc": "Helligkeit der Vorschau. Standardwert ist 50",
|
"settings.brightness.desc": "Helligkeit der Vorschau. Standardwert ist 50",
|
||||||
@ -856,7 +858,7 @@
|
|||||||
"message.sketchfab.name_or_token": "Bitte gebe deinen Sketchfab Schlüssel und einen Namen ein",
|
"message.sketchfab.name_or_token": "Bitte gebe deinen Sketchfab Schlüssel und einen Namen ein",
|
||||||
"dialog.sketchfab_uploader.title": "Modell auf Sketchfab hochladen",
|
"dialog.sketchfab_uploader.title": "Modell auf Sketchfab hochladen",
|
||||||
"dialog.sketchfab_uploader.token": "API Schlüssel",
|
"dialog.sketchfab_uploader.token": "API Schlüssel",
|
||||||
"dialog.sketchfab_uploader.about_token": "Der Schlüssel wird benötigt, um Blockbench mit deinem Sketchfab Account zu verbinden. Du findest ihn unter sketchfab.com/settings/password",
|
"dialog.sketchfab_uploader.about_token": "Der Schlüssel wird benötigt, um Blockbench mit deinem Sketchfab Account zu verbinden. Du findest ihn unter %0",
|
||||||
"dialog.sketchfab_uploader.name": "Name",
|
"dialog.sketchfab_uploader.name": "Name",
|
||||||
"dialog.sketchfab_uploader.description": "Beschreibung",
|
"dialog.sketchfab_uploader.description": "Beschreibung",
|
||||||
"dialog.sketchfab_uploader.tags": "Tags",
|
"dialog.sketchfab_uploader.tags": "Tags",
|
||||||
@ -876,28 +878,36 @@
|
|||||||
"texture.error.ratio": "Ungültiges Seitenverhältnis",
|
"texture.error.ratio": "Ungültiges Seitenverhältnis",
|
||||||
"texture.error.parent": "Textur durch Elternmodell",
|
"texture.error.parent": "Textur durch Elternmodell",
|
||||||
"message.recover_backup.title": "Modell wiederherstellen",
|
"message.recover_backup.title": "Modell wiederherstellen",
|
||||||
"message.recover_backup.message": "Blockbench was closed without saving. Do you want to recover the model?",
|
"message.recover_backup.message": "Blockbench wurde ohne zu speichern geschlossen. Möchtest do das Modell wiederherstellen?",
|
||||||
"message.install_plugin": "Installing the plugin %0",
|
"message.install_plugin": "Installiere das Plugin %0",
|
||||||
"message.invalid_session.title": "Invalid Session Token",
|
"message.invalid_session.title": "Ungültiger Schlüssel",
|
||||||
"message.invalid_session.message": "The session you are trying to join has expired or the token provided is invalid.",
|
"message.invalid_session.message": "Die Session ist abgelaufen oder der angegebene Schlüssel ist ungültig",
|
||||||
"dialog.create_texture.power": "Power-of-2 Size",
|
"dialog.create_texture.power": "2-Quadrat Größe",
|
||||||
"dialog.create_gif.turn": "Turntable Speed",
|
"dialog.create_gif.turn": "Drehgeschwindigkeit",
|
||||||
"action.edit_session": "Edit Session...",
|
"action.edit_session": "Zusammenarbeiten...",
|
||||||
"action.edit_session.desc": "Connect to an edit session to collaborate with other users",
|
"action.edit_session.desc": "Mit einer Session verbinden, um mit anderen zusammenzuarbeiten",
|
||||||
"action.reset_keyframe": "Reset Keyframe",
|
"action.reset_keyframe": "Keyframe zurücksetzen",
|
||||||
"action.reset_keyframe.desc": "Reset all values of the selected keyframes",
|
"action.reset_keyframe.desc": "Alle Werte der ausgewählten Keyframes zurücksetzen",
|
||||||
"panel.options.origin": "Origin",
|
"panel.options.origin": "Angelpunkt",
|
||||||
"dialog.edit_session.title": "Edit Session",
|
"dialog.edit_session.title": "Zusammenarbeiten",
|
||||||
"edit_session.username": "Username",
|
"edit_session.username": "Name",
|
||||||
"edit_session.token": "Token",
|
"edit_session.token": "Schlüssel",
|
||||||
"edit_session.about": "Edit Sessions can be used to collaborate on models across the internet. Create a session and copy the token and send it to friends, who can then use it to join.",
|
"edit_session.about": "Mit Sessions kann über das Internet zusammen an Modellen gearbeitet werden. Erstelle eine Session, kopiere den Schlüssel und schicke ihn an Freunde. Diese können damit deiner Session beitreten.",
|
||||||
"edit_session.join": "Join Session",
|
"edit_session.join": "Session beitreten",
|
||||||
"edit_session.create": "Create Session",
|
"edit_session.create": "Session erstellen",
|
||||||
"edit_session.quit": "Quit Session",
|
"edit_session.quit": "Session verlassen",
|
||||||
"edit_session.joined": "User %0 joined the session",
|
"edit_session.joined": "%0 ist der Session beigetreten",
|
||||||
"edit_session.left": "User %0 left the session",
|
"edit_session.left": "%0 hat die Session verladden",
|
||||||
"edit_session.quit_session": "Left current session",
|
"edit_session.quit_session": "Session verlassen",
|
||||||
"edit_session.status": "Status",
|
"edit_session.status": "Status",
|
||||||
"edit_session.hosting": "Hosting",
|
"edit_session.hosting": "Eine Session betreibend",
|
||||||
"edit_session.connected": "Connected to a session"
|
"edit_session.connected": "Mit Session verbunden",
|
||||||
|
"dialog.sketchfab_uploader.private": "Privat (Pro)",
|
||||||
|
"dialog.sketchfab_uploader.password": "Passwort (Pro)",
|
||||||
|
"action.toggle_chat": "Chat ein/ausblenden",
|
||||||
|
"action.toggle_chat.desc": "Blende den Chat ein oder aus",
|
||||||
|
"action.uv_select_all": "Alle auswählen",
|
||||||
|
"action.uv_select_all.desc": "Alle Oberflächen im UV Dialog auswählen",
|
||||||
|
"panel.chat": "Chat",
|
||||||
|
"edit_session.welcome": "Willkommen in der Sitzung von %0"
|
||||||
}
|
}
|
20
lang/en.json
20
lang/en.json
@ -272,10 +272,12 @@
|
|||||||
|
|
||||||
"dialog.sketchfab_uploader.title": "Upload Sketchfab Model",
|
"dialog.sketchfab_uploader.title": "Upload Sketchfab Model",
|
||||||
"dialog.sketchfab_uploader.token": "API Token",
|
"dialog.sketchfab_uploader.token": "API Token",
|
||||||
"dialog.sketchfab_uploader.about_token": "The token is used to connect Blockbench to your Sketchfab account. You can find it on sketchfab.com/settings/password",
|
"dialog.sketchfab_uploader.about_token": "The token is used to connect Blockbench to your Sketchfab account. You can find it on %0",
|
||||||
"dialog.sketchfab_uploader.name": "Model Name",
|
"dialog.sketchfab_uploader.name": "Model Name",
|
||||||
"dialog.sketchfab_uploader.description": "Description",
|
"dialog.sketchfab_uploader.description": "Description",
|
||||||
"dialog.sketchfab_uploader.tags": "Tags",
|
"dialog.sketchfab_uploader.tags": "Tags",
|
||||||
|
"dialog.sketchfab_uploader.private": "Private (Pro)",
|
||||||
|
"dialog.sketchfab_uploader.password": "Password (Pro)",
|
||||||
|
|
||||||
"dialog.settings.settings": "Settings",
|
"dialog.settings.settings": "Settings",
|
||||||
"dialog.settings.keybinds": "Keybindings",
|
"dialog.settings.keybinds": "Keybindings",
|
||||||
@ -541,8 +543,8 @@
|
|||||||
"action.extrude_texture.desc": "Generate a model by stretching out a texture",
|
"action.extrude_texture.desc": "Generate a model by stretching out a texture",
|
||||||
"action.export_blockmodel": "Export Blockmodel",
|
"action.export_blockmodel": "Export Blockmodel",
|
||||||
"action.export_blockmodel.desc": "Export a Minecraft block or item model",
|
"action.export_blockmodel.desc": "Export a Minecraft block or item model",
|
||||||
"action.export_bbmodel": "Export Blockbench Project",
|
"action.export_bbmodel": "Save Project",
|
||||||
"action.export_bbmodel.desc": "Export a Blockbench project with all cubes, textures and animations",
|
"action.export_bbmodel.desc": "Save a Blockbench project with all cubes, textures and animations",
|
||||||
"action.export_asset_archive": "Download Archive",
|
"action.export_asset_archive": "Download Archive",
|
||||||
"action.export_asset_archive.desc": "Download an archive with the model and all textures in it",
|
"action.export_asset_archive.desc": "Download an archive with the model and all textures in it",
|
||||||
"action.export_entity": "Export Bedrock Entity",
|
"action.export_entity": "Export Bedrock Entity",
|
||||||
@ -571,6 +573,8 @@
|
|||||||
"action.action_control.desc": "Search and execute any available action",
|
"action.action_control.desc": "Search and execute any available action",
|
||||||
"action.edit_session": "Edit Session...",
|
"action.edit_session": "Edit Session...",
|
||||||
"action.edit_session.desc": "Connect to an edit session to collaborate with other users",
|
"action.edit_session.desc": "Connect to an edit session to collaborate with other users",
|
||||||
|
"action.toggle_chat": "Toggle Chat",
|
||||||
|
"action.toggle_chat.desc": "Toggle the visibility of the chat history",
|
||||||
|
|
||||||
"action.reset_keybindings": "Reset Keybindings",
|
"action.reset_keybindings": "Reset Keybindings",
|
||||||
"action.reset_keybindings.desc": "Reset all keybindings to Blockbench's defaults",
|
"action.reset_keybindings.desc": "Reset all keybindings to Blockbench's defaults",
|
||||||
@ -729,8 +733,10 @@
|
|||||||
"action.bone_reset_toggle": "Reset Bone",
|
"action.bone_reset_toggle": "Reset Bone",
|
||||||
"action.bone_reset_toggle.desc": "Stop the bone from displaying cubes from the parent model",
|
"action.bone_reset_toggle.desc": "Stop the bone from displaying cubes from the parent model",
|
||||||
"action.reload": "Reload Blockbench",
|
"action.reload": "Reload Blockbench",
|
||||||
"action.reload.desc": "Reload Blockbench. This will remove all unsaved progress",
|
"action.reload.desc": "Reload Blockbench. This will void all unsaved progress",
|
||||||
|
|
||||||
|
"action.uv_select_all": "Select All",
|
||||||
|
"action.uv_select_all.desc": "Select all faces in the UV dialog",
|
||||||
"action.uv_rotation": "UV Rotation",
|
"action.uv_rotation": "UV Rotation",
|
||||||
"action.uv_rotation.desc": "Rotation of the UV face",
|
"action.uv_rotation.desc": "Rotation of the UV face",
|
||||||
"action.uv_grid": "UV Grid",
|
"action.uv_grid": "UV Grid",
|
||||||
@ -899,6 +905,7 @@
|
|||||||
"panel.textures": "Textures",
|
"panel.textures": "Textures",
|
||||||
"panel.color": "Color",
|
"panel.color": "Color",
|
||||||
"panel.outliner": "Outliner",
|
"panel.outliner": "Outliner",
|
||||||
|
"panel.chat": "Chat",
|
||||||
"panel.animations": "Animations",
|
"panel.animations": "Animations",
|
||||||
"panel.keyframe": "Keyframe",
|
"panel.keyframe": "Keyframe",
|
||||||
"panel.keyframe.type": "Keyframe (%0)",
|
"panel.keyframe.type": "Keyframe (%0)",
|
||||||
@ -949,8 +956,9 @@
|
|||||||
"edit_session.join": "Join Session",
|
"edit_session.join": "Join Session",
|
||||||
"edit_session.create": "Create Session",
|
"edit_session.create": "Create Session",
|
||||||
"edit_session.quit": "Quit Session",
|
"edit_session.quit": "Quit Session",
|
||||||
"edit_session.joined": "User %0 joined the session",
|
"edit_session.joined": "%0 joined the session",
|
||||||
"edit_session.left": "User %0 left the session",
|
"edit_session.left": "%0 left the session",
|
||||||
|
"edit_session.welcome": "Welcome to this session by %0",
|
||||||
"edit_session.quit_session": "Left current session",
|
"edit_session.quit_session": "Left current session",
|
||||||
"edit_session.status": "Status",
|
"edit_session.status": "Status",
|
||||||
"edit_session.hosting": "Hosting",
|
"edit_session.hosting": "Hosting",
|
||||||
|
62
lang/es.json
62
lang/es.json
@ -817,7 +817,9 @@
|
|||||||
"action.open_backup_folder": "Abrir Carpeta de Backups",
|
"action.open_backup_folder": "Abrir Carpeta de Backups",
|
||||||
"action.open_backup_folder.desc": "Abre la carpeta de backups de Blockbench",
|
"action.open_backup_folder.desc": "Abre la carpeta de backups de Blockbench",
|
||||||
"switches.mirror": "Invertir UV",
|
"switches.mirror": "Invertir UV",
|
||||||
"language_name": "Inglés",
|
"Name of the Language you are editing, NOT English": {
|
||||||
|
"language_name": "English"
|
||||||
|
},
|
||||||
"message.plugin_reload": "Recargados %0 plugins locales",
|
"message.plugin_reload": "Recargados %0 plugins locales",
|
||||||
"settings.brightness": "Brillo",
|
"settings.brightness": "Brillo",
|
||||||
"settings.brightness.desc": "Brillo de la previsualización. Por defecto es 50",
|
"settings.brightness.desc": "Brillo de la previsualización. Por defecto es 50",
|
||||||
@ -856,7 +858,7 @@
|
|||||||
"message.sketchfab.name_or_token": "Por favor, introduce tu token de Sketchfab y un nombre",
|
"message.sketchfab.name_or_token": "Por favor, introduce tu token de Sketchfab y un nombre",
|
||||||
"dialog.sketchfab_uploader.title": "Subir Modelo de Sketchfab",
|
"dialog.sketchfab_uploader.title": "Subir Modelo de Sketchfab",
|
||||||
"dialog.sketchfab_uploader.token": "Token de API",
|
"dialog.sketchfab_uploader.token": "Token de API",
|
||||||
"dialog.sketchfab_uploader.about_token": "El token es usado para conectar Blockbench a tu cuenta de Sketchfab. Puedes encontrarlo en sketchfab.com/settings/password",
|
"dialog.sketchfab_uploader.about_token": "El token es usado para conectar Blockbench a tu cuenta de Sketchfab. Puedes encontrarlo en %0",
|
||||||
"dialog.sketchfab_uploader.name": "Nombre del Modelo",
|
"dialog.sketchfab_uploader.name": "Nombre del Modelo",
|
||||||
"dialog.sketchfab_uploader.description": "Descripción",
|
"dialog.sketchfab_uploader.description": "Descripción",
|
||||||
"dialog.sketchfab_uploader.tags": "Etiquetas",
|
"dialog.sketchfab_uploader.tags": "Etiquetas",
|
||||||
@ -875,29 +877,37 @@
|
|||||||
"texture.error.invalid": "Archivo inválido",
|
"texture.error.invalid": "Archivo inválido",
|
||||||
"texture.error.ratio": "Aspecto de ratio inválido",
|
"texture.error.ratio": "Aspecto de ratio inválido",
|
||||||
"texture.error.parent": "Archivo de textura proveído por el modelo padre",
|
"texture.error.parent": "Archivo de textura proveído por el modelo padre",
|
||||||
"message.recover_backup.title": "Recover Model",
|
"message.recover_backup.title": "Recuperar Modelo",
|
||||||
"message.recover_backup.message": "Blockbench was closed without saving. Do you want to recover the model?",
|
"message.recover_backup.message": "Blockbench fue cerrado sin guardar. ¿Quieres recuperar el modelo?",
|
||||||
"message.install_plugin": "Installing the plugin %0",
|
"message.install_plugin": "Instalando el plugin %0",
|
||||||
"message.invalid_session.title": "Invalid Session Token",
|
"message.invalid_session.title": "Token de Sesión Inválido",
|
||||||
"message.invalid_session.message": "The session you are trying to join has expired or the token provided is invalid.",
|
"message.invalid_session.message": "La sesión a la que estas intentando entrar ha expirado o el token proveído es inválido.",
|
||||||
"dialog.create_texture.power": "Power-of-2 Size",
|
"dialog.create_texture.power": "Tamaño Al Cuadrado",
|
||||||
"dialog.create_gif.turn": "Turntable Speed",
|
"dialog.create_gif.turn": "Velocidad del Tocadiscos",
|
||||||
"action.edit_session": "Edit Session...",
|
"action.edit_session": "Editar sesión...",
|
||||||
"action.edit_session.desc": "Connect to an edit session to collaborate with other users",
|
"action.edit_session.desc": "Conectarse a una sesión de edición para colaborar con otros usuarios",
|
||||||
"action.reset_keyframe": "Reset Keyframe",
|
"action.reset_keyframe": "Resetear Frames Clave",
|
||||||
"action.reset_keyframe.desc": "Reset all values of the selected keyframes",
|
"action.reset_keyframe.desc": "Resetea todos los valores de los frames clave seleccionados",
|
||||||
"panel.options.origin": "Origin",
|
"panel.options.origin": "Origen",
|
||||||
"dialog.edit_session.title": "Edit Session",
|
"dialog.edit_session.title": "Editar Sesión",
|
||||||
"edit_session.username": "Username",
|
"edit_session.username": "Nombre de Usuario",
|
||||||
"edit_session.token": "Token",
|
"edit_session.token": "Token",
|
||||||
"edit_session.about": "Edit Sessions can be used to collaborate on models across the internet. Create a session and copy the token and send it to friends, who can then use it to join.",
|
"edit_session.about": "Editar Sesiones puede ser utilizado para colaborar en modelos a través de Internet. Crea una sesión, copia el token y mándaselo a amigos, los cuales lo pueden usar para entrar.",
|
||||||
"edit_session.join": "Join Session",
|
"edit_session.join": "Entrar a Sesión",
|
||||||
"edit_session.create": "Create Session",
|
"edit_session.create": "Crear Sesión",
|
||||||
"edit_session.quit": "Quit Session",
|
"edit_session.quit": "Salir de Sesión",
|
||||||
"edit_session.joined": "User %0 joined the session",
|
"edit_session.joined": "Usuario %0 ha entrado la sesión",
|
||||||
"edit_session.left": "User %0 left the session",
|
"edit_session.left": "Usuario %0 ha salido de la sesión",
|
||||||
"edit_session.quit_session": "Left current session",
|
"edit_session.quit_session": "Salir de la sesión actual",
|
||||||
"edit_session.status": "Status",
|
"edit_session.status": "Estado",
|
||||||
"edit_session.hosting": "Hosting",
|
"edit_session.hosting": "Anfitrión",
|
||||||
"edit_session.connected": "Connected to a session"
|
"edit_session.connected": "Conectado a una sesión",
|
||||||
|
"dialog.sketchfab_uploader.private": "Private (Pro)",
|
||||||
|
"dialog.sketchfab_uploader.password": "Password (Pro)",
|
||||||
|
"action.toggle_chat": "Toggle Chat",
|
||||||
|
"action.toggle_chat.desc": "Toggle the visibility of the chat history",
|
||||||
|
"action.uv_select_all": "Select All",
|
||||||
|
"action.uv_select_all.desc": "Select all faces in the UV dialog",
|
||||||
|
"panel.chat": "Chat",
|
||||||
|
"edit_session.welcome": "Welcome to this session by %0"
|
||||||
}
|
}
|
20
lang/fr.json
20
lang/fr.json
@ -817,7 +817,9 @@
|
|||||||
"action.open_backup_folder": "Ouvrir le dossier de sauvegarde",
|
"action.open_backup_folder": "Ouvrir le dossier de sauvegarde",
|
||||||
"action.open_backup_folder.desc": "Ouvre le dossier de sauvegarde de Blockbench",
|
"action.open_backup_folder.desc": "Ouvre le dossier de sauvegarde de Blockbench",
|
||||||
"switches.mirror": "Miroir UV",
|
"switches.mirror": "Miroir UV",
|
||||||
"language_name": "Anglais",
|
"Name of the Language you are editing, NOT English": {
|
||||||
|
"language_name": "English"
|
||||||
|
},
|
||||||
"message.plugin_reload": "Recharger %0 plugins locaux",
|
"message.plugin_reload": "Recharger %0 plugins locaux",
|
||||||
"settings.brightness": "Luminosité",
|
"settings.brightness": "Luminosité",
|
||||||
"settings.brightness.desc": "Luminosité de l'aperçu. La valeur par défaut est 50",
|
"settings.brightness.desc": "Luminosité de l'aperçu. La valeur par défaut est 50",
|
||||||
@ -856,7 +858,7 @@
|
|||||||
"message.sketchfab.name_or_token": "Please enter your Sketchfab token and a name",
|
"message.sketchfab.name_or_token": "Please enter your Sketchfab token and a name",
|
||||||
"dialog.sketchfab_uploader.title": "Upload Sketchfab Model",
|
"dialog.sketchfab_uploader.title": "Upload Sketchfab Model",
|
||||||
"dialog.sketchfab_uploader.token": "API Token",
|
"dialog.sketchfab_uploader.token": "API Token",
|
||||||
"dialog.sketchfab_uploader.about_token": "The token is used to connect Blockbench to your Sketchfab account. You can find it on sketchfab.com/settings/password",
|
"dialog.sketchfab_uploader.about_token": "The token is used to connect Blockbench to your Sketchfab account. You can find it on %0",
|
||||||
"dialog.sketchfab_uploader.name": "Model Name",
|
"dialog.sketchfab_uploader.name": "Model Name",
|
||||||
"dialog.sketchfab_uploader.description": "Description",
|
"dialog.sketchfab_uploader.description": "Description",
|
||||||
"dialog.sketchfab_uploader.tags": "Tags",
|
"dialog.sketchfab_uploader.tags": "Tags",
|
||||||
@ -894,10 +896,18 @@
|
|||||||
"edit_session.join": "Join Session",
|
"edit_session.join": "Join Session",
|
||||||
"edit_session.create": "Create Session",
|
"edit_session.create": "Create Session",
|
||||||
"edit_session.quit": "Quit Session",
|
"edit_session.quit": "Quit Session",
|
||||||
"edit_session.joined": "User %0 joined the session",
|
"edit_session.joined": "%0 joined the session",
|
||||||
"edit_session.left": "User %0 left the session",
|
"edit_session.left": "%0 left the session",
|
||||||
"edit_session.quit_session": "Left current session",
|
"edit_session.quit_session": "Left current session",
|
||||||
"edit_session.status": "Status",
|
"edit_session.status": "Status",
|
||||||
"edit_session.hosting": "Hosting",
|
"edit_session.hosting": "Hosting",
|
||||||
"edit_session.connected": "Connected to a session"
|
"edit_session.connected": "Connected to a session",
|
||||||
|
"dialog.sketchfab_uploader.private": "Private (Pro)",
|
||||||
|
"dialog.sketchfab_uploader.password": "Password (Pro)",
|
||||||
|
"action.toggle_chat": "Toggle Chat",
|
||||||
|
"action.toggle_chat.desc": "Toggle the visibility of the chat history",
|
||||||
|
"action.uv_select_all": "Select All",
|
||||||
|
"action.uv_select_all.desc": "Select all faces in the UV dialog",
|
||||||
|
"panel.chat": "Chat",
|
||||||
|
"edit_session.welcome": "Welcome to this session by %0"
|
||||||
}
|
}
|
24
lang/ja.json
24
lang/ja.json
@ -817,7 +817,9 @@
|
|||||||
"action.open_backup_folder": "バックアップフォルダーを開く",
|
"action.open_backup_folder": "バックアップフォルダーを開く",
|
||||||
"action.open_backup_folder.desc": "Blockbenchのバックアップフォルダーを開きます",
|
"action.open_backup_folder.desc": "Blockbenchのバックアップフォルダーを開きます",
|
||||||
"switches.mirror": "ミラーUV",
|
"switches.mirror": "ミラーUV",
|
||||||
"language_name": "English",
|
"Name of the Language you are editing, NOT English": {
|
||||||
|
"language_name": "English"
|
||||||
|
},
|
||||||
"message.plugin_reload": "Reloaded %0 local plugins",
|
"message.plugin_reload": "Reloaded %0 local plugins",
|
||||||
"settings.brightness": "輝度",
|
"settings.brightness": "輝度",
|
||||||
"settings.brightness.desc": "Brightness of the preview. Default is 50",
|
"settings.brightness.desc": "Brightness of the preview. Default is 50",
|
||||||
@ -848,15 +850,15 @@
|
|||||||
"action.next_keyframe.desc": "Jump to the next keyframe",
|
"action.next_keyframe.desc": "Jump to the next keyframe",
|
||||||
"message.outdated_client.title": "Outdated client",
|
"message.outdated_client.title": "Outdated client",
|
||||||
"message.outdated_client.message": "Please update to the latest version of Blockbench to do this.",
|
"message.outdated_client.message": "Please update to the latest version of Blockbench to do this.",
|
||||||
"action.export_bbmodel": "Export Blockbench Project",
|
"action.export_bbmodel": "Save Project",
|
||||||
"action.export_bbmodel.desc": "Export a Blockbench project with all cubes, textures and animations",
|
"action.export_bbmodel.desc": "Save a Blockbench project with all cubes, textures and animations",
|
||||||
"action.export_asset_archive": "Download Archive",
|
"action.export_asset_archive": "Download Archive",
|
||||||
"action.export_asset_archive.desc": "Download an archive with the model and all textures in it",
|
"action.export_asset_archive.desc": "Download an archive with the model and all textures in it",
|
||||||
"action.upload_sketchfab": "Sketchfab Upload",
|
"action.upload_sketchfab": "Sketchfab Upload",
|
||||||
"message.sketchfab.name_or_token": "Please enter your Sketchfab token and a name",
|
"message.sketchfab.name_or_token": "Please enter your Sketchfab token and a name",
|
||||||
"dialog.sketchfab_uploader.title": "Upload Sketchfab Model",
|
"dialog.sketchfab_uploader.title": "Upload Sketchfab Model",
|
||||||
"dialog.sketchfab_uploader.token": "API Token",
|
"dialog.sketchfab_uploader.token": "API Token",
|
||||||
"dialog.sketchfab_uploader.about_token": "The token is used to connect Blockbench to your Sketchfab account. You can find it on sketchfab.com/settings/password",
|
"dialog.sketchfab_uploader.about_token": "The token is used to connect Blockbench to your Sketchfab account. You can find it on %0",
|
||||||
"dialog.sketchfab_uploader.name": "Model Name",
|
"dialog.sketchfab_uploader.name": "Model Name",
|
||||||
"dialog.sketchfab_uploader.description": "Description",
|
"dialog.sketchfab_uploader.description": "Description",
|
||||||
"dialog.sketchfab_uploader.tags": "Tags",
|
"dialog.sketchfab_uploader.tags": "Tags",
|
||||||
@ -894,10 +896,18 @@
|
|||||||
"edit_session.join": "Join Session",
|
"edit_session.join": "Join Session",
|
||||||
"edit_session.create": "Create Session",
|
"edit_session.create": "Create Session",
|
||||||
"edit_session.quit": "Quit Session",
|
"edit_session.quit": "Quit Session",
|
||||||
"edit_session.joined": "User %0 joined the session",
|
"edit_session.joined": "%0 joined the session",
|
||||||
"edit_session.left": "User %0 left the session",
|
"edit_session.left": "%0 left the session",
|
||||||
"edit_session.quit_session": "Left current session",
|
"edit_session.quit_session": "Left current session",
|
||||||
"edit_session.status": "Status",
|
"edit_session.status": "Status",
|
||||||
"edit_session.hosting": "Hosting",
|
"edit_session.hosting": "Hosting",
|
||||||
"edit_session.connected": "Connected to a session"
|
"edit_session.connected": "Connected to a session",
|
||||||
|
"dialog.sketchfab_uploader.private": "Private (Pro)",
|
||||||
|
"dialog.sketchfab_uploader.password": "Password (Pro)",
|
||||||
|
"action.toggle_chat": "Toggle Chat",
|
||||||
|
"action.toggle_chat.desc": "Toggle the visibility of the chat history",
|
||||||
|
"action.uv_select_all": "Select All",
|
||||||
|
"action.uv_select_all.desc": "Select all faces in the UV dialog",
|
||||||
|
"panel.chat": "Chat",
|
||||||
|
"edit_session.welcome": "Welcome to this session by %0"
|
||||||
}
|
}
|
24
lang/nl.json
24
lang/nl.json
@ -817,7 +817,9 @@
|
|||||||
"action.open_backup_folder": "Open Backup Folder",
|
"action.open_backup_folder": "Open Backup Folder",
|
||||||
"action.open_backup_folder.desc": "Opens the Blockbench backup folder",
|
"action.open_backup_folder.desc": "Opens the Blockbench backup folder",
|
||||||
"switches.mirror": "Mirror UV",
|
"switches.mirror": "Mirror UV",
|
||||||
"language_name": "English",
|
"Name of the Language you are editing, NOT English": {
|
||||||
|
"language_name": "Français"
|
||||||
|
},
|
||||||
"message.plugin_reload": "Reloaded %0 local plugins",
|
"message.plugin_reload": "Reloaded %0 local plugins",
|
||||||
"settings.brightness": "Brightness",
|
"settings.brightness": "Brightness",
|
||||||
"settings.brightness.desc": "Brightness of the preview. Default is 50",
|
"settings.brightness.desc": "Brightness of the preview. Default is 50",
|
||||||
@ -848,15 +850,15 @@
|
|||||||
"action.next_keyframe.desc": "Jump to the next keyframe",
|
"action.next_keyframe.desc": "Jump to the next keyframe",
|
||||||
"message.outdated_client.title": "Outdated client",
|
"message.outdated_client.title": "Outdated client",
|
||||||
"message.outdated_client.message": "Please update to the latest version of Blockbench to do this.",
|
"message.outdated_client.message": "Please update to the latest version of Blockbench to do this.",
|
||||||
"action.export_bbmodel": "Export Blockbench Project",
|
"action.export_bbmodel": "Save Project",
|
||||||
"action.export_bbmodel.desc": "Export a Blockbench project with all cubes, textures and animations",
|
"action.export_bbmodel.desc": "Save a Blockbench project with all cubes, textures and animations",
|
||||||
"action.export_asset_archive": "Download Archive",
|
"action.export_asset_archive": "Download Archive",
|
||||||
"action.export_asset_archive.desc": "Download an archive with the model and all textures in it",
|
"action.export_asset_archive.desc": "Download an archive with the model and all textures in it",
|
||||||
"action.upload_sketchfab": "Sketchfab Upload",
|
"action.upload_sketchfab": "Sketchfab Upload",
|
||||||
"message.sketchfab.name_or_token": "Please enter your Sketchfab token and a name",
|
"message.sketchfab.name_or_token": "Please enter your Sketchfab token and a name",
|
||||||
"dialog.sketchfab_uploader.title": "Upload Sketchfab Model",
|
"dialog.sketchfab_uploader.title": "Upload Sketchfab Model",
|
||||||
"dialog.sketchfab_uploader.token": "API Token",
|
"dialog.sketchfab_uploader.token": "API Token",
|
||||||
"dialog.sketchfab_uploader.about_token": "The token is used to connect Blockbench to your Sketchfab account. You can find it on sketchfab.com/settings/password",
|
"dialog.sketchfab_uploader.about_token": "The token is used to connect Blockbench to your Sketchfab account. You can find it on %0",
|
||||||
"dialog.sketchfab_uploader.name": "Model Name",
|
"dialog.sketchfab_uploader.name": "Model Name",
|
||||||
"dialog.sketchfab_uploader.description": "Description",
|
"dialog.sketchfab_uploader.description": "Description",
|
||||||
"dialog.sketchfab_uploader.tags": "Tags",
|
"dialog.sketchfab_uploader.tags": "Tags",
|
||||||
@ -894,10 +896,18 @@
|
|||||||
"edit_session.join": "Join Session",
|
"edit_session.join": "Join Session",
|
||||||
"edit_session.create": "Create Session",
|
"edit_session.create": "Create Session",
|
||||||
"edit_session.quit": "Quit Session",
|
"edit_session.quit": "Quit Session",
|
||||||
"edit_session.joined": "User %0 joined the session",
|
"edit_session.joined": "%0 joined the session",
|
||||||
"edit_session.left": "User %0 left the session",
|
"edit_session.left": "%0 left the session",
|
||||||
"edit_session.quit_session": "Left current session",
|
"edit_session.quit_session": "Left current session",
|
||||||
"edit_session.status": "Status",
|
"edit_session.status": "Status",
|
||||||
"edit_session.hosting": "Hosting",
|
"edit_session.hosting": "Hosting",
|
||||||
"edit_session.connected": "Connected to a session"
|
"edit_session.connected": "Connected to a session",
|
||||||
|
"dialog.sketchfab_uploader.private": "Private (Pro)",
|
||||||
|
"dialog.sketchfab_uploader.password": "Password (Pro)",
|
||||||
|
"action.toggle_chat": "Toggle Chat",
|
||||||
|
"action.toggle_chat.desc": "Toggle the visibility of the chat history",
|
||||||
|
"action.uv_select_all": "Select All",
|
||||||
|
"action.uv_select_all.desc": "Select all faces in the UV dialog",
|
||||||
|
"panel.chat": "Chat",
|
||||||
|
"edit_session.welcome": "Welcome to this session by %0"
|
||||||
}
|
}
|
24
lang/pl.json
24
lang/pl.json
@ -817,7 +817,9 @@
|
|||||||
"action.open_backup_folder": "Otwórz folder kopii zapasowej",
|
"action.open_backup_folder": "Otwórz folder kopii zapasowej",
|
||||||
"action.open_backup_folder.desc": "Otwórz folder kopii zapasowej BlockBench",
|
"action.open_backup_folder.desc": "Otwórz folder kopii zapasowej BlockBench",
|
||||||
"switches.mirror": "Lustro UV",
|
"switches.mirror": "Lustro UV",
|
||||||
"language_name": "Polski",
|
"Name of the Language you are editing, NOT English": {
|
||||||
|
"language_name": "Polski"
|
||||||
|
},
|
||||||
"message.plugin_reload": "Reloaded %0 local plugins",
|
"message.plugin_reload": "Reloaded %0 local plugins",
|
||||||
"settings.brightness": "Brightness",
|
"settings.brightness": "Brightness",
|
||||||
"settings.brightness.desc": "Brightness of the preview. Default is 50",
|
"settings.brightness.desc": "Brightness of the preview. Default is 50",
|
||||||
@ -848,15 +850,15 @@
|
|||||||
"action.next_keyframe.desc": "Jump to the next keyframe",
|
"action.next_keyframe.desc": "Jump to the next keyframe",
|
||||||
"message.outdated_client.title": "Outdated client",
|
"message.outdated_client.title": "Outdated client",
|
||||||
"message.outdated_client.message": "Please update to the latest version of Blockbench to do this.",
|
"message.outdated_client.message": "Please update to the latest version of Blockbench to do this.",
|
||||||
"action.export_bbmodel": "Export Blockbench Project",
|
"action.export_bbmodel": "Save Project",
|
||||||
"action.export_bbmodel.desc": "Export a Blockbench project with all cubes, textures and animations",
|
"action.export_bbmodel.desc": "Save a Blockbench project with all cubes, textures and animations",
|
||||||
"action.export_asset_archive": "Pobier Archiv",
|
"action.export_asset_archive": "Pobier Archiv",
|
||||||
"action.export_asset_archive.desc": "Download an archive with the model and all textures in it",
|
"action.export_asset_archive.desc": "Download an archive with the model and all textures in it",
|
||||||
"action.upload_sketchfab": "Sketchfab Upload",
|
"action.upload_sketchfab": "Sketchfab Upload",
|
||||||
"message.sketchfab.name_or_token": "Please enter your Sketchfab token and a name",
|
"message.sketchfab.name_or_token": "Please enter your Sketchfab token and a name",
|
||||||
"dialog.sketchfab_uploader.title": "Upload Sketchfab Model",
|
"dialog.sketchfab_uploader.title": "Upload Sketchfab Model",
|
||||||
"dialog.sketchfab_uploader.token": "API Token",
|
"dialog.sketchfab_uploader.token": "API Token",
|
||||||
"dialog.sketchfab_uploader.about_token": "The token is used to connect Blockbench to your Sketchfab account. You can find it on sketchfab.com/settings/password",
|
"dialog.sketchfab_uploader.about_token": "The token is used to connect Blockbench to your Sketchfab account. You can find it on %0",
|
||||||
"dialog.sketchfab_uploader.name": "Model Name",
|
"dialog.sketchfab_uploader.name": "Model Name",
|
||||||
"dialog.sketchfab_uploader.description": "Description",
|
"dialog.sketchfab_uploader.description": "Description",
|
||||||
"dialog.sketchfab_uploader.tags": "Tags",
|
"dialog.sketchfab_uploader.tags": "Tags",
|
||||||
@ -894,10 +896,18 @@
|
|||||||
"edit_session.join": "Join Session",
|
"edit_session.join": "Join Session",
|
||||||
"edit_session.create": "Create Session",
|
"edit_session.create": "Create Session",
|
||||||
"edit_session.quit": "Quit Session",
|
"edit_session.quit": "Quit Session",
|
||||||
"edit_session.joined": "User %0 joined the session",
|
"edit_session.joined": "%0 joined the session",
|
||||||
"edit_session.left": "User %0 left the session",
|
"edit_session.left": "%0 left the session",
|
||||||
"edit_session.quit_session": "Left current session",
|
"edit_session.quit_session": "Left current session",
|
||||||
"edit_session.status": "Status",
|
"edit_session.status": "Status",
|
||||||
"edit_session.hosting": "Hosting",
|
"edit_session.hosting": "Hosting",
|
||||||
"edit_session.connected": "Connected to a session"
|
"edit_session.connected": "Connected to a session",
|
||||||
|
"dialog.sketchfab_uploader.private": "Private (Pro)",
|
||||||
|
"dialog.sketchfab_uploader.password": "Password (Pro)",
|
||||||
|
"action.toggle_chat": "Toggle Chat",
|
||||||
|
"action.toggle_chat.desc": "Toggle the visibility of the chat history",
|
||||||
|
"action.uv_select_all": "Select All",
|
||||||
|
"action.uv_select_all.desc": "Select all faces in the UV dialog",
|
||||||
|
"panel.chat": "Chat",
|
||||||
|
"edit_session.welcome": "Welcome to this session by %0"
|
||||||
}
|
}
|
692
lang/pt.json
692
lang/pt.json
File diff suppressed because it is too large
Load Diff
136
lang/ru.json
136
lang/ru.json
@ -805,19 +805,21 @@
|
|||||||
"status_bar.recording_gif": "Запись GIF",
|
"status_bar.recording_gif": "Запись GIF",
|
||||||
"status_bar.processing_gif": "Обработка GIF",
|
"status_bar.processing_gif": "Обработка GIF",
|
||||||
"settings.backup_retain": "Продолжительность хранения автосохранений",
|
"settings.backup_retain": "Продолжительность хранения автосохранений",
|
||||||
"settings.backup_retain.desc": "Set how long Blockbench retains old backups in days",
|
"settings.backup_retain.desc": "Установить как долго Blockbench хранит автосохранения",
|
||||||
"action.rotate_tool": "Вращать",
|
"action.rotate_tool": "Вращать",
|
||||||
"action.rotate_tool.desc": "Tool to select and rotate elements",
|
"action.rotate_tool.desc": "Инструмент для выбора и поворота элементов",
|
||||||
"action.fill_tool": "Paint Bucket",
|
"action.fill_tool": "Заполнение",
|
||||||
"action.fill_tool.desc": "Paint bucket to fill entire faces with one color",
|
"action.fill_tool.desc": "Paint bucket to fill entire faces with one color",
|
||||||
"action.eraser": "Ластик",
|
"action.eraser": "Ластик",
|
||||||
"action.eraser.desc": "Eraser tool to replace colors on a texture with transparency",
|
"action.eraser.desc": "Eraser tool to replace colors on a texture with transparency",
|
||||||
"action.color_picker": "Выбор цвета",
|
"action.color_picker": "Выбор цвета",
|
||||||
"action.color_picker.desc": "Tool to pick the color of pixels on your texture",
|
"action.color_picker.desc": "Инструмент для выбора цвета пикселей на Вашей текстуре",
|
||||||
"action.open_backup_folder": "Открыть папку автосохранений",
|
"action.open_backup_folder": "Открыть папку автосохранений",
|
||||||
"action.open_backup_folder.desc": "Opens the Blockbench backup folder",
|
"action.open_backup_folder.desc": "Открыть папку автосохранений Blockbench",
|
||||||
"switches.mirror": "Mirror UV",
|
"switches.mirror": "Зеркалить UV",
|
||||||
"language_name": "Английский",
|
"Name of the Language you are editing, NOT English": {
|
||||||
|
"language_name": "English"
|
||||||
|
},
|
||||||
"message.plugin_reload": "Перезагружено %0 локальных плагинов",
|
"message.plugin_reload": "Перезагружено %0 локальных плагинов",
|
||||||
"settings.brightness": "Яркость",
|
"settings.brightness": "Яркость",
|
||||||
"settings.brightness.desc": "Яркость дисплея. 50 по умолчанию",
|
"settings.brightness.desc": "Яркость дисплея. 50 по умолчанию",
|
||||||
@ -827,77 +829,85 @@
|
|||||||
"action.fill_mode.face": "Грань",
|
"action.fill_mode.face": "Грань",
|
||||||
"action.fill_mode.color": "Цвет",
|
"action.fill_mode.color": "Цвет",
|
||||||
"action.fill_mode.cube": "Куб",
|
"action.fill_mode.cube": "Куб",
|
||||||
"action.toggle_mirror_uv": "Mirror UV",
|
"action.toggle_mirror_uv": "Зеркалить UV",
|
||||||
"action.toggle_mirror_uv.desc": "Toggle the UV mirroring on the X axis of the selected cubes.",
|
"action.toggle_mirror_uv.desc": "Toggle the UV mirroring on the X axis of the selected cubes.",
|
||||||
"action.toggle_uv_overlay": "Toggle UV Overlay",
|
"action.toggle_uv_overlay": "Переключить слой UV",
|
||||||
"action.toggle_uv_overlay.desc": "When enabled, displays all UV mapping overlays above the texture.",
|
"action.toggle_uv_overlay.desc": "When enabled, displays all UV mapping overlays above the texture.",
|
||||||
"menu.texture.blank": "Apply to Untextured Faces",
|
"menu.texture.blank": "Apply to Untextured Faces",
|
||||||
"dialog.scale.select_overflow": "Select Overflow",
|
"dialog.scale.select_overflow": "Select Overflow",
|
||||||
"dialog.create_texture.compress": "Сжать шаблон",
|
"dialog.create_texture.compress": "Сжать шаблон",
|
||||||
"action.action_control": "Контроль действий",
|
"action.action_control": "Контроль действий",
|
||||||
"action.action_control.desc": "Search and execute any available action",
|
"action.action_control.desc": "Найти и выполнить любое доступное действие",
|
||||||
"keybindings.recording": "Recording Keybinding",
|
"keybindings.recording": "Запись",
|
||||||
"keybindings.press": "Press a key or key combination or click anywhere on the screen to record your keybinding.",
|
"keybindings.press": "Press a key or key combination or click anywhere on the screen to record your keybinding.",
|
||||||
"action.pivot_tool": "Pivot Tool",
|
"action.pivot_tool": "Инструмент центра поворота",
|
||||||
"action.pivot_tool.desc": "Tool to change the pivot point of cubes and bones",
|
"action.pivot_tool.desc": "Инструмент для изменения центра поворота кубов и костей",
|
||||||
"action.slider_animation_speed": "Скорость воспроизведения",
|
"action.slider_animation_speed": "Скорость воспроизведения",
|
||||||
"action.slider_animation_speed.desc": "Playback speed of the timeline in percent",
|
"action.slider_animation_speed.desc": "Скороть воспроизвеления в процентах",
|
||||||
"action.previous_keyframe": "Предыдущий кадр",
|
"action.previous_keyframe": "Предыдущий кадр",
|
||||||
"action.previous_keyframe.desc": "Jump to the previous keyframe",
|
"action.previous_keyframe.desc": "Перейти к прошлому кадру",
|
||||||
"action.next_keyframe": "Следующий кадр",
|
"action.next_keyframe": "Следующий кадр",
|
||||||
"action.next_keyframe.desc": "Jump to the next keyframe",
|
"action.next_keyframe.desc": "Перейти к следующему кадру",
|
||||||
"message.outdated_client.title": "Outdated client",
|
"message.outdated_client.title": "Устаревший клиент",
|
||||||
"message.outdated_client.message": "Please update to the latest version of Blockbench to do this.",
|
"message.outdated_client.message": "Пожалуйста, обновите Blockbench до последней версии чтобы выполнить это действие.",
|
||||||
"action.export_bbmodel": "Export Blockbench Project",
|
"action.export_bbmodel": "Экспортировать проект Blockbench",
|
||||||
"action.export_bbmodel.desc": "Export a Blockbench project with all cubes, textures and animations",
|
"action.export_bbmodel.desc": "Экспортировать проект Blockbench со всеми кубами, текстурами и анимациями",
|
||||||
"action.export_asset_archive": "Download Archive",
|
"action.export_asset_archive": "Скачать Архив",
|
||||||
"action.export_asset_archive.desc": "Download an archive with the model and all textures in it",
|
"action.export_asset_archive.desc": "Скачать архив с моделью и текстурами",
|
||||||
"action.upload_sketchfab": "Sketchfab Upload",
|
"action.upload_sketchfab": "Загрузка Sketchfab",
|
||||||
"message.sketchfab.name_or_token": "Please enter your Sketchfab token and a name",
|
"message.sketchfab.name_or_token": "Пожалуйста, введите ваше имя Sketchfab и ваш ключ",
|
||||||
"dialog.sketchfab_uploader.title": "Upload Sketchfab Model",
|
"dialog.sketchfab_uploader.title": "Загрузить модель на Sketchfab",
|
||||||
"dialog.sketchfab_uploader.token": "API Token",
|
"dialog.sketchfab_uploader.token": "Ключ API",
|
||||||
"dialog.sketchfab_uploader.about_token": "The token is used to connect Blockbench to your Sketchfab account. You can find it on sketchfab.com/settings/password",
|
"dialog.sketchfab_uploader.about_token": "The token is used to connect Blockbench to your Sketchfab account. You can find it on %0",
|
||||||
"dialog.sketchfab_uploader.name": "Model Name",
|
"dialog.sketchfab_uploader.name": "Название модели",
|
||||||
"dialog.sketchfab_uploader.description": "Description",
|
"dialog.sketchfab_uploader.description": "Описание",
|
||||||
"dialog.sketchfab_uploader.tags": "Тэги",
|
"dialog.sketchfab_uploader.tags": "Тэги",
|
||||||
"settings.sketchfab_token": "Ключ Скетчфаб",
|
"settings.sketchfab_token": "Ключ Скетчфаб",
|
||||||
"settings.sketchfab_token.desc": "Token to authorize Blockbench to upload to your Sketchfab account",
|
"settings.sketchfab_token.desc": "Token to authorize Blockbench to upload to your Sketchfab account",
|
||||||
"panel.color": "Цвет",
|
"panel.color": "Цвет",
|
||||||
"data.origin": "Центр поворота",
|
"data.origin": "Центр поворота",
|
||||||
"message.sketchfab.success": "Uploaded model successfully",
|
"message.sketchfab.success": "Загрузка модели прошла успешно",
|
||||||
"message.sketchfab.error": "Failed to upload model to Sketchfab",
|
"message.sketchfab.error": "Не удалось загрузить модель на Sketchfab",
|
||||||
"settings.outliner_colors": "Outliner Colors",
|
"settings.outliner_colors": "Цвета Элементов",
|
||||||
"settings.outliner_colors.desc": "Display cube colors in the outliner",
|
"settings.outliner_colors.desc": "Показывать цвета элементов в списке элементов",
|
||||||
"action.upload_sketchfab.desc": "Upload your model to Sketchfab",
|
"action.upload_sketchfab.desc": "Загрузите Вашу модель на Sketchfab",
|
||||||
"action.element_colors": "Цвета кубов",
|
"action.element_colors": "Цвета кубов",
|
||||||
"action.element_colors.desc": "Show cube colors in the outliner",
|
"action.element_colors.desc": "Показывать цвета кубов в списке элементов",
|
||||||
"texture.error.file": "Файл не найден",
|
"texture.error.file": "Файл не найден",
|
||||||
"texture.error.invalid": "Invalid file",
|
"texture.error.invalid": "Неверный файл",
|
||||||
"texture.error.ratio": "Invalid aspect ratio",
|
"texture.error.ratio": "Неверное соотношение сторон",
|
||||||
"texture.error.parent": "Texture file provided by parent model",
|
"texture.error.parent": "Текстура предоставлена родительской моделью",
|
||||||
"message.recover_backup.title": "Recover Model",
|
"message.recover_backup.title": "Восстановить модель",
|
||||||
"message.recover_backup.message": "Blockbench was closed without saving. Do you want to recover the model?",
|
"message.recover_backup.message": "Blockbench был закрыт без сохранения. Вы хотите восстановить модель?",
|
||||||
"message.install_plugin": "Installing the plugin %0",
|
"message.install_plugin": "Установка плагина %0",
|
||||||
"message.invalid_session.title": "Invalid Session Token",
|
"message.invalid_session.title": "Неверный ключ сеанса",
|
||||||
"message.invalid_session.message": "The session you are trying to join has expired or the token provided is invalid.",
|
"message.invalid_session.message": "Сеанс к которому вы пытаетесь подключиться истек или ваш ключ не правильный.",
|
||||||
"dialog.create_texture.power": "Power-of-2 Size",
|
"dialog.create_texture.power": "Размер второй степени",
|
||||||
"dialog.create_gif.turn": "Turntable Speed",
|
"dialog.create_gif.turn": "Скорость поворота камеры",
|
||||||
"action.edit_session": "Edit Session...",
|
"action.edit_session": "Сеанс Редактирования...",
|
||||||
"action.edit_session.desc": "Connect to an edit session to collaborate with other users",
|
"action.edit_session.desc": "Присоединиться к сеансу редактирования для коллаборации с другими пользователями",
|
||||||
"action.reset_keyframe": "Reset Keyframe",
|
"action.reset_keyframe": "Сбросить кадр",
|
||||||
"action.reset_keyframe.desc": "Reset all values of the selected keyframes",
|
"action.reset_keyframe.desc": "Сбросить все значения выбранных кадров",
|
||||||
"panel.options.origin": "Origin",
|
"panel.options.origin": "Центр поворота",
|
||||||
"dialog.edit_session.title": "Edit Session",
|
"dialog.edit_session.title": "Сеанс Редактирования",
|
||||||
"edit_session.username": "Username",
|
"edit_session.username": "Имя пользователя",
|
||||||
"edit_session.token": "Token",
|
"edit_session.token": "Ключ",
|
||||||
"edit_session.about": "Edit Sessions can be used to collaborate on models across the internet. Create a session and copy the token and send it to friends, who can then use it to join.",
|
"edit_session.about": "Сеансы редактирования могут быть использованы для коллаборации по интернету. Создайте сеанс, скопируйте его ключ и отправьте его Вашим друзьям, которые могут воспользоваться им чтобы присоединиться.",
|
||||||
"edit_session.join": "Join Session",
|
"edit_session.join": "Присоединиться к сеансу",
|
||||||
"edit_session.create": "Create Session",
|
"edit_session.create": "Создать сеанс",
|
||||||
"edit_session.quit": "Quit Session",
|
"edit_session.quit": "Покинуть сеанс",
|
||||||
"edit_session.joined": "User %0 joined the session",
|
"edit_session.joined": "Пользователь %0 присоединился к сеансу",
|
||||||
"edit_session.left": "User %0 left the session",
|
"edit_session.left": "Ползователь %0 покинул сеанс",
|
||||||
"edit_session.quit_session": "Left current session",
|
"edit_session.quit_session": "Покинул текущий сеанс",
|
||||||
"edit_session.status": "Status",
|
"edit_session.status": "Статус",
|
||||||
"edit_session.hosting": "Hosting",
|
"edit_session.hosting": "Хост",
|
||||||
"edit_session.connected": "Connected to a session"
|
"edit_session.connected": "Подключен к сеансу",
|
||||||
|
"dialog.sketchfab_uploader.private": "Private (Pro)",
|
||||||
|
"dialog.sketchfab_uploader.password": "Password (Pro)",
|
||||||
|
"action.toggle_chat": "Toggle Chat",
|
||||||
|
"action.toggle_chat.desc": "Toggle the visibility of the chat history",
|
||||||
|
"action.uv_select_all": "Select All",
|
||||||
|
"action.uv_select_all.desc": "Select all faces in the UV dialog",
|
||||||
|
"panel.chat": "Chat",
|
||||||
|
"edit_session.welcome": "Welcome to this session by %0"
|
||||||
}
|
}
|
264
lang/sv.json
264
lang/sv.json
@ -207,7 +207,7 @@
|
|||||||
"settings.category.general": "Allmän",
|
"settings.category.general": "Allmän",
|
||||||
"settings.category.preview": "Förhansvisning",
|
"settings.category.preview": "Förhansvisning",
|
||||||
"settings.category.grid": "Rutnät",
|
"settings.category.grid": "Rutnät",
|
||||||
"settings.category.edit": "Ändra",
|
"settings.category.edit": "Redigera",
|
||||||
"settings.category.snapping": "Snäppning",
|
"settings.category.snapping": "Snäppning",
|
||||||
"settings.category.defaults": "Standarder",
|
"settings.category.defaults": "Standarder",
|
||||||
"settings.category.dialogs": "Dialoger",
|
"settings.category.dialogs": "Dialoger",
|
||||||
@ -286,7 +286,7 @@
|
|||||||
"category.tools": "Verktyg",
|
"category.tools": "Verktyg",
|
||||||
"category.file": "Fil",
|
"category.file": "Fil",
|
||||||
"category.blockbench": "Blockbench",
|
"category.blockbench": "Blockbench",
|
||||||
"category.edit": "Ändra",
|
"category.edit": "Redigera",
|
||||||
"category.transform": "Omvandla",
|
"category.transform": "Omvandla",
|
||||||
"category.filter": "Filter",
|
"category.filter": "Filter",
|
||||||
"category.view": "Visa",
|
"category.view": "Visa",
|
||||||
@ -335,13 +335,13 @@
|
|||||||
"action.background_color": "Bakgrundsfärg",
|
"action.background_color": "Bakgrundsfärg",
|
||||||
"action.background_color.desc": "Bakgrundsfärg på den skapade texturen",
|
"action.background_color.desc": "Bakgrundsfärg på den skapade texturen",
|
||||||
"action.uv_slider_pos_x": "Flytta horisontellt",
|
"action.uv_slider_pos_x": "Flytta horisontellt",
|
||||||
"action.uv_slider_pos_x.desc": "Flytta UV-valet av alla valda kuber horisontellt",
|
"action.uv_slider_pos_x.desc": "Flytta UV valet av alla valda kuber horisontellt",
|
||||||
"action.uv_slider_pos_y": "Flytta vertikalt",
|
"action.uv_slider_pos_y": "Flytta vertikalt",
|
||||||
"action.uv_slider_pos_y.desc": "Flytta UV-valet av alla valda kuber vertikalt",
|
"action.uv_slider_pos_y.desc": "Flytta UV valet av alla valda kuber vertikalt",
|
||||||
"action.uv_slider_size_x": "Skala horisontellt",
|
"action.uv_slider_size_x": "Skala horisontellt",
|
||||||
"action.uv_slider_size_x.desc": "Skala UV-valet av alla valda kuber horisontellt",
|
"action.uv_slider_size_x.desc": "Skala UV valet av alla valda kuber horisontellt",
|
||||||
"action.uv_slider_size_y": "Skala vertikalt",
|
"action.uv_slider_size_y": "Skala vertikalt",
|
||||||
"action.uv_slider_size_y.desc": "Skala UV-valet av alla valda kuber vertikalt",
|
"action.uv_slider_size_y.desc": "Skala UV valet av alla valda kuber vertikalt",
|
||||||
"action.vertex_snap_mode": "Snäppläge",
|
"action.vertex_snap_mode": "Snäppläge",
|
||||||
"action.vertex_snap_mode.desc": "Välj om Vertex Snap flyttar element till det valda läget eller ändrar dem",
|
"action.vertex_snap_mode.desc": "Välj om Vertex Snap flyttar element till det valda läget eller ändrar dem",
|
||||||
"action.move_tool": "Flytta",
|
"action.move_tool": "Flytta",
|
||||||
@ -349,13 +349,13 @@
|
|||||||
"action.resize_tool": "Ändra storlek",
|
"action.resize_tool": "Ändra storlek",
|
||||||
"action.resize_tool.desc": "Verktyg för att ändra storlek på element",
|
"action.resize_tool.desc": "Verktyg för att ändra storlek på element",
|
||||||
"action.brush_tool": "Målarpensel",
|
"action.brush_tool": "Målarpensel",
|
||||||
"action.brush_tool.desc": "Verktyg att måla på bitmaptexturer på ytor eller UV-redigeraren.",
|
"action.brush_tool.desc": "Verktyg att måla på bitmaptexturer på ytor eller UV redigeraren.",
|
||||||
"action.vertex_snap_tool": "Vortex Snap",
|
"action.vertex_snap_tool": "Vortex Snap",
|
||||||
"action.vertex_snap_tool.desc": "Flytta en kub till en annan kub genom att koppla samman två hörn.",
|
"action.vertex_snap_tool.desc": "Flytta en kub till en annan kub genom att koppla samman två hörn.",
|
||||||
"action.swap_tools": "Byt verktyg",
|
"action.swap_tools": "Byt verktyg",
|
||||||
"action.swap_tools.desc": "Växla mellan flytt och storleks verktygen",
|
"action.swap_tools.desc": "Växla mellan flytt och storleks verktygen",
|
||||||
"action.project_window": "Projekt...",
|
"action.project_window": "Projekt...",
|
||||||
"action.project_window.desc": "Öppnar projektfönstret, där du kan ändra metadata för din modell",
|
"action.project_window.desc": "Öppnar projektfönstret, där du kan redigera metadata för din modell",
|
||||||
"action.new_block_model": "Ny modell",
|
"action.new_block_model": "Ny modell",
|
||||||
"action.new_block_model.desc": "Skapar ett nytt block/objektmodell",
|
"action.new_block_model.desc": "Skapar ett nytt block/objektmodell",
|
||||||
"action.new_entity_model": "Ny enititymodell",
|
"action.new_entity_model": "Ny enititymodell",
|
||||||
@ -375,7 +375,7 @@
|
|||||||
"action.export_optifine_full": "Exportera OptiFine JEM",
|
"action.export_optifine_full": "Exportera OptiFine JEM",
|
||||||
"action.export_optifine_full.desc": "Exportera en hel OptiFine enititymodell",
|
"action.export_optifine_full.desc": "Exportera en hel OptiFine enititymodell",
|
||||||
"action.export_obj": "Exportera OBJ modell",
|
"action.export_obj": "Exportera OBJ modell",
|
||||||
"action.export_obj.desc": "Exportera en Wavefront OBJ modell för användning i andra program eller för att ladda upp till Sketchfab",
|
"action.export_obj.desc": "Exportera en Wavefront OBJ modell för rendering eller spelmotorer",
|
||||||
"action.save": "Spara",
|
"action.save": "Spara",
|
||||||
"action.save.desc": "Spara nuvarande modell och texturer",
|
"action.save.desc": "Spara nuvarande modell och texturer",
|
||||||
"action.settings_window": "Inställningar...",
|
"action.settings_window": "Inställningar...",
|
||||||
@ -399,9 +399,9 @@
|
|||||||
"action.reload_plugins": "Ladda om plugins",
|
"action.reload_plugins": "Ladda om plugins",
|
||||||
"action.reload_plugins.desc": "Ladda om alla utvecklingsplugins",
|
"action.reload_plugins.desc": "Ladda om alla utvecklingsplugins",
|
||||||
"action.uv_dialog": "UV fönster",
|
"action.uv_dialog": "UV fönster",
|
||||||
"action.uv_dialog.desc": "Öppna UV-dialogen för att se alla ytor bredvid varandra",
|
"action.uv_dialog.desc": "Öppna UV dialogen för att se alla ytor bredvid varandra",
|
||||||
"action.uv_dialog_full": "Full vy",
|
"action.uv_dialog_full": "Full vy",
|
||||||
"action.uv_dialog_full.desc": "Öppna UV-dialogen för att ändra en yta i helskärm",
|
"action.uv_dialog_full.desc": "Öppna UV dialogen för att redigera en yta i helskärm",
|
||||||
"action.undo": "Ångra",
|
"action.undo": "Ångra",
|
||||||
"action.undo.desc": "Ångrar den senaste ändringen",
|
"action.undo.desc": "Ångrar den senaste ändringen",
|
||||||
"action.redo": "Gör om",
|
"action.redo": "Gör om",
|
||||||
@ -467,7 +467,7 @@
|
|||||||
"action.toggle_export": "Växla export",
|
"action.toggle_export": "Växla export",
|
||||||
"action.toggle_export.desc": "Växla exportinställningarna för de valda kuberna.",
|
"action.toggle_export.desc": "Växla exportinställningarna för de valda kuberna.",
|
||||||
"action.toggle_autouv": "Växla Auto UV",
|
"action.toggle_autouv": "Växla Auto UV",
|
||||||
"action.toggle_autouv.desc": "Växla Auto UV-inställningar för de valda kuberna.",
|
"action.toggle_autouv.desc": "Växla Auto UV inställningar för de valda kuberna.",
|
||||||
"action.toggle_shade": "Växla skuggning",
|
"action.toggle_shade": "Växla skuggning",
|
||||||
"action.toggle_shade.desc": "Växla skuggningen för de valda kuberna.",
|
"action.toggle_shade.desc": "Växla skuggningen för de valda kuberna.",
|
||||||
"action.rename": "Byt namn",
|
"action.rename": "Byt namn",
|
||||||
@ -485,7 +485,7 @@
|
|||||||
"action.reset_interface": "Återställ gränssnitt",
|
"action.reset_interface": "Återställ gränssnitt",
|
||||||
"action.reset_interface.desc": "Återställ storlek och positioner för GUI",
|
"action.reset_interface.desc": "Återställ storlek och positioner för GUI",
|
||||||
"action.toggle_wireframe": "Växla wireframe",
|
"action.toggle_wireframe": "Växla wireframe",
|
||||||
"action.toggle_wireframe.desc": "Byt skärmsläge för wireframe.",
|
"action.toggle_wireframe.desc": "Växla skärmsläge för wireframe.",
|
||||||
"action.screenshot_model": "Skärmbildsmodell",
|
"action.screenshot_model": "Skärmbildsmodell",
|
||||||
"action.screenshot_model.desc": "Ta en klippt skärmbild av modellen från den nuvarande vinkeln.",
|
"action.screenshot_model.desc": "Ta en klippt skärmbild av modellen från den nuvarande vinkeln.",
|
||||||
"action.screenshot_app": "Skärmbildsapp",
|
"action.screenshot_app": "Skärmbildsapp",
|
||||||
@ -511,7 +511,7 @@
|
|||||||
"action.reload": "Labba om Blockbench",
|
"action.reload": "Labba om Blockbench",
|
||||||
"action.reload.desc": "Ladda om Blockbench. Detta tar bort alla osparade framsteg.",
|
"action.reload.desc": "Ladda om Blockbench. Detta tar bort alla osparade framsteg.",
|
||||||
"menu.file": "Fil",
|
"menu.file": "Fil",
|
||||||
"menu.edit": "Ändra",
|
"menu.edit": "Redigera",
|
||||||
"menu.transform": "Transformera",
|
"menu.transform": "Transformera",
|
||||||
"menu.filter": "Filter",
|
"menu.filter": "Filter",
|
||||||
"menu.display": "Visa",
|
"menu.display": "Visa",
|
||||||
@ -544,7 +544,7 @@
|
|||||||
"menu.texture.refresh": "Ladda om",
|
"menu.texture.refresh": "Ladda om",
|
||||||
"menu.texture.change": "Ändra fil",
|
"menu.texture.change": "Ändra fil",
|
||||||
"menu.texture.folder": "Öppna i mapp",
|
"menu.texture.folder": "Öppna i mapp",
|
||||||
"menu.texture.edit": "Ändra",
|
"menu.texture.edit": "Redigera",
|
||||||
"menu.texture.export": "Spara som",
|
"menu.texture.export": "Spara som",
|
||||||
"menu.texture.save": "Spara",
|
"menu.texture.save": "Spara",
|
||||||
"menu.texture.properties": "Egenskaper",
|
"menu.texture.properties": "Egenskaper",
|
||||||
@ -638,7 +638,7 @@
|
|||||||
"dialog.update.latest": "Senaste version",
|
"dialog.update.latest": "Senaste version",
|
||||||
"dialog.update.installed": "Installerad version",
|
"dialog.update.installed": "Installerad version",
|
||||||
"dialog.update.update": "Uppdatera",
|
"dialog.update.update": "Uppdatera",
|
||||||
"action.brush_mode.brush": "Pensel",
|
"action.brush_mode.brush": "Rund",
|
||||||
"action.brush_mode.noise": "Brus",
|
"action.brush_mode.noise": "Brus",
|
||||||
"action.vertex_snap_mode.move": "Flytta",
|
"action.vertex_snap_mode.move": "Flytta",
|
||||||
"action.vertex_snap_mode.scale": "Skala",
|
"action.vertex_snap_mode.scale": "Skala",
|
||||||
@ -743,7 +743,7 @@
|
|||||||
"action.export_animation_file": "Exportera animationer",
|
"action.export_animation_file": "Exportera animationer",
|
||||||
"action.export_animation_file.desc": "Exportera en json fil med den nuvarande animationen",
|
"action.export_animation_file.desc": "Exportera en json fil med den nuvarande animationen",
|
||||||
"action.slider_keyframe_time": "Tidskod",
|
"action.slider_keyframe_time": "Tidskod",
|
||||||
"action.slider_keyframe_time.desc": "Ändra tidskoden för de valda nyckelramarna",
|
"action.slider_keyframe_time.desc": "Ändra tidskoden för de valda keyframes",
|
||||||
"timeline.rotation": "Rotation",
|
"timeline.rotation": "Rotation",
|
||||||
"timeline.position": "Position",
|
"timeline.position": "Position",
|
||||||
"timeline.scale": "Skala",
|
"timeline.scale": "Skala",
|
||||||
@ -781,123 +781,133 @@
|
|||||||
"panel.variable_placeholders": "Platshållare variabel",
|
"panel.variable_placeholders": "Platshållare variabel",
|
||||||
"panel.variable_placeholders.info": "Ange de variabler du vill förhandsgranska via namn=värde",
|
"panel.variable_placeholders.info": "Ange de variabler du vill förhandsgranska via namn=värde",
|
||||||
"status_bar.vertex_distance": "Distans: %0",
|
"status_bar.vertex_distance": "Distans: %0",
|
||||||
"dialog.create_gif.title": "Record GIF",
|
"dialog.create_gif.title": "Spela in GIF",
|
||||||
"dialog.create_gif.length": "Length (Seconds)",
|
"dialog.create_gif.length": "Längd (Sekunder)",
|
||||||
"dialog.create_gif.fps": "FPS",
|
"dialog.create_gif.fps": "FPS",
|
||||||
"dialog.create_gif.compression": "Compression Amount",
|
"dialog.create_gif.compression": "Kompressionsstorlek",
|
||||||
"dialog.create_gif.play": "Start Animation",
|
"dialog.create_gif.play": "Starta animationen",
|
||||||
"category.animation": "Animation",
|
"category.animation": "Animation",
|
||||||
"action.record_model_gif": "Record GIF",
|
"action.record_model_gif": "Spela in GIF",
|
||||||
"action.record_model_gif.desc": "Record an animated GIF of the model from the current angle",
|
"action.record_model_gif.desc": "Spela in en animerad GIF av modellen från den nuvarande vinkeln",
|
||||||
"display.mirror": "Mirror",
|
"display.mirror": "Spegla",
|
||||||
"data.separator": "Seperator",
|
"data.separator": "Seperator",
|
||||||
"message.set_background_position.title": "Background Position",
|
"message.set_background_position.title": "Bakgrundsposition",
|
||||||
"menu.preview.background.set_position": "Set Position",
|
"menu.preview.background.set_position": "Sätt position",
|
||||||
"dialog.toolbar_edit.hidden": "Hidden",
|
"dialog.toolbar_edit.hidden": "Gömd",
|
||||||
"action.export_class_entity": "Export Java Entity",
|
"action.export_class_entity": "Exportera Java Entity",
|
||||||
"action.export_class_entity.desc": "Export the entity model as a Java class",
|
"action.export_class_entity.desc": "Exportera entitymodellen som en Java klass",
|
||||||
"settings.seethrough_outline": "X-Ray Outlines",
|
"settings.seethrough_outline": "Röntgenkonturer",
|
||||||
"settings.seethrough_outline.desc": "Show outlines through objects",
|
"settings.seethrough_outline.desc": "Visa konturer genom objekt",
|
||||||
"mode.edit": "Edit",
|
"mode.edit": "Redigera",
|
||||||
"mode.paint": "Paint",
|
"mode.paint": "Måla",
|
||||||
"mode.display": "Display",
|
"mode.display": "Visa",
|
||||||
"mode.animate": "Animate",
|
"mode.animate": "Animera",
|
||||||
"status_bar.recording_gif": "Recording GIF",
|
"status_bar.recording_gif": "Spelar in GIF",
|
||||||
"status_bar.processing_gif": "Processing GIF",
|
"status_bar.processing_gif": "Bearbetar GIF",
|
||||||
"settings.backup_retain": "Backup Retain Duration",
|
"settings.backup_retain": "Säkerhetskopierings varaktighet",
|
||||||
"settings.backup_retain.desc": "Set how long Blockbench retains old backups in days",
|
"settings.backup_retain.desc": "Ange hur länge Blockbench behåller gamla säkerhetskopior i dagar",
|
||||||
"action.rotate_tool": "Rotate",
|
"action.rotate_tool": "Rotera",
|
||||||
"action.rotate_tool.desc": "Tool to select and rotate elements",
|
"action.rotate_tool.desc": "Verktyg för att välja och rotera element",
|
||||||
"action.fill_tool": "Paint Bucket",
|
"action.fill_tool": "Målarfärgsburk",
|
||||||
"action.fill_tool.desc": "Paint bucket to fill entire faces with one color",
|
"action.fill_tool.desc": "Målarhink för att fylla hela ytor med en färg",
|
||||||
"action.eraser": "Eraser",
|
"action.eraser": "Suddgummi",
|
||||||
"action.eraser.desc": "Eraser tool to replace colors on a texture with transparency",
|
"action.eraser.desc": "Suddgummi för att ersätta färger på en textur med genomskinlighet",
|
||||||
"action.color_picker": "Color Picker",
|
"action.color_picker": "Färgväljare",
|
||||||
"action.color_picker.desc": "Tool to pick the color of pixels on your texture",
|
"action.color_picker.desc": "Verktyg för att välja färg på pixlar på din textur",
|
||||||
"action.open_backup_folder": "Open Backup Folder",
|
"action.open_backup_folder": "Öppna säkerhetskopieringsmappen",
|
||||||
"action.open_backup_folder.desc": "Opens the Blockbench backup folder",
|
"action.open_backup_folder.desc": "Öppnar säkerhetskopieringsmappen för Blockbench",
|
||||||
"switches.mirror": "Mirror UV",
|
"switches.mirror": "Spegla UV",
|
||||||
"language_name": "English",
|
"Name of the Language you are editing, NOT English": {
|
||||||
"message.plugin_reload": "Reloaded %0 local plugins",
|
"language_name": "English"
|
||||||
"settings.brightness": "Brightness",
|
},
|
||||||
"settings.brightness.desc": "Brightness of the preview. Default is 50",
|
"message.plugin_reload": "Uppdaterade %0 lokala plugins",
|
||||||
"menu.preview.perspective.reset": "Reset Camera",
|
"settings.brightness": "Ljusstyrka",
|
||||||
"action.fill_mode": "Fill Mode",
|
"settings.brightness.desc": "Förhandsgranskningens ljusstyrka. Standard är 50",
|
||||||
"action.fill_mode.desc": "Mode of the fill tool",
|
"menu.preview.perspective.reset": "Återställ kamera",
|
||||||
"action.fill_mode.face": "Face",
|
"action.fill_mode": "Fyllningsläge",
|
||||||
"action.fill_mode.color": "Color",
|
"action.fill_mode.desc": "Fyllningsverktygets läge",
|
||||||
"action.fill_mode.cube": "Cube",
|
"action.fill_mode.face": "Yta",
|
||||||
"action.toggle_mirror_uv": "Mirror UV",
|
"action.fill_mode.color": "Färg",
|
||||||
"action.toggle_mirror_uv.desc": "Toggle the UV mirroring on the X axis of the selected cubes.",
|
"action.fill_mode.cube": "Kub",
|
||||||
"action.toggle_uv_overlay": "Toggle UV Overlay",
|
"action.toggle_mirror_uv": "Spegla UV",
|
||||||
"action.toggle_uv_overlay.desc": "When enabled, displays all UV mapping overlays above the texture.",
|
"action.toggle_mirror_uv.desc": "Växla UV-spegling på X axeln för de valda kuberna.",
|
||||||
"menu.texture.blank": "Apply to Untextured Faces",
|
"action.toggle_uv_overlay": "Växla UV överlager",
|
||||||
"dialog.scale.select_overflow": "Select Overflow",
|
"action.toggle_uv_overlay.desc": "När den är aktiverad visas alla UV kartläggningsöverlager ovanför texturen.",
|
||||||
"dialog.create_texture.compress": "Compress Template",
|
"menu.texture.blank": "Applicera på otexturerade ytor",
|
||||||
"action.action_control": "Action Control",
|
"dialog.scale.select_overflow": "Välj överflöde",
|
||||||
"action.action_control.desc": "Search and execute any available action",
|
"dialog.create_texture.compress": "Komprimera mall",
|
||||||
"keybindings.recording": "Recording Keybinding",
|
"action.action_control": "Åtgärdskontroll",
|
||||||
"keybindings.press": "Press a key or key combination or click anywhere on the screen to record your keybinding.",
|
"action.action_control.desc": "Sök och kör alla tillgängliga åtgärder",
|
||||||
"action.pivot_tool": "Pivot Tool",
|
"keybindings.recording": "Spelar in tangentbindningar",
|
||||||
"action.pivot_tool.desc": "Tool to change the pivot point of cubes and bones",
|
"keybindings.press": "Tryck på en knapp eller tangentkombination eller klicka någonstans på skärmen för att spela in din tangentbindning.",
|
||||||
"action.slider_animation_speed": "Playback Speed",
|
"action.pivot_tool": "Pivotverktyg",
|
||||||
"action.slider_animation_speed.desc": "Playback speed of the timeline in percent",
|
"action.pivot_tool.desc": "Verktyg för att ändra pivotpunkten för kuber och ben",
|
||||||
"action.previous_keyframe": "Previous Keyframe",
|
"action.slider_animation_speed": "Uppspelningshastighet",
|
||||||
"action.previous_keyframe.desc": "Jump to the previous keyframe",
|
"action.slider_animation_speed.desc": "Tidslinjens uppspelningshastighet i procent",
|
||||||
"action.next_keyframe": "Next Keyframe",
|
"action.previous_keyframe": "Föregående keyframe",
|
||||||
"action.next_keyframe.desc": "Jump to the next keyframe",
|
"action.previous_keyframe.desc": "Hoppa till föregående keyframen",
|
||||||
"message.outdated_client.title": "Outdated client",
|
"action.next_keyframe": "Nästa keyframe",
|
||||||
"message.outdated_client.message": "Please update to the latest version of Blockbench to do this.",
|
"action.next_keyframe.desc": "Hoppa till nästa keyframe",
|
||||||
"action.export_bbmodel": "Export Blockbench Project",
|
"message.outdated_client.title": "Utdaterad klient",
|
||||||
"action.export_bbmodel.desc": "Export a Blockbench project with all cubes, textures and animations",
|
"message.outdated_client.message": "Vänligen uppdatera till den senaste versionen av Blockbench för att göra detta.",
|
||||||
"action.export_asset_archive": "Download Archive",
|
"action.export_bbmodel": "Exportera Blockbench Project",
|
||||||
"action.export_asset_archive.desc": "Download an archive with the model and all textures in it",
|
"action.export_bbmodel.desc": "Exportera ett Blockbench projekt med alla kuber, texturer och animeringar",
|
||||||
"action.upload_sketchfab": "Sketchfab Upload",
|
"action.export_asset_archive": "Hämta arkiv",
|
||||||
"message.sketchfab.name_or_token": "Please enter your Sketchfab token and a name",
|
"action.export_asset_archive.desc": "Ladda ner ett arkiv med modellen och alla texturer i den",
|
||||||
"dialog.sketchfab_uploader.title": "Upload Sketchfab Model",
|
"action.upload_sketchfab": "Sketchfab uppladdning",
|
||||||
|
"message.sketchfab.name_or_token": "Ange din Sketchfab token och ett namn",
|
||||||
|
"dialog.sketchfab_uploader.title": "Ladda upp Sketchfabmodell",
|
||||||
"dialog.sketchfab_uploader.token": "API Token",
|
"dialog.sketchfab_uploader.token": "API Token",
|
||||||
"dialog.sketchfab_uploader.about_token": "The token is used to connect Blockbench to your Sketchfab account. You can find it on sketchfab.com/settings/password",
|
"dialog.sketchfab_uploader.about_token": "Token används för att ansluta Blockbench till ditt Sketchfab konto. Du kan hitta den på %0",
|
||||||
"dialog.sketchfab_uploader.name": "Model Name",
|
"dialog.sketchfab_uploader.name": "Modellnamn",
|
||||||
"dialog.sketchfab_uploader.description": "Description",
|
"dialog.sketchfab_uploader.description": "Beskrivning",
|
||||||
"dialog.sketchfab_uploader.tags": "Tags",
|
"dialog.sketchfab_uploader.tags": "Tags",
|
||||||
"settings.sketchfab_token": "Sketchfab Token",
|
"settings.sketchfab_token": "Sketchfab token",
|
||||||
"settings.sketchfab_token.desc": "Token to authorize Blockbench to upload to your Sketchfab account",
|
"settings.sketchfab_token.desc": "Token för att tillåta Blockbench att ladda upp till ditt Sketchfab konto",
|
||||||
"panel.color": "Color",
|
"panel.color": "Färg",
|
||||||
"data.origin": "Origin",
|
"data.origin": "Ursprung",
|
||||||
"message.sketchfab.success": "Uploaded model successfully",
|
"message.sketchfab.success": "Laddade upp modellen lyckat",
|
||||||
"message.sketchfab.error": "Failed to upload model to Sketchfab",
|
"message.sketchfab.error": "Det gick inte att ladda upp modellen till Sketchfab",
|
||||||
"settings.outliner_colors": "Outliner Colors",
|
"settings.outliner_colors": "Kontur färger",
|
||||||
"settings.outliner_colors.desc": "Display cube colors in the outliner",
|
"settings.outliner_colors.desc": "Visa kubfärger i konturerna",
|
||||||
"action.upload_sketchfab.desc": "Upload your model to Sketchfab",
|
"action.upload_sketchfab.desc": "Ladda upp din modell till Sketchfab",
|
||||||
"action.element_colors": "Cube Colors",
|
"action.element_colors": "Kubfärg",
|
||||||
"action.element_colors.desc": "Show cube colors in the outliner",
|
"action.element_colors.desc": "Visa kubfärger i konturerna",
|
||||||
"texture.error.file": "File not found",
|
"texture.error.file": "Filen hittades inte",
|
||||||
"texture.error.invalid": "Invalid file",
|
"texture.error.invalid": "Ogiltig fil",
|
||||||
"texture.error.ratio": "Invalid aspect ratio",
|
"texture.error.ratio": "Ogiltigt bildförhållande",
|
||||||
"texture.error.parent": "Texture file provided by parent model",
|
"texture.error.parent": "Texturfil försedd av modermodell",
|
||||||
"message.recover_backup.title": "Recover Model",
|
"message.recover_backup.title": "Recover Model",
|
||||||
"message.recover_backup.message": "Blockbench was closed without saving. Do you want to recover the model?",
|
"message.recover_backup.message": "Blockbench stängdes utan att spara. Vill du återställa modellen?",
|
||||||
"message.install_plugin": "Installing the plugin %0",
|
"message.install_plugin": "Installera plugin %0",
|
||||||
"message.invalid_session.title": "Invalid Session Token",
|
"message.invalid_session.title": "Ogiltig session token",
|
||||||
"message.invalid_session.message": "The session you are trying to join has expired or the token provided is invalid.",
|
"message.invalid_session.message": "Den session du försöker gå med i har gått ut eller är den angivna token är ogiltig.",
|
||||||
"dialog.create_texture.power": "Power-of-2 Size",
|
"dialog.create_texture.power": "Upphöjt till 2 storlek",
|
||||||
"dialog.create_gif.turn": "Turntable Speed",
|
"dialog.create_gif.turn": "Vridhastighet",
|
||||||
"action.edit_session": "Edit Session...",
|
"action.edit_session": "Redigera session...",
|
||||||
"action.edit_session.desc": "Connect to an edit session to collaborate with other users",
|
"action.edit_session.desc": "Anslut till en redigeringssession för att samarbeta med andra användare",
|
||||||
"action.reset_keyframe": "Reset Keyframe",
|
"action.reset_keyframe": "Återställ keyframe",
|
||||||
"action.reset_keyframe.desc": "Reset all values of the selected keyframes",
|
"action.reset_keyframe.desc": "Återställ alla värden för de valda keyframes",
|
||||||
"panel.options.origin": "Origin",
|
"panel.options.origin": "Ursprung",
|
||||||
"dialog.edit_session.title": "Edit Session",
|
"dialog.edit_session.title": "Redigera session",
|
||||||
"edit_session.username": "Username",
|
"edit_session.username": "Användarnamn",
|
||||||
"edit_session.token": "Token",
|
"edit_session.token": "Token",
|
||||||
"edit_session.about": "Edit Sessions can be used to collaborate on models across the internet. Create a session and copy the token and send it to friends, who can then use it to join.",
|
"edit_session.about": "Redigeringssessioner kan användas för att samarbeta på modeller över hela internet. Skapa en session och kopiera din token och skicka den till vänner, som kan använda den för att gå med.",
|
||||||
"edit_session.join": "Join Session",
|
"edit_session.join": "Gå med i sessionen",
|
||||||
"edit_session.create": "Create Session",
|
"edit_session.create": "Skapa session",
|
||||||
"edit_session.quit": "Quit Session",
|
"edit_session.quit": "Lämna session",
|
||||||
"edit_session.joined": "User %0 joined the session",
|
"edit_session.joined": "Användare %0 anslöt till sessionen",
|
||||||
"edit_session.left": "User %0 left the session",
|
"edit_session.left": "Användare %0 lämnade sessionen",
|
||||||
"edit_session.quit_session": "Left current session",
|
"edit_session.quit_session": "Lämna nuvarande session",
|
||||||
"edit_session.status": "Status",
|
"edit_session.status": "Status",
|
||||||
"edit_session.hosting": "Hosting",
|
"edit_session.hosting": "Hosting",
|
||||||
"edit_session.connected": "Connected to a session"
|
"edit_session.connected": "Ansluten till en session",
|
||||||
|
"dialog.sketchfab_uploader.private": "Private (Pro)",
|
||||||
|
"dialog.sketchfab_uploader.password": "Password (Pro)",
|
||||||
|
"action.toggle_chat": "Toggle Chat",
|
||||||
|
"action.toggle_chat.desc": "Toggle the visibility of the chat history",
|
||||||
|
"action.uv_select_all": "Select All",
|
||||||
|
"action.uv_select_all.desc": "Select all faces in the UV dialog",
|
||||||
|
"panel.chat": "Chat",
|
||||||
|
"edit_session.welcome": "Welcome to this session by %0"
|
||||||
}
|
}
|
2
lib/peer.min.js
vendored
2
lib/peer.min.js
vendored
File diff suppressed because one or more lines are too long
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "Blockbench",
|
"name": "Blockbench",
|
||||||
"description": "Minecraft Block Model Editor",
|
"description": "Minecraft Block Model Editor",
|
||||||
"version": "2.6.0",
|
"version": "2.6.5",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "JannisX11",
|
"name": "JannisX11",
|
||||||
@ -78,6 +78,6 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"async": "^2.4.1",
|
"async": "^2.4.1",
|
||||||
"electron": "4.0.3",
|
"electron": "4.0.3",
|
||||||
"electron-builder": "^20.38.4"
|
"electron-builder": "^20.39.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user