Skip to content

Commit 077d2de

Browse files
committed
✨ Node config improvements
- Improved typing - Added `slider` and `number` property displayModes - Added some lang strings for configs - Removed nbt and useNbt fields from common config in favor of onSummonCommands
1 parent c52ba52 commit 077d2de

File tree

3 files changed

+177
-88
lines changed

3 files changed

+177
-88
lines changed

src/lang/en.yml

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,22 +92,21 @@ dialog:
9292
config:
9393
common:
9494
label: Common
95+
description: Properties common to all nodes.
9596
options:
9697
billboard: Billboard
97-
brightnessOverride: Brightness
98-
glowColor: Glow Color
99-
glowing: Glowing
100-
inheritSettings: Inherit Settings
101-
invisible: Invisible
102-
nbt: NBT
10398
overrideBrightness: Override Brightness
99+
brightness: Brightness
100+
glowing: Glowing
104101
overrideGlowColor: Override Glow Color
102+
glowColor: Glow Color
103+
invisible: Invisible
105104
shadowRadius: Shadow Radius
106105
shadowStrength: Shadow Strength
107-
useNBT: Use NBT
108106

109107
animated_java:text_display:
110108
label: Text Display
109+
description: Properties specific to Text Displays.
111110
options:
112111
alignment: Alignment
113112
backgroundColor: Background Color

src/systems/node-configs/index.ts

Lines changed: 87 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,113 @@
11
import type { Alignment } from '@aj/blockbench-additions/outliner-elements/textDisplay'
22
import { translate } from '@aj/util/translation'
3-
import { NbtByte, NbtCompound, NbtFloat, NbtInt, NbtString, NbtTag } from 'deepslate/lib/nbt'
3+
import { NbtByte, NbtCompound, NbtFloat, NbtInt, NbtString } from 'deepslate/lib/nbt'
44
import { SerializableConfig } from './serializableConfig'
55
export type { Serialized } from './serializableConfig'
66

77
@SerializableConfig.decorate
88
export class CommonDisplayConfig extends SerializableConfig<CommonDisplayConfig> {
9+
@SerializableConfig.configurePropertyDisplay({
10+
get displayName() {
11+
return translate('config.common.options.billboard')
12+
},
13+
displayMode: 'select',
14+
options: ['fixed', 'vertical', 'horizontal', 'center'],
15+
})
916
billboard?: BillboardMode = 'fixed'
17+
18+
@SerializableConfig.configurePropertyDisplay({
19+
get displayName() {
20+
return translate('config.common.options.overrideBrightness')
21+
},
22+
displayMode: 'checkbox',
23+
})
1024
overrideBrightness? = false
11-
brightnessOverride? = 0
25+
26+
@SerializableConfig.configurePropertyDisplay({
27+
get displayName() {
28+
return translate('config.common.options.brightness')
29+
},
30+
displayMode: 'slider',
31+
min: 0,
32+
max: 15,
33+
step: 1,
34+
})
35+
brightness? = 0
36+
37+
@SerializableConfig.configurePropertyDisplay({
38+
get displayName() {
39+
return translate('config.common.options.glowing')
40+
},
41+
displayMode: 'checkbox',
42+
})
1243
glowing? = false
44+
45+
@SerializableConfig.configurePropertyDisplay({
46+
get displayName() {
47+
return translate('config.common.options.overrideGlowColor')
48+
},
49+
displayMode: 'checkbox',
50+
})
1351
overrideGlowColor? = false
52+
53+
@SerializableConfig.configurePropertyDisplay({
54+
get displayName() {
55+
return translate('config.common.options.glowColor')
56+
},
57+
displayMode: 'color',
58+
})
1459
glowColor? = '#ffffff'
15-
inheritSettings? = false
60+
61+
@SerializableConfig.configurePropertyDisplay({
62+
get displayName() {
63+
return translate('config.common.options.invisible')
64+
},
65+
displayMode: 'checkbox',
66+
})
1667
invisible? = false
17-
nbt? = ''
68+
69+
@SerializableConfig.configurePropertyDisplay({
70+
get displayName() {
71+
return translate('config.common.options.shadowRadius')
72+
},
73+
displayMode: 'number',
74+
min: 0,
75+
max: 64,
76+
step: 0.1,
77+
})
1878
shadowRadius? = 0
79+
80+
@SerializableConfig.configurePropertyDisplay({
81+
get displayName() {
82+
return translate('config.common.options.shadowStrength')
83+
},
84+
displayMode: 'number',
85+
min: 0,
86+
max: 1,
87+
step: 0.1,
88+
})
1989
shadowStrength? = 1
20-
useNBT? = false
2190

22-
public toNBT(compound: NbtCompound = new NbtCompound()): NbtCompound {
23-
if (this.useNBT && this.nbt?.length) {
24-
const newData = NbtTag.fromString(this.nbt) as NbtCompound
25-
for (const key of newData.keys()) {
26-
compound.set(key, newData.get(key)!)
27-
}
28-
return compound
29-
}
91+
@SerializableConfig.configurePropertyDisplay({
92+
get displayName() {
93+
return translate('config.common.options.onSummonCommands')
94+
},
95+
displayMode: 'code_editor',
96+
syntax: 'mc-build',
97+
})
98+
onSummonCommands? = ''
3099

100+
public toNBT(compound: NbtCompound = new NbtCompound()): NbtCompound {
31101
if (this.billboard) {
32102
compound.set('billboard', new NbtString(this.billboard))
33103
}
34104

35-
if (this.overrideBrightness && this.brightnessOverride != undefined) {
105+
if (this.overrideBrightness && this.brightness != undefined) {
36106
compound.set(
37107
'brightness',
38108
new NbtCompound()
39-
.set('block', new NbtFloat(this.brightnessOverride))
40-
.set('sky', new NbtFloat(this.brightnessOverride))
109+
.set('block', new NbtFloat(this.brightness))
110+
.set('sky', new NbtFloat(this.brightness))
41111
)
42112
}
43113

@@ -176,13 +246,10 @@ export class TextDisplayConfig extends SerializableConfig<TextDisplayConfig> {
176246
displayMode: 'code_editor',
177247
syntax: 'json',
178248
})
179-
textComponent?: string
249+
textComponent? = ''
180250

181251
public toNBT(compound = new NbtCompound()) {
182252
console.error('toNBT not implemented for TextDisplayConfig!')
183253
return compound
184254
}
185255
}
186-
187-
const TEST = new TextDisplayConfig()
188-
console.log(TEST, TEST.getPropertyDescription('alignment'))

0 commit comments

Comments
 (0)