diff --git a/css/panels.css b/css/panels.css index a7a014be4..3c16b43c3 100644 --- a/css/panels.css +++ b/css/panels.css @@ -782,7 +782,6 @@ /*Animations*/ #panel_animations #animations_list { - min-height: 126px; padding-bottom: 12px; } .animation { @@ -928,6 +927,11 @@ margin-top: 11px; opacity: 0.5; } + .keyframe_data_point { + display: flex; + flex-direction: column; + max-height: 250px; + } #panel_keyframe .bar.flex { height: auto; min-height: 30px; @@ -1940,7 +1944,8 @@ span.controller_state_section_info { --color-uv-background: transparent; --uv-line-width: 1px; } - #uv_frame.overlay_mode .uv_face { + #uv_frame.overlay_mode .uv_face, + #uv_frame.overlay_mode .uv_face * { pointer-events: none; } @@ -2044,6 +2049,7 @@ span.controller_state_section_info { pointer-events: none; position: relative; z-index: 1; + margin-top: -1px; } #uv_rotate_handle { width: 21.4px; diff --git a/js/api.js b/js/api.js index 3daa01d46..750c08c23 100644 --- a/js/api.js +++ b/js/api.js @@ -47,7 +47,7 @@ const Blockbench = { if (icon === undefined) { //Missing node = document.createElement('i'); - node.classList.add('material-icons', 'icon'); + node.classList.add('material-icons', 'notranslate', 'icon'); node.innerText = 'help_outline'; } else if (icon instanceof HTMLElement) { //Node @@ -55,7 +55,7 @@ const Blockbench = { } else if (icon === true || icon === false) { //Boolean node = document.createElement('i'); - node.classList.add('material-icons', 'icon'); + node.classList.add('material-icons', 'notranslate', 'icon'); node.innerText = icon ? 'check_box' : 'check_box_outline_blank'; } else if (icon === null) { @@ -84,7 +84,7 @@ const Blockbench = { } else { //Material Icon node = document.createElement('i'); - node.classList.add('material-icons', 'icon'); + node.classList.add('material-icons', 'notranslate', 'icon'); node.innerText = icon; } if (color) { diff --git a/js/display_mode.js b/js/display_mode.js index 7cada3553..202654708 100644 --- a/js/display_mode.js +++ b/js/display_mode.js @@ -1605,11 +1605,13 @@ function updateDisplaySkin(feedback) { let {material} = PreviewModel.models.attachable_reference_player; material.map.image.src = skin; material.map.needsUpdate = true; + PreviewModel.models.attachable_reference_player.updateArmVariant(slim); } if (PreviewModel.models.minecraft_player) { let {material} = PreviewModel.models.minecraft_player; material.map.image.src = skin; material.map.needsUpdate = true; + PreviewModel.models.minecraft_player.updateArmVariant(slim); } } if (!val || typeof val !== 'string') { @@ -1649,6 +1651,7 @@ function updateDisplaySkin(feedback) { setPSkin(val, slim); } } +DisplayMode.updateDisplaySkin = updateDisplaySkin; BARS.defineActions(function() { new Action('add_display_preset', { @@ -1949,7 +1952,7 @@ Interface.definePanels(function() { // Bedrock Attachables BARS.defineActions(function() { - let player_preview_model = new PreviewModel('attachable_reference_player', { + let player_attachable_reference_model = new PreviewModel('attachable_reference_player', { texture: './assets/player_skin.png', texture_size: [64, 64], cubes: [ @@ -2005,12 +2008,15 @@ BARS.defineActions(function() { "down": {"uv": [36, 32, 28, 36]} } }, + + + // ======= Wide Arms { // Right Arm "position": [4, 12, -2], "size": [4, 12, 4], "origin": [5, 22, 0], - "rotation": [15, 0, 0], + "rotation": [-1, 0, 3], "faces": { "north": {"uv": [44, 20, 48, 32]}, "east": {"uv": [40, 20, 44, 32]}, @@ -2025,7 +2031,7 @@ BARS.defineActions(function() { "position": [3.75, 11.75, -2.25], "size": [4.5, 12.5, 4.5], "origin": [5, 22, 0], - "rotation": [15, 0, 0], + "rotation": [-1, 0, 3], "faces": { "north": {"uv": [44, 36, 48, 48]}, "east": {"uv": [40, 36, 44, 48]}, @@ -2039,6 +2045,8 @@ BARS.defineActions(function() { // Left Arm "position": [-8, 12, -2], "size": [4, 12, 4], + "origin": [-5, 22, 0], + "rotation": [1, 0, -3], "faces": { "north": {"uv": [36, 52, 40, 64]}, "east": {"uv": [32, 52, 36, 64]}, @@ -2052,6 +2060,8 @@ BARS.defineActions(function() { // Arm Layer "position": [-8.25, 11.75, -2.25], "size": [4.5, 12.5, 4.5], + "origin": [-5, 22, 0], + "rotation": [1, 0, -3], "faces": { "north": {"uv": [52, 52, 56, 64]}, "east": {"uv": [48, 52, 52, 64]}, @@ -2061,6 +2071,71 @@ BARS.defineActions(function() { "down": {"uv": [60, 48, 56, 52]} } }, + + + // ======= Slim Arms + { + // Right Arm + "position": [4, 11.5, -2], + "size": [3, 12, 4], + "origin": [5, 21.5, 0], + "rotation": [-1, 0, 3], + "faces": { + "north": {"uv": [44,20,47,32]}, + "east": {"uv": [40,20,44,32]}, + "south": {"uv": [51,20,54,32]}, + "west": {"uv": [47,20,51,32]}, + "up": {"uv": [47,20,44,16]}, + "down": {"uv": [50,16,47,20]} + } + }, + { + // Arm Layer + "position": [3.75, 11.25, -2.25], + "size": [3.5, 12.5, 4.5], + "origin": [5, 21.5, 0], + "rotation": [-1, 0, 3], + "faces": { + "north": {"uv": [44,36,47,48]}, + "east": {"uv": [40,36,44,48]}, + "south": {"uv": [51,36,54,48]}, + "west": {"uv": [47,36,51,48]}, + "up": {"uv": [47,36,44,32]}, + "down": {"uv": [50,32,47,36]} + } + }, + { + // Left Arm + "position": [-7, 11.5, -2], + "size": [3, 12, 4], + "origin": [-5, 21.5, 0], + "rotation": [1, 0, -3], + "faces": { + "north": {"uv": [36,52,39,64]}, + "east": {"uv": [32,52,36,64]}, + "south": {"uv": [43,52,46,64]}, + "west": {"uv": [39,52,43,64]}, + "up": {"uv": [39,52,36,48]}, + "down": {"uv": [42,48,39,52]} + } + }, + { + // Arm Layer + "position": [-7.25, 11.25, -2.25], + "size": [3.5, 12.5, 4.5], + "origin": [-5, 21.5, 0], + "rotation": [1, 0, -3], + "faces": { + "north": {"uv": [52,52,55,64]}, + "east": {"uv": [48,52,52,64]}, + "south": {"uv": [59,52,62,64]}, + "west": {"uv": [55,52,59,64]}, + "up": {"uv": [55,52,52,48]}, + "down": {"uv": [58,48,55,52]} + } + }, + + { // Right Leg "position": [-0.1, 0, -2], @@ -2116,7 +2191,8 @@ BARS.defineActions(function() { ] }) - window.player_preview_model = player_preview_model; + window.player_attachable_reference_model = player_attachable_reference_model; + player_attachable_reference_model.updateArmVariant = player_preview_model.updateArmVariant; let camera_preset_1st = { name: tl('action.bedrock_animation_mode.attachable_first'), @@ -2164,14 +2240,14 @@ BARS.defineActions(function() { Project.model_3d.position.set(5, 22, 0).add(arm_offset); } Project.model_3d.rotation.set(angle, 0, 0); - player_preview_model.enable() + player_attachable_reference_model.enable() if (!player_skin_setup) { updateDisplaySkin(); player_skin_setup = true; } } else { - player_preview_model.disable() + player_attachable_reference_model.disable() } if (mode != 'attachable_first' && mode != 'attachable_third' && Format.id == 'bedrock') { diff --git a/js/interface/interface.js b/js/interface/interface.js index 174f5d99d..a1e9aee95 100644 --- a/js/interface/interface.js +++ b/js/interface/interface.js @@ -523,8 +523,10 @@ function setupInterface() { Interface.work_screen.addEventListener('dblclick', event => { let reference = ReferenceImage.active.find(reference => reference.projectMouseCursor(event.clientX, event.clientY)); if (!reference) return; - if (document.querySelector('.preview:hover')) { + if (document.querySelector('.preview > canvas:hover')) { if (Preview.selected.raycast(event)) return; + } else if (document.querySelector('#preview:hover')) { + return; } reference.select(); }); diff --git a/js/interface/keyboard.js b/js/interface/keyboard.js index b60c01282..319c7c1af 100644 --- a/js/interface/keyboard.js +++ b/js/interface/keyboard.js @@ -235,8 +235,9 @@ class Keybind { scope.stopRecording() } + let mac_modifiers = ['Alt', 'Shift', 'Control', 'Meta']; function onActivateDown(event) { - if (event.metaKey && event.which != 91) { + if (event.metaKey && !mac_modifiers.includes(event.key)) { onActivate(event) } } diff --git a/js/io/formats/bbmodel.js b/js/io/formats/bbmodel.js index aa5efa16d..10ab92497 100644 --- a/js/io/formats/bbmodel.js +++ b/js/io/formats/bbmodel.js @@ -459,6 +459,7 @@ var codec = new Codec('project', { let new_elements = []; let new_textures = []; let new_animations = []; + let imported_format = Formats[model.meta.model_format]; Undo.initEdit({ elements: new_elements, textures: new_textures, @@ -518,6 +519,7 @@ var codec = new Codec('project', { if (model.skin_model) { Codecs.skin_model.rebuild(model.skin_model); } + let adjust_uv = !Format.per_texture_uv_size || !imported_format?.per_texture_uv_size; if (model.elements) { let default_texture = new_textures[0] || Texture.getDefault(); let format = Formats[model.meta.model_format] || Format @@ -540,8 +542,12 @@ var codec = new Codec('project', { } else if (default_texture && copy.faces && copy.faces[face].texture !== null) { copy.faces[face].texture = default_texture.uuid } - if (!copy.box_uv) { + if (!copy.box_uv && adjust_uv) { let tex = copy.faces[face].getTexture(); + if (tex && imported_format?.per_texture_uv_size) { + width = tex.uv_width; + height = tex.uv_height; + } copy.faces[face].uv[0] *= (Project.getUVWidth(tex)) / width; copy.faces[face].uv[2] *= (Project.getUVWidth(tex)) / width; copy.faces[face].uv[1] *= (Project.getUVHeight(tex)) / height; @@ -558,10 +564,16 @@ var codec = new Codec('project', { } else if (default_texture && copy.faces && copy.faces[fkey].texture !== null) { copy.faces[fkey].texture = default_texture.uuid } - for (let vkey in copy.faces[fkey].uv) { - let tex = copy.faces[fkey].getTexture(); - copy.faces[fkey].uv[vkey][0] *= Project.getUVWidth(tex) / width; - copy.faces[fkey].uv[vkey][1] *= Project.getUVHeight(tex) / height; + if (adjust_uv) { + for (let vkey in copy.faces[fkey].uv) { + let tex = copy.faces[fkey].getTexture(); + if (tex && imported_format?.per_texture_uv_size) { + width = tex.uv_width; + height = tex.uv_height; + } + copy.faces[fkey].uv[vkey][0] *= Project.getUVWidth(tex) / width; + copy.faces[fkey].uv[vkey][1] *= Project.getUVHeight(tex) / height; + } } } } diff --git a/js/io/formats/gltf.js b/js/io/formats/gltf.js index 3ea5f3ad7..27f789493 100644 --- a/js/io/formats/gltf.js +++ b/js/io/formats/gltf.js @@ -180,9 +180,10 @@ function buildSkinnedMesh(root_group, scale) { let normal = Reusable.vec2; function addGroup(group, parent_bone) { + if (group.export == false) return; for (child of group.children) { - if (!child.mesh.geometry) continue; + if (!child.mesh.geometry || child.export == false) continue; let {geometry} = child.mesh; let matrix = new THREE.Matrix4().copy(child.mesh.matrixWorld); matrix.premultiply(root_counter_matrix); diff --git a/js/io/formats/obj.js b/js/io/formats/obj.js index 04ce44122..c7614f65c 100644 --- a/js/io/formats/obj.js +++ b/js/io/formats/obj.js @@ -375,11 +375,15 @@ var codec = new Codec('obj', { var mtlOutput = '# Made in Blockbench '+appVersion+'\n';; - for (var key in materials) { + for (let key in materials) { if (materials.hasOwnProperty(key) && materials[key]) { - var tex = materials[key]; + let tex = materials[key]; + let name = tex.name; + if (name.substr(-4) !== '.png') { + name += '.png'; + } mtlOutput += 'newmtl m_' +key+ '\n' - mtlOutput += `map_Kd ${tex.name}\n`; + mtlOutput += `map_Kd ${name}\n`; } } mtlOutput += 'newmtl none' diff --git a/js/modeling/mesh_editing.js b/js/modeling/mesh_editing.js index 495d7986a..f2a5d5523 100644 --- a/js/modeling/mesh_editing.js +++ b/js/modeling/mesh_editing.js @@ -99,7 +99,7 @@ const ProportionalEdit = { } SharedActions.add('delete', { - condition: () => Modes.edit && Mesh.selected[0] && Project.mesh_selection[Mesh.selected[0].uuid], + condition: () => Modes.edit && Prop.active_panel == 'preview' && Mesh.selected[0] && Project.mesh_selection[Mesh.selected[0].uuid], run() { let meshes = Mesh.selected.slice(); Undo.initEdit({elements: meshes, outliner: true}) @@ -785,7 +785,7 @@ BARS.defineActions(function() { reference_face = face; reference_face_strength = match_strength; } - if (face.isSelected(key)) { + if (match_strength == face.vertices.length) { delete mesh.faces[key]; } } @@ -1167,6 +1167,8 @@ BARS.defineActions(function() { } else if (match) { // perpendicular edge, currently unused direction = match.getNormal(true); + } else { + direction = [0, 1, 0]; } } @@ -2170,7 +2172,8 @@ BARS.defineActions(function() { vertex_textures: [], vertex_normals: [], } - args.forEach(triplet => { + args.forEach((triplet, i) => { + if (i >= 4) return; let [v, vt, vn] = triplet.split('/').map(v => parseInt(v)); if (!vertex_keys[ v-1 ]) { vertex_keys[ v-1 ] = mesh.addVertices(vertices[v-1])[0]; diff --git a/js/modeling/mirror_modeling.js b/js/modeling/mirror_modeling.js index ab1911eb7..e28515073 100644 --- a/js/modeling/mirror_modeling.js +++ b/js/modeling/mirror_modeling.js @@ -372,7 +372,7 @@ Blockbench.on('finish_edit', ({aspects}) => { aspects.elements = aspects.elements.slice(); let static_elements_copy = aspects.elements.slice(); static_elements_copy.forEach((element) => { - if (element.allow_mirror_modeling) { + if (element.allow_mirror_modeling && !element.locked) { let is_centered = MirrorModeling.isCentered(element); if (is_centered && element instanceof Mesh) { diff --git a/js/modeling/scale.js b/js/modeling/scale.js index 57c10fddd..abf1089ca 100644 --- a/js/modeling/scale.js +++ b/js/modeling/scale.js @@ -69,7 +69,7 @@ const ModelScaler = { if (Group.selected) { Group.selected.forEachChild((g) => { groups.push(g); - }, Group) + }, Group, true); } else if (Outliner.selected.length == Outliner.elements.length && Group.all.length) { groups = Group.all; } @@ -81,6 +81,7 @@ const ModelScaler = { let {origin} = data; let axis_enabled = ['x', 'y', 'z'].map(axis => document.getElementById(`model_scale_${axis}_axis`).checked); let overflow = []; + let scale_groups = ModelScaler.getScaleGroups(); Outliner.selected.forEach(function(obj) { obj.autouv = 0; @@ -139,10 +140,10 @@ const ModelScaler = { Canvas.updateUV(obj) } }) - ModelScaler.getScaleGroups().forEach((g) => { - if (axis_enabled[0]) g.origin[0] = g.old_origin[0] * size; - if (axis_enabled[1]) g.origin[1] = g.old_origin[1] * size; - if (axis_enabled[2]) g.origin[2] = g.old_origin[2] * size; + scale_groups.forEach((g) => { + if (axis_enabled[0]) g.origin[0] = ((g.old_origin[0] - origin[0]) * size) + origin[0]; + if (axis_enabled[1]) g.origin[1] = ((g.old_origin[1] - origin[1]) * size) + origin[1]; + if (axis_enabled[2]) g.origin[2] = ((g.old_origin[2] - origin[2]) * size) + origin[2]; if (save === true) { delete g.old_origin } @@ -155,7 +156,7 @@ const ModelScaler = { Canvas.updateView({ elements: Outliner.selected, element_aspects: {geometry: true, transform: true}, - groups: ModelScaler.getScaleGroups(), + groups: scale_groups, group_aspects: {transform: true}, selection: true }) diff --git a/js/outliner/cube.js b/js/outliner/cube.js index 6053ed9c1..d93bfc5b6 100644 --- a/js/outliner/cube.js +++ b/js/outliner/cube.js @@ -292,22 +292,33 @@ class Cube extends OutlinerElement { return Project.nodes_3d[this.uuid]; } getUndoCopy(aspects = 0) { - var copy = new Cube(this) - if (aspects.uv_only) { - copy = { - box_uv: copy.box_uv, - uv_offset: copy.uv_offset, - faces: copy.faces, - mirror_uv: copy.mirror_uv, - autouv: copy.autouv, - } + let copy = {}; + + for (var key in Cube.properties) { + Cube.properties[key].copy(this, copy); } - for (let face_id in copy.faces) { - copy.faces[face_id] = copy.faces[face_id].getUndoCopy() + + copy.from = this.from.slice(); + copy.to = this.to.slice(); + copy.stretch = this.stretch.slice(); + copy.inflate = this.inflate; + copy.rotation = this.rotation.slice(); + copy.origin = this.origin.slice(); + copy.uv_offset = this.uv_offset.slice(); + copy.autouv = this.autouv; + copy.color = this.color; + copy.visibility = this.visibility; + copy.export = this.export; + copy.shade = this.shade; + copy.mirror_uv = this.mirror_uv; + + copy.faces = {}; + for (let face_id in this.faces) { + copy.faces[face_id] = this.faces[face_id].getUndoCopy(); } + copy.uuid = this.uuid copy.type = this.type; - delete copy.parent; return copy; } getSaveCopy(project) { diff --git a/js/outliner/mesh.js b/js/outliner/mesh.js index afc486ce7..56188e0a0 100644 --- a/js/outliner/mesh.js +++ b/js/outliner/mesh.js @@ -871,6 +871,7 @@ new Property(Mesh, 'string', 'name', {default: 'mesh'}) new Property(Mesh, 'number', 'color', {default: Math.floor(Math.random()*markerColors.length)}); new Property(Mesh, 'vector', 'origin'); new Property(Mesh, 'vector', 'rotation'); +new Property(Mesh, 'boolean', 'export', {default: true}); new Property(Mesh, 'boolean', 'visibility', {default: true}); new Property(Mesh, 'boolean', 'locked'); new Property(Mesh, 'enum', 'render_order', {default: 'default', values: ['default', 'behind', 'in_front']}); diff --git a/js/outliner/outliner.js b/js/outliner/outliner.js index 95ac7c11e..c794b3a19 100644 --- a/js/outliner/outliner.js +++ b/js/outliner/outliner.js @@ -981,6 +981,7 @@ function toggleCubeProperty(key) { StateMemory.init('advanced_outliner_toggles', 'boolean') SharedActions.add('rename', { + subject: 'outliner', condition: {modes: ['edit', 'paint']}, priority: -1, run() { @@ -988,6 +989,7 @@ SharedActions.add('rename', { } }); SharedActions.add('delete', { + subject: 'outliner', condition: () => ((Modes.edit || Modes.paint) && (selected.length || Group.selected)), priority: -1, run() { @@ -1012,6 +1014,7 @@ SharedActions.add('delete', { } }) SharedActions.add('duplicate', { + subject: 'outliner', condition: () => Modes.edit && Group.selected && (Group.selected.matchesSelection() || selected.length === 0), priority: -1, run() { @@ -1023,6 +1026,7 @@ SharedActions.add('duplicate', { } }) SharedActions.add('duplicate', { + subject: 'outliner', condition: () => Modes.edit && Outliner.selected.length, priority: -2, run() { @@ -1037,6 +1041,7 @@ SharedActions.add('duplicate', { } }) SharedActions.add('select_all', { + subject: 'outliner', condition: () => Modes.edit || Modes.paint, priority: -2, run() { @@ -1056,6 +1061,7 @@ SharedActions.add('select_all', { } }) SharedActions.add('unselect_all', { + subject: 'outliner', condition: () => Modes.edit || Modes.paint, priority: -2, run() { @@ -1063,6 +1069,7 @@ SharedActions.add('unselect_all', { } }) SharedActions.add('invert_selection', { + subject: 'outliner', condition: () => Modes.edit || Modes.paint, priority: -2, run() { @@ -1748,6 +1755,8 @@ Interface.definePanels(function() { 'add_cube', 'add_texture_mesh', 'add_group', + new MenuSeparator('copypaste'), + 'paste', new MenuSeparator('manage'), 'select_all', 'sort_outliner', diff --git a/js/preview/preview.js b/js/preview/preview.js index 864e163ba..97b1c1ea2 100644 --- a/js/preview/preview.js +++ b/js/preview/preview.js @@ -1659,6 +1659,7 @@ Preview.split_screen = { Blockbench.on('update_camera_position', e => { let scale = Preview.selected.calculateControlScale(Transformer.position) || 0.8; + if (Blockbench.isTouch) scale *= 1.5; Preview.all.forEach(preview => { if (preview.canvas.isConnected) { preview.raycaster.params.Points.threshold = scale * 0.8; diff --git a/js/preview/preview_scenes.js b/js/preview/preview_scenes.js index 1320c6017..c84d1283e 100644 --- a/js/preview/preview_scenes.js +++ b/js/preview/preview_scenes.js @@ -271,17 +271,15 @@ class PreviewModel { } let indices = []; - let j = 0; mesh.geometry.faces = []; mesh.geometry.clearGroups(); Canvas.face_order.forEach((fkey, i) => { if (cube.faces[fkey]) { indices.push(0 + i*4, 2 + i*4, 1 + i*4, 2 + i*4, 3 + i*4, 1 + i*4); mesh.geometry.faces.push(fkey) - j++; } }) - mesh.geometry.setIndex(indices) + mesh.geometry.setIndex(indices); for (let face in cube.faces) { let uv_array = getUVArray(cube.faces[face]); @@ -451,6 +449,10 @@ let player_preview_model = new PreviewModel('minecraft_player', { scale: [0.9375, 0.9375, 0.9375], onUpdate() { this.material.color.copy(Canvas.global_light_color); + if (!this.was_set_up) { + DisplayMode.updateDisplaySkin(); + this.was_set_up = true; + } }, cubes: [ { @@ -507,6 +509,9 @@ let player_preview_model = new PreviewModel('minecraft_player', { "down": {"uv": [36, 32, 28, 36]} } }, + + + // ======= Wide Arms { // Right Arm "position": [4, 12, -2], @@ -567,6 +572,72 @@ let player_preview_model = new PreviewModel('minecraft_player', { "down": {"uv": [60, 48, 56, 52]} } }, + + + // ======= Slim Arms + { + // Right Arm + "position": [4, 11.5, -2], + "size": [3, 12, 4], + "origin": [5, 21.5, 0], + "rotation": [-1, 0, 3], + "faces": { + "north": {"uv": [44,20,47,32]}, + "east": {"uv": [40,20,44,32]}, + "south": {"uv": [51,20,54,32]}, + "west": {"uv": [47,20,51,32]}, + "up": {"uv": [47,20,44,16]}, + "down": {"uv": [50,16,47,20]} + } + }, + { + // Arm Layer + "position": [3.75, 11.25, -2.25], + "size": [3.5, 12.5, 4.5], + "origin": [5, 21.5, 0], + "rotation": [-1, 0, 3], + "faces": { + "north": {"uv": [44,36,47,48]}, + "east": {"uv": [40,36,44,48]}, + "south": {"uv": [51,36,54,48]}, + "west": {"uv": [47,36,51,48]}, + "up": {"uv": [47,36,44,32]}, + "down": {"uv": [50,32,47,36]} + } + }, + { + // Left Arm + "position": [-7, 11.5, -2], + "size": [3, 12, 4], + "origin": [-5, 21.5, 0], + "rotation": [1, 0, -3], + "faces": { + "north": {"uv": [36,52,39,64]}, + "east": {"uv": [32,52,36,64]}, + "south": {"uv": [43,52,46,64]}, + "west": {"uv": [39,52,43,64]}, + "up": {"uv": [39,52,36,48]}, + "down": {"uv": [42,48,39,52]} + } + }, + { + // Arm Layer + "position": [-7.25, 11.25, -2.25], + "size": [3.5, 12.5, 4.5], + "origin": [-5, 21.5, 0], + "rotation": [1, 0, -3], + "faces": { + "north": {"uv": [52,52,55,64]}, + "east": {"uv": [48,52,52,64]}, + "south": {"uv": [59,52,62,64]}, + "west": {"uv": [55,52,59,64]}, + "up": {"uv": [55,52,52,48]}, + "down": {"uv": [58,48,55,52]} + } + }, + + + { // Right Leg "position": [-0.1, 0, -2], @@ -622,6 +693,14 @@ let player_preview_model = new PreviewModel('minecraft_player', { ] }) +player_preview_model.updateArmVariant = function(slim) { + for (let i = 4; i < 8; i++) { + this.model_3d.children[i].visible = !slim; + } + for (let i = 8; i < 12; i++) { + this.model_3d.children[i].visible = !!slim; + } +} StateMemory.init('minecraft_eula_accepted', 'object'); const MinecraftEULA = { diff --git a/js/texturing/texture_generator.js b/js/texturing/texture_generator.js index f1101dcb0..c42e99bf2 100644 --- a/js/texturing/texture_generator.js +++ b/js/texturing/texture_generator.js @@ -62,6 +62,9 @@ const TextureGenerator = { results.resolution = results.resolution_vec; } dialog.hide() + if (Format.edit_mode && Outliner.selected.length == 0) { + SharedActions.runSpecific('select_all', 'outliner'); + } TextureGenerator.addBitmap(results, callback); return false; } @@ -591,17 +594,19 @@ const TextureGenerator = { } for (var face in TextureGenerator.face_data) { - let d = TextureGenerator.face_data[face] + let d = TextureGenerator.face_data[face]; + let previous_texture = cube.faces[face].getTexture() + + if (previous_texture) { + let success = TextureGenerator.boxUVdrawTexture(cube.faces[face], d.place(template), texture, canvas, res_multiple); + if (success) continue; + } if (face == 'west' && cube.size(0) == 0) continue; if (face == 'down' && cube.size(1) == 0) continue; if (face == 'south' && cube.size(2) == 0) continue; - if (!cube.faces[face].getTexture() || - !TextureGenerator.boxUVdrawTexture(cube.faces[face], d.place(template), texture, canvas, res_multiple) - ) { - TextureGenerator.boxUVdrawTemplateRectangle(d.c1, transparent ? null : d.c2, cube.faces[face], d.place(template), texture, canvas, res_multiple) - } + TextureGenerator.boxUVdrawTemplateRectangle(d.c1, transparent ? null : d.c2, cube.faces[face], d.place(template), texture, canvas, res_multiple) } if (template && template.duplicates) { diff --git a/js/texturing/uv.js b/js/texturing/uv.js index 9bce81ab7..d840147bb 100644 --- a/js/texturing/uv.js +++ b/js/texturing/uv.js @@ -74,6 +74,11 @@ const UVEditor = { tool_result = Toolbox.selected.onTextureEditorClick(texture, coords.x, coords.y, event); } if (tool_result !== false && texture) { + if (event.target.id == 'uv_viewport') { + // Discard scrollbar clicks + if (event.offsetX >= event.target.clientWidth) return; + if (event.offsetY >= event.target.clientHeight) return; + } Painter.startPaintTool(texture, coords.x, coords.y, undefined, event); addEventListeners(UVEditor.vue.$refs.viewport, 'mousemove touchmove', UVEditor.movePaintTool, false ); addEventListeners(document, 'mouseup touchend', UVEditor.stopBrush, false ); @@ -233,7 +238,7 @@ const UVEditor = { } } }) - let pixel_size = UVEditor.inner_width / UVEditor.vue.project_resolution[0]; + let pixel_size = UVEditor.inner_width / UVEditor.vue.uv_resolution[0]; let focus = [min_x+max_x, min_y+max_y].map(v => v * 0.5 * pixel_size); let {viewport} = UVEditor.vue.$refs; let margin = UVEditor.vue.getFrameMargin(); @@ -3613,6 +3618,7 @@ Interface.definePanels(function() { toggleFaceTint(key, event) { Undo.initEdit({elements: Cube.selected, uv_only: true}) UVEditor.switchTint(event) + UVEditor.vue.$forceUpdate(); Undo.finishEdit('Toggle face tint') }, changeFaceTint(key, event) { diff --git a/js/undo.js b/js/undo.js index 4dec78b06..63920b941 100644 --- a/js/undo.js +++ b/js/undo.js @@ -512,15 +512,17 @@ class UndoSystem { } if (save.display_slots) { - for (var slot in save.display_slots) { - var data = save.display_slots[slot] + for (let slot in save.display_slots) { + let data = save.display_slots[slot] if (!Project.display_settings[slot] && data) { Project.display_settings[slot] = new DisplaySlot() } else if (data === null && Project.display_settings[slot]) { Project.display_settings[slot].default() } - Project.display_settings[slot].extend(data).update() + if (Project.display_settings[slot]) { + Project.display_settings[slot].extend(data).update(); + } } } diff --git a/lang/de.json b/lang/de.json index 4e997102f..f5a223243 100644 --- a/lang/de.json +++ b/lang/de.json @@ -28,15 +28,15 @@ "keys.enter": "Eingabe", "keys.escape": "Escape", "keys.function": "F%0", - "keys.numpad": "Nummernblock %0", + "keys.numpad": "Ziffernblock %0", "keys.caps": "Feststelltaste", - "keys.menu": "Kontextmenu", - "keys.left": "Pfeil Links", - "keys.up": "Pfeil Hoch", - "keys.right": "Pfeil Rechts", - "keys.down": "Pfeil Runter", - "keys.pageup": "Bild Auf", - "keys.pagedown": "Bild Ab", + "keys.menu": "Kontextmenü", + "keys.left": "Pfeil links", + "keys.up": "Pfeil hoch", + "keys.right": "Pfeil rechts", + "keys.down": "Pfeil runter", + "keys.pageup": "Bild auf", + "keys.pagedown": "Bild ab", "keys.plus": "Plus", "keys.comma": "Komma", "keys.point": "Punkt", @@ -47,12 +47,12 @@ "keys.printscreen": "Drucken", "keys.pause": "Pause", "message.rotation_limit.title": "Rotationsbegrenzung", - "message.rotation_limit.message": "Rotationen sind von Minecraft auf nur eine Achse und 22,5° Schritte begrenzt. Das Drehen auf einer weiteren Achse setzt alle anderen Achsen zurück. Konvertiere das Modell in ein \"generisches Modell\", wenn du freie Rotationen benötigst.", + "message.rotation_limit.message": "Rotationen sind von Minecraft auf nur eine Achse und 22,5°-Schritte begrenzt. Das Drehen auf einer weiteren Achse setzt alle anderen Achsen zurück. Konvertiere das Modell in ein „generisches Modell“, wenn du freie Rotationen benötigst.", "message.file_not_found.title": "Datei nicht gefunden", "message.file_not_found.message": "Blockbench konnte die angeforderte Datei nicht finden. Überprüfe, ob die Datei lokal gespeichert ist und nicht in einer Cloud.", "message.screenshot.title": "Bildschirmfoto", "message.screenshot.clipboard": "Zwischenablage", - "message.screenshot.right_click": "Bildschirmfoto - Rechtsklicken oder gedrückt halten zum Kopieren", + "message.screenshot.right_click": "Bildschirmfoto – Rechtsklicken oder gedrückt halten zum Kopieren", "message.invalid_file.title": "Ungültige Datei", "message.invalid_file.message": "Konnte die Modelldatei nicht öffnen: %0", "message.invalid_model.title": "Ungültige Modelldatei", @@ -62,27 +62,27 @@ "message.unsaved_textures.title": "Ungespeicherte Texturen", "message.unsaved_textures.message": "Dein Modell hat ungespeicherte Texturen. Um sicherzugehen, dass das Modell funktioniert, solltest du diese in dem entsprechenden Ordner im Ressourcenpaket speichern.", "message.model_clipping.title": "Modell zu groß", - "message.model_clipping.message": "Dein Modell enthält %0 Elemente, die größer sind als das 3x3x3 Block Limit von Minecraft zulässt. Dieses Modell wird so nicht in Minecraft funktionieren.", + "message.model_clipping.message": "Dein Modell enthält %0 Elemente, die größer sind als die Blockbegrenzung von 3×3×3, die Minecraft zulässt. Dieses Modell wird so nicht in Minecraft funktionieren.", "message.loose_texture.title": "Texturenimport", "message.loose_texture.message": "Die geladene Textur befindet sich nicht in einem Ressourcenpaket. Minecraft kann nur Texturen laden, die sich innerhalb des Texturenordners eines Ressourcenpakets befindet.", "message.loose_texture.change": "Pfad Verändern", "message.update_res.title": "Auflösung", - "message.update_res.message": "Möchtest du die Auflösung des Projekts an die Auflösung dieser Textur anpassen? Wähle 'Abbrechen', wenn die Textur eine höhere Auflösung haben soll.", + "message.update_res.message": "Möchtest du die Auflösung des Projekts an die Auflösung dieser Textur anpassen? Wähle „Abbrechen“, wenn die Textur eine höhere Auflösung haben soll.", "message.update_res.update": "Anpassen", "message.bedrock_overwrite_error.message": "Blockbench kann dieses Modell nicht mit der alten Modelldatei vereinen", "message.bedrock_overwrite_error.backup_overwrite": "Sicherungskopie erstellen und überschreiben", "message.bedrock_overwrite_error.overwrite": "Überschreiben", "message.close_warning.message": "Möchtest du dein Modell speichern?", - "message.close_warning.web": "Bist du sicher, dass du das Program verlassen möchtest? Dadurch geht die momentane Arbeit verloren.", + "message.close_warning.web": "Bist du sicher, dass du das Programm verlassen möchtest? Dadurch geht die momentane Arbeit verloren.", "message.default_textures.title": "Standardtexturen", - "message.default_textures.message": "Wähle den \"textures\" Ordner deines Ressourcenpakets", - "message.default_textures.detail": "Extrahiere das Standard-Ressourcenpaket aus der Minecraft .jar oder lade es aus dem Internet herunder. Suche dann den \"textures\" Ordner und öffne diesen. Blockbench merkt sich diesen Ordner und greift in Zukunft darauf zurück, wenn es die Texturen nicht anderweitig finden kann.", + "message.default_textures.message": "Wähle den „textures“-Ordner deines Ressourcenpakets", + "message.default_textures.detail": "Extrahiere das Standard-Ressourcenpaket aus der Minecraft-.jar-Datei oder lade es aus dem Internet herunter. Suche dann den „textures“-Ordner und öffne diesen. Blockbench merkt sich diesen Ordner und greift in Zukunft darauf zurück, wenn es die Texturen nicht anderweitig finden kann.", "message.default_textures.select": "Ordner auswählen", "message.image_editor.title": "Wähle ein Bildbearbeitungsprogramm", - "message.image_editor.file": "Datei auswählen...", + "message.image_editor.file": "Datei auswählen ...", "message.image_editor.exe": "Öffne die Programmdatei eines Bildbearbeitungsprogramms", - "message.display_skin.title": "Minecraft Skin", - "message.display_skin.message": "Wähle eine Skindatei von deinem Computer oder gebe einen Spielernamen an", + "message.display_skin.title": "Minecraft-Skin", + "message.display_skin.message": "Wähle eine Skindatei von deinem Computer oder gib einen Spielernamen an", "message.display_skin.upload": "Skindatei", "message.display_skin.reset": "Zurücksetzen", "message.invalid_plugin": "Fehlerhafte Plugindatei, siehe Konsole", @@ -91,17 +91,17 @@ "message.preset_no_info": "Dieses Preset enthält keine Informationen zu dieser Position", "message.restart_to_update": "Starte Blockbench neu, um die Änderungen wirksam werden zu lassen.", "message.save_file": "Gespeichert als %0", - "message.save_obj": "Gespeichert als .obj Modell", + "message.save_obj": "Gespeichert als .obj-Modell", "dialog.project.title": "Projekt", "dialog.project.name": "Dateiname", "dialog.project.parent": "Elternmodell", - "dialog.project.geoname": "Modell ID", + "dialog.project.geoname": "Modell-ID", "dialog.project.ao": "Umgebungsschattierung", "dialog.texture.title": "Textur", "dialog.texture.variable": "Variable", "dialog.texture.namespace": "Namensraum", "dialog.texture.folder": "Ordner", - "dialog.extrude.title": "Grafik Extrudieren", + "dialog.extrude.title": "Grafik extrudieren", "dialog.extrude.mode": "Abtastmodus", "dialog.extrude.mode.areas": "Bereiche", "dialog.extrude.mode.lines": "Zeilen", @@ -117,7 +117,7 @@ "dialog.select.name": "Name enthält", "dialog.select.random": "Zufall", "dialog.select.select": "Auswählen", - "dialog.scale.title": "Modell Skalieren", + "dialog.scale.title": "Modell skalieren", "dialog.scale.axis": "Achse", "dialog.scale.clipping": "Modellüberstand: Dein Modell ist zu groß", "dialog.scale.confirm": "Skalieren", @@ -138,7 +138,7 @@ "dialog.settings.settings": "Einstellungen", "dialog.settings.keybinds": "Tastenbelegungen", "dialog.settings.about": "Über", - "layout.color.back": "Dunkler", + "layout.color.back": "Hintergrund", "layout.color.back.desc": "Hintergründe und Eingabefelder", "layout.color.dark": "Dunkel", "layout.color.dark.desc": "Hintergrund der Vorschau", @@ -146,7 +146,7 @@ "layout.color.ui.desc": "Haupt-Oberflächenfarbe", "layout.color.bright_ui": "Helle Oberfläche", "layout.color.bright_ui.desc": "Kontextmenüs und Tooltips", - "layout.color.button": "Schaltflächen", + "layout.color.button": "Schaltfläche", "layout.color.button.desc": "Schaltflächen und Schalter", "layout.color.selected": "Auswahl", "layout.color.selected.desc": "Ausgewählte Objekte und Registerkarten", @@ -155,15 +155,15 @@ "layout.color.accent": "Akzent", "layout.color.accent.desc": "Akzentfarbe für Details", "layout.color.grid": "Gitter", - "layout.color.grid.desc": "Gitter der 3D Vorschau", + "layout.color.grid.desc": "Gitter der 3D-Vorschau", "layout.color.text": "Text", "layout.color.text.desc": "Normaler Text", "layout.color.light": "Hell", "layout.color.light.desc": "Ausgewählter Text", "layout.color.accent_text": "Akzenttext", "layout.color.accent_text.desc": "Text auf hellen- oder Akzent-Elementen", - "layout.font.main": "Haupt-Schriftart", - "layout.font.headline": "Überschriften-Schriftart", + "layout.font.main": "Hauptschriftart", + "layout.font.headline": "Überschriftenschriftart", "about.version": "Version: ", "about.creator": "Entwickler: ", "about.website": "Webseite: ", @@ -194,24 +194,24 @@ "settings.texture_fps.desc": "Wiedergabegeschwindigkeit für animierte Texturen in Bildern pro Sekunde", "settings.base_grid": "Kleines Gitter", "settings.base_grid.desc": "Kleines Gitter und Achsen anzeigen", - "settings.large_grid": "Block-Raster", - "settings.large_grid.desc": "16x16 Block-Raster anzeigen", - "settings.full_grid": "Genaues Block-Raster", - "settings.full_grid.desc": "Vollständiges, genaues Block-Raster anzeigen", + "settings.large_grid": "Blockraster", + "settings.large_grid.desc": "16×16-Blockraster anzeigen", + "settings.full_grid": "Genaues Blockraster", + "settings.full_grid.desc": "Vollständiges, genaues Blockraster anzeigen", "settings.large_box": "Blockrahmen", - "settings.large_box.desc": "3x3x3 Block Begrenzung anzeigen", + "settings.large_box.desc": "3×3×3-Blockbegrenzung anzeigen", "settings.display_grid": "Anzeigemodus", "settings.display_grid.desc": "Gitter im Anzeigemodus zeigen", "settings.undo_limit": "Maximale Rückgängig-Schritte", - "settings.undo_limit.desc": "Die maximale Anzahl der Bearbeitungen, die für die \"Rückgängig\"-Funktion aufgezeichnet werden", + "settings.undo_limit.desc": "Die maximale Anzahl der Bearbeitungen, die für die „Rückgängig“-Funktion aufgezeichnet werden", "settings.local_move": "Auf relativen Achsen bewegen", "settings.local_move.desc": "Elemente entlang ihrer eigenen, mitgedrehten Achsen bewegen, wenn möglich", "settings.canvas_unselect": "Auswahl aufheben", "settings.canvas_unselect.desc": "Auswahl beim Klicken auf den Hintergrund aufheben", "settings.paint_side_restrict": "Pinsel auf Seite beschränken", "settings.paint_side_restrict.desc": "Beschränkt den Pinsel auf das Verändern der Seite, auf die geklickt wurde", - "settings.autouv": "Auto UV", - "settings.autouv.desc": "Auto UV standardmäßig aktivieren", + "settings.autouv": "Auto-UV", + "settings.autouv.desc": "Auto-UV standardmäßig aktivieren", "settings.create_rename": "Neue Elemente umbenennen", "settings.create_rename.desc": "Beim Erstellen von Elementen oder Gruppen das Namensfeld zum Umbenennen auswählen", "settings.edit_size": "Gitterauflösung", @@ -228,8 +228,8 @@ "settings.export_groups.desc": "Gruppen in Modelldateien speichern", "settings.credit": "Erstellerkommentar", "settings.credit.desc": "Einen Erstellerkommentar zu gespeicherten Dateien hinzufügen", - "settings.default_path": "Standard Pfad für Minecraft Texturen", - "settings.default_path.desc": "Ordner aus dem Blockbench fehlende Standardtexturen lädt", + "settings.default_path": "Standardpfad für Minecraft-Texturen", + "settings.default_path.desc": "Ordner, aus dem Blockbench fehlende Standardtexturen lädt", "settings.image_editor": "Bildbearbeitungsprogramm", "settings.image_editor.desc": "Standard-Bildbearbeitungsprogramm zum externen Bearbeiten von Texturen", "category.navigate": "Navigation", @@ -237,7 +237,7 @@ "category.file": "Datei", "category.blockbench": "Blockbench", "category.edit": "Bearbeiten", - "category.transform": "Bewegen", + "category.transform": "Transformieren", "category.view": "Ansicht", "category.display": "Anzeigeeinstellungen", "category.textures": "Texturen", @@ -256,13 +256,13 @@ "action.slider_brush_softness": "Weiche Kanten", "action.slider_brush_softness.desc": "Weiche Kanten des Pinsels in Prozent", "action.uv_slider_pos_x": "Horizontal bewegen", - "action.uv_slider_pos_x.desc": "Die UV Auswahl aller ausgewählten Elemente horizontal verschieben", + "action.uv_slider_pos_x.desc": "Die UV-Auswahl aller ausgewählten Elemente horizontal verschieben", "action.uv_slider_pos_y": "Vertikal bewegen", - "action.uv_slider_pos_y.desc": "Die UV Auswahl aller ausgewählten Elemente vertikal verschieben", + "action.uv_slider_pos_y.desc": "Die UV-Auswahl aller ausgewählten Elemente vertikal verschieben", "action.uv_slider_size_x": "Horizontal vergrößern", - "action.uv_slider_size_x.desc": "Die UV Auswahl aller ausgewählten Elemente horizontal vergrößern", + "action.uv_slider_size_x.desc": "Die UV-Auswahl aller ausgewählten Elemente horizontal vergrößern", "action.uv_slider_size_y": "Vertikal vergrößern", - "action.uv_slider_size_y.desc": "Die UV Auswahl aller ausgewählten Elemente vertikal vergrößern", + "action.uv_slider_size_y.desc": "Die UV-Auswahl aller ausgewählten Elemente vertikal vergrößern", "action.vertex_snap_mode": "Magnetmodus", "action.vertex_snap_mode.desc": "Wähle, ob der Eckpunktmagnet Elemente verschiebt oder streckt", "action.move_tool": "Verschieben", @@ -272,26 +272,26 @@ "action.brush_tool": "Farbpinsel", "action.brush_tool.desc": "Farbpinsel zum Malen auf Texturen", "action.vertex_snap_tool": "Eckpunktmagnet", - "action.vertex_snap_tool.desc": "Verbindet die Ecken von 2 Elementen indem es das eine verschiebt", + "action.vertex_snap_tool.desc": "Verbindet die Ecken von 2 Elementen, indem es das eine verschiebt", "action.swap_tools": "Werkzeuge wechseln", "action.swap_tools.desc": "Wechselt zwischen dem Verschieben- und Größenwerkzeug", - "action.project_window": "Projekt...", - "action.project_window.desc": "Öffnet die Projekteinstellungen, wo du die Meta-Daten bon deinem Modell bearbeiten kannst", + "action.project_window": "Projekt ...", + "action.project_window.desc": "Öffnet die Projekteinstellungen, wo du die Metadaten deines Modells bearbeiten kannst", "action.open_model": "Modell öffnen", "action.open_model.desc": "Öffne ein Modell von deinem Computer", - "action.extrude_texture": "3D Textur", - "action.extrude_texture.desc": "Erstellt ein 3D Model aus einer Textur", + "action.extrude_texture": "3D-Textur", + "action.extrude_texture.desc": "Erstellt ein 3D-Modell aus einer Textur", "action.export_blockmodel": "Block-/Itemmodell exportieren", - "action.export_blockmodel.desc": "Ein Minecraft Java Edition Block-/Itemmodell exportieren", + "action.export_blockmodel.desc": "Ein „Minecraft Java Edition“-Block-/Itemmodell exportieren", "action.export_optifine_part": "OptiFine JPM exportieren", "action.export_optifine_part.desc": "Einen Entity-Komponenten für OptiFine exportieren", "action.export_optifine_full": "OptiFine JEM exportieren", "action.export_optifine_full.desc": "Ein vollständiges Entitymodell für OptiFine exportieren", - "action.export_obj": "OBJ Modell exportieren", - "action.export_obj.desc": "Ein Wavefront OBJ Modell exportieren zum Rendern oder für Spiel-Engines", - "action.settings_window": "Einstellungen...", + "action.export_obj": "OBJ-Modell exportieren", + "action.export_obj.desc": "Ein Wavefront-OBJ-Modell exportieren zum Rendern", + "action.settings_window": "Einstellungen ...", "action.settings_window.desc": "Das Blockbench-Einstellungsmenü öffnen", - "action.plugins_window": "Plugins...", + "action.plugins_window": "Plugins ...", "action.plugins_window.desc": "Öffnet den Pluginstore", "action.reset_layout": "Layout zurücksetzen", "action.reset_layout.desc": "Das Layout auf die Standardwerte zurücksetzen", @@ -308,7 +308,7 @@ "action.paste": "Einfügen", "action.paste.desc": "Fügt die aktuelle Auswahl, Fläche oder Anzeigeeinstellung ein", "action.cut": "Ausschneiden", - "action.cut.desc": "Schneidet die aktuelle Auswahl, Fläche oder Auzeigeeinstellung aus", + "action.cut.desc": "Schneidet die aktuelle Auswahl, Fläche oder Anzeigeeinstellung aus", "action.add_cube": "Quader hinzufügen", "action.add_cube.desc": "Fügt einen neuen Quader hinzu", "action.add_group": "Gruppe hinzufügen", @@ -321,7 +321,7 @@ "action.delete.desc": "Löscht ausgewählter Elemente oder Gruppen", "action.sort_outliner": "Outliner sortieren", "action.sort_outliner.desc": "Den Outliner alphabetisch sortieren", - "action.select_window": "Auswahl...", + "action.select_window": "Auswahl ...", "action.select_window.desc": "Elemente basierend auf ihren Eigenschaften suchen und auswählen", "action.invert_selection": "Auswahl umkehren", "action.invert_selection.desc": "Kehrt die aktuelle Auswahl um", @@ -329,13 +329,13 @@ "action.select_all.desc": "Wählt alle Elemente aus", "action.collapse_groups": "Gruppen einklappen", "action.collapse_groups.desc": "Alle Gruppen einklappen", - "action.scale": "Skalieren...", + "action.scale": "Skalieren ...", "action.scale.desc": "Die ausgewählten Elemente skalieren", "action.toggle_visibility": "Sichtbarkeit umschalten", "action.toggle_visibility.desc": "Schaltet die Sichtbarkeit der ausgewählten Elemente um", "action.toggle_export": "Export umschalten", "action.toggle_export.desc": "Schaltet die Export-Einstellung der ausgewählten Elemente um", - "action.toggle_autouv": "Auto UV umschalten", + "action.toggle_autouv": "Auto-UV umschalten", "action.toggle_autouv.desc": "Die Auto-UV-Einstellung der ausgewählten Elemente umschalten", "action.toggle_shade": "Schattierung umschalten", "action.toggle_shade.desc": "Die Schattierung der ausgewählten Elemente umschalten", @@ -360,7 +360,7 @@ "action.import_texture": "Textur importieren", "action.import_texture.desc": "Eine oder mehrere Texturen von deinem Computer öffnen", "action.create_texture": "Textur erstellen", - "action.create_texture.desc": "Erstellt eine leere Textur oder Texturtemplate", + "action.create_texture.desc": "Erstellt eine leere Textur oder ein Texturtemplate", "action.save_textures": "Texturen speichern", "action.save_textures.desc": "Speichert alle ungespeicherten Texturen", "action.animated_textures": "Animierte Texturen", @@ -375,7 +375,7 @@ "action.reload.desc": "Lädt Blockbench neu. Diese Aktion vernichtet alle ungespeicherten Änderungen", "menu.file": "Datei", "menu.edit": "Bearbeiten", - "menu.transform": "Bewegen", + "menu.transform": "Transformieren", "menu.display": "Anzeige", "menu.view": "Ansicht", "menu.file.new": "Neu", @@ -405,7 +405,7 @@ "menu.texture.edit": "Extern bearbeiten", "menu.texture.export": "Speichern unter", "menu.texture.save": "Speichern", - "menu.texture.properties": "Eigenschaften...", + "menu.texture.properties": "Eigenschaften ...", "menu.preview.background": "Hintergrund", "menu.preview.background.load": "Laden", "menu.preview.background.position": "Positionieren", @@ -427,12 +427,12 @@ "cube.color.lime": "Hellgrün", "switches.visibility": "Sichtbarkeit", "switches.export": "Exportieren", - "switches.autouv": "Auto UV", + "switches.autouv": "Auto-UV", "panel.uv": "UV", "panel.display": "Anzeigeeinstellungen", "panel.textures": "Texturen", "panel.outliner": "Outliner", - "uv_editor.title": "UV Bearbeiten", + "uv_editor.title": "UV bearbeiten", "uv_editor.all_faces": "Alle", "uv_editor.no_faces": "Keine", "face.north": "Norden", @@ -463,16 +463,16 @@ "display.reference.player": "Spieler", "display.reference.zombie": "Zombie", "display.reference.armor_stand": "Rüstungsständer", - "display.reference.baby_zombie": "Minizombie", + "display.reference.baby_zombie": "Zombiekind", "display.reference.armor_stand_small": "Kleiner Rüstungsständer", "display.reference.monitor": "Normal", - "display.reference.bow": "Bogen", + "display.reference.bow": "Gespannter Bogen", "display.reference.block": "Block", "display.reference.frame": "Rahmen", - "display.reference.inventory_nine": "3x3", + "display.reference.inventory_nine": "3×3", "display.reference.inventory_full": "Inventar", "display.reference.hud": "Schnellzugriffsleiste", - "display.preset.blank_name": "Bitte gebe einen Namen an", + "display.preset.blank_name": "Bitte gib einen Namen an", "display.preset.item": "Standard-Gegenstand", "display.preset.block": "Standard-Block", "display.preset.handheld": "Standard-Waffe", @@ -486,37 +486,37 @@ "action.open_model_folder": "Modellordner öffnen", "action.open_model_folder.desc": "Öffnet den Ordner, in dem das Modell gespeichert ist", "action.change_textures_folder": "Texturspeicherort ändern", - "action.change_textures_folder.desc": "Verändert den speicherort aller Texturen", + "action.change_textures_folder.desc": "Verändert den Speicherort aller Texturen", "menu.texture.particle": "Für Partikel verwenden", "message.update_notification.title": "Ein Update konnte nicht automatisch installiert werden", - "message.update_notification.message": "Eine neue Blockbench Version ist verfügbar. Aktiviere \"Automatische Updates\" in den Einstellungen, um diese herunterzuladen", + "message.update_notification.message": "Eine neue Blockbench-Version ist verfügbar. Aktiviere „Automatische Updates“ in den Einstellungen, um sie herunterzuladen", "message.untextured": "Diese Fläche hat keine Textur", - "dialog.toolbar_edit.title": "Toolbar Anpassen", + "dialog.toolbar_edit.title": "Werkzeugleiste anpassen", "keybindings.reset": "Zurücksetzen", "keybindings.clear": "Leeren", "action.cube_counter": "Projekt-Statistiken", - "action.uv_rotation": "UV Drehung", - "action.uv_rotation.desc": "Drehung des UV Mapping", - "action.uv_grid": "UV Raster", - "action.uv_grid.desc": "Die Auflösung des Rasters, an das sich die UV Auswahl heftet", + "action.uv_rotation": "UV-Drehung", + "action.uv_rotation.desc": "Drehung des UV-Mapping", + "action.uv_grid": "UV-Raster", + "action.uv_grid.desc": "Die Auflösung des Rasters, an das sich die UV-Auswahl heftet", "action.uv_grid.auto": "Auto", - "action.uv_maximize": "UV Maximieren", + "action.uv_maximize": "UV maximieren", "action.uv_maximize.desc": "Platziert die gesamte Textur auf der Fläche", - "action.uv_auto": "Auto UV", - "action.uv_auto.desc": "Stellt die UV Größe dieser Fläche auf die wirkliche Größe der Fläche", - "action.uv_rel_auto": "Relatives Auto UV", - "action.uv_rel_auto.desc": "Stellt die UV Auswahl auf die wirkliche Größe und Position der Fläche", - "action.uv_mirror_x": "UV Spiegeln X", - "action.uv_mirror_x.desc": "Spiegelt die UV Auswahl dieser Fläche auf der X Achse", - "action.uv_mirror_y": "UV Spiegeln Y", - "action.uv_mirror_y.desc": "Spiegelt die UV Auswahl dieser Fläche auf der Y Achse", + "action.uv_auto": "Auto-UV", + "action.uv_auto.desc": "Stellt die UV-Größe dieser Fläche auf die wirkliche Größe der Fläche", + "action.uv_rel_auto": "Relatives Auto-UV", + "action.uv_rel_auto.desc": "Stellt die UV-Auswahl auf die wirkliche Größe und Position der Fläche", + "action.uv_mirror_x": "UV auf X spiegeln", + "action.uv_mirror_x.desc": "Spiegelt die UV-Auswahl dieser Fläche auf der X-Achse", + "action.uv_mirror_y": "UV auf Y spiegeln", + "action.uv_mirror_y.desc": "Spiegelt die UV-Auswahl dieser Fläche auf der Y-Achse", "action.uv_transparent": "Fläche entfernen", "action.uv_transparent.desc": "Macht die aktuelle Fläche transparent", "action.uv_reset": "Fläche zurücksetzen", "action.uv_reset.desc": "Setzt die aktuelle Fläche zurück", "action.cullface": "Cullface", "action.cullface.desc": "Blendet diese Fläche aus, wenn die ausgewählte Seite des Modells bedeckt ist", - "action.auto_cullface": "Auto Cullface", + "action.auto_cullface": "Auto-Cullface", "action.auto_cullface.desc": "Setzt das Cullface dieser Fläche auf sich selbst", "action.face_tint": "Färbung", "action.face_tint.desc": "Aktiviert die Färben-Option dieser Fläche", @@ -542,8 +542,8 @@ "message.image_editor_missing.title": "Standard Bildbearbeitungsprogramm", "message.image_editor_missing.message": "Wähle die Programmdatei deines Bildbearbeitungsprogramms", "message.image_editor_missing.detail": "Blockbench konnte kein Bildbearbeitungsprogramm auf deinem Computer finden. Wähle die Programmdatei eines Bildbearbeitungsprogramms aus.", - "action.update_autouv": "Auto UV berechnen", - "action.update_autouv.desc": "Berechnet das automatische UV Mapping für die ausgewählten Elemente neu", + "action.update_autouv": "Auto-UV berechnen", + "action.update_autouv.desc": "Berechnet das automatische UV-Mapping für die ausgewählten Elemente neu", "category.uv": "UV", "status_bar.saved": "Modell ist gespeichert", "status_bar.unsaved": "Es gibt ungespeicherte Änderungen", @@ -560,12 +560,12 @@ "action.move_back": "Nach hinten verschieben", "action.move_back.desc": "Verschiebt die ausgewählten Elemente relativ zur Kameraperspektive nach hinten", "layout.color.wireframe": "Drahtgitter", - "layout.color.wireframe.desc": "Drahtgitter-Linien", + "layout.color.wireframe.desc": "Drahtgitterlinien", "action.add_animation": "Animation hinzufügen", "action.add_animation.desc": "Fügt eine neue Animation hinzu", "action.load_animation_file": "Animation importieren", "action.load_animation_file.desc": "Öffnet eine Animationsdatei", - "action.play_animation": "Animation Abspielen", + "action.play_animation": "Animation abspielen", "action.play_animation.desc": "Spielt die ausgewählte Animation ab", "action.slider_keyframe_time": "Zeitpunkt", "action.slider_keyframe_time.desc": "Den Zeitpunkt des Keyframes verschieben", @@ -596,21 +596,21 @@ "action.slider_animation_length": "Animationslänge", "action.slider_animation_length.desc": "Verändert die Länge der ausgewählten Animation", "panel.variable_placeholders": "Variablen-Platzhalter", - "panel.variable_placeholders.info": "Gebe die Variablen der Animation an, für die du eine Vorschau brauchst, als Name=Wert", + "panel.variable_placeholders.info": "Gib die Variablen der Animation an, für die du eine Vorschau brauchst, als Name=Wert", "status_bar.vertex_distance": "Entfernung: %0", "dialog.create_gif.title": "GIF aufzeichnen", "dialog.create_gif.length": "Länge", "dialog.create_gif.fps": "FPS", "dialog.create_gif.play": "Animation starten", "category.animation": "Animation", - "action.record_model_gif": "GIF aufzeichnen...", + "action.record_model_gif": "GIF aufzeichnen ...", "action.record_model_gif.desc": "Zeichne ein animiertes GIF des Modells aus der aktuellen Perspektive auf", "display.mirror": "Spiegeln", "data.separator": "Trenner", "menu.preview.background.set_position": "Position festlegen", "dialog.toolbar_edit.hidden": "Ausgeblendet", - "action.export_class_entity": "Java Entity exportieren", - "action.export_class_entity.desc": "Exportiert das Modell als Java Class.", + "action.export_class_entity": "Java-Entity exportieren", + "action.export_class_entity.desc": "Exportiert das Modell als Java-Klasse.", "settings.seethrough_outline": "Durchscheinende Auswahl", "settings.seethrough_outline.desc": "Zeige Auswahl durch Objekte hindurch an", "mode.edit": "Modellieren", @@ -619,17 +619,17 @@ "mode.animate": "Animieren", "status_bar.recording_gif": "GIF wird aufgezeichnet", "status_bar.processing_gif": "GIF wird verarbeitet", - "settings.backup_retain": "Backup Speicherdauer", - "settings.backup_retain.desc": "Festlegen, wie viele Tage Blockbench alte Backups speichert", + "settings.backup_retain": "Sicherungskopien-Speicherdauer", + "settings.backup_retain.desc": "Festlegen, für wie viele Tage Blockbench alte Sicherungskopien speichert", "action.rotate_tool": "Drehen", "action.rotate_tool.desc": "Werkzeug zum Auswählen und Drehen von Elementen", "action.fill_tool": "Farbeimer", "action.fill_tool.desc": "Farbeimer zum einfarbigen Ausfüllen von Oberflächen", "action.eraser": "Radiergummi", - "action.eraser.desc": "Raddiergummi zum Ersetzen der Farben durch Transparenz", + "action.eraser.desc": "Radiergummi zum Ersetzen der Farben durch Transparenz", "action.color_picker": "Farbpipette", "action.color_picker.desc": "Wählt die Farbe eines Pixels der Textur aus.", - "switches.mirror": "UV Spiegeln", + "switches.mirror": "UV spiegeln", "language_name": "Deutsch", "message.plugin_reload": "%0 lokale Plugins wurden neugeladen", "settings.brightness": "Helligkeit", @@ -639,7 +639,7 @@ "action.fill_mode.face": "Fläche", "action.fill_mode.color": "Farbe", "action.toggle_mirror_uv": "UV spiegeln", - "action.toggle_mirror_uv.desc": "UV Mapping der ausgewählten Quader auf der X Achse spiegeln.", + "action.toggle_mirror_uv.desc": "UV-Mapping der ausgewählten Quader auf der X-Achse spiegeln.", "menu.texture.blank": "Auf leere Flächen anwenden", "dialog.scale.select_overflow": "Überstehendes auswählen", "dialog.create_texture.compress": "Template verdichten", @@ -647,8 +647,8 @@ "action.action_control.desc": "Suche und benutze jede verfügbare Aktion", "keybindings.recording": "Tastenkombination wird aufgezeichnet", "keybindings.press": "Drücke eine Taste bzw. Tastenkombination oder klicke auf den Bildschirm, um eine Tastenkombination aufzuzeichnen.", - "action.pivot_tool": "Drehpunktwerkzeug", - "action.pivot_tool.desc": "Werkzeug zum Bearbeiten des Drehpunktes", + "action.pivot_tool": "Angelpunktwerkzeug", + "action.pivot_tool.desc": "Werkzeug zum Bearbeiten des Angelpunktes", "action.slider_animation_speed": "Wiedergabegeschwindigkeit", "action.slider_animation_speed.desc": "Wiedergabegeschwindigkeit der Timeline in Prozent", "action.previous_keyframe": "Vorheriger Keyframe", @@ -660,20 +660,20 @@ "action.export_asset_archive": "ZIP-Ordner herunterladen", "action.export_asset_archive.desc": "Lädt ein Archiv mit dem Modell und allen benötigten Texturen herunter", "action.upload_sketchfab": "Teilen auf Sketchfab", - "message.sketchfab.name_or_token": "Bitte gebe deinen Sketchfab Schlüssel und einen Namen ein", + "message.sketchfab.name_or_token": "Bitte gib deinen Sketchfab-Schlüssel und einen Namen ein", "dialog.sketchfab_uploader.title": "Modell auf Sketchfab hochladen", - "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 %0", + "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 %0", "dialog.sketchfab_uploader.name": "Name", "dialog.sketchfab_uploader.description": "Beschreibung", "dialog.sketchfab_uploader.tags": "Tags", - "settings.sketchfab_token": "Sketchfab Schlüssel", + "settings.sketchfab_token": "Sketchfab-Schlüssel", "settings.sketchfab_token.desc": "Schlüssel, der Blockbench erlaubt, Modelle auf Sketchfab hochzuladen", "panel.color": "Farbauswahl", "data.origin": "Angelpunkt", "message.sketchfab.success": "Modell erfolgreich hochgeladen", "message.sketchfab.error": "Upload auf Sketchfab fehlgeschlagen", - "settings.outliner_colors": "Outliner Farben", + "settings.outliner_colors": "Outliner-Farben", "settings.outliner_colors.desc": "Farben von Elementen und Gruppen im Outliner anzeigen", "action.upload_sketchfab.desc": "Modell auf Sketchfab hochladen", "action.element_colors": "Elementfarben", @@ -681,12 +681,12 @@ "texture.error.file": "Datei nicht gefunden", "texture.error.parent": "Textur durch Elternmodell", "message.recover_backup.title": "Projekte wiederherstellen", - "message.recover_backup.message": "Blockbench wurde ohne zu speichern geschlossen. Möchtest do das Modell wiederherstellen?", + "message.recover_backup.message": "Blockbench wurde ohne zu speichern geschlossen. Möchtest du das Modell wiederherstellen?", "message.invalid_session.title": "Ungültiger Schlüssel", "message.invalid_session.message": "Die Session ist abgelaufen oder der angegebene Schlüssel ist ungültig", - "dialog.create_texture.power": "2-Quadrat Größe", + "dialog.create_texture.power": "Zweierpotenzgröße", "dialog.create_gif.turn": "Drehgeschwindigkeit", - "action.edit_session": "Zusammenarbeiten...", + "action.edit_session": "Zusammenarbeiten ...", "action.edit_session.desc": "Mit einer Session verbinden, um mit anderen zusammenzuarbeiten", "action.reset_keyframe": "Keyframe zurücksetzen", "action.reset_keyframe.desc": "Alle Werte der ausgewählten Keyframes zurücksetzen", @@ -698,7 +698,7 @@ "edit_session.create": "Session erstellen", "edit_session.quit": "Session verlassen", "edit_session.joined": "%0 ist der Session beigetreten", - "edit_session.left": "%0 hat die Session verladden", + "edit_session.left": "%0 hat die Session verlassen", "edit_session.quit_session": "Session verlassen", "edit_session.status": "Status", "edit_session.hosting": "Eine Session betreibend", @@ -706,7 +706,7 @@ "dialog.sketchfab_uploader.private": "Privat (Pro)", "dialog.sketchfab_uploader.password": "Passwort (Pro)", "action.uv_select_all": "Alle auswählen", - "action.uv_select_all.desc": "Alle Oberflächen im UV Dialog 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", "dialog.yes": "Ja", @@ -722,15 +722,15 @@ "mode.start.recent": "Zuletzt verwendet", "format.free": "Generisches Modell", "format.free.desc": "Unbeschränktes Modell für Unity o.Ä.", - "format.java_block": "Java Item/Block", + "format.java_block": "Java-Item/-Block", "format.java_block.desc": "Blockmodell für Java Edition. Größe und Rotationen sind begrenzt.", - "format.bedrock": "Bedrock Entity", + "format.bedrock": "Bedrock-Entity", "format.bedrock.desc": "Modell für die Bedrock Edition", - "format.bedrock_old": "Bedrock Modell (Veraltet)", + "format.bedrock_old": "Bedrock-Modell (veraltet)", "format.bedrock_old.desc": "Modell für Minecraft Bedrock Edition vor 1.12", "format.modded_entity": "Entitymodell für Mods", - "format.modded_entity.desc": "Entitymodell für Minecraft Mods, kann als .java Klasse exportiert werden", - "format.optifine_entity": "OptiFine Entity", + "format.modded_entity.desc": "Entitymodell für Minecraft-Mods, kann als .java-Klasse exportiert werden", + "format.optifine_entity": "OptiFine-Entity", "format.optifine_entity.desc": "Entitymodell für die OptiFine-Mod", "keys.mouse": "Maustaste %0", "message.cleared_blank_faces.title": "Leere Flächen", @@ -763,18 +763,18 @@ "action.export_over.desc": "Exportiert Modell, Texturen und Animationen durch Überschreiben der Dateien", "action.add_locator": "Locator hinzufügen", "action.add_locator.desc": "Fügt einen Locator hinzu, der die Position von Partikeln, Leinen usw. festlegt", - "action.uv_turn_mapping": "UV Auswahl drehen", - "action.uv_turn_mapping.desc": "Dreht die UV Auswahl um 90 Grad", + "action.uv_turn_mapping": "UV-Auswahl drehen", + "action.uv_turn_mapping.desc": "Dreht die UV-Auswahl um 90 Grad", "action.remove_blank_faces": "Leere Flächen entfernen", "action.remove_blank_faces.desc": "Entfernt alle ausgewählten Flächen, die keine Textur haben", "web.download_app": "App herunterladen", "uv_editor.turned": "UV gedreht", - "display.reference.crossbow": "Armbrust", + "display.reference.crossbow": "Gespannte Armbrust", "dialog.settings.search_results": "Suchergebnisse", "settings.animation_snap": "Keyframerate", "settings.animation_snap.desc": "Interval der Positionen, an denen sich Keyframes in der Timeline platzieren lassen", - "action.import_optifine_part": "OptiFine Part Importieren", - "action.import_optifine_part.desc": "Importiere ein Part Modell als Teil eines OptiFine Entity Modells", + "action.import_optifine_part": "OptiFine-Part importieren", + "action.import_optifine_part.desc": "Importiere ein Part-Modell als Teil eines OptiFine-Entity-Modells", "data.locator": "Locator", "mode.start.no_recents": "Keine zuletzt verwendeten Modelle", "panel.element": "Element", @@ -786,10 +786,10 @@ "message.canvas_limit_error.message": "Die Aktion konnte nicht korrekt durchgeführt werden, weil das Format das Modell auf einen Bereich von 48 Einheiten beschränkt. Verschiebe den Angelpunkt, um das zu verhindern.", "data.effect": "Effekt", "generic.name": "Name", - "settings.recent_projects": "Zuletzt verwendet Maximum", + "settings.recent_projects": "Zuletzt-verwendet-Maximum", "settings.recent_projects.desc": "Maximale Anzahl an zuletzt verwendeten Modellen, die angezeigt werden", "settings.volume": "Lautstärke", - "settings.volume.desc": "Lautstärke for Soundeffekte in Animationen", + "settings.volume.desc": "Lautstärke für Soundeffekte in Animationen", "action.change_keyframe_file": "Datei auswählen", "action.change_keyframe_file.desc": "Eine Audio- oder Partikeldatei auswählen, um einen Effekt abzuspielen", "action.clear_timeline": "Timeline aufräumen", @@ -802,28 +802,28 @@ "timeline.sound": "Sound", "timeline.effects": "Effekte", "data.format": "Format", - "format.optifine_part": "OptiFine Part", - "format.optifine_part.desc": "JPM Part für OptiFine-Entitymodelle", + "format.optifine_part": "OptiFine-Part", + "format.optifine_part.desc": "JPM-Part für OptiFine-Entitymodelle", "action.reverse_keyframes": "Keyframes umkehren", "action.reverse_keyframes.desc": "Kehrt die Reihenfolge der ausgewählten Keyframes um", "generic.help": "Hilfe", "message.removed_faces": "%0 Flächen entfernt", "dialog.sketchfab_uploader.draft": "Entwurf", - "action.slider_pos": "%0 Position", + "action.slider_pos": "%0-Position", "action.slider_pos.desc": "Elemente auf der %0-Achse verschieben", - "action.slider_size": "X Größe", + "action.slider_size": "%0-Größe", "action.slider_size.desc": "Größe auf der %0-Achse verändern", - "action.slider_rotation": "X Drehung", + "action.slider_rotation": "%0-Drehung", "action.slider_rotation.desc": "Elemente auf der %0-Achse drehen", - "action.slider_origin": "%0 Angelpunkt", - "action.slider_origin.desc": "Angelpunkt auf der %0 Achse verschieben", - "action.rotate_cw": "Drehen nach rechts (%0)", + "action.slider_origin": "%0-Angelpunkt", + "action.slider_origin.desc": "Angelpunkt auf der %0-Achse verschieben", + "action.rotate_cw": "%0 um +90 drehen", "action.rotate_cw.desc": "Die ausgewählten Elemente um 90° auf der %0-Achse drehen", - "action.rotate_ccw": "Drehen nach links(%0)", + "action.rotate_ccw": "%0 um -90 drehen", "action.rotate_ccw.desc": "Die ausgewählten Elemente um -90° auf der %0-Achse drehen", - "action.flip": "Spiegeln %0", + "action.flip": "%0 spiegeln", "action.flip.desc": "Spiegelt die ausgewählten Elemente auf der %0-Achse", - "action.center": "Zentrieren %0", + "action.center": "%0 zentrieren", "action.center.desc": "Zentriert die ausgewählten Elemente auf der %0-Achse", "action.bring_up_all_animations": "Alle veränderten Animatoren in der Timeline anzeigen", "panel.bone": "Bone", @@ -843,8 +843,8 @@ "dialog.timelapse.source.locked": "Feste Perspektive", "dialog.timelapse.destination": "Zielordner", "layout.color.checkerboard": "Schachbrettmuster", - "layout.color.checkerboard.desc": "Hintergrund von Vorschau und UV Fenster", - "layout.font.code": "Code Schriftart", + "layout.color.checkerboard.desc": "Hintergrund von Vorschau und UV-Fenster", + "layout.font.code": "Code-Schriftart", "layout.css": "Eigenes CSS", "settings.category.paint": "Malen", "settings.deactivate_size_limit": "Größenbegrenzung deaktivieren", @@ -856,9 +856,9 @@ "settings.brush_modifier.pressure": "Druck", "settings.brush_modifier.tilt": "Neigung", "category.color": "Farbe", - "action.import_theme": "Theme importieren", - "action.export_theme": "Theme exportieren", - "action.export_theme.desc": "Ein Theme aus den aktuellen Einstellungen erstellen", + "action.import_theme": "Farbschema importieren", + "action.export_theme": "Farbschema exportieren", + "action.export_theme.desc": "Ein Farbschema aus den aktuellen Einstellungen erstellen", "action.slider_color_h": "Farbton", "action.slider_color_s": "Sättigung", "action.slider_color_v": "Wert", @@ -868,11 +868,11 @@ "action.import_palette.desc": "Eine Farbpalette aus einer Datei importieren", "action.export_palette": "Palette exportieren", "action.export_palette.desc": "Exportiert die Palette als eine .GPL-Datei", - "action.generate_palette": "Palette generieren...", + "action.generate_palette": "Palette generieren ...", "action.generate_palette.desc": "Erstellt eine Palette aus einer Textur", "action.sort_palette": "Palette sortieren", "action.sort_palette.desc": "Sortiert alle Farben der Palette nach Farbton und Helligkeit", - "action.timelapse": "Zeitraffer...", + "action.timelapse": "Zeitraffer ...", "action.timelapse.desc": "Zeichnet eine Zeitrafferaufnahme von der Benutzung von Blockbench auf", "action.add_keyframe": "Keyframe hinzufügen", "action.add_keyframe.desc": "Fügt einen Keyframe hinzu. Halte Umschalt gedrückt, um die Werte zurückzusetzen", @@ -883,8 +883,8 @@ "panel.color.palette": "Palette", "generic.import": "Importieren", "settings.brush_modifier.none": "Unbelegt", - "action.export_entity": "Bedrock Entitymodell exportieren", - "action.export_entity.desc": "Exportiert das Modell als ein Bedrock Entitymodell", + "action.export_entity": "Bedrock-Entitymodell exportieren", + "action.export_entity.desc": "Exportiert das Modell als ein Bedrock-Entitymodell", "settings.highlight_cubes": "Elemente hervorheben", "settings.highlight_cubes.desc": "Elemente erscheinen heller, wenn man die Maus über sie bewegt oder sie auswählt", "action.add_marker": "Marker setzen", @@ -893,7 +893,7 @@ "format.skin": "Minecraft Skin", "format.skin.desc": "Bearbeite Spielerskins und Entity-Texturen", "message.sketchfab.setup_guide": "Finde heraus, wie du Modelle auf Sketchfab einrichtest: %0", - "dialog.skin.title": "Minecraft Skin erstellen", + "dialog.skin.title": "Minecraft-Skin erstellen", "dialog.skin.model": "Modell", "dialog.skin.texture": "Textur (Optional)", "action.toggle_skin_layer": "Zweite Skin-Schicht umschalten", @@ -905,17 +905,17 @@ "action.move_keyframe_back": "Keyframe zurück bewegen", "action.move_keyframe_forth": "Keyframe vorwärts bewegen", "menu.help": "Hilfe", - "menu.help.discord": "Discord Server", - "menu.help.report_issue": "Einen Bug Melden", - "menu.help.plugin_documentation": "Plugin API Dokumentation", + "menu.help.discord": "Discord-Server", + "menu.help.report_issue": "Einen Bug melden", + "menu.help.plugin_documentation": "Plugin-API-Dokumentation", "menu.help.search_action": "Befehl suchen und ausführen", "menu.help.donate": "Spenden", - "menu.help.about": "Über...", + "menu.help.about": "Über ...", "menu.preview.background.clipboard": "Aus Zwischenablage laden", "dialog.ignore": "Ignorieren", "generic.unset": "(Keine)", "message.invalid_builtin_parent.title": "Ungültiges Elternmodell", - "message.invalid_builtin_parent.message": "Die Referenz auf das ungültige Elternmodell '%0' wurde entfernt, um ein funktionierendes Modell zu speichern.", + "message.invalid_builtin_parent.message": "Die Referenz auf das ungültige Elternmodell „%0“ wurde entfernt, um ein funktionierendes Modell zu speichern.", "dialog.resize_texture.fill": "Füllen mit", "dialog.resize_texture.fill.transparent": "Transparenz", "dialog.resize_texture.fill.color": "Farbe", @@ -933,10 +933,10 @@ "dialog.sketchfab_uploader.animations": "Animationen", "dialog.settings.theme": "Farbschema", "settings.category.interface": "Benutzeroberfläche", - "settings.preview_checkerboard": "Vorschau Schachbrettmuster", - "settings.preview_checkerboard.desc": "Aktiviert das Schachbrettmuster hinter der 3D Vorschau", - "settings.uv_checkerboard": "UV Fenster Schachbrettmuster", - "settings.uv_checkerboard.desc": "Aktiviert das Schachbrettmuster hinter dem UV Fenster", + "settings.preview_checkerboard": "Vorschau-Schachbrettmuster", + "settings.preview_checkerboard.desc": "Aktiviert das Schachbrettmuster hinter der 3D-Vorschau", + "settings.uv_checkerboard": "UV-Fenster-Schachbrettmuster", + "settings.uv_checkerboard.desc": "Aktiviert das Schachbrettmuster hinter dem UV-Fenster", "category.paint": "Malen", "action.fill_mode.color_connected": "Verbundene Farben", "action.draw_shape_type": "Form", @@ -952,18 +952,18 @@ "action.draw_shape_tool": "Form zeichnen", "action.draw_shape_tool.desc": "Werkzeug zum Zeichnen einfacher Formen", "action.copy_paste_tool": "Kopierwerkzeug", - "action.copy_paste_tool.desc": "Werkzeug zum Kopieren und verschieben von Ausschnitten aus Texturen", - "action.export_gltf": "Als glTF exportieren", - "action.export_gltf.desc": "Exportiert das Modell und die Animationen als glTF Datei, zur Weiterverwendung in anderen 3D Programmen", + "action.copy_paste_tool.desc": "Werkzeug zum Kopieren und Verschieben von Ausschnitten aus Texturen", + "action.export_gltf": "glTF-Modell exportieren", + "action.export_gltf.desc": "Exportiert das Modell und die Animationen als glTF-Datei, zur Weiterverwendung in anderen 3D-Programmen", "action.transform_space": "Transformationsraum", "action.transform_space.desc": "Raum, in dem Elemente bewegt werden", "action.transform_space.global": "Global", "action.transform_space.bone": "Knochen", "action.transform_space.local": "Lokal", - "action.toggle_camera_projection": "Kameraprojektion Umschalten", + "action.toggle_camera_projection": "Kameraprojektion umschalten", "action.toggle_camera_projection.desc": "Schaltet die Kameraprojektion zwischen perspektivisch und parallel um", "action.load_camera_angle": "Kamerablickwinkel: %s", - "action.load_camera_angle.desc": "Den Kamerablickwinkel '%0' laden", + "action.load_camera_angle.desc": "Den Kamerablickwinkel „%0“ laden", "action.slider_face_tint": "Färbungsindex", "action.slider_face_tint.desc": "Legt den Färbungsindex für die ausgewählten Flächen fest. -1 entspricht keiner Färbung.", "menu.help.quickstart": "Schnellstartassistent", @@ -973,12 +973,12 @@ "menu.help.developer.reset_storage.confirm": "Bist du dir sicher, dass du Blockbench auf Werkseinstellungen zurücksetzen möchtest? Der Vorgang wird alle Benutzereinstellungen und Plugins zurücksetzen.", "menu.help.developer.cache_reload": "Cache neu laden", "menu.preview.orthographic": "Parallel", - "menu.preview.save_angle": "Blickwinkel speichern...", + "menu.preview.save_angle": "Blickwinkel speichern ...", "menu.preview.angle": "Blickwinkel", "menu.preview.angle.initial": "Standardblickwinkel", "menu.preview.maximize": "Maximieren", "panel.color.both": "Beides", - "uv_editor.copy_selection": "Auswahl Kopieren", + "uv_editor.copy_selection": "Auswahl kopieren", "uv_editor.paste_selection": "Auswahl einfügen", "uv_editor.copy_paste_tool.place": "Platzieren", "uv_editor.copy_paste_tool.mirror_x": "Spiegeln (X)", @@ -992,7 +992,7 @@ "layout.color.frame.desc": "Rand und Titelleiste des Fensters", "settings.large_grid_size": "Blockgitter-Größe", "settings.large_grid_size.desc": "Die Größe des Blockgitters", - "action.load_plugin_from_url": "Plugin über URL laden", + "action.load_plugin_from_url": "Plugin aus URL laden", "action.load_plugin_from_url.desc": "Ein Plugin von einen Server laden durch die Eingabe der URL", "action.cube_counter.desc": "Zeigt die aktuelle Anzahl an Elementen und andere Statistiken an", "action.unlock_everything": "Alle entsperren", @@ -1002,7 +1002,7 @@ "action.toggle_locked": "Sperren/Entsperren", "action.toggle_locked.desc": "Sperrt oder entsperrt das Objekt", "action.apply_display_preset": "Vorlage anwenden", - "action.apply_display_preset.desc": "Wendet eine Display Settings Vorlage an", + "action.apply_display_preset.desc": "Wendet eine Display-Settings-Vorlage an", "action.apply_display_preset.here": "Auf ausgewählte Position anwenden", "action.apply_display_preset.everywhere": "Auf alle Positionen anwenden", "action.resolve_keyframe_expressions": "Keyframe ausrechnen", @@ -1024,7 +1024,7 @@ "about.version.update_available": "Version %0 ist verfügbar", "settings.category.application": "Anwendung", "settings.streamer_mode": "Streamer-Modus", - "settings.streamer_mode.desc": "Verdeckt sensible informationen wie zuletzt verwendete Modelle", + "settings.streamer_mode.desc": "Verdeckt sensible Informationen wie zuletzt verwendete Modelle", "settings.automatic_updates": "Automatische Updates", "settings.automatic_updates.desc": "Neue Versionen automatisch installieren und Blockbench auf dem neusten Stand halten", "action.rotation_space": "Rotationsraum", @@ -1050,7 +1050,7 @@ "settings.fov": "Sichtfeld", "settings.fov.desc": "Kamera-Sichtfeld. Der Standardwert ist 45", "settings.sync_color": "Farbe synchronisieren", - "settings.sync_color.desc": "Synchronisiere die Farbe zwischen mehreren Blockbench Fenstern", + "settings.sync_color.desc": "Synchronisiere die Farbe zwischen mehreren Blockbench-Fenstern", "settings.minify_bbmodel": "Reduzierte Projektdateien", "settings.minify_bbmodel.desc": "Projektdateien werden in einer Zeile ohne Formatierung gespeichert", "action.edit_material_instances": "Materialien bearbeiten", @@ -1065,7 +1065,7 @@ "menu.file.preferences": "Einstellungen", "menu.animation.blend_weight": "Mischwert", "menu.animation.save": "Speichern", - "menu.animation.properties": "Eigenschaften...", + "menu.animation.properties": "Eigenschaften ...", "menu.animation.file": "Datei", "menu.animation.snapping": "Einrastintervall", "menu.animation.open_location": "Speicherort öffnen", @@ -1075,28 +1075,28 @@ "panel.keyframe.post": "Nachher", "generic.all": "Alle", "message.small_face_dimensions.title": "Flächengröße nicht kompatibel", - "message.small_face_dimensions.message": "Die Auswahl enthält Flächen, deren Größe weniger als eine Längeneinheit beträgt. Das Box UV System betrachtet alle Flächen unterhalb dieser Schwelle als 0 Pixel groß. Deshalb könnten einige Flächen nicht richtig angezeigt werden.", - "message.small_face_dimensions.face_uv": "Das aktuelle Format unterstützt UV Maps für einzelne Flächen. Dadurch werden kleinere Flächen unterstützt. Gehe zu \"Datei\" > \"Projekt...\" und stelle \"UV Modus\" auf \"Flächen-UV\".", + "message.small_face_dimensions.message": "Die Auswahl enthält Flächen, deren Größe weniger als eine Längeneinheit beträgt. Das Box-UV-System betrachtet alle Flächen unterhalb dieser Schwelle als 0 Pixel groß. Deshalb könnten einige Flächen nicht richtig angezeigt werden.", + "message.small_face_dimensions.face_uv": "Das aktuelle Format unterstützt UV-Maps für einzelne Flächen. Dadurch werden kleinere Flächen unterstützt. Gehe zu „Datei“ > „Projekt ...“ und stell „UV-Modus“ auf „Flächen-UV“.", "dialog.plugins.outdated_client": "Setzt eine neuere Blockbench-version voraus", "dialog.plugins.outdated_plugin": "Plugin ist veraltet und funktioniert nicht mit dieser Version von Blockbench", "settings.motion_trails": "Bewegungspfade", "settings.motion_trails.desc": "Blendet Bewegungspfade im Animationsfenster ein", "settings.antialiasing": "Kantenglättung", - "settings.antialiasing.desc": "Aktiviere Kantenglättung (Anti-aliasing). Änderungen werden erst nach Neustarten von Blockbench aktiv", + "settings.antialiasing.desc": "Aktiviere Kantenglättung (Anti-Aliasing). Änderungen werden erst nach Neustarten von Blockbench aktiv", "action.timeline_frame_back": "Springe 1 Frame zurück", "action.timeline_frame_forth": "Springe 1 Frame weiter", "panel.bone.ik": "Inverse Kinematik (experimentell)", - "settings.particle_tick_rate": "Partikel Tickrate", - "settings.particle_tick_rate.desc": "Tickrate für Partkeleffekte in Ticks pro Sekunde. Standardwert ist 30", + "settings.particle_tick_rate": "Partikel-Tickrate", + "settings.particle_tick_rate.desc": "Tickrate für Partikeleffekte in Ticks pro Sekunde. Standardwert ist 30", "action.lock_motion_trail": "Bewegungspfad feststellen", "action.lock_motion_trail.desc": "Sperrt den Bewegungspfad auf die momentan ausgewählte Gruppe", "menu.animation_file.unload": "Entlade Animationsdatei", - "data.null_object": "Null Objekt", + "data.null_object": "Null-Objekt", "status_bar.toggle_sidebar": "Seitenleiste ein-/ausblenden", "message.load_plugin_failed.title": "Laden des Plugins fehlgeschlagen", "message.load_plugin_failed.message": "Stelle sicher, dass der Name der Plugindatei mit der in Plugin.register festgelegten ID des Plugins (`%0`) übereinstimmt", - "dialog.project.uv_mode": "UV Modus", - "dialog.project.uv_mode.box_uv": "Box UV", + "dialog.project.uv_mode": "UV-Modus", + "dialog.project.uv_mode.box_uv": "Box-UV", "dialog.project.uv_mode.face_uv": "Flächen-UV", "dialog.project.texture_size": "Textur-Größe", "dialog.animation_export.title": "Animationen zum Export auswählen", @@ -1104,26 +1104,26 @@ "layout.color.subtle_text": "Untergeordneter Text", "layout.color.subtle_text.desc": "Zweite, weniger kontrastreiche Textfarbe", "settings.interface_scale": "Benutzeroberflächen Skalierung", - "settings.interface_scale.desc": "Skalieren der gesammten Blockbench Benutzeroberfläche", - "settings.background_rendering": "Hintergrund rendern", - "settings.background_rendering.desc": "Aktualisiert die Vorrschau während das Fenster nicht Fokusiert ist", - "settings.ctrl_shift_size": "Strg + Umschalt Auflösung", - "settings.ctrl_shift_size.desc": "Auflösung des Grid während Strg und Umschalt gedrückt wird", + "settings.interface_scale.desc": "Skalieren der gesamten Blockbench-Benutzeroberfläche", + "settings.background_rendering": "Im Hintergrund rendern", + "settings.background_rendering.desc": "Aktualisiert die Vorschau, während das Fenster nicht fokussiert ist", + "settings.ctrl_shift_size": "Auflösung mit Strg + Umschalt", + "settings.ctrl_shift_size.desc": "Auflösung des Gitters, während Strg und Umschalt gedrückt wird", "settings.hardware_acceleration": "Hardwarebeschleunigung", "settings.hardware_acceleration.desc": "Verarbeitungsaufgaben auf die Grafikkarte verlagern. Zum Anwenden der Änderungen Blockbench neustarten", - "action.explode_skin_model": "Skin-Model explodieren", + "action.explode_skin_model": "Skin-Modell explodieren", "action.explode_skin_model.desc": "Schaltet eine Explosionsansicht ein, in der verdeckte Flächen bearbeitet werden können", - "action.export_minecraft_skin": "Minecraft Skin exportieren", - "action.export_minecraft_skin.desc": "Minecraft Skin als PNG-Textur exportieren", + "action.export_minecraft_skin": "Minecraft-Skin exportieren", + "action.export_minecraft_skin.desc": "Minecraft-Skin als PNG-Textur exportieren", "action.add_null_object": "Null-Objekt hinzufügen", "action.add_null_object.desc": "Neues Null-Objekt hinzufügen", "action.animated_texture_frame": "Animierter Texturrahmen", "action.animated_texture_frame.desc": "Aktuelles Bild der animierten Textur einstellen", - "action.export_animation_file": "Animationen exportieren...", + "action.export_animation_file": "Animationen exportieren ...", "action.export_animation_file.desc": "Exportiere eine Auswahl an Animationen in eine neue Datei", "action.timeline_graph_editor": "Graph-Editor umschalten", "action.timeline_graph_editor.desc": "Zeitliste zwischen Graph-Editor und Keyframe-Ansicht Umschalten", - "menu.file.recent.clear": "Aktuelle Datei leeren", + "menu.file.recent.clear": "Zuletzt geöffnete Dateien leeren", "switches.shade": "Schatten", "generic.share": "Teilen", "dates.minute": "%0 Minute", @@ -1140,22 +1140,22 @@ "message.installed_plugin_fail": "Das Plugin %0 wurde aufgrund eines Fehlers nicht installiert", "dialog.share_model.title": "Modell teilen", "dialog.share_model.expire_time": "Dauer", - "dialog.share_model.failed": "Das Hochladen des Models ist fehlgeschlagen", - "action.import_java_block_model": "Java/Item-Model hinzufügen", - "action.import_java_block_model.desc": "Ein Minecraft Java-Block/Item-Model aus einer json-Datei zum aktuellen Model hinzufügen", - "action.share_model": "Teilen...", + "dialog.share_model.failed": "Das Hochladen des Modells ist fehlgeschlagen", + "action.import_java_block_model": "Java/Item-Modell hinzufügen", + "action.import_java_block_model.desc": "Ein Minecraft-Java-Block-/Item-Modell aus einer json-Datei zum aktuellen Modell hinzufügen", + "action.share_model": "Teilen ...", "action.share_model.desc": "Einen kurzen Link zu Teilen generieren", "action.import_project": "Projekt importieren", - "action.import_project.desc": "Importiere ein Projekt aus einer .bbmodel Datei in das aktuelle Projekt", + "action.import_project.desc": "Importiere ein Projekt aus einer .bbmodel-Datei in das aktuelle Projekt", "dialog.toolbar_edit.hidden_tools": "Einige Werkzeuge werden möglicherweise nicht angezeigt, da sie im aktuellen Modus, Format oder in der Situation nicht verfügbar sind.", - "settings.camera_near_plane": "Kamera Abschneide-Ebene", - "settings.camera_near_plane.desc": "Die minimale Entfernung von der Kamera und dem Renderort eines Objekts. Höhere Werte veringern Z-Fighting. 1 ist der Standardwert.", - "mode.start.keymap_preference.desc": "Wenn du Blockbench zum ersten Mal benutzt und schon erfahren in einem anderen 3D Programm bist, dann kannst du die Tastenbelegung dieses Programms übernehmen, um dich besser in Blockbench zurechtzufinden. Du kannst die Tastenbelegungen auch nachher in den Einstellungen ändern", - "message.load_keymap": "Bist du dir sicher, dass du diese Keymap laden möchtest? Deine vorherigen Tastenkombinationen werden überschrieben.", - "message.keymap_loaded": "Keymap wurde geladen", + "settings.camera_near_plane": "Kamera-Abschneide-Ebene", + "settings.camera_near_plane.desc": "Die minimale Entfernung von der Kamera und dem Renderort eines Objekts. Höhere Werte verringern Z-Fighting. 1 ist der Standardwert.", + "mode.start.keymap_preference.desc": "Wenn du Blockbench zum ersten Mal benutzt und schon erfahren in einem anderen 3D-Programm bist, dann kannst du die Tastenbelegung dieses Programms übernehmen, um dich besser in Blockbench zurechtzufinden. Du kannst die Tastenbelegungen auch nachher in den Einstellungen ändern", + "message.load_keymap": "Bist du dir sicher, dass du diese Tastenbelegung laden möchtest? Deine vorherigen Tastenkombinationen werden überschrieben.", + "message.keymap_loaded": "Tastenbelegung wurde geladen", "dialog.convert_project.current_format": "Aktuelles Format", - "dialog.create_texture.rearrange_uv.desc": "Eine neue UV Anordnung anlegen, um jeder Fläche ihren eigenen Platz auf der Textur zuzuweisen", - "dialog.create_texture.compress.desc": "Die UV Maps dicht aneinander anordnen, um Platz zu sparen", + "dialog.create_texture.rearrange_uv.desc": "Eine neue UV-Anordnung anlegen, um jeder Fläche ihren eigenen Platz auf der Textur zuzuweisen", + "dialog.create_texture.compress.desc": "Die UV-Maps dicht aneinander anordnen, um Platz zu sparen", "dialog.create_texture.power.desc": "Die automatische Größe der generierten Textur auf eine Zweierpotenz begrenzen. Dies wird von einigen Renderingprogrammen vorausgesetzt.", "dialog.create_texture.double_use.desc": "Wenn zwei Elemente den gleichen Platz auf der Textur verwenden, wird dies in der neuen Anordnung beibehalten", "dialog.create_texture.padding.desc": "Einen kleinen Zwischenraum zwischen den einzelnen Teilen des Templates lassen", @@ -1163,7 +1163,7 @@ "dialog.create_gif.color": "Hintergrundfarbe", "dialog.save_angle.zoom": "Zoom", "dialog.skin.variant": "Variante", - "dialog.flip_animation.info": "Gegenüberliegende Bones werden durch die Wörter 'left' und 'right' innerhalb ihres Namens erkannt.", + "dialog.flip_animation.info": "Gegenüberliegende Bones werden durch die Wörter „left“ und „right“ innerhalb ihres Namens erkannt.", "dialog.flip_animation.offset": "Um die Hälfte der Länge der Animation verschieben", "dialog.export_private_settings.title": "Private Einstellungen", "dialog.export_private_settings.message": "Deine Datei enthält die folgenden privaten Informationen: **%0**. Entferne diese Informationen, falls du die Datei mit anderen Teilen möchtest.", @@ -1176,28 +1176,28 @@ "action.gradient_tool": "Verlaufswerkzeug", "action.gradient_tool.desc": "Erstellt Farbverläufe auf Texturen", "action.import_settings": "Einstellungen importieren", - "action.import_settings.desc": "Eine .bbsettings Einstellungs-Datei importieren", + "action.import_settings.desc": "Eine .bbsettings-Einstellungs-Datei importieren", "action.export_settings": "Einstellungen exportieren", - "action.export_settings.desc": "Die Einstellungen von Blockbench als eine .bbsettings Datei exportieren", - "action.load_keymap": "Keymap importieren", + "action.export_settings.desc": "Die Einstellungen von Blockbench als eine .bbsettings-Datei exportieren", + "action.load_keymap": "Tastenbelegung importieren", "action.load_keymap.default": "Standard (Trackpad/Maus)", "action.load_keymap.mouse": "Standard (Maus)", - "action.load_keymap.default.desc": "Standard Tastenbelegungen, optimiert für Navigation im Vorschaufenster mit Laptop-Trackpads", - "action.load_keymap.mouse.desc": "Standard Tastenbelegungen, optimiert für Navigation im Vorschaufenster mit der mittleren Maustaste", - "action.load_keymap.blender.desc": "Tastaturbelegung ähnlich zu Blender", - "action.load_keymap.cinema4d.desc": "Tastaturbelegung ähnlich zu Cinema 4D", - "action.load_keymap.maya.desc": "Tastaturbelegung ähnlich zu Autodesk Maya", - "action.import_keymap": "Importiere Tastaturbelegung", - "action.import_keymap.desc": "Importiere Tastenbelegungen als .bbkeymap Datei", - "action.export_keymap": "Exportiere Tastaturbelegung", - "action.export_keymap.desc": "Exportiere aktuelle Tastenbelegungen als .bbkeymap Datei", - "action.edit_history": "Bearbeitungsverlauf...", + "action.load_keymap.default.desc": "Standardtastenbelegungen, optimiert für Navigation im Vorschaufenster mit Laptop-Trackpads", + "action.load_keymap.mouse.desc": "Standardtastenbelegungen, optimiert für Navigation im Vorschaufenster mit der mittleren Maustaste", + "action.load_keymap.blender.desc": "Tastenbelegung ähnlich zu Blender", + "action.load_keymap.cinema4d.desc": "Tastenbelegung ähnlich zu Cinema 4D", + "action.load_keymap.maya.desc": "Tastenbelegung ähnlich zu Autodesk Maya", + "action.import_keymap": "Tastenbelegung importieren", + "action.import_keymap.desc": "Importiere Tastenbelegungen als .bbkeymap-Datei", + "action.export_keymap": "Tastenbelegung exportieren", + "action.export_keymap.desc": "Aktuelle Tastenbelegungen als .bbkeymap-Datei exportieren", + "action.edit_history": "Bearbeitungsverlauf ...", "action.edit_history.desc": "Zeige den Verlauf der Bearbeitungen an und mache Schritte rückgängig oder wiederhole sie", "action.group_elements": "Elemente gruppieren", "action.group_elements.desc": "Packe ausgewählte Elemente in eine neue Gruppe", "action.unfold_groups": "Gruppen aufklappen", "action.unfold_groups.desc": "Alle Gruppen im Outliner ausklappen", - "action.edit_bedrock_binding": "Bindung bearbeiten...", + "action.edit_bedrock_binding": "Bindung bearbeiten ...", "action.edit_bedrock_binding.desc": "Lege fest, an welchen Bone das Modell gebunden ist", "action.pick_screen_color": "Bildschirm-Farbpipette", "action.pick_screen_color.desc": "Eine Farbe vom Bildschirm auswählen", @@ -1217,7 +1217,7 @@ "menu.texture.render_mode": "Anzeigemodus", "menu.texture.render_mode.emissive": "Leuchtend", "menu.texture.render_mode.layered": "Geschichtet", - "menu.preview.angle.edit": "Kamerablickwinkel bearbeiten...", + "menu.preview.angle.edit": "Kamerablickwinkel bearbeiten ...", "menu.animation.start_delay": "Start-Verzögerung", "menu.animation.loop_delay": "Schleifen-Verzögerung", "menu.animation.flip_keyframes": "Keyframes spiegeln", @@ -1229,8 +1229,8 @@ "camera_angle.true_isometric_left": "Isometrisch, links (30°)", "menu.help.wiki": "Blockbench Wiki", "about.repository": "Repository:", - "settings.update_to_prereleases": "Auf Vorabversionen updated", - "settings.update_to_prereleases.desc": "Update Blockbench automatisch auf die neusten Vorabversionen, um neue Funktionen zu testen. Vorabversionen können Fehler beinhalten, aktiviere diese Funktion nicht, wenn du dich für deine Arbeit auf die einwandfreie Funktion von Blockbench verlassen musst.", + "settings.update_to_prereleases": "Auf Vorabversionen aktualisieren", + "settings.update_to_prereleases.desc": "Blockbench automatisch auf die neusten Vorabversionen aktualisieren, um neue Funktionen zu testen. Vorabversionen können Fehler beinhalten, aktiviere diese Funktion nicht, wenn du dich für deine Arbeit auf die einwandfreie Funktion von Blockbench verlassen musst.", "data.separator.spacer": "Abstandhalter", "data.separator.linebreak": "Zeilenumbruch", "data.setting": "Einstellung", @@ -1239,11 +1239,11 @@ "projects.new_tab": "Neuer Tab", "projects.close_tab": "Tab schließen", "message.invalid_format.title": "Ungültiges Format", - "message.invalid_format.message": "Dieses Modell wurde in dem Format '%0' erstellt. Das Format ist in dieser Blockbench Installation nicht verfügbar. Wahrscheinlich wird ein bestimmtes Plugin zum fehlerfreien Öffnen dieser Datei benötigt.", + "message.invalid_format.message": "Dieses Modell wurde in dem Format „%0“ erstellt. Das Format ist in dieser Blockbench-Installation nicht verfügbar. Wahrscheinlich wird ein bestimmtes Plugin zum fehlerfreien Öffnen dieser Datei benötigt.", "message.invalid_link": "Ungültiger oder abgelaufener Link", "message.default_textures.current": "Aktueller Pfad", "message.update_after_restart": "Das Update wird nach dem nächsten Neustart installiert.", - "message.copy_paste_tool_viewport": "Dieses Werkzeug kann nur im UV Editor verwendet werden", + "message.copy_paste_tool_viewport": "Dieses Werkzeug kann nur im UV-Editor verwendet werden", "dialog.project.shadow_size": "Schattengröße", "dialog.find_replace.target": "Ziel", "dialog.find_replace.target.element_names": "Namen von Elementen", @@ -1268,7 +1268,7 @@ "dialog.add_primitive.minor_diameter": "Dicke", "dialog.add_primitive.minor_sides": "Kleine Seiten", "dialog.create_texture.combine_polys": "Flächen kombinieren", - "dialog.create_texture.combine_polys.desc": "Koplanare Flächen in einen Bereich auf der UV Map vereinen", + "dialog.create_texture.combine_polys.desc": "Koplanare Flächen in einen Bereich auf der UV-Map vereinen", "dialog.model_stats.meshes": "Maschen", "dialog.export_private_settings.omit": "Auslassen", "layout.select": "Auswählen", @@ -1281,26 +1281,26 @@ "layout.author": "Ersteller", "settings.color_wheel": "Farbwahlrad", "settings.color_wheel.desc": "Das Farbwahlrad als Farbwähler verwenden", - "settings.dialog.desc": "Den \"%0\" Dialog anzeigen", + "settings.dialog.desc": "Den „%0“-Dialog anzeigen", "settings.export_empty_groups": "Leere Gruppen exportieren", "settings.export_empty_groups.desc": "Gruppen ohne Inhalt exportieren", "category.separators": "Trenner", "keybind.preview_area_select": "Bereichsauswahl", "action.color_erase_mode": "Löschmodus", "action.color_erase_mode.desc": "Im Löschmodus ziehen Werkzeuge wie der Farbeimer und das Formwerkzeug Farben ab", - "action.open_from_link": "Modell von einem Link öffnen...", - "action.open_from_link.desc": "Ein Modell aus einem blckbn.ch Link laden", - "action.import_obj": "OBJ Modell importieren", - "action.import_obj.desc": "Objekte aus einem OBJ Modell als Maschen importieren", + "action.open_from_link": "Modell von einem Link öffnen ...", + "action.open_from_link.desc": "Ein Modell aus einem blckbn.ch-Link laden", + "action.import_obj": "OBJ-Modell importieren", + "action.import_obj.desc": "Objekte aus einem OBJ-Modell als Maschen importieren", "action.add_plugin": "Plugin installieren", "action.add_plugin.desc": "Ein Plugin mit Hilfe von Action Control installieren", "action.remove_plugin": "Plugin deinstallieren", "action.remove_plugin.desc": "Ein Plugin mit Hilfe von Action Control deinstallieren", "action.add_mesh": "Masche hinzufügen", "action.add_mesh.desc": "Fügt eine neue Masche hinzu", - "action.add_texture_mesh": "3D Textur hinzufügen", - "action.add_texture_mesh.desc": "Fügt eine neue 3D Textur hinzu", - "action.find_replace": "Finden/Ersetzen...", + "action.add_texture_mesh": "3D-Textur hinzufügen", + "action.add_texture_mesh.desc": "Fügt eine neue 3D-Textur hinzu", + "action.find_replace": "Finden/Ersetzen ...", "action.find_replace.desc": "Teile von Namen finden und ersetzen", "action.hide_everything_except_selection": "Alles außer Auswahl ausblenden", "action.hide_everything_except_selection.desc": "Schaltet die Sichtbarkeit aller Elemente außer der momentan ausgewählten um", @@ -1311,7 +1311,7 @@ "action.selection_mode.face": "Fläche", "action.selection_mode.vertex": "Punkt", "action.create_face": "Fläche oder Kante erstellen", - "action.create_face.desc": "Bilded eine neue Fläche oder eine neue Kante zwischen den ausgewählten Punkten", + "action.create_face.desc": "Bildet eine neue Fläche oder eine neue Kante zwischen den ausgewählten Punkten", "action.convert_to_mesh": "In Masche konvertieren", "action.convert_to_mesh.desc": "Konvertiert die ausgewählten Elemente in Maschen", "action.invert_face": "Fläche umkehren", @@ -1325,7 +1325,7 @@ "action.keyframe_uniform": "Einheitliche Skalierung", "action.keyframe_uniform.desc": "Aktiviert einheitliche Skalierung der ausgewählten Keyframes", "menu.locator.ignore_inherited_scale": "Vererbte Größe ignorieren", - "menu.texture_mesh.texture_name": "Texturen Name...", + "menu.texture_mesh.texture_name": "Texturenname ...", "menu.texture.elements": "Auf Elemente anwenden", "uv_editor.transparent_face": "Unsichtbare Fläche", "display.pose_angle": "Arm-Winkel (Nur Vorschau)", @@ -1337,7 +1337,7 @@ "dialog.sketchfab_uploader.suggested_tags": "Empfohlene Tags", "dialog.sketchfab_uploader.category": "Kategorie", "dialog.sketchfab_uploader.category2": "Kategorie 2", - "layout.restore_backup": "Dein angepasstes Theme \"%0\" wurde überschrieben. Klicke hier, um es wiederherzustellen.", + "layout.restore_backup": "Dein angepasstes Farbschema „%0“ wurde überschrieben. Klicke hier, um es wiederherzustellen.", "layout.borders": "Ränder", "action.fill_mode.element": "Element", "action.inset_mesh_selection": "Auswahl nach innen versetzen", @@ -1350,29 +1350,29 @@ "action.merge_vertices.desc": "Vereint die ausgewählten Eckpunkte", "action.view_mode.normal": "Flächenausrichtung", "action.snap_uv_to_pixels": "UV in Pixelraster einrasten", - "action.snap_uv_to_pixels.desc": "Rastet die ausgewählten UV Eckpunkte in das Pixelraster ein", + "action.snap_uv_to_pixels.desc": "Rastet die ausgewählten UV-Eckpunkte in das Pixelraster ein", "menu.file.import.import_open_project": "Importiere geöffnetes Projekt", "menu.help.unlock_projects": "Alle Projekte entsperren", "status_bar.selection.faces": "%0 Flächen", "status_bar.selection.vertices": "%0 Eckpunkte", "message.merged_vertices": "%0 Eckpunkte wurden gefunden und an %1 Stellen vereint", "settings.vertex_merge_distance": "Abstand für Vereinen von Eckpunkten", - "settings.vertex_merge_distance.desc": "Abstand, in dem beieinanderliegende Eckpunkte durch die Vereinen-Funktion vereint werden", - "settings.show_only_selected_uv": "Nur ausgewählte UV Flächen anzeigen", - "settings.show_only_selected_uv.desc": "Zeige standardmäßig nur die aktuell ausgewählten UV Flächen im UV Editor an", + "settings.vertex_merge_distance.desc": "Abstand, in dem beieinander liegende Eckpunkte durch die Vereinen-Funktion vereint werden", + "settings.show_only_selected_uv": "Nur ausgewählte UV-Flächen anzeigen", + "settings.show_only_selected_uv.desc": "Zeige standardmäßig nur die aktuell ausgewählten UV-Flächen im UV-Editor an", "action.merge_vertices.merge_all": "Alle vereinen", "action.merge_vertices.merge_all_in_center": "Alle in Mittelpunkt vereinen", - "action.merge_vertices.merge_by_distance": "Beieinanderliegende vereinen", - "action.merge_vertices.merge_by_distance_in_center": "Beieinanderliegende in Mittelpunkt vereinen", - "action.uv_rotate_left": "Drehe UV Links", - "action.uv_rotate_left.desc": "Die ausgewählten UV Flächen gegen den Uhrzeigersinn drehen", - "action.uv_rotate_right": "UV nach rechts dregen", - "action.uv_rotate_right.desc": "Die ausgewählten UV Flächen im Uhrzeigersinn drehen", + "action.merge_vertices.merge_by_distance": "Beieinander liegende vereinen", + "action.merge_vertices.merge_by_distance_in_center": "Beieinander liegende in Mittelpunkt vereinen", + "action.uv_rotate_left": "UV nach links drehen", + "action.uv_rotate_left.desc": "Die ausgewählten UV-Flächen gegen den Uhrzeigersinn drehen", + "action.uv_rotate_right": "UV nach rechts drehen", + "action.uv_rotate_right.desc": "Die ausgewählten UV-Flächen im Uhrzeigersinn drehen", "menu.uv.display_uv": "UV anzeigen", "menu.uv.display_uv.selected_faces": "Ausgewählte Flächen", "menu.uv.display_uv.selected_elements": "Alle Flächen", "menu.uv.display_uv.all_elements": "Alle Flächen von allen Elementen", - "menu.paste.face": "UV Fläche", + "menu.paste.face": "UV-Fläche", "menu.paste.mesh_selection": "Maschenauswahl", "menu.paste.outliner": "Elemente", "uv_editor.show_all_faces": "Alle Flächen anzeigen", @@ -1391,7 +1391,7 @@ "modifier_actions.stretch_keyframes": "Keyframes strecken", "modifier_actions.resize_background": "Hintergrund skalieren", "modifier_actions.select_multiple": "Mehrfachauswahl", - "modifier_actions.select_range": "Auswahl von... bis", + "modifier_actions.select_range": "Auswahl von ... bis", "modifier_actions.drag_to_duplicate": "Verschieben zum Duplizieren", "modifier_actions.uniform_scaling": "Gleichmäßig skalieren", "modifier_actions.snap_direction": "Feste Ausrichtung", @@ -1407,26 +1407,26 @@ "settings.ground_plane": "Bodenebene", "settings.ground_plane.desc": "Eine Ebene als Boden unter dem Modell anzeigen", "settings.preview_paste_behavior": "Standardmäßiges Verhalten beim Einfügen", - "settings.preview_paste_behavior.desc": "Wähle das Verhalten der Einfügen-Funktion, bei Verwendung in der 3D Ansicht im Bearbeiten-Modus, wenn mehrere Optionen verfügbar sind", + "settings.preview_paste_behavior.desc": "Wähle das Verhalten der Einfügen-Funktion, bei Verwendung in der 3D-Ansicht im Bearbeiten-Modus, wenn mehrere Optionen verfügbar sind", "settings.preview_paste_behavior.always_ask": "Immer nachfragen", "action.new_window": "Neues Fenster", "action.new_window.desc": "Öffnet ein neues Blockbench-Fenster", - "action.export_collada": "Als Collada Modell (dae) exportieren", - "action.export_collada.desc": "Exportiert das Modell aus dae-Datei zur Weiterverwendung in anderen 3D Programmen", - "action.paint_mode_uv_overlay": "UV Hilfslinien", - "action.paint_mode_uv_overlay.desc": "Überlagert die UV Maps der Elemente im Malen-Modus", + "action.export_collada": "Collada-Modell (dae) exportieren", + "action.export_collada.desc": "Exportiert das Modell als dae-Datei zur Weiterverwendung in anderen 3D-Programmen", + "action.paint_mode_uv_overlay": "UV-Hilfslinien", + "action.paint_mode_uv_overlay.desc": "Überlagert die UV-Maps der Elemente im Malen-Modus", "action.bake_animation_into_model": "Animationen auf Modell anwenden", "action.bake_animation_into_model.desc": "Wendet die aktuell angezeigte Animation auf das Modell an. Nur Position und Drehung werden verwendet, Größe wird ignoriert", "action.keyframe_interpolation.step": "Stufe", - "action.set_ik_target": "IK Zielobjekt setzen", + "action.set_ik_target": "IK-Zielobjekt setzen", "action.set_ik_target.desc": "Wähle das Zielobjekt aus, welches durch dieses Null Objekt durch Inverse Kinematik bewegt wird", "menu.action_control.type.tab": "Tab", "menu.action_control.type.angle": "Kamerablickwinkel", "menu.action_control.recent_in_streamer_mode": "Bist du sicher? Streamer-Modus ist aktiviert", "menu.action_control.recent_in_streamer_mode.desc": "Bist du ganz sicher, dass du zuletzt verwendete Modelle anzeigen möchtest?", "menu.tools": "Werkzeuge", - "menu.file.recent.more": "Mehr anzeigen...", - "menu.null_object.lock_ik_target_rotation": "Drehung des IK Zielobjekts sperren", + "menu.file.recent.more": "Mehr anzeigen ...", + "menu.null_object.lock_ik_target_rotation": "Drehung des IK-Zielobjekts sperren", "menu.animation_file.import_remaining": "Verbleibende Animationen importieren", "edit.loop_cut.offset": "Versatz", "edit.extrude_mesh_selection.extend": "Größe", @@ -1444,21 +1444,21 @@ "panel.skin_pose.jumping": "Springend", "panel.skin_pose.aiming": "Zielend", "edit.loop_cut.direction": "Ausrichtung", - "message.meshes_and_box_uv": "Maschen sind nicht mit Box UV kompatibel. Gehe zu Datei > Project... und wähle Flächen-UV als UV Modus.", - "data.texture_mesh": "3D Textur", + "message.meshes_and_box_uv": "Maschen sind nicht mit Box-UV kompatibel. Gehe zu „Datei“ > „Projekt ...“ und wähle Flächen-UV als UV-Modus.", + "data.texture_mesh": "3D-Textur", "generic.left": "Links", "generic.right": "Rechts", "mode.start.quick_setup": "Schnelle Einstellungen", - "mode.start.keymap": "Tastaturbelegung", - "mode.start.quick_setup.more_themes": "Weitere...", + "mode.start.keymap": "Tastenbelegung", + "mode.start.quick_setup.more_themes": "Weitere ...", "dialog.resize_texture.animation_frames": "Animierte Frames", - "dialog.export_emission_map.title": "Emission Map exportieren", + "dialog.export_emission_map.title": "Emission-Map exportieren", "dialog.export_emission_map.format": "Format", "dialog.export_emission_map.format.luminance": "Helligkeit", "dialog.export_emission_map.format.luminance_inverted": "Invertierte Helligkeit", "dialog.export_emission_map.format.colors": "Farben", - "dialog.export_emission_map.threshold": "Transparenz Schwellenwert", - "dialog.export_emission_map.round_up": "Auf %0 x %1 aufrunden", + "dialog.export_emission_map.threshold": "Transparenzschwellenwert", + "dialog.export_emission_map.round_up": "Auf %0 × %1 aufrunden", "dialog.export_emission_map.flip_y": "Y-Achse invertieren", "dialog.select.type": "Element-Typ", "dialog.create_texture.max_edge_angle": "Maximaler Kantenwinkel", @@ -1467,15 +1467,15 @@ "dialog.create_texture.max_island_angle.desc": "Der maximale Winkel, mit dem Flächen zu einer UV-Insel verbunden werden können", "settings.mobile_panel_side": "Verankerung der Seitenleiste", "settings.mobile_panel_side.desc": "Wähle aus, auf welcher Seite des Bildschirms auf horizontal gehaltenen Mobilgeräten die Seitenleiste angezeigt wird", - "settings.obj_face_export_mode": "OBJ-Flächen Exportmodus", - "settings.obj_face_export_mode.desc": "Stelle ein, ob alle Flächen vom OBJ Exporter in Dreiecke oder Vierecke umgewandelt werden sollen", + "settings.obj_face_export_mode": "OBJ-Flächen-Exportmodus", + "settings.obj_face_export_mode.desc": "Stelle ein, ob alle Flächen vom OBJ-Exporter in Dreiecke oder Vierecke umgewandelt werden sollen", "settings.obj_face_export_mode.both": "Standard", "settings.obj_face_export_mode.tris": "In Dreiecke konvertieren", "settings.obj_face_export_mode.quads": "In Vierecke konvertieren", "action.seam_tool": "Nahtwerkzeug", "action.seam_tool.desc": "Werkeug zum Festlegen von Nähten entlang der Kanten von Maschen", "action.resolve_group": "Gruppe auflösen", - "action.resolve_group.desc": "Diese Gruppe auflösen, wärend die Kinderelemente an der selben Stelle bleiben", + "action.resolve_group.desc": "Diese Gruppe auflösen, während die Kinderelemente an der selben Stelle bleiben", "action.move_to_group": "In Gruppe verschieben", "action.move_to_group.desc": "Die Auswahl in eine bestimmte Gruppe verschieben", "action.select_seam": "UV-Naht auswählen", @@ -1483,24 +1483,24 @@ "action.select_seam.auto": "Automatisch", "action.select_seam.join": "Verbunden", "action.select_seam.divide": "Getrennt", - "action.adjust_brightness_contrast": "Helligkeit & Kontrast anpassen", + "action.adjust_brightness_contrast": "Helligkeit u. Kontrast anpassen", "action.adjust_brightness_contrast.desc": "Helligkeit und Kontrast der ausgewählten Textur anpassen", - "action.adjust_saturation_hue": "Sättigung & Farbton anpassen", + "action.adjust_saturation_hue": "Sättigung u. Farbton anpassen", "action.adjust_saturation_hue.desc": "Sättigung und Farbton der ausgewählten Textur anpassen", "action.invert_colors": "Farben umkehren", "action.invert_colors.desc": "Invertiert alle Farben der ausgewählten Textur", - "action.adjust_curves": "Farbkurven anpassen...", + "action.adjust_curves": "Farbkurven anpassen ...", "action.adjust_curves.desc": "Verändere die Helligkeitskurve der ausgewählten Textur", "action.flip_texture_x": "Textur horizontal spiegeln", "action.flip_texture_y": "Textur vertikal spiegeln", - "action.resize_texture": "Größe ändern...", - "action.view_mode.uv": "UV Vorschau", + "action.resize_texture": "Größe ändern ...", + "action.view_mode.uv": "UV-Vorschau", "action.append_to_template": "Elemente zum Template hinzufügen...", "action.append_to_template.desc": "Fügt die ausgewählten Elemente zum Textur-Template hinzu", "action.move_texture_with_uv": "Textur gemeinsam mit UV verschieben", "action.move_texture_with_uv.desc": "Die Textur mitverschieben, wenn UV-Flächen verschoben werden", "action.timeline_setups": "Zeitleisten-Anordnungen", - "action.save_timeline_setup": "Zeitleisten-Anordnung speichern...", + "action.save_timeline_setup": "Zeitleisten-Anordnung speichern ...", "action.save_timeline_setup.desc": "Speichere die aktuell ausgewählten Animatoren und Kanäle in der Zeitleiste", "menu.texture": "Textur", "menu.texture.render_mode.default": "Standard", @@ -1508,7 +1508,7 @@ "menu.animation.unload": "Entladen", "panel.timeline": "Zeitleiste", "action.pan_tool": "Schwenktool", - "action.pan_tool.desc": "Werkzeug zur Navigation im Textureditor und in der 3D Vorschau", + "action.pan_tool.desc": "Werkzeug zur Navigation im Textureneditor und in der 3D-Vorschau", "mode.start.recent.favorite": "Als Favorit kennzeichnen", "mode.start.info": "Info", "mode.start.target": "Ziel", @@ -1516,15 +1516,15 @@ "mode.start.create_new": "Neues Modell erstellen", "mode.start.format.informations": "Gut zu wissen:", "mode.start.format.resources": "Ressourcen:", - "format.free.info.meshes": "In diesem Format kannst du Low-Poly Modelle aus individuell geformten Maschen und aus Quadern erstellen.", + "format.free.info.meshes": "In diesem Format kannst du Low-Poly-Modelle aus individuell geformten Maschen und aus Quadern erstellen.", "format.free.info.limitation": "Modelle können nicht in Spielen, wie zum Beispiel Minecraft, die eigene Formate voraussetzen, verwendet werden.", - "format.skin.info.skin": "Dieses Format ist dafür vorgesehen, Minecraft Skins und Texturen für Kreaturen zu erstellen.", + "format.skin.info.skin": "Dieses Format ist dafür vorgesehen, Minecraft-Skins und -Texturen für Kreaturen zu erstellen.", "format.skin.info.model": "Modelle können nicht verändert werden. Um Änderungen an einem Modell aus diesem Format vorzunehmen, konvertiere es in ein anderes Format über **Datei** > **Projekt konvertieren**.", - "format.java_block.info.rotation": "Drehungen sind begrenzt auf Schritte von 22.5 Grad und eine Achse pro Element", + "format.java_block.info.rotation": "Drehungen sind begrenzt auf Schritte von 22,5 Grad und eine Achse pro Element", "format.java_block.info.size": "Das Modell ist beschränkt auf eine Größe von 3 mal 3 mal 3 Blöcken. Durch Anzeigeeinstellungen können Itemmodelle jedoch weiter vergrößert werden.", - "format.java_block.info.animation": "Dieses Format unterstützt in Vanilla Minecraft keine Animationen. Wenn du eine Mod erstellst, kannst du GeckoLib verwenden, um Modelle zu animieren. Anderenfalls ist die einzige Möglichkeit, das Modell zu animieren, das Auswechseln von einzelnen Modellen mit Hilfe von Befehlen oder animierten Texturen.", - "format.bedrock.info.textures": "Jedes Modell kann nur eine einzige Texture haben", - "format.bedrock_block": "Bedrock Block", + "format.java_block.info.animation": "Dieses Format unterstützt im unmodifizierten Minecraft keine Animationen. Wenn du eine Mod erstellst, kannst du GeckoLib verwenden, um Modelle zu animieren. Anderenfalls ist die einzige Möglichkeit, das Modell zu animieren, das Auswechseln von einzelnen Modellen mit Hilfe von Befehlen oder animierten Texturen.", + "format.bedrock.info.textures": "Jedes Modell kann nur eine einzige Textur haben", + "format.bedrock_block": "Bedrock-Block", "format.bedrock_block.desc": "Blockmodell für Minecraft Bedrock Edition", "format.modded_entity.info.integer_size": "Die Größe einzelner Quader ist auf ganze Zahlen beschränkt.", "format.modded_entity.info.format": "Anstelle von Datenformaten werden Modelle als Java-Code-Dateien ausgegeben.", @@ -1536,11 +1536,11 @@ "format_category.loaders": "Modell laden", "message.recover_backup.recover": "Wiederherstellen", "message.invalid_characters.title": "Ungültiger Dateipfad", - "message.invalid_characters.message": "Der Dateipfad der importiereten Datei beinhaltet ungültige Zeichen, Großbuchstaben, oder Leerzeichen. Gültige Zeichen sind: %0", + "message.invalid_characters.message": "Der Dateipfad der importierten Datei beinhaltet ungültige Zeichen, Großbuchstaben, oder Leerzeichen. Gültige Zeichen sind: %0", "dialog.share_model.thumbnail": "Vorschaubild", "dialog.skin.high_res_texture": "Bitte beachte, dass die ausgewählte Auflösung nicht für normale Minecraft Skins funktioniert. Wähle eine geringere Auflösung.", "settings.allow_display_slot_mirror": "Spiegeln in den Anzeigeeinstellungen erlauben", - "settings.allow_display_slot_mirror.desc": "Erlaubt es, Positionen der Anzeigeeinstellungen für Java Block- oder Itemmodelle zu spiegeln. ACHTUNG: Spiegeln funktioniert nur in Minecraft 1.14 und früheren Versionen, oder in Sonderfällen.", + "settings.allow_display_slot_mirror.desc": "Erlaubt es, Positionen der Anzeigeeinstellungen für Java-Block- oder Itemmodelle zu spiegeln. ACHTUNG: Spiegeln funktioniert nur in Minecraft 1.14 und früheren Versionen, oder in Sonderfällen.", "action.switch_tabs": "Tab wechseln", "action.switch_tabs.desc": "Zwischen den geöffneten Tabs wechseln. Halte Umschalt gedrückt, um die Richtung umzukehren.", "action.unselect_all": "Auswahl aufheben", @@ -1555,14 +1555,14 @@ "menu.keyframe": "Keyframe", "menu.palette.load.update": "Palette aktualisieren", "menu.palette.load.update.desc": "Aktualisiert diese Palette mit den Farben der aktuell geladenen Blockbench palette", - "menu.timeline_marker.set_time": "Zeit einstellen...", - "uv_editor.scale_uv": "UV Skalieren", + "menu.timeline_marker.set_time": "Zeit einstellen ...", + "uv_editor.scale_uv": "UV skalieren", "action.preview_scene": "Vorschauszene", "action.preview_scene.desc": "Die Vorschauszene auswählen", - "preview_scene.minecraft_overworld": "Minecraft Oberwelt", - "preview_scene.minecraft_nether": "Minecraft Nether", - "preview_scene.minecraft_end": "Minecraft Ende", - "dialog.project.modded_entity_flip_y": "Y Koordinaten umkehren", + "preview_scene.minecraft_overworld": "Minecraft-Oberwelt", + "preview_scene.minecraft_nether": "Minecraft-Nether", + "preview_scene.minecraft_end": "Minecraft-Ende", + "dialog.project.modded_entity_flip_y": "Y-Koordinaten umkehren", "preview_scene.studio": "Studio", "format.image": "Bild", "modifier_actions.set_copy_source": "Quelle für Kopierstempel setzen", @@ -1595,18 +1595,18 @@ "action.blend_mode.multiply": "Multiplizieren", "action.blend_mode.divide": "Dividieren", "action.blend_mode.add": "Addieren", - "action.blend_mode.subtract": "Dubtrahieren", + "action.blend_mode.subtract": "Subtrahieren", "action.blend_mode.screen": "Bildschirm", "action.blend_mode.overlay": "Überlagern", "action.blend_mode.hard_light": "Hartes Licht", "action.blend_mode.difference": "Differenz", "action.copy_brush": "Kopierstempel", "action.copy_brush.desc": "Pinsel um Teile der Textur zu kopieren oder Muster zu malen", - "action.validator_window": "Probleme anzeigen...", + "action.validator_window": "Probleme anzeigen ...", "action.validator_window.desc": "Öffnet den Validator, welcher Probleme mit dem Projekt automatisch erkennt und auflistet.", "action.cancel_gif": "GIF abbrechen", "menu.text_edit.copy_vector": "Vektor kopieren", - "menu.brush_presets.dialog": "Pinsel-Vorlagen...", + "menu.brush_presets.dialog": "Pinsel-Vorlagen ...", "menu.brush_presets.pixel_brush": "Pixelstift", "menu.brush_presets.smooth_brush": "Weicher Pinsel", "menu.texture.edit_in_blockbench": "In Blockbench bearbeiten", @@ -1652,7 +1652,7 @@ "dialog.predicate_overrides.confirm_delete": "Bist du sicher, dass du alle Overrides löschen möchtest?", "dialog.predicate_overrides.predicate.angle": "Kompassrichtung", "dialog.predicate_overrides.predicate.blocking": "Ist am Blocken", - "dialog.predicate_overrides.predicate.broken": "ist kaputt", + "dialog.predicate_overrides.predicate.broken": "Ist kaputt", "dialog.predicate_overrides.predicate.cast": "Ist ausgeworfen", "dialog.predicate_overrides.predicate.cooldown": "Abklingzeit", "dialog.predicate_overrides.predicate.damage": "Schaden", @@ -1668,41 +1668,41 @@ "dialog.predicate_overrides.predicate.level": "Lichtlevel", "dialog.predicate_overrides.predicate.filled": "Bündel-Füllstand", "dialog.predicate_overrides.predicate.tooting": "Wird geblasen", - "settings.model_export_scale": "Export Größenverhältnis", + "settings.model_export_scale": "Export-Größenverhältnis", "settings.model_export_scale.desc": "Faktor durch den Modelle verkleinert werden, wenn sie als glTF, DAE oder FBX exportiert werden. Der Standardwert ist 16, wodurch 16 Einheiten in Blockbench einem Meter entsprechen.", "action.copy_paste_tool_mode": "Kopiermodus", "action.copy_paste_tool_mode.copy": "Kopieren", "action.copy_paste_tool_mode.move": "Verschieben", - "action.export_fbx": "FBX Modell exportieren", - "action.export_fbx.desc": "Exportiert das Modell aus FBX-Datei zur Weiterverwendung in anderen 3D Programmen und Game Engines", + "action.export_fbx": "FBX-Modell exportieren", + "action.export_fbx.desc": "Exportiert das Modell aus FBX-Datei zur Weiterverwendung in anderen 3D-Programmen und Spiel-Engines", "action.center_lateral": "Seitlich zentrieren", - "action.center_lateral.desc": "Zentriert das Modell auf der X und Z Achse", - "action.adjust_opacity": "Deckkraft anpassen...", + "action.center_lateral.desc": "Zentriert das Modell auf der X- und Z-Achse", + "action.adjust_opacity": "Deckkraft anpassen ...", "action.adjust_opacity.desc": "Passe die Deckkraft der ausgewählten Textur an", "action.rotate_texture_cw": "Im Uhrzeigersinn drehen", "action.rotate_texture_ccw": "Gegen den Uhrzeigersinn drehen", - "action.predicate_overrides": "Bedingte Overrides bearbeiten...", + "action.predicate_overrides": "Bedingte Overrides bearbeiten ...", "action.predicate_overrides.desc": "Wähle andere Modelle, die dieses Modell basierend auf bestimmten Bedingungen ersetzen", "action.auto_set_cullfaces": "Cullfaces automatisch einstellen", "action.auto_set_cullfaces.desc": "Generiert automatisch Cullfaces, die Flächen verstecken, wenn diese vom benachbarten Block verdeckt werden.", "menu.texture.edit_externally": "Extern bearbeiten", - "menu.mirror_painting.texture": "2D Editor Symmetrie", - "menu.mirror_painting.texture.desc": "Gespiegeltes Malen im 2D Editor aktivieren", + "menu.mirror_painting.texture": "2D-Editor-Symmetrie", + "menu.mirror_painting.texture.desc": "Gespiegeltes Malen im 2D-Editor aktivieren", "menu.animator.rotation_global": "Drehung relativ zum globalen Raum", "uv_editor.face_properties": "Flächeneigenschaften", "uv_editor.face_properties.material_instance": "Materialien", - "uv_editor.tint.info": "Färbung kann aktiviert werden, um Minecraft mitzuteilen, dass eine Fläche fürs Färben vorgesehen ist. Färbung kann in Vanilla nur bei bestimmten Bläcken, wie z. B. Blättern und Redstonestaub angewendet werden, und der Wert kann nur 0 sein.", + "uv_editor.tint.info": "Färbung kann aktiviert werden, um Minecraft mitzuteilen, dass eine Fläche für das Färben vorgesehen ist. Färbung kann im unmodifizierten Minecraft nur bei bestimmten Blöcken, wie z. B. Blättern und Redstonestaub angewendet werden, und der Wert kann nur 0 sein.", "uv_editor.cullface.info": "Durch aktivierte Cullfaces wird eine Fläche deaktiviert wenn neben dem Block in der ausgewählten Richtung in der Minecraftwelt ein solider Block platziert wird. Diese Technik wird verwendet, um Modelle performanter zu machen.", - "uv_editor.material_instance.info": "Materialien können auf einen vom Benutzer festgelegten Namen eingestellt werden. Dieser Name kann in der Block JSON Datei im Verhaltenspaket verwendet werden, um eine bestimmte Textur oder ein Material auf die Fläche anzuwenden.", - "display.reference.frame_invisible": "Rahmen (Unsichtbar)", + "uv_editor.material_instance.info": "Materialien können auf einen vom Benutzer festgelegten Namen eingestellt werden. Dieser Name kann in der Block-JSON-Datei im Verhaltenspaket verwendet werden, um eine bestimmte Textur oder ein Material auf die Fläche anzuwenden.", + "display.reference.frame_invisible": "Rahmen (unsichtbar)", "data.settings_profile": "Profil", - "message.display_skin.invalid_name": "Konnte keinen Minecraft Account mit dem Namen \"%0\" finden.", + "message.display_skin.invalid_name": "Konnte keinen Minecraft-Account mit dem Namen „%0“ finden.", "dialog.load_plugins_from_query.title": "Plugins laden", "dialog.load_plugins_from_query.text": "Du hast einen Link verwendet, der einige Plugins voraussetzt. Möchtest du diese Plugins installieren?", "dialog.select_model.title": "Modell auswählen", "dialog.select_model.bones": "Knochen", "dialog.select_model.cubes": "Quader", - "dialog.settings.create_profile": "Profil erstellen...", + "dialog.settings.create_profile": "Profil erstellen ...", "settings_profile.confirm_delete": "Bist du sicher, dass du dieses Einstellungsprofil löschen möchtest?", "settings_profile.condition.type.selectable": "Manuell auswählbar", "settings.interface_mode": "Gerätemodus", @@ -1731,7 +1731,7 @@ "action.looped_animation_playback": "Endlosschleife", "action.looped_animation_playback.desc": "Spiele Animationen in einer Endlosschleife ab", "timeline.bind_to_actor": "An Wesen binden", - "animation_controllers.select_preset": "Wähle eine Vorlage aus...", + "animation_controllers.select_preset": "Wähle eine Vorlage aus ...", "animation_controllers.state.animations": "Animationen", "animation_controllers.state.particles": "Partikeleffekte", "animation_controllers.state.sounds": "Soundeffekte", @@ -1756,23 +1756,23 @@ "dialog.extrude.orientation": "Ausrichtung", "dialog.extrude.orientation.upright": "Aufrecht", "dialog.extrude.orientation.flat": "Liegend", - "dialog.scale.box_uv_warning": "Das Skalieren eines Modells mit Box UV könnte das UV Mapping zerstören. Versuche stattdessen, das Modell auf externer weise zu skalieren, oder in Datei > Project auf Flächen-UV umzustellen.", + "dialog.scale.box_uv_warning": "Das Skalieren eines Modells mit Box-UV könnte das UV-Mapping zerstören. Versuche stattdessen, das Modell auf externer Weise zu skalieren, oder in Datei > Projekt auf Flächen-UV umzustellen.", "dialog.create_gif.format": "Format", "dialog.create_gif.format.gif": "GIF", - "dialog.create_gif.format.png_sequence": "PNG Sequenz", + "dialog.create_gif.format.png_sequence": "PNG-Sequenz", "dialog.create_gif.pixelate": "Verpixeln", "dialog.create_gif.bg_image": "Hintergrundbild", "dialog.create_gif.turn.desc": "Drehe das Modell während der Aufnahme. Verwende negative Zahlen, um das Modell im Uhrzeigersinn zu drehen. Der Wert 60 entspricht einer Umdrehung pro Sekunde.", "settings_profile.condition": "Bedingung", - "settings_profile.condition.type.file_path.desc": "Verwende Reguläre Ausdrücke, die im Dateipfad des Projekts enthalten sein müssen, um das Profil zu aktivieren. Verwende Schrägstriche als Trennzeichen", + "settings_profile.condition.type.file_path.desc": "Verwende reguläre Ausdrücke, die im Dateipfad des Projekts enthalten sein müssen, um das Profil zu aktivieren. Verwende Schrägstriche als Trennzeichen", "settings.only_selected_bezier_handles": "Nur ausgewählte Beziergriffe anzeigen", "settings.only_selected_bezier_handles.desc": "Verstecke die Beziergriffe von Keyframes, die nicht ausgewählt sind", "settings.embed_textures": "Texturen einbetten", - "settings.embed_textures.desc": "Bette den Inhalt von Texturen in die .bbmodel Datei ein", + "settings.embed_textures.desc": "Bette den Inhalt von Texturen in die .bbmodel-Datei ein", "action.selection_mode.cluster": "Zusammenhängend", "dialog.copied_to_clipboard": "In Zwischenablage kopiert", "data.reference_image": "Referenzbild", - "message.delete_reference_image": "Bist du sicher, dass du dieses Referenzbild löschen möchtest? Dies kann nicht Rückgängig gemacht werden.", + "message.delete_reference_image": "Bist du sicher, dass du dieses Referenzbild löschen möchtest? Dies kann nicht rückgängig gemacht werden.", "message.add_reference_image.message": "Wähle, wo das Referenzbild geladen wird", "message.add_reference_image.project": "Zu diesem Projekt hinzufügen", "message.add_reference_image.app": "Zu allen Projekten hinzufügen", @@ -1780,12 +1780,12 @@ "message.import_particle_texture.message": "Möchtest du eine Textur für diesen Partikeleffekt laden?", "message.save_codec_selector.title": "Speicherformat", "message.save_codec_selector.message": "Wähle ein Format, in dem das Modell gespeichert werden soll.", - "message.save_codec_selector.project_file": "Blockbench Projekt (.bbmodel)", + "message.save_codec_selector.project_file": "Blockbench-Projekt (.bbmodel)", "message.save_codec_selector.both": "Beides", "message.display_skin.username": "Benutzername (Java)", "message.palette_locked": "Die Palette ist gesperrt", - "dialog.project.default_uv_mode": "Standard UV Modus", - "dialog.project.default_uv_mode.description": "Standard UV Modus des Projekts. Der UV Modus kann auch für jeden Quader einzeln eingestellt werden.", + "dialog.project.default_uv_mode": "Standard-UV-Modus", + "dialog.project.default_uv_mode.description": "Standard-UV-Modus des Projekts. Der UV-Modus kann auch für jeden Quader einzeln eingestellt werden.", "dialog.export_options.title": "Exportoptionen", "dialog.edit_texture.preview": "Vorschau", "dialog.proportional_editing.range": "Reichweite", @@ -1801,8 +1801,8 @@ "dialog.settings.reset_to_default": "Auf Standardwert zurücksetzen", "keybindings.item.num_slider.increase": "Erhöhen", "keybindings.item.num_slider.decrease": "Verringern", - "settings.always_show_splash_art": "Splashbild immer anzeigen", - "settings.always_show_splash_art.desc": "Zeige das Bild auf dem Splashbildschirm bei jedem Start an", + "settings.always_show_splash_art": "Startbild immer anzeigen", + "settings.always_show_splash_art.desc": "Zeige das Bild auf dem Startbildschirm bei jedem Start an", "action.slider_palette_color": "Farbe in Palette wechseln", "action.slider_palette_color.desc": "Wechsle zwischen verschiedenen Farben in der Palette", "action.proportional_editing": "Proportional bearbeiten", @@ -1814,23 +1814,23 @@ "action.add_reference_image": "Referenzbild hinzufügen", "action.reference_image_from_clipboard": "Referenzbild aus Zwischenablage laden", "action.reference_image_list": "Referenzbilder", - "action.connect_uv_faces": "UV Flächen verbinden", - "action.connect_uv_faces.desc": "Verbinde die gewählte UV Fläche mit der davor gewählten Fläche", - "action.merge_uv_vertices": "UV Eckpunkte zusammenführen", + "action.connect_uv_faces": "UV-Flächen verbinden", + "action.connect_uv_faces.desc": "Verbinde die gewählte UV-Fläche mit der davor gewählten Fläche", + "action.merge_uv_vertices": "UV-Eckpunkte zusammenführen", "action.merge_uv_vertices.desc": "Führt die zuerst gewählten Eckpunkte mit den davor gewählten Eckpunkten zusammen", "action.bedrock_animation_mode": "Bedrock Animations-Modus", - "action.bedrock_animation_mode.desc": "Wähle einen Modus, in dem Bedrock Animationen bearbeitet werden können", + "action.bedrock_animation_mode.desc": "Wähle einen Modus, in dem Bedrock-Animationen bearbeitet werden können", "action.bedrock_animation_mode.entity": "Objekt", "action.bedrock_animation_mode.attachable_first": "Gegenstand, erste Person", "action.bedrock_animation_mode.attachable_third": "Gegenstand, dritte Person", "timeline.amplify": "Verstärken", - "menu.options": "Optionen...", + "menu.options": "Optionen ...", "menu.palette.lock_palette": "Palette sperren", - "menu.uv.export": "UV Maps exportieren", - "menu.uv.flip_x": "Spiegeln X", - "menu.uv.flip_y": "Spiegeln Y", + "menu.uv.export": "UV-Maps exportieren", + "menu.uv.flip_x": "X spiegeln", + "menu.uv.flip_y": "Y spiegeln", "menu.mirror_painting.enabled": "Aktiviert", - "menu.mirror_painting.configure_texture_center": "Zentrum in Texture einstellen...", + "menu.mirror_painting.configure_texture_center": "Zentrum in Textur einstellen ...", "reference_image.position": "Position", "reference_image.size": "Größe", "reference_image.rotation": "Drehung", @@ -1846,13 +1846,13 @@ "reference_image.scope.project": "Nur dieses Projekt", "reference_image.scope.global": "Alle Projekte", "reference_image.enabled_modes": "Aktiviert in Modi", - "codec.common.encoding": "Encoding", + "codec.common.encoding": "Kodierung", "codec.common.armature": "Gruppen als Skelett exportieren", "codec.common.export_animations": "Animationen exportieren", "codec.common.embed_textures": "Texturen einbetten", "preview.center_camera": "Kamera zentrieren", "display.reference.frame_top": "Rahmen oben", - "display.reference.frame_top_invisible": "Rahmen oben (Unsichtbar)", + "display.reference.frame_top_invisible": "Rahmen oben (unsichtbar)", "action.proportional_editing_range": "Proportional bearbeiten: Reichweite", "action.proportional_editing_range.desc": "Stelle die Reichweite für das proportionale Bearbeiten ein", "action.toggle_all_reference_images": "Zeige/Verberge alle Referenzbilder", @@ -1867,13 +1867,13 @@ "uv_editor.rotate_uv": "UV drehen", "generic.error": "Fehler", "projects.start_screen": "Startbildschirm", - "message.invalid_link.message": "Das geteilte Modell unter dem Link \"%0\" ist entweder ungültig oder abgelaufen.", - "message.plugin_dependencies.title": "Plugin Dependencies", + "message.invalid_link.message": "Das geteilte Modell unter dem Link „%0“ ist entweder ungültig oder abgelaufen.", + "message.plugin_dependencies.title": "Plugin-Abhängigkeiten", "message.plugin_dependencies.message1": "Das Plugin setzt folgende installierten Plugins voraus:", "message.plugin_dependencies.message1_update": "Das Plugin %0 wurde aktualisiert und setzt nun diese installierten Plugins voraus:", "message.plugin_dependencies.message2": "Möchtest du diese installieren, um fortzufahren?", "message.plugin_dependencies.invalid": "Leider kann das Plugin nicht installiert werden, da es von einem anderen Plugin abhängt, das nicht installiert werden kann:", - "message.preview_scene_load_failed": "Vorschauszene konnte nicht geladen werden. Stelle sicher, dass du mit dem Internet verbunden bist.", + "message.preview_scene_load_failed": "Vorschauszene konnte nicht geladen werden. Stell sicher, dass du mit dem Internet verbunden bist.", "dialog.convert_project.text1": "Konvertiere das Projekt in ein anderes Format.", "dialog.convert_project.text2": "Benutzung auf eigene Gefahr. Formate haben unterschiedliche Funktionen und Beschränkungen, deshalb wird das Konvertieren in einigen Fällen Teile des Projekts beeinflussen oder zerstören.", "dialog.convert_project.text3": "Konvertieren kann nicht rückgängig gemacht werden, deshalb wird eine Kopie des Projekts in einem neuen Tab erstellt.", @@ -1884,7 +1884,7 @@ "dialog.resize_texture.mode": "Modus", "dialog.resize_texture.mode.crop": "Zuschneiden/Erweitern", "dialog.resize_texture.mode.scale": "Skalieren", - "dialog.plugins.is_installed": "Instaliert", + "dialog.plugins.is_installed": "Installiert", "dialog.plugins.is_disabled": "Deaktiviert", "dialog.plugins.disable": "Deaktivieren", "dialog.plugins.enable": "Aktivieren", @@ -1901,21 +1901,21 @@ "settings.double_click_switch_tools.desc": "Doppelklicken in der Vorschau wechselt zwischen Werkzeugen hin und her", "settings.outlines_in_paint_mode": "Auswahlumrisse im Malmodus anzeigen", "settings.outlines_in_paint_mode.desc": "Umrisse der ausgewählten Elemente im Malmodus anzeigen", - "settings.json_indentation": "JSON Einrückung", - "settings.json_indentation.desc": "Einrückstil der exportierten JSON Dateien", + "settings.json_indentation": "JSON-Einrückung", + "settings.json_indentation.desc": "Einrückstil der exportierten JSON-Dateien", "settings.json_indentation.tabs": "Tabs", "settings.json_indentation.spaces_4": "Leerzeichen: 4", "settings.json_indentation.spaces_2": "Leerzeichen: 2", "action.slider_stretch": "Strecken", "action.slider_stretch.desc": "Strecke Quader um einen Faktor auf der %0-Achse, ohne das UV zu beeinflussen", "action.view_backups": "Sicherheitskopien anzeigen", - "action.view_backups.desc": "Durchsuche die Liste ader automatisch gespeicherten Sicherheitskopien", + "action.view_backups.desc": "Durchsuche die Liste der automatisch gespeicherten Sicherheitskopien", "action.search_outliner": "Outliner durchsuchen", "action.search_outliner.desc": "Suche nach Elementen mit bestimmten Namen im Outliner", "action.mirror_modeling": "Gespiegeltes Modellieren", "action.mirror_modeling.desc": "Gespiegeltes Modellieren auf der X-Achse aktivieren. Alle Änderungen werden auf die gegenüberliegenden Seite gespiegelt, außer dies ist für das betroffene Element deaktiviert.", "action.allow_element_mirror_modeling": "Gespiegeltes Modellieren erlauben", - "action.allow_element_mirror_modeling.desc": "Wähle, ob die gewählten Elemente durch Gespiegeltes Modellieren beeinflusst werden", + "action.allow_element_mirror_modeling.desc": "Wähle, ob die gewählten Elemente durch gespiegeltes Modellieren beeinflusst werden", "action.switch_face_crease": "Falz ändern", "action.switch_face_crease.desc": "Ändere die Ausrichtung der Falz, die das Viereck in der Mitte halbiert", "action.clear_unused_texture_space": "Ungenutzten Platz der Textur löschen", @@ -1931,12 +1931,12 @@ "action.split_screen.triple_top": "Dreifach oben", "action.split_screen.triple_bottom": "Dreifach unten", "action.uv_project_from_view": "UV von Ansicht projizieren", - "action.uv_project_from_view.desc": "Generiere UVs für die ausgewählten Flächen von der Perspektive der 3D Vorschau", + "action.uv_project_from_view.desc": "Generiere UVs für die ausgewählten Flächen von der Perspektive der 3D-Vorschau", "action.graph_editor_other_graphs": "Andere Graphen anzeigen", "action.graph_editor_other_graphs.desc": "Zeige die Kurven der Achsen an, die nicht ausgewählt sind", "action.graph_editor_include_other_graphs": "Andere Graphen in Ansicht einbeziehen", "action.graph_editor_include_other_graphs.desc": "Wähle, ob nicht ausgewählte Graphen für die Größe der Darstellung berücksichtigt werden", - "action.set_ik_source": "IK Basis setzen", + "action.set_ik_source": "IK-Basis setzen", "action.set_ik_source.desc": "Wähle den Basisknochen der Kette, die durch Inverse Kinematik gesteuert werden soll", "edit.loop_cut.cuts": "Schnitte", "panel.element.stretch": "Strecken", @@ -1958,26 +1958,26 @@ "action.element_render_order.in_front": "Vor", "message.installing_update.title": "Update verfügbar", "message.installing_update.message": "Eine neue Version ist zur Installation bereit. Nachdem du das Programm geschlossen hast, warte bitte etwa %0 Sekunden, bevor du Blockbench erneut öffnest oder den Computer ausschaltest, damit das Update installiert werden kann.", - "settings.brush_cursor_2d": "2D Pinselumriss", - "settings.brush_cursor_2d.desc": "Zeige den Umriss um den Pinselcursor im 2D Editor an", - "settings.brush_cursor_3d": "3D Pinselumriss", - "settings.brush_cursor_3d.desc": "Zeige den Umriss um den Pinselcursor in der 3D Vorschau a´n", - "settings.cdn_mirror": "CDN Mirror verwenden", - "settings.cdn_mirror.desc": "Den CDN Mirror verwenden, um auf Plugins zuzugreifen. Der Mirror erhält Plugin Updates schneller und funktioniert in Regionen, in denen das CDN sonst nicht funktioniert.", + "settings.brush_cursor_2d": "2D-Pinselumriss", + "settings.brush_cursor_2d.desc": "Zeige den Umriss um den Pinselcursor im 2D-Editor an", + "settings.brush_cursor_3d": "3D-Pinselumriss", + "settings.brush_cursor_3d.desc": "Zeige den Umriss um den Pinselcursor in der 3D-Vorschau an", + "settings.cdn_mirror": "CDN-Mirror verwenden", + "settings.cdn_mirror.desc": "Den CDN-Mirror verwenden, um auf Plugins zuzugreifen. Der Mirror erhält Plugin-Updates schneller und funktioniert in Regionen, in denen das CDN sonst nicht funktioniert.", "data.layer": "Ebene", "data.panel": "Panel", "generic.confirm_delete": "Bist du sicher, dass du es löschen möchtest?", "format_category.general": "Allgemein", "modifier_actions.no_uniform_scaling": "Freies Seitenverhältnis", - "message.texture_refresh_conflict.title": "Abweichtende Versionen der Textur", + "message.texture_refresh_conflict.title": "Abweichende Versionen der Textur", "message.texture_refresh_conflict.message": "Die Texturdatei kann Veränderungen beinhalten, die von der Version in Blockbench abweichen", - "message.texture_refresh_conflict.keep_ours": "Blockbench's Version behalten", + "message.texture_refresh_conflict.keep_ours": "Blockbenchs Version behalten", "message.texture_refresh_conflict.keep_theirs": "Datei laden und alle Änderungen und Ebenen in Blockbench verwerfen", "message.group_required_to_animate": "Diese Art von Element kann nicht animiert werden. Erstelle stattdessen eine Gruppe.", - "dialog.texture.uv_size": "UV Größe", + "dialog.texture.uv_size": "UV-Größe", "dialog.advanced_screenshot.angle_preset": "Kamerablickwinkel", "dialog.advanced_screenshot.resolution": "Auflösung", - "dialog.advanced_screenshot.zoom_to_fit": "Passend Zoomen", + "dialog.advanced_screenshot.zoom_to_fit": "Passend zoomen", "dialog.advanced_screenshot.zoom": "Zoom / Brennweite", "dialog.advanced_screenshot.anti_aliasing": "Kantenglättung", "dialog.advanced_screenshot.anti_aliasing.off": "Aus", @@ -1987,8 +1987,8 @@ "dialog.advanced_screenshot.shading": "Schattierung", "settings.auto_keyframe": "Automatisch Keyframes erzeugen", "settings.auto_keyframe.desc": "Automatisch am Beginn der Timeline einen Keyframe mit Standardwerten erstellen, wenn an einem späteren Punkt in der Timeline animiert wird", - "settings.modded_entity_integer_size": "Mod-Entitymodell Größe in ganzen Zahlen", - "settings.modded_entity_integer_size.desc": "Die Größe von Quadern auf ganze Zahlen beschränken. Obwohl Kommastellen technisch gesehen in manchen Versionen unterstützt werden, sind ganze Zahlen in der Praxis im UV Mapping einfacher zu handhaben.", + "settings.modded_entity_integer_size": "Mod-Entitymodell-Größe in ganzen Zahlen", + "settings.modded_entity_integer_size.desc": "Die Größe von Quadern auf ganze Zahlen beschränken. Obwohl Kommastellen technisch gesehen in manchen Versionen unterstützt werden, sind ganze Zahlen in der Praxis im UV-Mapping einfacher zu handhaben.", "category.layers": "Ebenen", "keybind.paint_secondary_color": "Mit Zweitfarbe malen", "action.selection_tool_operation_mode": "Auswahlmodus", @@ -2007,8 +2007,8 @@ "action.selection_tool.color": "Gleiche Farbe", "action.move_layer_tool": "Ebene verschieben", "action.move_layer_tool.desc": "Verschiebe die ausgewählte Ebene oder Auswahl", - "action.export_modded_animations": "Animationen für Mod Entity exportieren", - "action.export_modded_animations.desc": "Exportiere Animationen für ein animiertes Entity in einer Minecraft Java Edition Mod", + "action.export_modded_animations": "Animationen für Mod-Entity exportieren", + "action.export_modded_animations.desc": "Exportiere Animationen für ein animiertes Entity in einer Mod für Minecraft Java Edition", "action.swap_colors": "Farben tauschen", "action.swap_colors.desc": "Tausche die Hauptfarbe mit der zweiten Farbe", "action.apply_mesh_rotation": "Drehung anwenden", @@ -2026,13 +2026,13 @@ "action.layer_to_texture_size.desc": "Weitet die Ebene auf die Größe der Textur aus", "action.merge_layer_down": "Nach unten vereinen", "action.merge_layer_down.desc": "Auf die darunterliegende Ebene vereinen", - "action.advanced_screenshot": "Erweitertes Bildschirmfoto...", + "action.advanced_screenshot": "Erweitertes Bildschirmfoto ...", "action.advanced_screenshot.desc": "Mache ein Bildschirmfoto mit erweiterten Optionen", "action.bake_ik_animation": "Inverse Kinematik ausrechnen und anwenden", "action.bake_ik_animation.desc": "Rechne die Drehungen durch Inverse Kinematik aus und wende sie aus Keyframes auf die gewählte Animation an", - "action.save_animation_preset": "Animationsvorlage speichern...", + "action.save_animation_preset": "Animationsvorlage speichern ...", "action.save_animation_preset.desc": "Speichere die ausgewählten Keyframes als Animationsvorlage", - "action.animation_onion_skin": "Animations Zwiebelschalen", + "action.animation_onion_skin": "Animationszwiebelschalen", "action.animation_onion_skin.desc": "Zeige die Vorschau eines anderen Standbildes der Animation als Gitternetz an", "action.animation_onion_skin.off": "Aus", "action.animation_onion_skin.select": "Auswahl", @@ -2045,13 +2045,13 @@ "panel.layers": "Ebenen", "uv_editor.copy_paste_tool.to_layer": "Zu neuer Ebene", "format.image.new": "Neues Bild erstellen", - "format.image.info.summary": "Mit dem 2D Bildbearbeitungsmodus kannst du Bilder und Pixelart direkt in Blockbench erstellen und bearbeiten, ohne dass du ein externes Programm verwenden musst. Bearbeite Bilder, verändere Texturen, oder erstelle deine eigenen Pixelgrafiken!", + "format.image.info.summary": "Mit dem 2D-Bildbearbeitungsmodus kannst du Bilder und Pixelart direkt in Blockbench erstellen und bearbeiten, ohne dass du ein externes Programm verwenden musst. Bearbeite Bilder, verändere Texturen, oder erstelle deine eigenen Pixelgrafiken!", "settings.move_with_selection_tool": "Auswahlwerkzeug verwenden, um Auswahl zu verschieben", "settings.move_with_selection_tool.desc": "Verwende das Auswahlwerkzeug direkt, um die Auswahl zu verschieben, ohne dass du zum Verschiebewerkzeug wechseln musst", "settings.final_newline": "Neue Zeile am Ende", "settings.final_newline.desc": "Füge einen Zeilenumbruch am Ende von exportierten Dateien an", "action.crop_layer_to_selection": "Ebene auf Auswahl zuschneiden", - "action.edit_mode_uv_overlay.desc": "Überlagert die UV Maps der Elemente im Bearbeitungs-Modus", + "action.edit_mode_uv_overlay.desc": "Überlagert die UV-Maps der Elemente im Bearbeitungsmodus", "action.animation_onion_skin_selective": "Zwiebelschalen nur für Auswahl", "action.animation_onion_skin_selective.desc": "Zeige die Zwiebelschalenvorschau nur für den ausgewählten Teil des Modells an", "menu.image": "Bild", diff --git a/lang/en.json b/lang/en.json index db4d125d2..169ae44c2 100644 --- a/lang/en.json +++ b/lang/en.json @@ -2105,7 +2105,7 @@ "uv_editor.title": "UV Editor", "uv_editor.face_properties": "Face Properties", "uv_editor.face_properties.material_instance": "Material Instance", - "uv_editor.tint.info": "Tint can be enabled on a face to tell the Minecraft to tint it. In vanilla, tint can only be used by specific blocks such as leaves and redstone dust, and can only have a value of 0.", + "uv_editor.tint.info": "Tint can be enabled on a face to tell Minecraft to tint it. In vanilla, tint can only be used by specific blocks such as leaves and redstone dust, and can only have a value of 0.", "uv_editor.cullface.info": "Enabling cullface tells a face on a block to unrender if another full block is placed next to it in the specified direction in your Minecraft world. This can be used to optimize performance.", "uv_editor.material_instance.info": "Material instances can be set to a user-defined name. That name can be used in the block JSON file in the behavior pack to assign a particular texture and material that the face.", "uv_editor.show_all_faces": "Show All Faces", diff --git a/lang/uk.json b/lang/uk.json index 7450151ad..a629d5d03 100644 --- a/lang/uk.json +++ b/lang/uk.json @@ -5,7 +5,7 @@ "dialog.close": "Закрити", "dialog.import": "Імпортувати", "dialog.save": "Зберегти", - "dialog.discard": "Вилучити", + "dialog.discard": "Відкинути", "dialog.dontshowagain": "Не показувати знову", "data.cube": "Куб", "data.group": "Група", @@ -96,7 +96,7 @@ "dialog.project.name": "Назва файлу", "dialog.project.parent": "Батьківська модель", "dialog.project.geoname": "Ідентифікатор моделі", - "dialog.project.ao": "Фонове затінення", + "dialog.project.ao": "Фонове затемнення", "dialog.texture.title": "Текстура", "dialog.texture.variable": "Змінна", "dialog.texture.namespace": "Домен", @@ -136,7 +136,7 @@ "dialog.create_texture.resolution": "Роздільність", "dialog.input.title": "Введення", "dialog.settings.settings": "Налаштування", - "dialog.settings.keybinds": "Призначення клавіш", + "dialog.settings.keybinds": "Сполучення клавіш", "dialog.settings.about": "Про застосунок", "layout.color.back": "Назад", "layout.color.back.desc": "Тла та поля введення", @@ -202,7 +202,7 @@ "settings.large_box.desc": "Показувати межу блоків у кубі 3x3x3", "settings.display_grid": "Сітка у режимі показу", "settings.display_grid.desc": "Показати сітку в режимі показу", - "settings.undo_limit": "Обмеження скасоаних дій", + "settings.undo_limit": "Обмеження скасованих дій", "settings.undo_limit.desc": "Кількість скасувань дій, які можна скасувати", "settings.local_move": "Move on Relative Axes", "settings.local_move.desc": "Move rotated elements on their own axes if possible", @@ -227,9 +227,9 @@ "settings.export_groups": "Експортувати групи у моделях блоків/предметів Java", "settings.export_groups.desc": "Зберегти групи у файлах JSON моделі блоку чи предмета Java", "settings.credit": "Коментар автора", - "settings.credit.desc": "Додавати коментар автора до експортованих файлів", + "settings.credit.desc": "Додати коментар автора до експортованих файлів", "settings.default_path": "Стандартний шлях до текстур Minecraft", - "settings.default_path.desc": "Тека, звідки Blockbench завантажує текстури за стандартом", + "settings.default_path.desc": "Тека, звідки Blockbench завантажує стандартні текстури", "settings.image_editor": "Графічний редактор", "settings.image_editor.desc": "Стандартний графічний редактор для редагування текстур", "category.navigate": "Навігація", diff --git a/package.json b/package.json index 0c05d8f41..022f8b03e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Blockbench", "description": "Low-poly modeling and animation software", - "version": "4.9.2", + "version": "4.9.3", "license": "GPL-3.0-or-later", "author": { "name": "JannisX11",