Fetch registries from mcdata

This commit is contained in:
Misode
2020-06-15 15:16:02 +02:00
parent 9ad4e5bb39
commit 2d29de7903
3 changed files with 70 additions and 51 deletions

View File

@@ -1,57 +1,46 @@
import {
ObjectNode,
EnumNode,
StringNode,
NumberNode,
BooleanNode,
RangeNode,
EnumNode,
NumberNode,
ObjectNode,
ListNode,
MapNode,
ListNode
Switch,
Case,
Reference,
JsonNode,
RangeNode,
Resource,
SCHEMAS
} from 'minecraft-schemas'
const EntityCollection = ['sheep', 'pig']
export const SandboxSchema = new ObjectNode({
condition: new EnumNode(['foo', 'bar'], {
default: () => 'bar'
}),
number: new NumberNode({integer: false, min: 0}),
range: new RangeNode({
enable: (path) => path.push('condition').get() === 'foo'
}),
predicate: new ObjectNode({
type: new EnumNode(EntityCollection),
nbt: new StringNode({
default: (v) => 'hahaha'
}),
test: new BooleanNode({force: () => true}),
recipes: new MapNode(
new StringNode(),
new RangeNode({
default: (v) => RangeNode.isExact(v) ? 2 : v,
transform: (v: any) => RangeNode.isRange(v) ? ({
min: v?.min ?? -2147483648,
max: v?.max ?? 2147483647
}) : v
})
)
}),
effects: new ListNode(
new ObjectNode({
type: new EnumNode(EntityCollection),
nbt: new StringNode()
}, {
default: () => ({
type: 'sheep'
})
SCHEMAS.register('foo', ObjectNode({
foo: StringNode(),
bar: BooleanNode({ radio: true }),
nested: ObjectNode({
baz: NumberNode({ min: 1 }),
range: RangeNode()
}, { collapse: true }),
arr: ListNode(
ObjectNode({
aaa: StringNode(),
bbb: JsonNode()
})
)
}, {
default: () => ({
condition: 'foo',
predicate: {
nbt: 'hi'
),
map: MapNode(
EnumNode(['pig', 'sheep']),
Resource(StringNode())
),
recursive: ListNode(
Reference('foo')
),
[Switch]: path => path.push('foo').get(),
[Case]: {
'blah': {
haha: StringNode()
}
}),
transform: (v: any) => v?.condition === 'foo' ? ({...v, test: 'hello'}) : v
});
}
}))
export const SandboxSchema = SCHEMAS.get('foo')