Skip to content

Commit 7efdfaa

Browse files
authored
Merge pull request #185 from PuckiSilver/main
Implement 1.20.5 component system into data pack exporter
2 parents f0d9b34 + f539e34 commit 7efdfaa

File tree

5 files changed

+43
-10
lines changed

5 files changed

+43
-10
lines changed

exporters/datapackExporter/datapackExporter.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,13 @@ export function loadExporter() {
6060
}
6161
}
6262
),
63+
use_component_system: new Settings.CheckboxSetting({
64+
id: 'animated_java:datapack_exporter/use_component_system',
65+
displayName: TRANSLATIONS.use_component_system.name,
66+
description: TRANSLATIONS.use_component_system.description,
67+
defaultValue: false,
68+
docsLink: '/docs/exporters/datapack_exporter/settings#use_component_system',
69+
}),
6370
// Function Toggles
6471
include_variant_summon_functions: new Settings.CheckboxSetting({
6572
id: 'animated_java:datapack_exporter/include_variant_summon_functions',
@@ -157,6 +164,10 @@ export function loadExporter() {
157164
type: 'setting',
158165
settingId: 'animated_java:datapack_exporter/root_entity_nbt',
159166
},
167+
{
168+
type: 'setting',
169+
settingId: 'animated_java:datapack_exporter/use_component_system',
170+
},
160171
{
161172
type: 'group',
162173
title: TRANSLATIONS.function_toggles_group.title,

exporters/datapackExporter/exporter/gen/functions.ts

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ function getExportVersionId() {
1212
function generateBonePassenger(uuid: string, bone: AnimatedJava.IRenderedNodes['Bone']) {
1313
const passenger = deepslate.NbtTag.fromString(bone.nbt) as NbtCompound
1414
const default_pose = G.exportData.rig.defaultPose.find(pose => pose.uuid === uuid)
15+
const useComponents = G.exportData.exporterSettings.use_component_system.value
1516

1617
passenger.set('id', new deepslate.NbtString('minecraft:item_display'))
1718

@@ -30,11 +31,11 @@ function generateBonePassenger(uuid: string, bone: AnimatedJava.IRenderedNodes['
3031
if (!passenger.get('item')) passenger.set('item', new deepslate.NbtCompound())
3132
const item = passenger.get('item') as InstanceType<typeof deepslate.NbtCompound>
3233
item.set('id', new deepslate.NbtString(G.RIG_ITEM))
33-
.set('Count', new deepslate.NbtByte(1))
34+
.set(useComponents ? 'count' : 'Count', new deepslate.NbtByte(1))
3435
.set(
35-
'tag',
36+
useComponents ? 'components' : 'tag',
3637
new deepslate.NbtCompound().set(
37-
'CustomModelData',
38+
useComponents ? 'minecraft:custom_model_data' : 'CustomModelData',
3839
new deepslate.NbtInt(bone.customModelData)
3940
)
4041
)
@@ -82,6 +83,7 @@ function generateLocatorPassenger(
8283
) {
8384
const { roundToN } = AnimatedJava.API
8485
const passenger = deepslate.NbtTag.fromString(locator.nbt) as NbtCompound
86+
const useComponents = G.exportData.exporterSettings.use_component_system.value
8587
// const default_pose = G.exportData.rig.defaultPose.find(pose => pose.uuid === uuid)
8688

8789
passenger
@@ -99,10 +101,10 @@ function generateLocatorPassenger(
99101
'Item',
100102
new deepslate.NbtCompound()
101103
.set('id', new deepslate.NbtString(G.RIG_ITEM))
102-
.set('Count', new deepslate.NbtByte(1))
104+
.set(useComponents ? 'count' : 'Count', new deepslate.NbtByte(1))
103105
.set(
104-
'tag',
105-
new deepslate.NbtCompound().set('CustomModelData', new deepslate.NbtInt(1))
106+
useComponents ? 'components' : 'tag',
107+
new deepslate.NbtCompound().set(useComponents ? 'minecraft:custom_model_data' : 'CustomModelData', new deepslate.NbtInt(1))
106108
)
107109
)
108110
.set(
@@ -196,6 +198,7 @@ function generateCameraPassenger(
196198
) {
197199
const { roundToN } = AnimatedJava.API
198200
const passenger = deepslate.NbtTag.fromString(camera.nbt) as NbtCompound
201+
const useComponents = G.exportData.exporterSettings.use_component_system.value
199202
// const default_pose = G.exportData.rig.defaultPose.find(pose => pose.uuid === uuid)
200203

201204
passenger
@@ -213,10 +216,10 @@ function generateCameraPassenger(
213216
'Item',
214217
new deepslate.NbtCompound()
215218
.set('id', new deepslate.NbtString(G.RIG_ITEM))
216-
.set('Count', new deepslate.NbtByte(1))
219+
.set(useComponents ? 'count' : 'Count', new deepslate.NbtByte(1))
217220
.set(
218-
'tag',
219-
new deepslate.NbtCompound().set('CustomModelData', new deepslate.NbtInt(1))
221+
useComponents ? 'components' : 'tag',
222+
new deepslate.NbtCompound().set(useComponents ? 'minecraft:custom_model_data' : 'CustomModelData', new deepslate.NbtInt(1))
220223
)
221224
)
222225
.set(
@@ -598,6 +601,7 @@ export function generateFunctions(folders: IFolders) {
598601
const applyVariantsFolder = folders.project.functions.newFolder('apply_variant')
599602
const internalApplyVariantsFolder =
600603
folders.project.internalFunctions.newFolder('apply_variant')
604+
const useComponents = G.exportData.exporterSettings.use_component_system.value
601605
for (const variant of G.VARIANTS) {
602606
// ANCHOR - function G.PROJECT_PATH/apply_variant/<variant_name>
603607
applyVariantsFolder.newFile(`${variant.name}.mcfunction`, [
@@ -627,9 +631,11 @@ export function generateFunctions(folders: IFolders) {
627631
? node
628632
: G.exportData.rig.variantModels[variant.name][uuid]
629633

634+
const cmdPath = useComponents ? 'item.components.minecraft:custom_model_data' : 'item.tag.CustomModelData'
635+
630636
return `execute if entity @s[tag=${formatStr(G.TAGS.namedBoneEntity, [
631637
node.name,
632-
])}] run data modify entity @s item.tag.CustomModelData set value ${
638+
])}] run data modify entity @s ${cmdPath} set value ${
633639
variantBone.customModelData
634640
}`
635641
}),

exporters/datapackExporter/exporter/translations.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ export function loadTranslations() {
4747
'animated_java.datapack_exporter.settings.enable_outdated_rig_warning.description'
4848
).split('\n'),
4949
},
50+
use_component_system: {
51+
name: translate('animated_java.datapack_exporter.settings.use_component_system'),
52+
description: translate(
53+
'animated_java.datapack_exporter.settings.use_component_system.description'
54+
).split('\n'),
55+
},
5056
root_entity_nbt: {
5157
name: translate('animated_java.datapack_exporter.settings.root_entity_nbt'),
5258
description: translate(

exporters/datapackExporter/lang/de.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ animated_java.datapack_exporter.settings.enable_outdated_rig_warning: Warnung f
2525
animated_java.datapack_exporter.settings.enable_outdated_rig_warning.description: |-
2626
Ob eine Warnung im Spiel angezeigt werden soll, wenn ein Rig gefunden wird, das vor dem neuesten Export erschaffen wurde.
2727
28+
animated_java.datapack_exporter.settings.use_component_system: Komponentensystem Verwenden
29+
animated_java.datapack_exporter.settings.use_component_system.description: |-
30+
Ob das Komponentensystem für das exportierte Datenpaket verwendet werden soll.
31+
Aktiviere diese Einstellung, damit das Datenpaket in 1.20.5 und neuer funktioniert.
32+
2833
animated_java.datapack_exporter.settings.root_entity_nbt: Ursprungsobjekt NBT
2934
animated_java.datapack_exporter.settings.root_entity_nbt.description: |-
3035
Benutzerdefinierte NBT, die beim Ursprungsobjekt angewendet werden soll.

exporters/datapackExporter/lang/en.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ animated_java.datapack_exporter.settings.enable_outdated_rig_warning: Enable Out
2525
animated_java.datapack_exporter.settings.enable_outdated_rig_warning.description: |-
2626
Whether to show a warning in-game when a Rig is found that was summoned before the most recent export.
2727
28+
animated_java.datapack_exporter.settings.use_component_system: Use Component System
29+
animated_java.datapack_exporter.settings.use_component_system.description: |-
30+
Whether to use the component system for the exported Data Pack.
31+
Enable this setting to make the Data Pack work with 1.20.5 and above.
32+
2833
animated_java.datapack_exporter.settings.root_entity_nbt: Root Entity NBT
2934
animated_java.datapack_exporter.settings.root_entity_nbt.description: |-
3035
Custom NBT to apply to the root entity of the Rig.

0 commit comments

Comments
 (0)