Skip to content

Commit 4482a54

Browse files
committed
🚧 Squashed v1.6.0
commit ddcea5a Author: SnaveSutit <snavesutit@gmail.com> Date: Wed Jan 8 13:33:09 2025 -0500 🛠️ Add "has_changelog" to plugin packager commit 2af409d Author: SnaveSutit <snavesutit@gmail.com> Date: Wed Jan 8 13:14:16 2025 -0500 ❗ Forgot a changelog item commit 3e2a0c2 Author: SnaveSutit <snavesutit@gmail.com> Date: Wed Jan 8 13:11:09 2025 -0500 🚧 v1.6.0 commit f54f807 Author: SnaveSutit <snavesutit@gmail.com> Date: Wed Jan 8 11:52:58 2025 -0500 🚧 Improved version handling commit 02b1860 Author: SnaveSutit <snavesutit@gmail.com> Date: Wed Jan 8 11:28:50 2025 -0500 🚧 Version warning Added a warning when loading AJ data packs in versions they weren't exported for. commit cc88b83 Author: SnaveSutit <snavesutit@gmail.com> Date: Wed Jan 8 10:48:27 2025 -0500 🛠️ Fix transparent texture and missing tags - Fix incorrect export location for transparent texture. - Fix tags getting cleared out in old exports. commit 271a0f6 Author: SnaveSutit <snavesutit@gmail.com> Date: Tue Jan 7 14:28:24 2025 -0500 🚧 Add extraction confirmation commit 0070b9c Author: SnaveSutit <snavesutit@gmail.com> Date: Mon Dec 30 12:35:17 2024 -0500 🛠️ Slightly improved empty JSON text rendering #322 commit 5781f3f Author: SnaveSutit <snavesutit@gmail.com> Date: Mon Dec 30 11:58:35 2024 -0500 🛠️ Fix #342 commit 83acc4f Author: SnaveSutit <snavesutit@gmail.com> Date: Mon Dec 30 11:45:52 2024 -0500 🛠️ Fix #340 commit 339345e Author: SnaveSutit <snavesutit@gmail.com> Date: Mon Dec 30 11:44:04 2024 -0500 🛠️ Fix #343 commit 9912d7c Author: SnaveSutit <snavesutit@gmail.com> Date: Mon Dec 30 11:33:24 2024 -0500 🛠️ Fix #341 commit e3129d1 Author: SnaveSutit <snavesutit@gmail.com> Date: Mon Dec 30 11:30:49 2024 -0500 🛠️ Fix #345 commit 99446a5 Author: SnaveSutit <snavesutit@gmail.com> Date: Mon Dec 30 11:14:42 2024 -0500 🛠️ Fixed #347 commit 89369b1 Author: SnaveSutit <snavesutit@gmail.com> Date: Mon Dec 30 11:06:52 2024 -0500 🛠️ Fix #349 commit a7b1753 Author: SnaveSutit <snavesutit@gmail.com> Date: Mon Dec 30 11:05:09 2024 -0500 🛠️ Fix #348 commit 5d24c77 Author: SnaveSutit <snavesutit@gmail.com> Date: Tue Dec 24 06:07:18 2024 -0500 🚧 Add .mcb file compression. commit d567389 Author: SnaveSutit <snavesutit@gmail.com> Date: Tue Nov 26 17:52:04 2024 -0500 Squashed commit of the following: commit 7aeec46 Author: SnaveSutit <snavesutit@gmail.com> Date: Thu Nov 21 14:14:15 2024 -0500 🚧 1.21.4 Export - Added 1.21.4 target MC version. - Changed missing assets and data folder for resource and data pack folder settings errors into warnings. - Added an action to extract all of a blueprint's export files from a data pack / resource pack. - Added support for item definitions (1.21.4). - Changed default resource pack structure: `animated_java:textures/item/export_namespace/` -> `animated_java:textures/blueprint/export_namespace/` `animated_java:models/item/export_namespace/` -> `animated_java:models/blueprint/export_namespace/` commit efdc207 Author: SnaveSutit <snavesutit@gmail.com> Date: Sat Nov 16 11:18:07 2024 -0500 🚧 Prevent exporting with invalid rotations. - Added a dialog and exception for exporting a blueprint with invalid cube rotations. commit fac53dc Author: SnaveSutit <snavesutit@gmail.com> Date: Sat Nov 16 11:09:30 2024 -0500 🚧 Enforce Per-Face UV when converting commit d285985 Author: SnaveSutit <snavesutit@gmail.com> Date: Sat Nov 2 17:37:32 2024 -0400 🚧 Squashed v1.5.0, v1.5.1, and v1.5.2. commit bcbb6f8 Author: SnaveSutit <snavesutit@gmail.com> Date: Sat Nov 2 17:33:16 2024 -0400 🛠️ Fix broken asset download on first startup. commit 9a3b525 Author: SnaveSutit <snavesutit@gmail.com> Date: Fri Nov 1 15:08:57 2024 -0400 ✨ Improved tellraw messages commit d8dbdbd Author: SnaveSutit <snavesutit@gmail.com> Date: Wed Oct 30 17:53:35 2024 -0400 Fix production build script issues. commit 2dce027 Author: SnaveSutit <snavesutit@gmail.com> Date: Tue Oct 29 11:10:47 2024 -0400 🛠️ Static Export Locator / Camera Fixes - Fixed use entity locators and cameras not summoning properly in static mode commit 66986b7 Author: SnaveSutit <snavesutit@gmail.com> Date: Wed Oct 23 09:58:02 2024 -0400 🚧 v1.5.1 commit 357bfa2 Author: SnaveSutit <snavesutit@gmail.com> Date: Wed Oct 23 09:57:52 2024 -0400 🛠️ Fix broken passengers from summon tp command commit 7d95287 Author: SnaveSutit <snavesutit@gmail.com> Date: Wed Oct 23 09:58:29 2024 -0400 🚧 Squashed v.1.5.1 commit 66986b7 Author: SnaveSutit <snavesutit@gmail.com> Date: Wed Oct 23 09:58:02 2024 -0400 🚧 v1.5.1 commit 357bfa2 Author: SnaveSutit <snavesutit@gmail.com> Date: Wed Oct 23 09:57:52 2024 -0400 🛠️ Fix broken passengers from summon tp command commit bd7c6b1 Author: SnaveSutit <snavesutit@gmail.com> Date: Sat Nov 9 04:03:22 2024 -0500 ✨ Add a toast notification for invalid cubes commit bcbb6f8 Author: SnaveSutit <snavesutit@gmail.com> Date: Sat Nov 2 17:33:16 2024 -0400 🛠️ Fix broken asset download on first startup. commit 9a3b525 Author: SnaveSutit <snavesutit@gmail.com> Date: Fri Nov 1 15:08:57 2024 -0400 ✨ Improved tellraw messages commit d8dbdbd Author: SnaveSutit <snavesutit@gmail.com> Date: Wed Oct 30 17:53:35 2024 -0400 Fix production build script issues. commit 2dce027 Author: SnaveSutit <snavesutit@gmail.com> Date: Tue Oct 29 11:10:47 2024 -0400 🛠️ Static Export Locator / Camera Fixes - Fixed use entity locators and cameras not summoning properly in static mode commit 66986b7 Author: SnaveSutit <snavesutit@gmail.com> Date: Wed Oct 23 09:58:02 2024 -0400 🚧 v1.5.1 commit 357bfa2 Author: SnaveSutit <snavesutit@gmail.com> Date: Wed Oct 23 09:57:52 2024 -0400 🛠️ Fix broken passengers from summon tp command
1 parent 7aeec46 commit 4482a54

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+4025
-258
lines changed

.eslintrc.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
"exporters/",
1616
"tools/",
1717
"svelte.config.ts",
18-
"src/util/bufferGeometryUtils.ts"
18+
"vitest.config.ts",
19+
"src/util/bufferGeometryUtils.ts",
20+
"tests/**/*"
1921
],
2022
"overrides": [
2123
{
@@ -45,6 +47,7 @@
4547
"@typescript-eslint/consistent-indexed-object-style": ["warn", "record"],
4648
"@typescript-eslint/consistent-generic-constructors": "warn",
4749
"@typescript-eslint/no-namespace": "off",
50+
"@typescript-eslint/restrict-template-expressions": "off",
4851
"@typescript-eslint/naming-convention": [
4952
"warn",
5053
{

TODO.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@
110110
- [x] Check for references to non-existant functions in merged function tags, and remove them.
111111
- [ ] When applying variants, remove / replace any bones that have / had no elements with textured faces.
112112

113+
- [x] Add a toast notification for when the model has invalid rotations.
113114
# Resource Pack
114115

115116
- [x] Warn the user when they have custom elements in their model, but have disabled the resource pack export.

package.json

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
"title": "Animated Java",
55
"icon": "icon.svg",
66
"description": "A Blockbench plugin that makes complex animation a breeze in Minecraft: Java Edition.",
7-
"version": "1.5.2",
8-
"display_version": "1.5.2",
7+
"version": "1.6.0",
8+
"display_version": "1.6.0",
99
"min_blockbench_version": "4.11.1",
1010
"variant": "desktop",
1111
"tags": [
@@ -78,14 +78,17 @@
7878
"build:scripts": "esbuild --bundle --platform=node --outfile=dist/build.cjs --packages=external ./tools/esbuild.ts",
7979
"dev": "yarn build:scripts && node ./dist/build.cjs --mode=dev",
8080
"prod": "node ./tools/cleanupDist.cjs && yarn build:scripts && node ./dist/build.cjs",
81-
"format": "prettier --write ."
81+
"format": "prettier --write .",
82+
"test": "yarn build:scripts && vitest run",
83+
"coverage": "yarn build:scripts && vitest run --coverage"
8284
},
8385
"devDependencies": {
8486
"@novacbn/svelte-codejar": "^0.1.2",
8587
"@types/download": "^8.0.5",
8688
"@types/eslint": "^8.21.1",
8789
"@types/js-yaml": "^4.0.5",
8890
"@types/node": "^17.0.21",
91+
"@types/websocket": "^1.0.10",
8992
"@typescript-eslint/eslint-plugin": "^5.54.0",
9093
"@typescript-eslint/parser": "^5.54.0",
9194
"blockbench-types": "https://github.com/SnaveSutit/blockbench-types.git",
@@ -102,7 +105,8 @@
102105
"svelte-awesome-color-picker": "^3.0.0-beta.7",
103106
"svelte-preprocess": "^5.0.1",
104107
"svelte-preprocess-esbuild": "^3.0.1",
105-
"typescript": "^4.5.5"
108+
"typescript": "^4.5.5",
109+
"vitest": "^2.1.8"
106110
},
107111
"dependencies": {
108112
"deepslate": "^0.19.2",
@@ -111,7 +115,7 @@
111115
"generic-stream": "^1.2.6",
112116
"marked": "^4.3.0",
113117
"marked-gfm-heading-id": "^3.0.0",
114-
"mc-build": "^3.4.3",
118+
"mc-build": "^3.5.1",
115119
"request-progress": "^3.0.0",
116120
"svelte-ace": "^1.0.21",
117121
"svelte-dnd-action": "^0.9.38"

src/blockbenchTypeMods.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ declare global {
3535
pluginMode: Valuable<boolean>
3636
transparentTexture: Texture
3737

38+
showingInvalidCubeRotations: boolean
39+
3840
variants: Variant[]
3941
textDisplays: TextDisplay[]
4042
vanillaItemDisplays: VanillaItemDisplay[]

src/blueprintFormat.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -673,7 +673,7 @@ export function updateRotationLock() {
673673
!!AnimatedJava.API.TextDisplay.selected.length ||
674674
!!AnimatedJava.API.VanillaItemDisplay.selected.length ||
675675
!!AnimatedJava.API.VanillaBlockDisplay.selected.length ||
676-
!!(OutlinerElement.types.camera?.selected && OutlinerElement.types.camera?.selected.length)
676+
!!(OutlinerElement.types.camera?.selected && OutlinerElement.types.camera?.selected)
677677
)
678678
BLUEPRINT_FORMAT.rotation_snap = BLUEPRINT_FORMAT.rotation_limit
679679
}

src/components/blueprintSettingsDialog.svelte

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,6 @@
575575
tooltip={translate('dialog.blueprint_settings.resource_pack_export_mode.description')}
576576
options={{
577577
raw: translate('dialog.blueprint_settings.resource_pack_export_mode.options.raw'),
578-
// zip: translate('dialog.blueprint_settings.resource_pack_export_mode.options.zip'),
579578
none: translate('dialog.blueprint_settings.resource_pack_export_mode.options.none'),
580579
}}
581580
defaultOption={'raw'}
@@ -587,7 +586,6 @@
587586
tooltip={translate('dialog.blueprint_settings.data_pack_export_mode.description')}
588587
options={{
589588
raw: translate('dialog.blueprint_settings.data_pack_export_mode.options.raw'),
590-
// zip: translate('dialog.blueprint_settings.data_pack_export_mode.options.zip'),
591589
none: translate('dialog.blueprint_settings.data_pack_export_mode.options.none'),
592590
}}
593591
defaultOption={'raw'}

src/components/changelogDialog.svelte

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<script lang="ts">
2+
import changelog from '../pluginPackage/changelog.json'
3+
4+
function formatDateFull(date: string) {
5+
// @ts-expect-error
6+
return getDateDisplay(date).full
7+
}
8+
function formatDateShort(date: string) {
9+
// @ts-expect-error
10+
return getDateDisplay(date).short
11+
}
12+
13+
const ISSUES_URL = 'https://api.github.com/repos/animated-java/animated-java/issues/'
14+
15+
async function formatMarkdown(text: string) {
16+
const issues: Record<number, { title: string; url: string }> = {}
17+
text = text.replace(/\[(.*?)\]\((.*?)\)/g, (match, title, url) => {
18+
const issueMatch = url.match(/issues\/(\d+)/)
19+
if (issueMatch) {
20+
const issueNumber = parseInt(issueMatch[1])
21+
issues[issueNumber] = { title, url }
22+
return `$$$ISSUE${issueNumber}$$$`
23+
}
24+
return `<a href="${url}" target="_blank">${title}</a>`
25+
})
26+
for (const [issueNumber, { title, url }] of Object.entries(issues)) {
27+
await fetch(`${ISSUES_URL}${issueNumber}`)
28+
.then(response => response.json())
29+
.then(data => {
30+
text = text.replace(
31+
`$$$ISSUE${issueNumber}$$$`,
32+
`<a href="${url}" target="_blank">#${issueNumber} - ${data.title}</a>`,
33+
)
34+
})
35+
}
36+
// inline code blocks
37+
text = text.replace(/`([^`]+?)`/g, '<code>$1</code>')
38+
return text
39+
}
40+
</script>
41+
42+
<div class="content plugin_browser_tabbed_page" id="plugin_browser_changelog">
43+
{#each Object.values(changelog) as versions}
44+
<h3>
45+
{versions.title}
46+
</h3>
47+
<!-- svelte-ignore a11y-label-has-associated-control -->
48+
<label class="plugin_changelog_author">{versions.author}</label>
49+
<!-- svelte-ignore a11y-label-has-associated-control -->
50+
<label class="plugin_changelog_date" title={formatDateFull(versions.date)}>
51+
<i class="material-icons icon">calendar_today</i>
52+
<!-- svelte-ignore missing-declaration -->
53+
{formatDateShort(versions.date)}
54+
</label>
55+
<ul>
56+
{#each versions.categories as category}
57+
<li>
58+
<h4>{category.title}</h4>
59+
<ul class="plugin_changelog_features">
60+
{#each category.list as item}
61+
<li>
62+
{#await formatMarkdown(item) then data}
63+
{@html data}
64+
{/await}
65+
</li>
66+
{/each}
67+
</ul>
68+
</li>
69+
{/each}
70+
</ul>
71+
<hr />
72+
{/each}
73+
</div>
74+
75+
<style>
76+
.content {
77+
max-height: 75vh;
78+
overflow: auto;
79+
}
80+
:global(.plugin_browser_tabbed_page code) {
81+
background-color: var(--color-back);
82+
padding: 0.2em 0.4em;
83+
border-radius: 3px;
84+
font-size: 0.8em;
85+
}
86+
</style>

src/components/installedPopup.svelte

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@
1717
<div class="another-container">
1818
<h2>Not Sure Where to Start?</h2>
1919
<p>
20-
Check out our <a href="https://animated-java.dev/docs/getting-started"
20+
Check out our <a
21+
href="https://animated-java.dev/docs/getting-started/creating-a-blueprint"
2122
>getting started</a
22-
> page to learn how to use Animated Java.
23+
> page to learn how to use Animated Java!
2324
</p>
2425
<p>
2526
You can open our docs at any time via the Animated Java menu at the top of the screen.

src/index.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ import { exportProject } from './systems/exporter'
4242
import { openBlueprintLoadingDialog } from './interface/blueprintLoadingPopup'
4343
import { openInstallPopup } from './interface/installedPopup'
4444
import { cleanupExportedFiles } from './systems/cleaner'
45+
import mcbFiles from './systems/datapackCompiler/mcbFiles'
46+
import { openChangelogDialog } from './interface/changelogDialog'
4547

4648
// @ts-ignore
4749
globalThis.AnimatedJava = {
@@ -83,9 +85,19 @@ globalThis.AnimatedJava = {
8385
Undo.finishEdit('Remove Cubes Associated With Texture')
8486
},
8587
cleanupExportedFiles,
88+
mcbFiles,
89+
openChangelogDialog,
8690
},
8791
}
8892

93+
requestAnimationFrame(() => {
94+
const lastVersion = localStorage.getItem('animated-java-last-version')
95+
if (lastVersion !== PACKAGE.version) {
96+
localStorage.setItem('animated-java-last-version', PACKAGE.version)
97+
openChangelogDialog()
98+
}
99+
})
100+
89101
// Uninstall events
90102
events.EXTRACT_MODS.subscribe(() => {
91103
// @ts-ignore

src/interface/animatedJavaBarItem.ts

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { createAction, createBarMenu } from '../util/moddingTools'
77
import { translate } from '../util/translation'
88
import { openAboutDialog } from './aboutDialog'
99
import { openBlueprintSettingsDialog } from './blueprintSettingsDialog'
10+
import { openChangelogDialog } from './changelogDialog'
1011

1112
function createIconImg() {
1213
const IMG = document.createElement('img')
@@ -24,12 +25,11 @@ function createIconImg() {
2425
})
2526
return IMG
2627
}
28+
const MENU_ID = `${PACKAGE.name}:menu` as `animated_java:menu`
2729
const BLOCKBENCH_MENU_BAR = document.querySelector('#menu_bar') as HTMLDivElement
28-
export const MENU = createBarMenu(
29-
`${PACKAGE.name}:menu`,
30-
[],
31-
() => Format === BLUEPRINT_FORMAT
32-
) as BarMenu & { label: HTMLDivElement }
30+
export const MENU = createBarMenu(MENU_ID, [], () => Format === BLUEPRINT_FORMAT) as BarMenu & {
31+
label: HTMLDivElement
32+
}
3333
MENU.label.style.display = 'inline-block'
3434
MENU.label.innerHTML = 'Animated Java'
3535
MENU.label.prepend(createIconImg())
@@ -59,6 +59,20 @@ MenuBar.addAction(
5959
MENU.id
6060
)
6161

62+
MenuBar.addAction(
63+
createAction(`${PACKAGE.name}:changelog`, {
64+
icon: 'history',
65+
category: 'animated_java',
66+
name: translate('action.open_changelog.name'),
67+
click() {
68+
openChangelogDialog()
69+
},
70+
}),
71+
MENU.id
72+
)
73+
74+
MENU.structure.push(new MenuSeparator())
75+
6276
MenuBar.addAction(
6377
createAction(`${PACKAGE.name}:blueprint_settings`, {
6478
icon: 'settings',
@@ -74,6 +88,32 @@ MenuBar.addAction(
7488
MENU.id
7589
)
7690

91+
MenuBar.menus[MENU_ID].structure.push({
92+
id: 'animated_java:extract-open',
93+
name: translate('action.extract.name'),
94+
icon: 'fa-trash-can',
95+
searchable: false,
96+
children: [],
97+
condition() {
98+
return Format === BLUEPRINT_FORMAT
99+
},
100+
})
101+
102+
MenuBar.addAction(
103+
createAction(`${PACKAGE.name}:extract`, {
104+
icon: 'fa-trash-can',
105+
category: 'animated_java',
106+
name: translate('action.extract.confirm'),
107+
condition() {
108+
return Format === BLUEPRINT_FORMAT
109+
},
110+
click() {
111+
void cleanupExportedFiles()
112+
},
113+
}),
114+
MENU_ID + '.animated_java:extract-open'
115+
)
116+
77117
MenuBar.addAction(
78118
createAction(`${PACKAGE.name}:extract`, {
79119
icon: 'fa-trash-can',

src/interface/changelogDialog.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import ChangelogDialog from '../components/changelogDialog.svelte'
2+
import { PACKAGE } from '../constants'
3+
import { SvelteDialog } from '../util/svelteDialog'
4+
import { translate } from '../util/translation'
5+
6+
export const DIALOG_ID = `${PACKAGE.name}:animationPropertiesDialog`
7+
8+
export function openChangelogDialog() {
9+
new SvelteDialog({
10+
id: DIALOG_ID,
11+
title: translate('dialog.changelog_dialog.title'),
12+
width: 600,
13+
component: ChangelogDialog,
14+
props: {},
15+
buttons: ['OK!'],
16+
preventKeybinds: true,
17+
}).show()
18+
}

src/lang/en.yml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
### Actions
22
animated_java.action.open_blueprint_settings.name: Blueprint Settings
33
animated_java.action.open_documentation.name: Documentation
4+
animated_java.action.open_changelog.name: Changelog
45
animated_java.action.open_about.name: About
56
animated_java.action.open_bone_config.name: Bone Config
67
animated_java.action.open_locator_config.name: Locator Config
78
animated_java.action.open_text_display_config.name: Text Display Config
89
animated_java.action.export.name: Export
910
animated_java.action.extract.name: Extract
11+
animated_java.action.extract.confirm: Confirm Extraction
1012
animated_java.action.create_text_display.title: Add Text Display
1113
animated_java.action.create_vanilla_item_display.title: Add Item Display
1214
animated_java.action.create_vanilla_block_display.title: Add Block Display
@@ -30,6 +32,9 @@ animated_java.dialog.reset: Reset to Default
3032
animated_java.dialog.about.title: About Animated Java
3133
animated_java.dialog.about.close_button: Close
3234

35+
## Changelog
36+
animated_java.dialog.changelog_dialog.title: Changelog
37+
3338
## Unexpected Error Dialog
3439
animated_java.dialog.unexpected_error.title: An Unexpected Error Occurred!
3540
animated_java.dialog.unexpected_error.close_button: Close
@@ -584,12 +589,18 @@ animated_java.misc.failed_to_export.custom_models.message: You have disabled res
584589
animated_java.misc.failed_to_export.blueprint_settings.message: There are errors in your blueprint settings! Please fix them before exporting.
585590
animated_java.misc.failed_to_export.blueprint_settings.error_item: 'Found an issue with {0}:'
586591
animated_java.misc.failed_to_export.button: Ok
587-
misc.failed_to_export.invalid_rotation.message: |-
592+
animated_java.misc.failed_to_export.invalid_rotation.message: |-
588593
Some cubes in your model have an invalid rotations.
589594
Cubes must have a rotation of -45, -22.5, 0, 22.5, or 45 degrees, and can only be rotated on a single axis at a time.
590595
If you want to rotate a cube more precisely, or on multiple axes, you must put it into a bone and rotate the bone instead.
591596
All of the invalid cubes are outlined in red in the editor.
592597
Please fix these issues before exporting.
598+
animated_java.misc.failed_to_export.rig_has_textures_but_no_custom_models.message: |-
599+
You have textures applied to your model, but have no custom models (Cubes) to use them!
600+
Please create some Cubes to use these textures, or remove the textures before exporting.
601+
animated_java.misc.failed_to_export.rig_has_custom_models_but_no_textures.message: |-
602+
You have custom models (Cubes) in your model, but have no textures applied to them!
603+
Please apply textures to your Cubes, or remove the Cubes before exporting.
593604
594605
# Format Category
595606
animated_java.format_category.animated_java: Animated Java

0 commit comments

Comments
 (0)