Skip to content

Commit c259e75

Browse files
committed
Large changes I don't want to lose
Began work on text display support. Began work on another restructure of the DPE. Fixed a few variant panel issues.
1 parent aea2e42 commit c259e75

File tree

25 files changed

+1243
-566
lines changed

25 files changed

+1243
-566
lines changed
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
datapack:
2+
- data:
3+
- animated_java:
4+
- functions:
5+
- project_name:
6+
- animations:
7+
- animation_name:
8+
- apply_frame.mcfunction
9+
- next_frame.mcfunction
10+
- pause.mcfunction
11+
- play.mcfunction
12+
- resume.mcfunction
13+
- stop.mcfunction
14+
- tween:
15+
- play.mcfunction
16+
- resume.mcfunction
17+
- pause_all_animations.mcfunction
18+
- apply_variant:
19+
- variant_a.mcfunction
20+
- variant_b.mcfunction
21+
- variant_c.mcfunction
22+
- summon.mcfunction
23+
- summon:
24+
- variant_a.mcfunction
25+
- variant_b.mcfunction
26+
- variant_c.mcfunction
27+
- remove:
28+
- this.mcfunction
29+
- rigs.mcfunction
30+
- all.mcfunction
31+
- reset_rig.mcfunction
32+
- uninstall.mcfunction
33+
- zzzzzzzz:
34+
- animations:
35+
- animation_name:
36+
- apply_frame_as_root.mcfunction
37+
- end_loop.mcfunction
38+
- end.mcfunction
39+
- next_frame_as_root.mcfunction
40+
- pause_as_root.mcfunction
41+
- play_as_root.mcfunction
42+
- resume_as_root.mcfunction
43+
- stop_as_root.mcfunction
44+
- tick_animation.mcfunction
45+
- tick_tween.mcfunction
46+
- tick.mcfunction
47+
- tween_as_root.mcfunction
48+
- tween_play_as_root.mcfunction
49+
- tween_resume_as_root.mcfunction
50+
- pause_all_animations_as_root.mcfunction
51+
- tick.mcfunction
52+
- apply_variant:
53+
- variant_a:
54+
- as_root.mcfunction
55+
- as_bones.mcfunction
56+
- variant_b:
57+
- as_root.mcfunction
58+
- as_bones.mcfunction
59+
- variant_c:
60+
- as_root.mcfunction
61+
- as_bones.mcfunction
62+
- remove:
63+
- as_root.mcfunction
64+
- summon:
65+
- as_root.mcfunction
66+
- as_rig_entities.mcfunction
67+
- as_bones.mcfunction
68+
- as_locators.mcfunction
69+
- as_cameras.mcfunction
70+
- load.mcfunction
71+
- load_as_root.mcfunction
72+
- tick.mcfunction
73+
- tick_as_root.mcfunction
74+
- tags:
75+
- functions:
76+
- project_name:
77+
- on_load:
78+
- as_root.json
79+
- as_rig_entities.json
80+
- as_bones.json
81+
- as_locators.json
82+
- as_locator_targets.json
83+
- as_cameras.json
84+
- as_camera_targets.json
85+
- on_tick:
86+
- as_root.json
87+
- as_rig_entities.json
88+
- as_bones.json
89+
- as_locators.json
90+
- as_locator_targets.json
91+
- as_cameras.json
92+
- as_camera_targets.json
93+
- on_summon.json:
94+
- as_root.json
95+
- as_rig_entities.json
96+
- as_bones.json
97+
- as_locators.json
98+
- as_locator_targets.json
99+
- as_cameras.json
100+
- as_camera_targets.json
101+
- on_remove:
102+
- as_root.json
103+
- as_rig_entities.json
104+
- as_bones.json
105+
- as_locators.json
106+
- as_locator_targets.json
107+
- as_cameras.json
108+
- as_camera_targets.json
109+
- entity_types:
110+
- functions:
111+
- rig_root.json
112+
- rig_bones.json
113+
- project_name:
114+
- rig_entities.json
115+
- minecraft:
116+
- tags:
117+
- functions:
118+
- tick.json
119+
- load.json
120+
- .ajmeta
121+
- pack.mcmeta

exporters/datapackExporter/exporter/datapackGen/animationTreeGen.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export type IFrameBranch = AnimatedJava.ITreeBranch<AnimatedJava.IRenderedAnimat
66
export type IFrameTree = IFrameBranch | IFrameLeaf
77

88
export function loadAnimationTreeGenerator() {
9-
const { rig } = G.exportData
9+
// const { rig } = G.exportData
1010
const { formatStr, roundToN } = AnimatedJava.API
1111
const { NbtCompound, NbtInt } = AnimatedJava.API.deepslate
1212
const { matrixToNbtFloatArray } = loadUtil()
@@ -27,12 +27,12 @@ export function loadAnimationTreeGenerator() {
2727
const data = new NbtCompound()
2828
.set('transformation', matrixToNbtFloatArray(node.matrix))
2929
.set('start_interpolation', new NbtInt(0))
30-
console.log(node.interpolation)
30+
// console.log(node.interpolation)
3131
if (node.interpolation === 'instant') {
32-
console.log('a')
32+
// console.log('a')
3333
data.set('interpolation_duration', new NbtInt(0))
3434
} else if (node.interpolation === 'default') {
35-
console.log('b')
35+
// console.log('b')
3636
data.set('interpolation_duration', new NbtInt(G.DEFAULT_INTERPOLATION_DURATION))
3737
}
3838
return `execute if entity @s[tag=${formatStr(G.TAGS.namedBoneEntity, [
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { generateFunctions } from './functions'
2+
import { Globals as G } from './globals'
3+
4+
export interface IFolders {
5+
datapack: AnimatedJava.VirtualFolder
6+
data: AnimatedJava.VirtualFolder
7+
animatedJava: {
8+
root: AnimatedJava.VirtualFolder
9+
functions: AnimatedJava.VirtualFolder
10+
tags: AnimatedJava.VirtualFolder
11+
}
12+
project: {
13+
functions: AnimatedJava.VirtualFolder
14+
internalFunctions: AnimatedJava.VirtualFolder
15+
tags: AnimatedJava.VirtualFolder
16+
}
17+
}
18+
19+
export function generateDatapack() {
20+
const { VirtualFileSystem } = AnimatedJava.API
21+
22+
const folders = {} as IFolders
23+
folders.datapack = new VirtualFileSystem.VirtualFolder('internal_datapack_folder')
24+
folders.data = folders.datapack.newFolder('data')
25+
26+
folders.animatedJava.root = folders.data.newFolder('animated_java')
27+
folders.animatedJava.functions = folders.animatedJava.root.newFolder('functions')
28+
folders.animatedJava.tags = folders.animatedJava.root.newFolder('tags')
29+
30+
folders.project.functions = folders.animatedJava.functions.newFolder(G.PROJECT_NAME)
31+
folders.project.tags = folders.animatedJava.tags.newFolder(G.PROJECT_NAME)
32+
folders.project.internalFunctions = folders.project.functions.newFolder('zzzzzzzz')
33+
34+
const ajMeta = folders.datapack.newFile('.ajmeta', {})
35+
36+
generateFunctions(folders)
37+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { type IFolders } from './datapack'
2+
import { Globals as G } from './globals'
3+
4+
export function generateFunctions(folders: IFolders) {
5+
const { VirtualFileSystem } = AnimatedJava.API
6+
7+
folders.animatedJava.tags
8+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { type IFolders } from './datapack'
2+
import { Globals as G } from './globals'
3+
4+
export function generateFunctions(folders: IFolders) {
5+
const { VirtualFileSystem } = AnimatedJava.API
6+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import { ExportData } from '../datapackGen'
2+
import { loadJSONText } from './text'
3+
import { getScoreboards } from './scoreboards'
4+
import { getTags } from './tags'
5+
6+
export class Globals {
7+
static exportData: ExportData
8+
9+
static PROJECT_NAME: string
10+
static VARIANTS: typeof Project.animated_java_variants.variants
11+
static OUTDATED_RIG_WARNING_ENABLED: boolean
12+
static IS_SINGLE_ENTITY_RIG: boolean
13+
static DEFAULT_INTERPOLATION_DURATION: number
14+
static RIG_ITEM: string
15+
static DATAPACK_EXPORT_PATH: string
16+
17+
static INTERNAL_FUNCTIONS: string
18+
static SCOREBOARD: ReturnType<typeof getScoreboards>
19+
static TAGS: ReturnType<typeof getTags>
20+
// static ENTITY_TYPES: ReturnType<typeof getEntityTypes>
21+
static TEXT: ReturnType<typeof loadJSONText>
22+
23+
static readonly LOOP_MODES = ['loop', 'once', 'hold']
24+
25+
// static DATAPACK: AnimatedJava.VirtualFolder
26+
// static DATA_FOLDER: AnimatedJava.VirtualFolder
27+
// static MINECRAFT_FOLDER: AnimatedJava.VirtualFolder
28+
29+
static loadExportData(exportData: ExportData) {
30+
// const { VirtualFileSystem } = AnimatedJava.API
31+
const { projectSettings, exporterSettings, renderedAnimations, rig } = exportData
32+
33+
Globals.exportData = exportData
34+
35+
Globals.PROJECT_NAME = projectSettings.project_namespace.value
36+
Globals.INTERNAL_FUNCTIONS = `animated_java:${Globals.PROJECT_NAME}/zzzzzzzz`
37+
Globals.RIG_ITEM = projectSettings.rig_item.value
38+
Globals.DATAPACK_EXPORT_PATH = PathModule.parse(exporterSettings.datapack_mcmeta.value).dir
39+
Globals.VARIANTS = Project.animated_java_variants.variants
40+
Globals.OUTDATED_RIG_WARNING_ENABLED = exporterSettings.outdated_rig_warning.value
41+
Globals.IS_SINGLE_ENTITY_RIG =
42+
Object.keys(rig.nodeMap).length === 1 && renderedAnimations.length === 0
43+
Globals.DEFAULT_INTERPOLATION_DURATION = 1
44+
45+
// Globals.DATAPACK = new VirtualFileSystem.VirtualFolder('virtual_datapack')
46+
// Globals.DATA_FOLDER = Globals.DATAPACK.newFolder('data')
47+
// Globals.MINECRAFT_FOLDER = Globals.DATA_FOLDER.newFolder('minecraft')
48+
49+
Globals.SCOREBOARD = getScoreboards()
50+
Globals.TAGS = getTags()
51+
// Globals.ENTITY_TYPES = getEntityTypes()
52+
Globals.TEXT = loadJSONText()
53+
}
54+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { Globals as G } from './globals'
2+
3+
export function getScoreboards() {
4+
return {
5+
i: 'aj.i',
6+
id: 'aj.id',
7+
tweenTime: 'aj.tween_time',
8+
animTime: 'aj.anim_time',
9+
lifeTime: 'aj.life_time',
10+
exportVersion: `aj.${G.PROJECT_NAME}.export_version`,
11+
rigLoaded: `aj.${G.PROJECT_NAME}.rig_loaded`,
12+
loopMode: `aj.${G.PROJECT_NAME}.animation.%s.loop_mode`,
13+
localAnimTime: `aj.${G.PROJECT_NAME}.animation.%s.local_anim_time`,
14+
}
15+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { Globals as G } from './globals'
2+
3+
export function getTags() {
4+
return {
5+
new: 'aj.new',
6+
globalRigRoot: `aj.rig_root`,
7+
rigEntity: `aj.${G.PROJECT_NAME}.rig_entity`,
8+
rootEntity: `aj.${G.PROJECT_NAME}.root`,
9+
boneEntity: `aj.${G.PROJECT_NAME}.bone`,
10+
locatorEntity: `aj.${G.PROJECT_NAME}.locator`,
11+
cameraEntity: `aj.${G.PROJECT_NAME}.camera`,
12+
namedBoneEntity: `aj.${G.PROJECT_NAME}.bone.%s`,
13+
namedLocatorEntity: `aj.${G.PROJECT_NAME}.locator.%s`,
14+
namedCameraEntity: `aj.${G.PROJECT_NAME}.camera.%s`,
15+
activeAnim: `aj.${G.PROJECT_NAME}.animation.%s`,
16+
locatorTarget: `aj.${G.PROJECT_NAME}.locator_target`,
17+
namedLocatorTarget: `aj.${G.PROJECT_NAME}.locator_target.%s`,
18+
cameraTarget: `aj.${G.PROJECT_NAME}.camera_target`,
19+
namedCameraTarget: `aj.${G.PROJECT_NAME}.camera_target.%s`,
20+
disableCommandKeyframes: `aj.${G.PROJECT_NAME}.disable_command_keyframes`,
21+
}
22+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
export function loadJSONText() {
2+
const { JsonText } = AnimatedJava.API
3+
4+
const errorMustBeRunAsRoot = new JsonText([
5+
'',
6+
{ text: '[' },
7+
{ text: 'Animated Java', color: 'aqua' },
8+
{ text: '] ' },
9+
{ text: 'ERROR ☠', color: 'red' },
10+
{ text: ' > ', color: 'gray' },
11+
[
12+
{ text: 'The function', color: 'yellow' },
13+
{ text: ' %s ', color: 'blue' },
14+
{ text: 'must be run' },
15+
{ text: ' as ', color: 'red' },
16+
{ text: 'the root entity!' },
17+
],
18+
])
19+
20+
const errorOutOfDateRig = new JsonText([
21+
'',
22+
{ text: '[' },
23+
{ text: 'Animated Java', color: 'aqua' },
24+
{ text: '] ' },
25+
[
26+
{ text: 'ERROR ☠', color: 'red' },
27+
{ text: ' > ', color: 'gray' },
28+
{ text: 'An existing rig is out-of-date!' },
29+
{
30+
text: ' Please re-summon the highlighted rig to update it to the newly exported version.',
31+
color: 'yellow',
32+
},
33+
],
34+
])
35+
36+
return { errorMustBeRunAsRoot, errorOutOfDateRig }
37+
}

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@
7676
"@types/fs-extra": "^11.0.1",
7777
"@types/js-yaml": "^4.0.5",
7878
"@types/node": "^17.0.21",
79-
"@types/three": "^0.148.0",
8079
"@typescript-eslint/eslint-plugin": "^5.54.0",
8180
"@typescript-eslint/parser": "^5.54.0",
8281
"blockbench-types": "https://github.com/SnaveSutit/blockbench-types.git",

0 commit comments

Comments
 (0)