diff --git a/packages/core/src/symbol/Symbol.ts b/packages/core/src/symbol/Symbol.ts index aaf677852..291ede24b 100644 --- a/packages/core/src/symbol/Symbol.ts +++ b/packages/core/src/symbol/Symbol.ts @@ -119,6 +119,8 @@ export type TagFileCategory = (typeof TagFileCategories)[number] export const FileCategories = Object.freeze( [ 'advancement', + 'chat_type', + 'damage_type', 'dimension', 'dimension_type', 'function', @@ -127,6 +129,8 @@ export const FileCategories = Object.freeze( 'predicate', 'recipe', 'structure', + 'trim_material', + 'trim_pattern', ...TagFileCategories, ...WorldgenFileCategories, ] as const, diff --git a/packages/java-edition/src/dependency/common.ts b/packages/java-edition/src/dependency/common.ts index c0abecf03..becb74e46 100644 --- a/packages/java-edition/src/dependency/common.ts +++ b/packages/java-edition/src/dependency/common.ts @@ -28,7 +28,12 @@ export const PackVersionMap: Record = { 7: /^1\.17.*$/, 8: /^1\.18(\.1)?$/, 9: /^1\.18.*$/, - 10: /^1\.19.*$/, + 10: /^1\.19(\.[1-3])?$/, + 12: /^1\.19.*$/, + 15: /^1\.20(\.1)?$/, + 18: /^1\.20\.2$/, + 26: /^1\.20\.[3-4]$/, + 41: /^1\.20\.[5-6]$/, } export interface PackMcmeta { diff --git a/packages/java-edition/src/mcfunction/common/index.ts b/packages/java-edition/src/mcfunction/common/index.ts index 952288b32..a63852daf 100644 --- a/packages/java-edition/src/mcfunction/common/index.ts +++ b/packages/java-edition/src/mcfunction/common/index.ts @@ -66,3 +66,25 @@ export const SwizzleArgumentValues = [ 'zxy', 'zyx', ] + +export const HeightmapValues = [ + 'motion_blocking', + 'motion_blocking_no_leaves', + 'ocean_floor', + 'ocean_floor_wg', + 'world_surface', + 'world_surface_wg', +] + +export const RotationValues = [ + 'none', + 'clockwise_90', + '180', + 'counterclockwise_90', +] + +export const MirrorValues = [ + 'none', + 'left_right', + 'front_back', +] diff --git a/packages/java-edition/src/mcfunction/completer/argument.ts b/packages/java-edition/src/mcfunction/completer/argument.ts index 84aab0ae3..af92cc3b7 100644 --- a/packages/java-edition/src/mcfunction/completer/argument.ts +++ b/packages/java-edition/src/mcfunction/completer/argument.ts @@ -31,8 +31,11 @@ import { ColorArgumentValues, EntityAnchorArgumentValues, GamemodeArgumentValues, + HeightmapValues, ItemSlotArgumentValues, + MirrorValues, OperationArgumentValues, + RotationValues, ScoreboardSlotArgumentValues, SwizzleArgumentValues, } from '../common/index.js' @@ -98,6 +101,8 @@ export const getMockNodes: mcf.completer.MockNodesGetter = ( case 'minecraft:entity': case 'minecraft:game_profile': return EntitySelectorNode.mock(range) + case 'minecraft:heightmap': + return LiteralNode.mock(range, { pool: HeightmapValues }) case 'minecraft:entity_anchor': return LiteralNode.mock(range, { pool: EntityAnchorArgumentValues }) case 'minecraft:entity_summon': @@ -130,6 +135,7 @@ export const getMockNodes: mcf.completer.MockNodesGetter = ( case 'minecraft:particle': return ParticleNode.mock(range) case 'minecraft:resource': + case 'minecraft:resource_key': case 'minecraft:resource_or_tag': return ResourceLocationNode.mock(range, { category: ResourceLocation.shorten(treeNode.properties.registry) as @@ -152,6 +158,10 @@ export const getMockNodes: mcf.completer.MockNodesGetter = ( return LiteralNode.mock(range, { pool: SwizzleArgumentValues }) case 'minecraft:team': return SymbolNode.mock(range, { category: 'team' }) + case 'minecraft:template_mirror': + return LiteralNode.mock(range, { pool: MirrorValues }) + case 'minecraft:template_rotation': + return LiteralNode.mock(range, { pool: RotationValues }) case 'minecraft:vec2': return VectorNode.mock(range, { dimension: 2, integersOnly: true }) case 'minecraft:vec3': diff --git a/packages/java-edition/src/mcfunction/parser/argument.ts b/packages/java-edition/src/mcfunction/parser/argument.ts index 461e766e0..2655b8eed 100644 --- a/packages/java-edition/src/mcfunction/parser/argument.ts +++ b/packages/java-edition/src/mcfunction/parser/argument.ts @@ -9,8 +9,11 @@ import { ColorArgumentValues, EntityAnchorArgumentValues, GamemodeArgumentValues, + HeightmapValues, ItemSlotArgumentValues, + MirrorValues, OperationArgumentValues, + RotationValues, ScoreboardSlotArgumentValues, SwizzleArgumentValues, } from '../common/index.js' @@ -173,6 +176,8 @@ export const argument: mcf.ArgumentParserGetter = ( return wrap(core.literal(...GamemodeArgumentValues)) case 'minecraft:game_profile': return wrap(entity('multiple', 'players')) + case 'minecraft:heightmap': + return wrap(core.literal(...HeightmapValues)) case 'minecraft:int_range': return wrap(range('integer')) case 'minecraft:item_enchantment': @@ -221,6 +226,7 @@ export const argument: mcf.ArgumentParserGetter = ( case 'minecraft:particle': return wrap(particle) case 'minecraft:resource': + case 'minecraft:resource_key': case 'minecraft:resource_or_tag': return wrap( core.resourceLocation({ @@ -257,6 +263,10 @@ export const argument: mcf.ArgumentParserGetter = ( : undefined, ), ) + case 'minecraft:template_mirror': + return wrap(core.literal(...MirrorValues)) + case 'minecraft:template_rotation': + return wrap(core.literal(...RotationValues)) case 'minecraft:time': return wrap(time) case 'minecraft:uuid': diff --git a/packages/java-edition/src/mcfunction/tree/argument.ts b/packages/java-edition/src/mcfunction/tree/argument.ts index fd4bf7ef3..bc022c861 100644 --- a/packages/java-edition/src/mcfunction/tree/argument.ts +++ b/packages/java-edition/src/mcfunction/tree/argument.ts @@ -112,6 +112,11 @@ export interface MinecraftGameProfileArgumentTreeNode { parser: 'minecraft:game_profile' } +export interface MinecraftHeightmapArgumentTreeNode + extends mcf.ArgumentTreeNode +{ + parser: 'minecraft:heightmap' +} export interface MinecraftIntRangeArgumentTreeNode extends mcf.ArgumentTreeNode { @@ -184,6 +189,14 @@ export interface MinecraftResourceArgumentTreeNode registry: string } } +export interface MinecraftResourceKeyArgumentTreeNode + extends mcf.ArgumentTreeNode +{ + parser: 'minecraft:resource_key' + properties: { + registry: string + } +} export interface MinecraftResourceLocationArgumentTreeNode extends mcf.ArgumentTreeNode { @@ -222,6 +235,16 @@ export interface MinecraftSwizzleArgumentTreeNode extends mcf.ArgumentTreeNode { export interface MinecraftTeamArgumentTreeNode extends mcf.ArgumentTreeNode { parser: 'minecraft:team' } +export interface MinecraftTemplateMirrorArgumentTreeNode + extends mcf.ArgumentTreeNode +{ + parser: 'minecraft:template_mirror' +} +export interface MinecraftTemplateRotationArgumentTreeNode + extends mcf.ArgumentTreeNode +{ + parser: 'minecraft:template_rotation' +} export interface MinecraftTimeArgumentTreeNode extends mcf.ArgumentTreeNode { parser: 'minecraft:time' } @@ -262,6 +285,7 @@ export type ArgumentTreeNode = | MinecraftFunctionArgumentTreeNode | MinecraftGamemodeArgumentTreeNode | MinecraftGameProfileArgumentTreeNode + | MinecraftHeightmapArgumentTreeNode | MinecraftIntRangeArgumentTreeNode | MinecraftItemEnchantmentArgumentTreeNode | MinecraftItemPredicateArgumentTreeNode @@ -277,6 +301,7 @@ export type ArgumentTreeNode = | MinecraftOperationArgumentTreeNode | MinecraftParticleArgumentTreeNode | MinecraftResourceArgumentTreeNode + | MinecraftResourceKeyArgumentTreeNode | MinecraftResourceLocationArgumentTreeNode | MinecraftResourceOrTagArgumentTreeNode | MinecraftRotationArgumentTreeNode @@ -284,6 +309,8 @@ export type ArgumentTreeNode = | MinecraftScoreboardSlotArgumentTreeNode | MinecraftSwizzleArgumentTreeNode | MinecraftTeamArgumentTreeNode + | MinecraftTemplateMirrorArgumentTreeNode + | MinecraftTemplateRotationArgumentTreeNode | MinecraftTimeArgumentTreeNode | MinecraftUuidArgumentTreeNode | MinecraftVec2ArgumentTreeNode diff --git a/packages/java-edition/src/mcfunction/tree/patch.ts b/packages/java-edition/src/mcfunction/tree/patch.ts index 322bf93e3..580fb9b81 100644 --- a/packages/java-edition/src/mcfunction/tree/patch.ts +++ b/packages/java-edition/src/mcfunction/tree/patch.ts @@ -333,6 +333,13 @@ export function getPatch(release: ReleaseVersion): PartialRootTreeNode { help: { permission: 0, }, + ...(ReleaseVersion.cmp(release, '1.18') >= 0 + ? { + jfr: { + permission: 4, + }, + } + : {}), kick: { permission: 3, }, @@ -418,6 +425,30 @@ export function getPatch(release: ReleaseVersion): PartialRootTreeNode { 'pardon-ip': { permission: 3, }, + ...(ReleaseVersion.cmp(release, '1.17') >= 0 + ? { + perf: { + permission: 4, + }, + } + : {}), + ...(ReleaseVersion.cmp(release, '1.19') >= 0 + ? { + place: { + children: { + template: { + children: { + template: { + properties: { + category: 'structure' + } + } + } + } + } + }, + } + : {}), playsound: Sound, publish: { permission: 4, @@ -559,6 +590,13 @@ export function getPatch(release: ReleaseVersion): PartialRootTreeNode { tell: { permission: 0, }, + ...(ReleaseVersion.cmp(release, '1.20.2') >= 0 + ? { + tick: { + permission: 3, + }, + } + : {}), tm: { permission: 0, },